@fast-simon/dashboard-utilities 1.0.3 → 1.0.5
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/lib/@types/banner.d.ts +7 -0
- package/lib/@types/banner.js +2 -0
- package/lib/@types/banner.js.map +1 -0
- package/lib/@types/categories.d.ts +16 -0
- package/lib/@types/categories.js +2 -0
- package/lib/@types/categories.js.map +1 -0
- package/lib/@types/currency.d.ts +1 -0
- package/lib/@types/currency.js +2 -0
- package/lib/@types/currency.js.map +1 -0
- package/lib/@types/editorProduct.d.ts +26 -0
- package/lib/@types/editorProduct.js +6 -0
- package/lib/@types/editorProduct.js.map +1 -0
- package/lib/@types/iconProps.d.ts +9 -0
- package/lib/@types/iconProps.js +2 -0
- package/lib/@types/iconProps.js.map +1 -0
- package/lib/@types/product.d.ts +158 -0
- package/lib/@types/product.js +8 -0
- package/lib/@types/product.js.map +1 -0
- package/lib/@types/productLabel.d.ts +1 -0
- package/lib/@types/productLabel.js +2 -0
- package/lib/@types/productLabel.js.map +1 -0
- package/lib/@types/promoTile.d.ts +11 -0
- package/lib/@types/promoTile.js +2 -0
- package/lib/@types/promoTile.js.map +1 -0
- package/lib/@types/results.d.ts +42 -0
- package/lib/@types/results.js +2 -0
- package/lib/@types/results.js.map +1 -0
- package/lib/@types/sideMenu.d.ts +19 -0
- package/lib/@types/sideMenu.js +2 -0
- package/lib/@types/sideMenu.js.map +1 -0
- package/lib/@types/sortBy.d.ts +3 -0
- package/lib/@types/sortBy.js +2 -0
- package/lib/@types/sortBy.js.map +1 -0
- package/lib/App.d.ts +3 -0
- package/lib/App.js +15 -0
- package/lib/App.js.map +1 -0
- package/lib/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.d.ts +9 -0
- package/lib/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js +74 -0
- package/lib/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js.map +1 -0
- package/lib/components/BackOfficeFiltersMenu/index.d.ts +1 -0
- package/lib/components/BackOfficeFiltersMenu/index.js +2 -0
- package/lib/components/BackOfficeFiltersMenu/index.js.map +1 -0
- package/lib/components/BackOfficeFiltersMenu/utils.d.ts +7 -0
- package/lib/components/BackOfficeFiltersMenu/utils.js +239 -0
- package/lib/components/BackOfficeFiltersMenu/utils.js.map +1 -0
- package/lib/components/CheckboxFilter/Checkbox/Checkbox.d.ts +10 -0
- package/lib/components/CheckboxFilter/Checkbox/Checkbox.js +7 -0
- package/lib/components/CheckboxFilter/Checkbox/Checkbox.js.map +1 -0
- package/lib/components/CheckboxFilter/CheckboxFilter.d.ts +6 -0
- package/lib/components/CheckboxFilter/CheckboxFilter.js +9 -0
- package/lib/components/CheckboxFilter/CheckboxFilter.js.map +1 -0
- package/lib/components/DragAndDrop/DndContextWrapper.d.ts +20 -0
- package/lib/components/DragAndDrop/DndContextWrapper.js +33 -0
- package/lib/components/DragAndDrop/DndContextWrapper.js.map +1 -0
- package/lib/components/DragAndDrop/Droppable.d.ts +7 -0
- package/lib/components/DragAndDrop/Droppable.js +10 -0
- package/lib/components/DragAndDrop/Droppable.js.map +1 -0
- package/lib/components/DragAndDrop/SortableItem.d.ts +13 -0
- package/lib/components/DragAndDrop/SortableItem.js +39 -0
- package/lib/components/DragAndDrop/SortableItem.js.map +1 -0
- package/lib/components/FacetItem/FacetItem.d.ts +13 -0
- package/lib/components/FacetItem/FacetItem.js +40 -0
- package/lib/components/FacetItem/FacetItem.js.map +1 -0
- package/lib/components/FastSimonApi/FastSimonApi.d.ts +32 -0
- package/lib/components/FastSimonApi/FastSimonApi.js +398 -0
- package/lib/components/FastSimonApi/FastSimonApi.js.map +1 -0
- package/lib/components/FastSimonApi/context.d.ts +50 -0
- package/lib/components/FastSimonApi/context.js +10 -0
- package/lib/components/FastSimonApi/context.js.map +1 -0
- package/lib/components/FastSimonApi/index.d.ts +3 -0
- package/lib/components/FastSimonApi/index.js +3 -0
- package/lib/components/FastSimonApi/index.js.map +1 -0
- package/lib/components/FastSimonApi/reducer.d.ts +172 -0
- package/lib/components/FastSimonApi/reducer.js +67 -0
- package/lib/components/FastSimonApi/reducer.js.map +1 -0
- package/lib/components/FromToFilter/From/From.d.ts +17 -0
- package/lib/components/FromToFilter/From/From.js +22 -0
- package/lib/components/FromToFilter/From/From.js.map +1 -0
- package/lib/components/FromToFilter/FromToFilter.d.ts +14 -0
- package/lib/components/FromToFilter/FromToFilter.js +58 -0
- package/lib/components/FromToFilter/FromToFilter.js.map +1 -0
- package/lib/components/FromToFilter/To/To.d.ts +18 -0
- package/lib/components/FromToFilter/To/To.js +23 -0
- package/lib/components/FromToFilter/To/To.js.map +1 -0
- package/lib/components/FromToFilter/utils.d.ts +25 -0
- package/lib/components/FromToFilter/utils.js +7 -0
- package/lib/components/FromToFilter/utils.js.map +1 -0
- package/lib/components/InStoreFiltersMenu/InStoreFiltersMenu.d.ts +10 -0
- package/lib/components/InStoreFiltersMenu/InStoreFiltersMenu.js +34 -0
- package/lib/components/InStoreFiltersMenu/InStoreFiltersMenu.js.map +1 -0
- package/lib/components/InStoreFiltersMenu/index.d.ts +1 -0
- package/lib/components/InStoreFiltersMenu/index.js +2 -0
- package/lib/components/InStoreFiltersMenu/index.js.map +1 -0
- package/lib/components/Input/Input.d.ts +22 -0
- package/lib/components/Input/Input.js +49 -0
- package/lib/components/Input/Input.js.map +1 -0
- package/lib/components/Input/index.d.ts +1 -0
- package/lib/components/Input/index.js +2 -0
- package/lib/components/Input/index.js.map +1 -0
- package/lib/components/LastReceivedDateFilter/LastReceivedDate.d.ts +9 -0
- package/lib/components/LastReceivedDateFilter/LastReceivedDate.js +88 -0
- package/lib/components/LastReceivedDateFilter/LastReceivedDate.js.map +1 -0
- package/lib/components/LastReceivedDateFilter/utils.d.ts +3 -0
- package/lib/components/LastReceivedDateFilter/utils.js +43 -0
- package/lib/components/LastReceivedDateFilter/utils.js.map +1 -0
- package/lib/components/RadioFilter/Radio/Radio.d.ts +10 -0
- package/lib/components/RadioFilter/Radio/Radio.js +7 -0
- package/lib/components/RadioFilter/Radio/Radio.js.map +1 -0
- package/lib/components/RadioFilter/RadioFilter.d.ts +9 -0
- package/lib/components/RadioFilter/RadioFilter.js +45 -0
- package/lib/components/RadioFilter/RadioFilter.js.map +1 -0
- package/lib/components/RadioFilter/utils.d.ts +1 -0
- package/lib/components/RadioFilter/utils.js +8 -0
- package/lib/components/RadioFilter/utils.js.map +1 -0
- package/lib/components/ReactDatePicker/ReactDatePicker.d.ts +11 -0
- package/lib/components/ReactDatePicker/ReactDatePicker.js +16 -0
- package/lib/components/ReactDatePicker/ReactDatePicker.js.map +1 -0
- package/lib/components/ReactDatePicker/index.d.ts +1 -0
- package/lib/components/ReactDatePicker/index.js +2 -0
- package/lib/components/ReactDatePicker/index.js.map +1 -0
- package/lib/components/RenderIfVisible/RenderIfVisible.d.ts +12 -0
- package/lib/components/RenderIfVisible/RenderIfVisible.js +59 -0
- package/lib/components/RenderIfVisible/RenderIfVisible.js.map +1 -0
- package/lib/components/RenderIfVisible/index.d.ts +1 -0
- package/lib/components/RenderIfVisible/index.js +2 -0
- package/lib/components/RenderIfVisible/index.js.map +1 -0
- package/lib/components/SingleFilter/SingleFilter.d.ts +11 -0
- package/lib/components/SingleFilter/SingleFilter.js +90 -0
- package/lib/components/SingleFilter/SingleFilter.js.map +1 -0
- package/lib/components/SingleFilter/utils.d.ts +3 -0
- package/lib/components/SingleFilter/utils.js +42 -0
- package/lib/components/SingleFilter/utils.js.map +1 -0
- package/lib/components/SliderFilter/SliderFilter.d.ts +20 -0
- package/lib/components/SliderFilter/SliderFilter.js +46 -0
- package/lib/components/SliderFilter/SliderFilter.js.map +1 -0
- package/lib/components/SliderFilter/index.d.ts +1 -0
- package/lib/components/SliderFilter/index.js +2 -0
- package/lib/components/SliderFilter/index.js.map +1 -0
- package/lib/components/Tooltip/Tooltip.d.ts +8 -0
- package/lib/components/Tooltip/Tooltip.js +9 -0
- package/lib/components/Tooltip/Tooltip.js.map +1 -0
- package/lib/components/common.d.ts +34 -0
- package/lib/components/common.js +80 -0
- package/lib/components/common.js.map +1 -0
- package/lib/components/productGrid/ProductGrid.d.ts +7 -0
- package/lib/components/productGrid/ProductGrid.js +11 -0
- package/lib/components/productGrid/ProductGrid.js.map +1 -0
- package/lib/components/productGrid/index.d.ts +1 -0
- package/lib/components/productGrid/index.js +2 -0
- package/lib/components/productGrid/index.js.map +1 -0
- package/lib/icons/BackOfficeFiltersIcon.d.ts +2 -0
- package/lib/icons/BackOfficeFiltersIcon.js +7 -0
- package/lib/icons/BackOfficeFiltersIcon.js.map +1 -0
- package/lib/icons/BannersIcon.d.ts +2 -0
- package/lib/icons/BannersIcon.js +7 -0
- package/lib/icons/BannersIcon.js.map +1 -0
- package/lib/icons/HelpIcon.d.ts +7 -0
- package/lib/icons/HelpIcon.js +5 -0
- package/lib/icons/HelpIcon.js.map +1 -0
- package/lib/icons/InStoreFiltersIcon.d.ts +2 -0
- package/lib/icons/InStoreFiltersIcon.js +7 -0
- package/lib/icons/InStoreFiltersIcon.js.map +1 -0
- package/lib/icons/PromoteIcon.d.ts +2 -0
- package/lib/icons/PromoteIcon.js +7 -0
- package/lib/icons/PromoteIcon.js.map +1 -0
- package/lib/icons/RemoveIcon.d.ts +2 -0
- package/lib/icons/RemoveIcon.js +7 -0
- package/lib/icons/RemoveIcon.js.map +1 -0
- package/lib/icons/RestoreIcon.d.ts +2 -0
- package/lib/icons/RestoreIcon.js +7 -0
- package/lib/icons/RestoreIcon.js.map +1 -0
- package/lib/icons/index.d.ts +7 -0
- package/lib/icons/index.js +8 -0
- package/lib/icons/index.js.map +1 -0
- package/lib/main.d.ts +15 -0
- package/lib/main.js +2 -0
- package/lib/main.js.map +1 -0
- package/lib/services/API.d.ts +21 -0
- package/lib/services/API.js +50 -0
- package/lib/services/API.js.map +1 -0
- package/lib/services/landingPage.d.ts +28 -0
- package/lib/services/landingPage.js +153 -0
- package/lib/services/landingPage.js.map +1 -0
- package/lib/utils/customTagsFilters.d.ts +4 -0
- package/lib/utils/customTagsFilters.js +10 -0
- package/lib/utils/customTagsFilters.js.map +1 -0
- package/lib/utils/products.d.ts +30 -0
- package/lib/utils/products.js +39 -0
- package/lib/utils/products.js.map +1 -0
- package/lib/utils/shopifyMarkets.d.ts +3 -0
- package/lib/utils/shopifyMarkets.js +7 -0
- package/lib/utils/shopifyMarkets.js.map +1 -0
- package/lib/utils/useDragToSelect.d.ts +13 -0
- package/lib/utils/useDragToSelect.js +177 -0
- package/lib/utils/useDragToSelect.js.map +1 -0
- package/package.json +10 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/@types/banner.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC","sourcesContent":["export interface Banner {\r\n title: string;\r\n image: string;\r\n mobileImage?: string;\r\n id: string;\r\n}\r\n\r\nexport const videoFormats = [\".mp4\", \".mov\", \".avi\", \".wmv\", \".mkv\", \".webm\", \".flv\", \".m4v\", \".mpg\", \".mpeg\"];\r\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type AncestorCategory = [string, string, string];
|
|
2
|
+
export interface RelatedCategory {
|
|
3
|
+
id: string;
|
|
4
|
+
l: string;
|
|
5
|
+
t: string;
|
|
6
|
+
u: string;
|
|
7
|
+
}
|
|
8
|
+
export interface Category {
|
|
9
|
+
d: string;
|
|
10
|
+
id: string;
|
|
11
|
+
l: string;
|
|
12
|
+
p_id: string;
|
|
13
|
+
t: string;
|
|
14
|
+
u: string;
|
|
15
|
+
parent_name?: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/@types/categories.ts"],"names":[],"mappings":"","sourcesContent":["export type AncestorCategory = [string, string, string] // category_id, category_name, category_url\r\nexport interface RelatedCategory {\r\n id: string\r\n l: string\r\n t: string\r\n u: string\r\n}\r\n\r\nexport interface Category {\r\n d: string\r\n id: string\r\n l: string\r\n p_id: string\r\n t: string\r\n u: string\r\n parent_name?: string\r\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Currency = string | 'USD' | 'CRC' | 'AUD' | 'AZN' | 'NZD' | 'CAD' | 'VES' | 'SGD' | 'COP' | 'GBP' | 'BRL' | 'ILS' | 'AED' | 'JMD' | 'MYR' | 'THB' | 'DKK' | 'EGP' | 'NOK' | 'SEK' | 'HKD' | 'ZAR' | 'CHF' | 'HRK' | 'INR' | 'UAH' | 'RUB' | 'BYR' | 'IRR' | 'MXN' | 'TWD' | 'TRY' | 'TRL' | 'TL' | 'PLN' | 'HUF' | 'BGN' | 'EUR' | 'NGN' | 'RON' | 'VND' | 'BDT' | 'XOF' | 'JPY' | 'CNY' | 'KRW' | 'ARS';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../src/@types/currency.ts"],"names":[],"mappings":"","sourcesContent":["export type Currency =\r\n string\r\n | 'USD'\r\n | 'CRC'\r\n | 'AUD'\r\n | 'AZN'\r\n | 'NZD'\r\n | 'CAD'\r\n | 'VES'\r\n | 'SGD'\r\n | 'COP'\r\n | 'GBP'\r\n | 'BRL'\r\n | 'ILS'\r\n | 'AED'\r\n | 'JMD'\r\n | 'MYR'\r\n | 'THB'\r\n | 'DKK'\r\n | 'EGP'\r\n | 'NOK'\r\n | 'SEK'\r\n | 'HKD'\r\n | 'ZAR'\r\n | 'CHF'\r\n | 'HRK'\r\n | 'INR'\r\n | 'UAH'\r\n | 'RUB'\r\n | 'BYR'\r\n | 'IRR'\r\n | 'MXN'\r\n | 'TWD'\r\n | 'TRY'\r\n | 'TRL'\r\n | 'TL'\r\n | 'PLN'\r\n | 'HUF'\r\n | 'BGN'\r\n | 'EUR'\r\n | 'NGN'\r\n | 'RON'\r\n | 'VND'\r\n | 'BDT'\r\n | 'XOF'\r\n | 'JPY'\r\n | 'CNY'\r\n | 'KRW'\r\n | 'ARS'\r\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Product } from "fast-simon-sdk";
|
|
2
|
+
import { ProductLabelType } from "./productLabel";
|
|
3
|
+
export interface EditorProduct extends Product {
|
|
4
|
+
org_pos: number | "";
|
|
5
|
+
inv_sale: ProductInvSale;
|
|
6
|
+
productLabel?: ProductLabelType;
|
|
7
|
+
is_unpublished?: boolean;
|
|
8
|
+
isFilteredProduct?: boolean;
|
|
9
|
+
pin_to_position?: number;
|
|
10
|
+
}
|
|
11
|
+
interface ProductInvSale {
|
|
12
|
+
cost: number;
|
|
13
|
+
d: number[];
|
|
14
|
+
i: number;
|
|
15
|
+
s: number;
|
|
16
|
+
tags: string[];
|
|
17
|
+
v: Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
export interface ChatbotAction {
|
|
20
|
+
actionName: "promote" | "hide" | "bury" | "position";
|
|
21
|
+
srcPosition: number;
|
|
22
|
+
destPosition: number;
|
|
23
|
+
disabled: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function isEditorProduct(gridItem?: EditorProduct): gridItem is EditorProduct;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editorProduct.js","sourceRoot":"","sources":["../../src/@types/editorProduct.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,eAAe,CAAC,QAAwB;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACzC,OAAQ,QAA0B,CAAC,CAAC,KAAK,SAAS,CAAC;AACvD,CAAC","sourcesContent":["import { Product } from \"fast-simon-sdk\";\r\nimport { ProductLabelType } from \"./productLabel\";\r\n\r\nexport interface EditorProduct extends Product {\r\n org_pos: number | \"\";\r\n inv_sale: ProductInvSale;\r\n productLabel?: ProductLabelType;\r\n is_unpublished?: boolean;\r\n isFilteredProduct?: boolean;\r\n // chatbotAction?: ChatbotAction;\r\n pin_to_position?: number;\r\n}\r\ninterface ProductInvSale {\r\n cost: number;\r\n d: number[];\r\n i: number;\r\n s: number;\r\n tags: string[];\r\n v: Record<string, any>;\r\n}\r\n\r\nexport interface ChatbotAction {\r\n actionName: \"promote\" | \"hide\" | \"bury\" | \"position\";\r\n srcPosition: number;\r\n destPosition: number;\r\n disabled: boolean;\r\n}\r\n\r\nexport function isEditorProduct(gridItem?: EditorProduct): gridItem is EditorProduct {\r\n if (gridItem === undefined) return false;\r\n return (gridItem as EditorProduct).l !== undefined;\r\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconProps.js","sourceRoot":"","sources":["../../src/@types/iconProps.ts"],"names":[],"mappings":"","sourcesContent":["export interface IconProps {\r\n width?: number;\r\n height?: number;\r\n\r\n customClasses?: {\r\n wrapper?: string,\r\n svg?: string,\r\n path?: string\r\n };\r\n}"]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { Currency } from "./currency";
|
|
2
|
+
import { PromoTileConfig } from "./promoTile";
|
|
3
|
+
export declare enum FeaturedRanking {
|
|
4
|
+
FEATURED_RANK_NO = 0,
|
|
5
|
+
FEATURED_RANK_ON_MATCH = 1,
|
|
6
|
+
FEATURED_RANK_ALWAYS = 2,
|
|
7
|
+
FEATURED_RANK_NEVER = 3
|
|
8
|
+
}
|
|
9
|
+
export interface ServerProduct {
|
|
10
|
+
c: Currency;
|
|
11
|
+
d: string;
|
|
12
|
+
f: FeaturedRanking;
|
|
13
|
+
id: productID;
|
|
14
|
+
iso: boolean;
|
|
15
|
+
l: string;
|
|
16
|
+
p: string;
|
|
17
|
+
p_c: string;
|
|
18
|
+
p_max: string;
|
|
19
|
+
p_max_c: string;
|
|
20
|
+
p_min: string;
|
|
21
|
+
p_min_c: string;
|
|
22
|
+
p_spl: number;
|
|
23
|
+
p_spl_id?: string;
|
|
24
|
+
review?: number;
|
|
25
|
+
reviews_count?: number;
|
|
26
|
+
s: string;
|
|
27
|
+
sku: string;
|
|
28
|
+
skus: string[];
|
|
29
|
+
t: string;
|
|
30
|
+
t2: string;
|
|
31
|
+
u: string;
|
|
32
|
+
v_c: number;
|
|
33
|
+
v: string;
|
|
34
|
+
vra: ServerVariant[];
|
|
35
|
+
vrc: object;
|
|
36
|
+
att?: Attribute[];
|
|
37
|
+
real_sku?: string;
|
|
38
|
+
image_id?: string;
|
|
39
|
+
alt?: AlternativeColor[];
|
|
40
|
+
inventory_lvl?: number;
|
|
41
|
+
promotile?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export type ServerVariant = [number, VariantData[]];
|
|
44
|
+
export type VariantData = [string, string[]];
|
|
45
|
+
export type Attribute = [string, AttributeData[]];
|
|
46
|
+
export type AttributeData = string[] | string[][];
|
|
47
|
+
export interface ServerAltProductVariant {
|
|
48
|
+
sellable: boolean;
|
|
49
|
+
size: string;
|
|
50
|
+
v_id: number;
|
|
51
|
+
}
|
|
52
|
+
export interface ServerAltProductData {
|
|
53
|
+
l: string;
|
|
54
|
+
p: string;
|
|
55
|
+
p_c: string;
|
|
56
|
+
p_spl: number;
|
|
57
|
+
p_spl_id?: number;
|
|
58
|
+
sku?: string;
|
|
59
|
+
t: string[];
|
|
60
|
+
vra: ServerAltProductVariant[];
|
|
61
|
+
review?: number;
|
|
62
|
+
reviews_count?: number;
|
|
63
|
+
att?: any[];
|
|
64
|
+
s?: string;
|
|
65
|
+
p_min: string;
|
|
66
|
+
p_max: string;
|
|
67
|
+
}
|
|
68
|
+
export type AlternativeColor = [AlternativeColorName, AlternativeColorURL, productID?, ServerAltProductData?];
|
|
69
|
+
type AlternativeColorName = string;
|
|
70
|
+
type AlternativeColorURL = string;
|
|
71
|
+
type productID = number;
|
|
72
|
+
export interface Badge {
|
|
73
|
+
tag: string;
|
|
74
|
+
url: string;
|
|
75
|
+
}
|
|
76
|
+
export interface TextBadge {
|
|
77
|
+
badgeText: string;
|
|
78
|
+
tag: string;
|
|
79
|
+
badgeStyle: {
|
|
80
|
+
backgroundColor: string;
|
|
81
|
+
borderColor: string;
|
|
82
|
+
borderRadius: number;
|
|
83
|
+
horizontal: string;
|
|
84
|
+
vertical: string;
|
|
85
|
+
size: number;
|
|
86
|
+
textColor: string;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export interface Products {
|
|
90
|
+
[id: string]: Product;
|
|
91
|
+
}
|
|
92
|
+
export interface Product {
|
|
93
|
+
currency: Currency;
|
|
94
|
+
id: string;
|
|
95
|
+
title: string;
|
|
96
|
+
description: string;
|
|
97
|
+
variants: Variants;
|
|
98
|
+
isSoldOut: boolean;
|
|
99
|
+
price: number;
|
|
100
|
+
minPrice: number;
|
|
101
|
+
maxPrice: number;
|
|
102
|
+
maxCompare: number;
|
|
103
|
+
comparePrice: number;
|
|
104
|
+
maxFormattedCompare: string;
|
|
105
|
+
reviewScore: number | undefined;
|
|
106
|
+
reviewCount: number | undefined;
|
|
107
|
+
imageURL: string;
|
|
108
|
+
imageURL2: string;
|
|
109
|
+
optimizedURL?: string;
|
|
110
|
+
formattedPrice: string;
|
|
111
|
+
formattedCompare: string | undefined;
|
|
112
|
+
vendor: string;
|
|
113
|
+
sku: string;
|
|
114
|
+
s: string;
|
|
115
|
+
inventory_lvl?: number;
|
|
116
|
+
imagesSrcset: string;
|
|
117
|
+
productURL: string;
|
|
118
|
+
productBadges: Badge[];
|
|
119
|
+
productTextBadges?: TextBadge[];
|
|
120
|
+
alternativeProducts?: AlternativeProduct[];
|
|
121
|
+
tags?: string[];
|
|
122
|
+
promoTileConfig?: PromoTileConfig;
|
|
123
|
+
attributes?: Attribute[];
|
|
124
|
+
p_spl?: number;
|
|
125
|
+
p_spl_id?: string;
|
|
126
|
+
isIspNoPrice?: boolean;
|
|
127
|
+
imageID?: string;
|
|
128
|
+
vrc?: object;
|
|
129
|
+
}
|
|
130
|
+
export interface Variant {
|
|
131
|
+
id: number;
|
|
132
|
+
attributes: {
|
|
133
|
+
[key: string]: VariantsAttribute;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
export type Variants = Variant[];
|
|
137
|
+
export type VariantsAttribute = string | number | boolean | string[] | undefined;
|
|
138
|
+
export interface AlternativeProduct {
|
|
139
|
+
color: string;
|
|
140
|
+
url: string;
|
|
141
|
+
id: string;
|
|
142
|
+
variants?: Variants;
|
|
143
|
+
s?: string;
|
|
144
|
+
price: number;
|
|
145
|
+
comparePrice: number;
|
|
146
|
+
formattedCompare?: string;
|
|
147
|
+
formattedPrice?: string;
|
|
148
|
+
attributes?: Attribute[] | undefined;
|
|
149
|
+
}
|
|
150
|
+
export interface ServerPromotile {
|
|
151
|
+
height: number;
|
|
152
|
+
id: string;
|
|
153
|
+
image: string;
|
|
154
|
+
link: string;
|
|
155
|
+
width: number;
|
|
156
|
+
title: string;
|
|
157
|
+
}
|
|
158
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var FeaturedRanking;
|
|
2
|
+
(function (FeaturedRanking) {
|
|
3
|
+
FeaturedRanking[FeaturedRanking["FEATURED_RANK_NO"] = 0] = "FEATURED_RANK_NO";
|
|
4
|
+
FeaturedRanking[FeaturedRanking["FEATURED_RANK_ON_MATCH"] = 1] = "FEATURED_RANK_ON_MATCH";
|
|
5
|
+
FeaturedRanking[FeaturedRanking["FEATURED_RANK_ALWAYS"] = 2] = "FEATURED_RANK_ALWAYS";
|
|
6
|
+
FeaturedRanking[FeaturedRanking["FEATURED_RANK_NEVER"] = 3] = "FEATURED_RANK_NEVER";
|
|
7
|
+
})(FeaturedRanking || (FeaturedRanking = {}));
|
|
8
|
+
//# sourceMappingURL=product.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/@types/product.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACvB,6EAAgB,CAAA;IAChB,yFAAsB,CAAA;IACtB,qFAAoB,CAAA;IACpB,mFAAmB,CAAA;AACvB,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B","sourcesContent":["import type {Currency} from \"./currency\";\r\nimport {PromoTileConfig} from \"./promoTile\";\r\n\r\nexport enum FeaturedRanking {\r\n FEATURED_RANK_NO,\r\n FEATURED_RANK_ON_MATCH,\r\n FEATURED_RANK_ALWAYS,\r\n FEATURED_RANK_NEVER,\r\n}\r\n\r\nexport interface ServerProduct {\r\n c: Currency\r\n d: string\r\n f: FeaturedRanking\r\n id: productID\r\n iso: boolean\r\n l: string\r\n p: string\r\n p_c: string\r\n p_max: string\r\n p_max_c: string\r\n p_min: string\r\n p_min_c: string\r\n p_spl: number\r\n p_spl_id?: string\r\n review?: number\r\n reviews_count?: number\r\n s: string\r\n sku: string\r\n skus: string[]\r\n t: string\r\n t2: string\r\n u: string\r\n v_c: number\r\n v: string\r\n vra: ServerVariant[]\r\n vrc: object\r\n att?: Attribute[]\r\n real_sku?: string\r\n image_id?: string\r\n alt?: AlternativeColor[]\r\n inventory_lvl?: number\r\n promotile?: boolean\r\n}\r\n\r\nexport type ServerVariant = [number, VariantData[]]\r\nexport type VariantData = [string, string[]]\r\n\r\nexport type Attribute = [string, AttributeData[]]\r\nexport type AttributeData = string[] | string[][]\r\n\r\nexport interface ServerAltProductVariant {\r\n sellable: boolean;\r\n size: string;\r\n v_id: number;\r\n}\r\n\r\nexport interface ServerAltProductData {\r\n l: string;\r\n p: string;\r\n p_c: string;\r\n p_spl: number;\r\n p_spl_id?: number;\r\n sku?: string;\r\n t: string[];\r\n vra: ServerAltProductVariant[];\r\n review?: number;\r\n reviews_count?: number;\r\n att?: any[];\r\n s?: string;\r\n p_min: string;\r\n p_max: string;\r\n}\r\n\r\nexport type AlternativeColor = [AlternativeColorName, AlternativeColorURL, productID?, ServerAltProductData?]\r\n\r\ntype AlternativeColorName = string\r\ntype AlternativeColorURL = string\r\ntype productID = number\r\n\r\nexport interface Badge {\r\n tag: string;\r\n url: string;\r\n}\r\n\r\nexport interface TextBadge {\r\n badgeText: string;\r\n tag: string;\r\n badgeStyle: {\r\n backgroundColor: string;\r\n borderColor: string;\r\n borderRadius: number;\r\n horizontal: string;\r\n vertical: string;\r\n size: number;\r\n textColor: string;\r\n }\r\n}\r\n\r\nexport interface Products {\r\n [id: string]: Product\r\n}\r\n\r\nexport interface Product {\r\n currency: Currency\r\n id: string\r\n title: string\r\n description: string\r\n variants: Variants\r\n isSoldOut: boolean\r\n price: number\r\n minPrice: number\r\n maxPrice: number\r\n maxCompare: number\r\n comparePrice: number\r\n maxFormattedCompare: string;\r\n reviewScore: number | undefined\r\n reviewCount: number | undefined\r\n imageURL: string\r\n imageURL2: string\r\n optimizedURL?: string;\r\n formattedPrice: string\r\n formattedCompare: string | undefined\r\n vendor: string\r\n sku: string\r\n s: string\r\n inventory_lvl?: number\r\n imagesSrcset: string\r\n productURL: string\r\n productBadges: Badge[]\r\n productTextBadges?: TextBadge[]\r\n alternativeProducts?: AlternativeProduct[]\r\n tags?: string[]\r\n promoTileConfig?: PromoTileConfig\r\n attributes?: Attribute[]\r\n p_spl?: number\r\n p_spl_id?: string\r\n isIspNoPrice?: boolean\r\n imageID?: string\r\n vrc?: object\r\n}\r\n\r\nexport interface Variant {\r\n id: number,\r\n attributes: {\r\n [key: string]: VariantsAttribute\r\n }\r\n}\r\n\r\nexport type Variants = Variant[]\r\n\r\nexport type VariantsAttribute = string | number | boolean | string[] | undefined\r\n\r\nexport interface AlternativeProduct {\r\n color: string,\r\n url: string,\r\n id: string,\r\n variants?: Variants,\r\n s?: string,\r\n price: number\r\n comparePrice: number,\r\n formattedCompare?: string,\r\n formattedPrice?: string,\r\n attributes?: Attribute[] | undefined\r\n}\r\n\r\nexport interface ServerPromotile {\r\n height: number;\r\n id: string;\r\n image: string;\r\n link: string;\r\n width: number;\r\n title: string;\r\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ProductLabelType = 'Buried' | 'Promoted' | 'Pinned' | 'Hidden' | 'Unpublished' | 'Selected' | '';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productLabel.js","sourceRoot":"","sources":["../../src/@types/productLabel.ts"],"names":[],"mappings":"","sourcesContent":["export type ProductLabelType = 'Buried' | 'Promoted' | 'Pinned' | 'Hidden' | 'Unpublished' | 'Selected' | '';"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promoTile.js","sourceRoot":"","sources":["../../src/@types/promoTile.ts"],"names":[],"mappings":"","sourcesContent":["\r\ninterface Size {\r\n x: number;\r\n y: number;\r\n}\r\nexport interface PromoTileConfig {\r\n size: Size;\r\n url: string;\r\n image: string;\r\n title: string;\r\n}"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Narrow, Facet } from "@fast-simon/utilities";
|
|
2
|
+
import type { SortBy } from "./sortBy";
|
|
3
|
+
import { RelatedCategory } from "./categories";
|
|
4
|
+
import { Product } from "fast-simon-sdk";
|
|
5
|
+
interface Base {
|
|
6
|
+
narrow: Narrow;
|
|
7
|
+
sortBy: SortBy;
|
|
8
|
+
totalResults: number;
|
|
9
|
+
page: number;
|
|
10
|
+
totalPages: number;
|
|
11
|
+
items: Product[];
|
|
12
|
+
facets: Facet[];
|
|
13
|
+
avoidTagPrefixes: string[];
|
|
14
|
+
sort: SortBy;
|
|
15
|
+
productIDS: string[];
|
|
16
|
+
bannerHTML: string;
|
|
17
|
+
bannerHTMLMobile: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SearchResults extends Base {
|
|
20
|
+
query: string;
|
|
21
|
+
totalCMS: number;
|
|
22
|
+
didYouMean?: string[];
|
|
23
|
+
personalizedProductIds: number[];
|
|
24
|
+
sessionProductIds: number[];
|
|
25
|
+
resultsFor?: string;
|
|
26
|
+
isRelatedResults?: boolean;
|
|
27
|
+
relatedSearch?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface CategoryResults extends Base {
|
|
30
|
+
categoryID: string;
|
|
31
|
+
categoryName: string;
|
|
32
|
+
personalizationRecencyLimit?: number;
|
|
33
|
+
personalizedProductIds: number[];
|
|
34
|
+
sessionProductIds: number[];
|
|
35
|
+
relatedCategories: RelatedCategory[];
|
|
36
|
+
}
|
|
37
|
+
export interface LandingPageResults extends Base {
|
|
38
|
+
lpSlug: string;
|
|
39
|
+
title: string;
|
|
40
|
+
indexPage: number;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/@types/results.ts"],"names":[],"mappings":"","sourcesContent":["import type {Narrow, Facet} from \"@fast-simon/utilities\";\r\nimport type {SortBy} from \"./sortBy\";\r\nimport {RelatedCategory} from \"./categories\";\r\nimport {Product} from \"fast-simon-sdk\";\r\n\r\ninterface Base {\r\n narrow: Narrow,\r\n sortBy: SortBy,\r\n totalResults: number,\r\n page: number,\r\n totalPages: number,\r\n items: Product[],\r\n facets: Facet[],\r\n avoidTagPrefixes: string[],\r\n sort: SortBy,\r\n productIDS: string[],\r\n bannerHTML: string,\r\n bannerHTMLMobile: string,\r\n // ancestors: Ancestor[]\r\n}\r\n\r\nexport interface SearchResults extends Base {\r\n query: string,\r\n totalCMS: number,\r\n didYouMean?: string[],\r\n personalizedProductIds: number[],\r\n sessionProductIds: number[],\r\n resultsFor?: string,\r\n isRelatedResults?: boolean\r\n relatedSearch?: string[]\r\n}\r\n\r\nexport interface CategoryResults extends Base {\r\n categoryID: string,\r\n categoryName: string,\r\n personalizationRecencyLimit?: number,\r\n personalizedProductIds: number[],\r\n sessionProductIds: number[],\r\n relatedCategories: RelatedCategory[],\r\n}\r\n\r\nexport interface LandingPageResults extends Base {\r\n lpSlug: string,\r\n title: string,\r\n indexPage: number\r\n}"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type MenuItemName = 'in-store-filters' | 'back-office-filters' | 'buried' | 'hidden' | 'unpublished' | 'banners' | 'promo-tiles' | 'related-collections' | '' | 'chatbot' | string;
|
|
3
|
+
export interface CustomClasses {
|
|
4
|
+
wrapper?: string;
|
|
5
|
+
svg?: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SideMenuType {
|
|
9
|
+
menuItem: SideMenuItem;
|
|
10
|
+
menu: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export interface SideMenuItem {
|
|
13
|
+
getIcon: (customClasses?: CustomClasses) => JSX.Element;
|
|
14
|
+
name: MenuItemName;
|
|
15
|
+
menuTitle: string;
|
|
16
|
+
hooverTooltip: string;
|
|
17
|
+
position?: number;
|
|
18
|
+
isSelected?: boolean;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sideMenu.js","sourceRoot":"","sources":["../../src/@types/sideMenu.ts"],"names":[],"mappings":"","sourcesContent":["import React from \"react\";\r\n\r\nexport type MenuItemName = 'in-store-filters' | 'back-office-filters' | 'buried' | 'hidden' | 'unpublished' | 'banners' | 'promo-tiles' | 'related-collections' | '' | 'chatbot' | string;\r\n\r\nexport interface CustomClasses {\r\n wrapper?: string,\r\n svg?: string,\r\n path?: string\r\n}\r\n\r\nexport interface SideMenuType {\r\n menuItem: SideMenuItem\r\n menu: React.ReactNode\r\n}\r\n\r\nexport interface SideMenuItem {\r\n getIcon: (customClasses?: CustomClasses) => JSX.Element\r\n name: MenuItemName;\r\n menuTitle: string;\r\n hooverTooltip: string;\r\n position?: number\r\n isSelected?: boolean\r\n}"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type SortBy = "price_min_to_max" | "price_max_to_min" | "creation_date" | "creation_date_oldest" | "popularity" | "reviews" | "a_to_z" | "z_to_a" | 'relevency' | 'relevance';
|
|
2
|
+
export type SortByTranslationKey = 'sort_by_best_match' | 'sort_by_price_low_to_high' | 'sort_by_price_high_to_low' | 'sort_by_newest' | 'sort_by_oldest' | 'sort_by_popularity' | 'sort_by_reviews' | 'sort_by_a_to_z' | 'sort_by_z_to_a';
|
|
3
|
+
export type SortByConfig = Record<SortBy, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortBy.js","sourceRoot":"","sources":["../../src/@types/sortBy.ts"],"names":[],"mappings":"","sourcesContent":["export type SortBy =\r\n \"price_min_to_max\"\r\n | \"price_max_to_min\"\r\n | \"creation_date\"\r\n | \"creation_date_oldest\"\r\n | \"popularity\"\r\n | \"reviews\"\r\n | \"a_to_z\"\r\n | \"z_to_a\"\r\n | 'relevency'\r\n | 'relevance'\r\n\r\nexport type SortByTranslationKey =\r\n 'sort_by_best_match' |\r\n 'sort_by_price_low_to_high' |\r\n 'sort_by_price_high_to_low' |\r\n 'sort_by_newest' |\r\n 'sort_by_oldest' |\r\n 'sort_by_popularity' |\r\n 'sort_by_reviews' |\r\n 'sort_by_a_to_z' |\r\n 'sort_by_z_to_a'\r\n\r\nexport type SortByConfig = Record<SortBy, string>;"]}
|
package/lib/App.d.ts
ADDED
package/lib/App.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import "./index.css";
|
|
3
|
+
const App = () => {
|
|
4
|
+
const products = [
|
|
5
|
+
'Product 1',
|
|
6
|
+
'Product 2',
|
|
7
|
+
'Product 3',
|
|
8
|
+
'Product 4',
|
|
9
|
+
'Product 5',
|
|
10
|
+
'Product 6'
|
|
11
|
+
];
|
|
12
|
+
return (_jsx("div", { children: _jsx("h2", { children: "Product Grid Example" }) }));
|
|
13
|
+
};
|
|
14
|
+
export default App;
|
|
15
|
+
//# sourceMappingURL=App.js.map
|
package/lib/App.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";AACA,OAAO,aAAa,CAAC;AAIrB,MAAM,GAAG,GAAG,GAAG,EAAE;IACb,MAAM,QAAQ,GAAG;QACjB,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;KACZ,CAAC;IACA,OAAO,CACH,wBACE,gDAA6B,GAMzB,CACP,CAAC;AACR,CAAC,CAAC;AAEF,eAAe,GAAG,CAAC","sourcesContent":["import ProductGrid from './components/productGrid'\r\nimport \"./index.css\";\r\n\r\n\r\n\r\nconst App = () => {\r\n const products = [\r\n 'Product 1',\r\n 'Product 2',\r\n 'Product 3',\r\n 'Product 4',\r\n 'Product 5',\r\n 'Product 6'\r\n ];\r\n return (\r\n <div>\r\n <h2>Product Grid Example</h2>\r\n {/*<ProductGrid numberPerRow={3}>*/}\r\n {/* {products.map((product, index) => (*/}\r\n {/* <div key={index}>{product}</div>*/}\r\n {/* ))}*/}\r\n {/*</ProductGrid>*/}\r\n </div>\r\n );\r\n};\r\n\r\nexport default App;\r\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Narrow } from "@fast-simon/utilities";
|
|
3
|
+
export interface Props {
|
|
4
|
+
narrow: Narrow;
|
|
5
|
+
onNarrowChange: (narrow: any) => void;
|
|
6
|
+
onPageChange: (page: number) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const BackOfficeFiltersMenu: React.FC<Props>;
|
|
9
|
+
export default BackOfficeFiltersMenu;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import classes from './styles.module.css';
|
|
4
|
+
import { FacetItem } from "../FacetItem/FacetItem";
|
|
5
|
+
import { NarrowParser, FacetsTypes, } from "@fast-simon/utilities";
|
|
6
|
+
import { FromToFilter } from "../FromToFilter/FromToFilter";
|
|
7
|
+
import { getBackOfficeFilters, getBackOfficeFilterTooltipText, getLastReceivedTimeRange } from "./utils";
|
|
8
|
+
import classNames from "classnames";
|
|
9
|
+
const BackOfficeFiltersMenu = ({ narrow, onNarrowChange, onPageChange }) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
11
|
+
const [filters, setFilters] = useState(getBackOfficeFilters());
|
|
12
|
+
const [disableFilters, setDisableFilters] = useState(false);
|
|
13
|
+
let timer;
|
|
14
|
+
const onFilterChange = (facetid, value, updateSingleNarrow, fromDate, toDate) => {
|
|
15
|
+
setDisableFilters(true);
|
|
16
|
+
clearTimeout(timer);
|
|
17
|
+
if (facetid === 'merch_lrt') {
|
|
18
|
+
let merch_ltr_value = getLastReceivedTimeRange(value, fromDate !== null && fromDate !== void 0 ? fromDate : '', toDate !== null && toDate !== void 0 ? toDate : '');
|
|
19
|
+
value = merch_ltr_value !== null && merch_ltr_value !== void 0 ? merch_ltr_value : '';
|
|
20
|
+
timer = setTimeout(() => {
|
|
21
|
+
var _a, _b, _c, _d, _e, _f;
|
|
22
|
+
let newNarrow = undefined;
|
|
23
|
+
((_b = (_a = narrow === null || narrow === void 0 ? void 0 : narrow['merch_lrt']) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b.call(_a)) ? (_f = (_e = Array.from((_d = (_c = narrow === null || narrow === void 0 ? void 0 : narrow['merch_lrt']) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d.call(_c))) === null || _e === void 0 ? void 0 : _e.forEach) === null || _f === void 0 ? void 0 : _f.call(_e, (filterValue) => {
|
|
24
|
+
newNarrow = NarrowParser.updateSingleNarrow(narrow, facetid, filterValue);
|
|
25
|
+
}) : null;
|
|
26
|
+
if (value) {
|
|
27
|
+
newNarrow = NarrowParser.updateSingleNarrow(newNarrow !== null && newNarrow !== void 0 ? newNarrow : narrow, facetid, value);
|
|
28
|
+
}
|
|
29
|
+
if (newNarrow) {
|
|
30
|
+
onNarrowChange(newNarrow);
|
|
31
|
+
onPageChange(1);
|
|
32
|
+
}
|
|
33
|
+
disableMenuDelay();
|
|
34
|
+
}, 750);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
timer = setTimeout(() => {
|
|
38
|
+
let newNarrow = NarrowParser.updateNarrow(narrow, facetid, value);
|
|
39
|
+
onNarrowChange(newNarrow);
|
|
40
|
+
onPageChange(1);
|
|
41
|
+
disableMenuDelay();
|
|
42
|
+
}, 750);
|
|
43
|
+
};
|
|
44
|
+
const onFromToFilterChange = (facetid, value) => {
|
|
45
|
+
setDisableFilters(true);
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
timer = setTimeout(() => {
|
|
48
|
+
let newNarrow = {};
|
|
49
|
+
if (!value) {
|
|
50
|
+
newNarrow = Object.fromEntries(Object.entries(narrow).filter(([key, value]) => key !== facetid));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
newNarrow = NarrowParser.updateSingleNarrow(narrow, facetid, value);
|
|
54
|
+
}
|
|
55
|
+
onNarrowChange(newNarrow);
|
|
56
|
+
onPageChange(1);
|
|
57
|
+
disableMenuDelay();
|
|
58
|
+
}, 750);
|
|
59
|
+
};
|
|
60
|
+
const disableMenuDelay = () => {
|
|
61
|
+
const timerId = setTimeout(() => {
|
|
62
|
+
setDisableFilters(false);
|
|
63
|
+
}, 750);
|
|
64
|
+
return () => clearTimeout(timerId);
|
|
65
|
+
};
|
|
66
|
+
const clearAll = () => {
|
|
67
|
+
onNarrowChange({});
|
|
68
|
+
onPageChange(1);
|
|
69
|
+
setFilters(getBackOfficeFilters());
|
|
70
|
+
};
|
|
71
|
+
return (_jsxs("div", Object.assign({ className: classes.filtersContainer, style: { opacity: disableFilters ? 0.5 : 1, pointerEvents: disableFilters ? 'none' : 'auto' } }, { children: [_jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FacetItem, { narrow: narrow[(((_a = filters === null || filters === void 0 ? void 0 : filters["filter"]) === null || _a === void 0 ? void 0 : _a.meta) && narrow[(((_b = filters === null || filters === void 0 ? void 0 : filters["filter"]) === null || _b === void 0 ? void 0 : _b.name) + "_from_to")]) ? (((_c = filters === null || filters === void 0 ? void 0 : filters["filter"]) === null || _c === void 0 ? void 0 : _c.name) + "_from_to") : (_d = filters === null || filters === void 0 ? void 0 : filters["filter"]) === null || _d === void 0 ? void 0 : _d.id], facet: filters === null || filters === void 0 ? void 0 : filters["filter"], onChange: onFilterChange, onNarrowChange: onNarrowChange, onPageChange: onNarrowChange, type: FacetsTypes.multiSelect, tooltipText: getBackOfficeFilterTooltipText["filter"], disableSelect: disableFilters }, "fs-filters" + ((_e = filters === null || filters === void 0 ? void 0 : filters["filter"]) === null || _e === void 0 ? void 0 : _e.id.toString())) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FacetItem, { narrow: narrow[(((_f = filters === null || filters === void 0 ? void 0 : filters["lastReceivedDate"]) === null || _f === void 0 ? void 0 : _f.meta) && narrow[(((_g = filters === null || filters === void 0 ? void 0 : filters["lastReceivedDate"]) === null || _g === void 0 ? void 0 : _g.name) + "_from_to")]) ? (((_h = filters === null || filters === void 0 ? void 0 : filters["lastReceivedDate"]) === null || _h === void 0 ? void 0 : _h.name) + "_from_to") : (_j = filters === null || filters === void 0 ? void 0 : filters["lastReceivedDate"]) === null || _j === void 0 ? void 0 : _j.id], facet: filters === null || filters === void 0 ? void 0 : filters["lastReceivedDate"], onChange: onFilterChange, onNarrowChange: onNarrowChange, onPageChange: onNarrowChange, type: FacetsTypes.RadioSelect, tooltipText: getBackOfficeFilterTooltipText["lastReceivedDate"], disableSelect: disableFilters }, "fs-filters" + ((_k = filters === null || filters === void 0 ? void 0 : filters["lastReceivedDate"]) === null || _k === void 0 ? void 0 : _k.id.toString())) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["stockAvailability"], onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["stockAvailability"] }) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["variantsInStock"], onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["variantsInStock"], limit: { min: 0, max: 100 } }) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["sales"], onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["sales"] }) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["weeksOfStock"], onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["weeksOfStock"] }) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["margin"], onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["margin"] }) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["marginPercent"], onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["marginPercent"], limit: { min: 0, max: 100 } }) })), _jsx("div", Object.assign({ className: classes.sideMenuContainer }, { children: _jsx(FromToFilter, { facet: filters === null || filters === void 0 ? void 0 : filters["merchCreationDate"], convertValueCallback: (value) => { var _a; return Number(value) > 0 ? (_a = (Number(value) / 1000)) === null || _a === void 0 ? void 0 : _a.toString() : value; }, onChange: onFromToFilterChange, tooltipText: getBackOfficeFilterTooltipText["merchCreationDate"] }) })), _jsx("span", Object.assign({ onClick: clearAll, className: classNames(classes.arrow, classes.clearAll) }, { children: _jsxs("small", { children: ["Clear All\u00A0\u00A0\u00A0", _jsx("i", {})] }) }))] })));
|
|
72
|
+
};
|
|
73
|
+
export default BackOfficeFiltersMenu;
|
|
74
|
+
//# sourceMappingURL=BackOfficeFiltersMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackOfficeFiltersMenu.js","sourceRoot":"","sources":["../../../src/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {useState} from 'react';\nimport classes from './styles.module.css';\nimport {FacetItem} from \"../FacetItem/FacetItem\";\nimport {\n Facet,\n NarrowParser,\n FacetsTypes,\n Narrow,\n} from \"@fast-simon/utilities\";\nimport {FromToFilter} from \"../FromToFilter/FromToFilter\";\nimport {getBackOfficeFilters, getBackOfficeFilterTooltipText, getLastReceivedTimeRange} from \"./utils\";\nimport {FromTo} from \"../FromToFilter/utils\";\nimport classNames from \"classnames\";\n\nexport interface Props {\n narrow: Narrow;\n onNarrowChange: (narrow: any) => void;\n onPageChange: (page: number) => void;\n}\n\nconst BackOfficeFiltersMenu: React.FC<Props> = ({narrow, onNarrowChange, onPageChange}) => {\n const [filters, setFilters] = useState<any>(getBackOfficeFilters());\n const [disableFilters, setDisableFilters] = useState<boolean>(false);\n let timer: string | number | NodeJS.Timeout | undefined;\n const onFilterChange = (facetid: string, value: string, updateSingleNarrow?: boolean, fromDate?: string, toDate?: string) => {\n setDisableFilters(true)\n clearTimeout(timer);\n\n if (facetid === 'merch_lrt') {\n let merch_ltr_value = getLastReceivedTimeRange(value, fromDate??'', toDate??'');\n value = merch_ltr_value ?? '';\n timer = setTimeout(() => {\n let newNarrow: Narrow | undefined = undefined;\n narrow?.['merch_lrt']?.values?.() ? Array.from(narrow?.['merch_lrt']?.values?.())?.forEach?.((filterValue) => {\n newNarrow = NarrowParser.updateSingleNarrow(narrow, facetid, filterValue)\n }\n ) : null;\n if(value) {\n newNarrow = NarrowParser.updateSingleNarrow(newNarrow ?? narrow, facetid, value)\n }\n if (newNarrow) {\n onNarrowChange(newNarrow as any);\n onPageChange(1);\n }\n disableMenuDelay()\n }, 750);\n return;\n }\n timer = setTimeout(() => {\n let newNarrow = NarrowParser.updateNarrow(narrow, facetid, value);\n onNarrowChange(newNarrow as any);\n onPageChange(1);\n disableMenuDelay()\n }, 750);\n }\n const onFromToFilterChange = (facetid: string, value: string) => {\n setDisableFilters(true)\n clearTimeout(timer);\n\n timer = setTimeout(() => {\n let newNarrow: Narrow = {};\n if (!value) {\n newNarrow = Object.fromEntries(\n Object.entries(narrow).filter(([key, value]) => key !== facetid)\n );\n } else {\n newNarrow = NarrowParser.updateSingleNarrow(narrow, facetid, value);\n }\n onNarrowChange(newNarrow as any);\n onPageChange(1);\n disableMenuDelay()\n }, 750);\n }\n\n const disableMenuDelay = () => {\n const timerId = setTimeout(() => {\n setDisableFilters(false);\n }, 750);\n return () => clearTimeout(timerId);\n }\n\n const clearAll = () => {\n onNarrowChange({});\n onPageChange(1);\n setFilters(getBackOfficeFilters());\n }\n\n return (\n <div className={classes.filtersContainer} style={{ opacity: disableFilters ? 0.5 : 1, pointerEvents: disableFilters ? 'none' : 'auto' }}>\n <div className={classes.sideMenuContainer}>\n <FacetItem key={\"fs-filters\"+(filters?.[\"filter\"] as Facet)?.id.toString()}\n narrow={narrow[((filters?.[\"filter\"] as Facet)?.meta && narrow[((filters?.[\"filter\"] as Facet)?.name + \"_from_to\")]) ? ((filters?.[\"filter\"] as Facet)?.name + \"_from_to\") : (filters?.[\"filter\"] as Facet)?.id]}\n facet={(filters?.[\"filter\"] as Facet)} onChange={onFilterChange} onNarrowChange={onNarrowChange} onPageChange={onNarrowChange}\n type={FacetsTypes.multiSelect} tooltipText={getBackOfficeFilterTooltipText[\"filter\"]}\n disableSelect={disableFilters}></FacetItem>\n </div>\n <div className={classes.sideMenuContainer}>\n <FacetItem key={\"fs-filters\"+(filters?.[\"lastReceivedDate\"] as Facet)?.id.toString()}\n narrow={narrow[((filters?.[\"lastReceivedDate\"] as Facet)?.meta && narrow[((filters?.[\"lastReceivedDate\"] as Facet)?.name + \"_from_to\")]) ? ((filters?.[\"lastReceivedDate\"] as Facet)?.name + \"_from_to\") : (filters?.[\"lastReceivedDate\"] as Facet)?.id]}\n facet={(filters?.[\"lastReceivedDate\"] as Facet)} onChange={onFilterChange} onNarrowChange={onNarrowChange} onPageChange={onNarrowChange}\n type={FacetsTypes.RadioSelect} tooltipText={getBackOfficeFilterTooltipText[\"lastReceivedDate\"]}\n disableSelect={disableFilters}></FacetItem>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"stockAvailability\"] as FromTo)} onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"stockAvailability\"]}></FromToFilter>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"variantsInStock\"] as FromTo)} onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"variantsInStock\"]} limit={{min: 0, max:100}}></FromToFilter>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"sales\"] as FromTo)} onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"sales\"]}></FromToFilter>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"weeksOfStock\"] as FromTo)} onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"weeksOfStock\"]}></FromToFilter>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"margin\"] as FromTo)} onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"margin\"]}></FromToFilter>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"marginPercent\"] as FromTo)} onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"marginPercent\"]} limit={{min: 0, max:100}}></FromToFilter>\n </div>\n <div className={classes.sideMenuContainer}>\n <FromToFilter facet={(filters?.[\"merchCreationDate\"] as FromTo)}\n convertValueCallback={(value) => {return Number(value) > 0? (Number(value) / 1000)?.toString() : value}}\n onChange={onFromToFilterChange}\n tooltipText={getBackOfficeFilterTooltipText[\"merchCreationDate\"]}></FromToFilter>\n </div>\n <span onClick={clearAll}className={classNames(classes.arrow, classes.clearAll)}><small>Clear All <i/></small>\n </span>\n </div>\n )\n};\n\nexport default BackOfficeFiltersMenu;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./BackOfficeFiltersMenu";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/BackOfficeFiltersMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC","sourcesContent":["export { default } from \"./BackOfficeFiltersMenu\";\r\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Facet } from "@fast-simon/utilities";
|
|
2
|
+
import { FromTo } from "../FromToFilter/utils";
|
|
3
|
+
export declare const getBackOfficeFilters: () => Record<string, Facet | FromTo>;
|
|
4
|
+
export declare const getCustomPriceFilter: () => FromTo;
|
|
5
|
+
export declare const clearFilters: (filters: Record<string, Facet | FromTo>) => void;
|
|
6
|
+
export declare const getLastReceivedTimeRange: (selectedType: string, fromDate: string, toDate: string) => string | undefined;
|
|
7
|
+
export declare const getBackOfficeFilterTooltipText: Record<string, string>;
|