@fast-simon/dashboard-utilities 1.0.139-beta.5 → 1.0.139-beta.7

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.
Files changed (37) hide show
  1. package/dist/@types/categories.d.ts +2 -0
  2. package/dist/@types/categories.js.map +1 -1
  3. package/dist/@types/product.d.ts +1 -0
  4. package/dist/@types/product.js.map +1 -1
  5. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js +2 -1
  6. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js.map +1 -1
  7. package/dist/components/BackOfficeFiltersMenu/styles.module.css +6 -46
  8. package/dist/components/CheckboxFilter/Checkbox/styles.module.css +40 -15
  9. package/dist/components/FacetItem/styles.module.css +4 -6
  10. package/dist/components/FastSimonApi/FastSimonApi.js +27 -4
  11. package/dist/components/FastSimonApi/FastSimonApi.js.map +1 -1
  12. package/dist/components/FastSimonApi/context.d.ts +3 -0
  13. package/dist/components/FastSimonApi/context.js.map +1 -1
  14. package/dist/components/FastSimonApi/reducer.d.ts +6 -0
  15. package/dist/components/FastSimonApi/reducer.js +2 -0
  16. package/dist/components/FastSimonApi/reducer.js.map +1 -1
  17. package/dist/components/FromToFilter/From/styles.module.css +5 -24
  18. package/dist/components/FromToFilter/To/styles.module.css +6 -25
  19. package/dist/components/FromToFilter/styles.module.css +10 -34
  20. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js +3 -2
  21. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js.map +1 -1
  22. package/dist/components/InStoreFiltersMenu/styles.module.css +6 -46
  23. package/dist/components/LastReceivedDateFilter/styles.module.css +11 -21
  24. package/dist/components/RadioFilter/Radio/styles.module.css +36 -20
  25. package/dist/components/RadioFilter/styles.module.css +1 -1
  26. package/dist/components/ReactDatePicker/styles.module.css +2 -10
  27. package/dist/components/SingleFilter/styles.module.css +3 -3
  28. package/dist/index.d.ts +3 -2
  29. package/dist/index.js +2 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/services/smartCollections.d.ts +2 -2
  32. package/dist/services/smartCollections.js +4 -4
  33. package/dist/services/smartCollections.js.map +1 -1
  34. package/dist/utils/personalizationPreview.d.ts +16 -0
  35. package/dist/utils/personalizationPreview.js +30 -0
  36. package/dist/utils/personalizationPreview.js.map +1 -0
  37. package/package.json +1 -1
@@ -64,6 +64,8 @@ export interface smartCollectionsProps {
64
64
  market_context?: string | null;
65
65
  variation_id?: string | null;
66
66
  ps?: 'new' | 'returning' | null;
67
+ spv?: string | null;
68
+ personalization?: string | null;
67
69
  force_and?: boolean;
68
70
  }
69
71
  export type FacetRequired = 0 | 1 | 2;
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/@types/categories.ts"],"names":[],"mappings":"","sourcesContent":["import {SortBy} from \"./sortBy\";\nimport {Narrow, ServerNarrow} from \"./narrow\";\nimport { ServerProduct} from \"./product\";\nimport {ServerFacet} from \"./facets\";\nimport {ContextFilteringData, QueryUnderstanding} from \"./results\";\n\n\nexport type AncestorCategory = [string, string, string] // category_id, category_name, category_url\nexport interface RelatedCategory {\n id: string\n l: string\n t: string\n u: string\n}\nexport type CategoryAncestor = [string, string, string]\nexport interface Category {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface FastCategory {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface smartCollectionsProps {\n storeID: number\n uuid: string\n siteKey?:string\n cdn: number\n categoryID: string,\n userToken: string,\n sessionStart: number,\n page?: number\n productsPerPage?: number\n sortBy?: SortBy\n narrowBy?: ServerNarrow[]\n facetRequired?: FacetRequired\n withAttributes?: boolean\n recent?: string\n rec?: boolean\n searchWithinSearch?: string,\n segments?: string[],\n hasShopifyMarkets?: boolean,\n disable_turbolinks?:boolean\n disable_strategies?:boolean\n disable_merchandising?:boolean\n disable_semantics?:boolean\n disable_merchandising_rules?:boolean\n disable_antonyms?:boolean\n custom_sort_settings?:{personalization_rank: number, creation_date: number, popularity: number, inventory: number}\n with_product_analytics?:boolean\n market_context?: string | null // Region code for market-specific filtering (e.g., \"US\", \"CA\", \"UK\")\n variation_id?: string | null // A/B test variation ID for reasoning/experiment tracking\n ps?: 'new' | 'returning' | null // Personalization segment for user segment coefficient preview (new/returning user)\n force_and?: boolean\n}\nexport type FacetRequired = 0 | 1 | 2\nexport type smartCollectionsCallback = ({}: {\n action: \"products\" | \"facets and products\"\n payload: smartCollectionsResults\n}) => void\nexport interface smartCollectionsResults {\n ancestors: CategoryAncestor[]\n categoryID: string\n name: string\n category_name: string\n products: ServerProduct[]\n facets?: ServerFacet[]\n totalResults: number\n sortBy?: SortBy,\n narrow?: Narrow[],\n isNoResults?: boolean\n page?: number\n pageCount?: number\n avoidPrefixList?: string[]\n merch?: any\n bannerHTML?: string\n turbolink?:string\n hiddenProducts?:ServerProduct[]\n within_search_results_for?:string\n results_for?: string\n id_list?:number[]\n context?: ContextFilteringData // Context-based filtering data (market contexts)\n analytics?: {\n badges?: {\n winners?: Record<string, string> // Product ID -> tooltip message\n overexposed?: Record<string, string> // Product ID -> tooltip message\n new_arrivals?: string[]\n }\n key_hidden_winners?: string\n key_overexposed?: string\n }\n query_understanding?: QueryUnderstanding\n reformulation_source?: string\n request_url?: string // Full URL with all params that was executed (for debugging)\n\n}\nexport type inventoryCallback = ({}: {\n action: \"products inventory\"\n payload: {productsInventory: productsInventoryResults[]}\n}) => void\nexport interface productsInventoryResults {\n id: string;\n totalInventory: number;\n}"]}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/@types/categories.ts"],"names":[],"mappings":"","sourcesContent":["import {SortBy} from \"./sortBy\";\nimport {Narrow, ServerNarrow} from \"./narrow\";\nimport { ServerProduct} from \"./product\";\nimport {ServerFacet} from \"./facets\";\nimport {ContextFilteringData, QueryUnderstanding} from \"./results\";\n\n\nexport type AncestorCategory = [string, string, string] // category_id, category_name, category_url\nexport interface RelatedCategory {\n id: string\n l: string\n t: string\n u: string\n}\nexport type CategoryAncestor = [string, string, string]\nexport interface Category {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface FastCategory {\n d: string\n id: string\n l: string\n p_id: string\n t: string\n u: string\n parent_name?: string\n}\nexport interface smartCollectionsProps {\n storeID: number\n uuid: string\n siteKey?:string\n cdn: number\n categoryID: string,\n userToken: string,\n sessionStart: number,\n page?: number\n productsPerPage?: number\n sortBy?: SortBy\n narrowBy?: ServerNarrow[]\n facetRequired?: FacetRequired\n withAttributes?: boolean\n recent?: string\n rec?: boolean\n searchWithinSearch?: string,\n segments?: string[],\n hasShopifyMarkets?: boolean,\n disable_turbolinks?:boolean\n disable_strategies?:boolean\n disable_merchandising?:boolean\n disable_semantics?:boolean\n disable_merchandising_rules?:boolean\n disable_antonyms?:boolean\n custom_sort_settings?:{personalization_rank: number, creation_date: number, popularity: number, inventory: number}\n with_product_analytics?:boolean\n market_context?: string | null // Region code for market-specific filtering (e.g., \"US\", \"CA\", \"UK\")\n variation_id?: string | null // A/B test variation ID for reasoning/experiment tracking\n ps?: 'new' | 'returning' | null // Personalization segment for user segment coefficient preview (new/returning user)\n spv?: string | null // Session Product Views JSON for personalization preview (e.g., '{\"pid1\":ts,\"pid2\":ts}')\n personalization?: string | null // Comma-separated personalization types to enable (e.g., 'gender')\n force_and?: boolean\n}\nexport type FacetRequired = 0 | 1 | 2\nexport type smartCollectionsCallback = ({}: {\n action: \"products\" | \"facets and products\"\n payload: smartCollectionsResults\n}) => void\nexport interface smartCollectionsResults {\n ancestors: CategoryAncestor[]\n categoryID: string\n name: string\n category_name: string\n products: ServerProduct[]\n facets?: ServerFacet[]\n totalResults: number\n sortBy?: SortBy,\n narrow?: Narrow[],\n isNoResults?: boolean\n page?: number\n pageCount?: number\n avoidPrefixList?: string[]\n merch?: any\n bannerHTML?: string\n turbolink?:string\n hiddenProducts?:ServerProduct[]\n within_search_results_for?:string\n results_for?: string\n id_list?:number[]\n context?: ContextFilteringData // Context-based filtering data (market contexts)\n analytics?: {\n badges?: {\n winners?: Record<string, string> // Product ID -> tooltip message\n overexposed?: Record<string, string> // Product ID -> tooltip message\n new_arrivals?: string[]\n }\n key_hidden_winners?: string\n key_overexposed?: string\n }\n query_understanding?: QueryUnderstanding\n reformulation_source?: string\n request_url?: string // Full URL with all params that was executed (for debugging)\n\n}\nexport type inventoryCallback = ({}: {\n action: \"products inventory\"\n payload: {productsInventory: productsInventoryResults[]}\n}) => void\nexport interface productsInventoryResults {\n id: string;\n totalInventory: number;\n}"]}
@@ -23,6 +23,7 @@ export interface ProductAnalytics {
23
23
  is_overexposed?: boolean;
24
24
  explanation?: string;
25
25
  user_segment_coef?: number;
26
+ gender_coef?: number;
26
27
  }
27
28
  export declare enum FeaturedRanking {
28
29
  FEATURED_RANK_NO = 0,
@@ -1 +1 @@
1
- {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/@types/product.ts"],"names":[],"mappings":"AA4BA,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\";\nimport {PromoTileConfig} from \"./promoTile\";\n\nexport interface ProductAnalytics {\n global_impressions?: string\n context_impressions?: string\n global_cpi?: string\n context_cpi?: string\n global_rpi?: string\n context_rpi?: string\n global_rpi_corrected?: number\n context_rpi_corrected?: number\n global_rpi_cp_lower?: number\n context_rpi_cp_lower?: number\n global_rpi_corrected_cp_lower?: number\n context_rpi_corrected_cp_lower?: number\n beta_alpha_post_local?: number\n beta_beta_post_local?: number\n aov_for_cdf_local?: number\n sales_days?: number[]\n sales_weeks?: number[]\n sales_months?: number[]\n is_hidden_winner?: boolean\n is_overexposed?: boolean\n explanation?: string\n user_segment_coef?: number\n}\n\nexport enum FeaturedRanking {\n FEATURED_RANK_NO,\n FEATURED_RANK_ON_MATCH,\n FEATURED_RANK_ALWAYS,\n FEATURED_RANK_NEVER,\n}\n\nexport interface ServerProduct {\n c: Currency\n d: string\n f: FeaturedRanking\n id: productID\n iso: boolean\n l: string\n p: string\n p_c: string\n p_max: string\n p_max_c: string\n p_min: string\n p_min_c: string\n p_spl: number\n p_spl_id?: string\n review?: number\n reviews_count?: number\n s: string\n sku: string\n skus: string[]\n t: string\n t2: string\n u: string\n v_c: number\n v: string\n vra: ServerVariant[]\n vrc: object\n att?: Attribute[]\n real_sku?: string\n image_id?: string\n alt?: AlternativeColor[]\n inventory_lvl?: number\n promotile?: boolean\n imageID?: string\n rec_src?: number\n analytics?: ProductAnalytics\n}\n\nexport type ServerVariant = [number, VariantData[]]\nexport type VariantData = [string, string[]]\n\nexport type Attribute = [string, AttributeData[]]\nexport type AttributeData = string[] | string[][]\n\nexport interface ServerAltProductVariant {\n sellable: boolean;\n size: string;\n v_id: number;\n}\n\nexport interface ServerAltProductData {\n l: string;\n p: string;\n p_c: string;\n p_spl: number;\n p_spl_id?: number;\n sku?: string;\n t: string[];\n vra: ServerAltProductVariant[];\n review?: number;\n reviews_count?: number;\n att?: any[];\n s?: string;\n p_min: string;\n p_max: string;\n}\n\nexport type AlternativeColor = [AlternativeColorName, AlternativeColorURL, productID?, ServerAltProductData?]\n\ntype AlternativeColorName = string\ntype AlternativeColorURL = string\ntype productID = number\n\nexport interface Badge {\n tag: string;\n url: string;\n}\n\nexport interface TextBadge {\n badgeText: string;\n tag: string;\n badgeStyle: {\n backgroundColor: string;\n borderColor: string;\n borderRadius: number;\n horizontal: string;\n vertical: string;\n size: number;\n textColor: string;\n }\n}\n\nexport interface Products {\n [id: string]: Product\n}\n\nexport interface Product {\n currency: Currency\n id: string\n title: string\n description: string\n variants: Variants\n isSoldOut: boolean\n price: number\n minPrice: number\n maxPrice: number\n maxCompare: number\n comparePrice: number\n maxFormattedCompare: string;\n reviewScore: number | undefined\n reviewCount: number | undefined\n imageURL: string\n imageURL2: string\n optimizedURL?: string;\n formattedPrice: string\n formattedCompare: string | undefined\n vendor: string\n sku: string\n s: string\n inventory_lvl?: number\n imagesSrcset: string\n productURL: string\n productBadges: Badge[]\n productTextBadges?: TextBadge[]\n alternativeProducts?: AlternativeProduct[]\n tags?: string[]\n promoTileConfig?: PromoTileConfig\n attributes?: Attribute[]\n p_spl?: number\n p_spl_id?: string\n isIspNoPrice?: boolean\n imageID?: string\n vrc?: object\n analytics?: ProductAnalytics\n}\n\nexport interface Variant {\n id: number,\n attributes: {\n [key: string]: VariantsAttribute\n }\n}\n\nexport type Variants = Variant[]\n\nexport type VariantsAttribute = string | number | boolean | string[] | undefined\n\nexport interface AlternativeProduct {\n color: string,\n url: string,\n id: string,\n variants?: Variants,\n s?: string,\n price: number\n comparePrice: number,\n formattedCompare?: string,\n formattedPrice?: string,\n attributes?: Attribute[] | undefined\n}\n\nexport interface ServerPromotile {\n height: number;\n id: string;\n image: string;\n link: string;\n width: number;\n title: string;\n}"]}
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/@types/product.ts"],"names":[],"mappings":"AA6BA,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\";\nimport {PromoTileConfig} from \"./promoTile\";\n\nexport interface ProductAnalytics {\n global_impressions?: string\n context_impressions?: string\n global_cpi?: string\n context_cpi?: string\n global_rpi?: string\n context_rpi?: string\n global_rpi_corrected?: number\n context_rpi_corrected?: number\n global_rpi_cp_lower?: number\n context_rpi_cp_lower?: number\n global_rpi_corrected_cp_lower?: number\n context_rpi_corrected_cp_lower?: number\n beta_alpha_post_local?: number\n beta_beta_post_local?: number\n aov_for_cdf_local?: number\n sales_days?: number[]\n sales_weeks?: number[]\n sales_months?: number[]\n is_hidden_winner?: boolean\n is_overexposed?: boolean\n explanation?: string\n user_segment_coef?: number\n gender_coef?: number // Gender-based RPI correction factor (1.0 = no change)\n}\n\nexport enum FeaturedRanking {\n FEATURED_RANK_NO,\n FEATURED_RANK_ON_MATCH,\n FEATURED_RANK_ALWAYS,\n FEATURED_RANK_NEVER,\n}\n\nexport interface ServerProduct {\n c: Currency\n d: string\n f: FeaturedRanking\n id: productID\n iso: boolean\n l: string\n p: string\n p_c: string\n p_max: string\n p_max_c: string\n p_min: string\n p_min_c: string\n p_spl: number\n p_spl_id?: string\n review?: number\n reviews_count?: number\n s: string\n sku: string\n skus: string[]\n t: string\n t2: string\n u: string\n v_c: number\n v: string\n vra: ServerVariant[]\n vrc: object\n att?: Attribute[]\n real_sku?: string\n image_id?: string\n alt?: AlternativeColor[]\n inventory_lvl?: number\n promotile?: boolean\n imageID?: string\n rec_src?: number\n analytics?: ProductAnalytics\n}\n\nexport type ServerVariant = [number, VariantData[]]\nexport type VariantData = [string, string[]]\n\nexport type Attribute = [string, AttributeData[]]\nexport type AttributeData = string[] | string[][]\n\nexport interface ServerAltProductVariant {\n sellable: boolean;\n size: string;\n v_id: number;\n}\n\nexport interface ServerAltProductData {\n l: string;\n p: string;\n p_c: string;\n p_spl: number;\n p_spl_id?: number;\n sku?: string;\n t: string[];\n vra: ServerAltProductVariant[];\n review?: number;\n reviews_count?: number;\n att?: any[];\n s?: string;\n p_min: string;\n p_max: string;\n}\n\nexport type AlternativeColor = [AlternativeColorName, AlternativeColorURL, productID?, ServerAltProductData?]\n\ntype AlternativeColorName = string\ntype AlternativeColorURL = string\ntype productID = number\n\nexport interface Badge {\n tag: string;\n url: string;\n}\n\nexport interface TextBadge {\n badgeText: string;\n tag: string;\n badgeStyle: {\n backgroundColor: string;\n borderColor: string;\n borderRadius: number;\n horizontal: string;\n vertical: string;\n size: number;\n textColor: string;\n }\n}\n\nexport interface Products {\n [id: string]: Product\n}\n\nexport interface Product {\n currency: Currency\n id: string\n title: string\n description: string\n variants: Variants\n isSoldOut: boolean\n price: number\n minPrice: number\n maxPrice: number\n maxCompare: number\n comparePrice: number\n maxFormattedCompare: string;\n reviewScore: number | undefined\n reviewCount: number | undefined\n imageURL: string\n imageURL2: string\n optimizedURL?: string;\n formattedPrice: string\n formattedCompare: string | undefined\n vendor: string\n sku: string\n s: string\n inventory_lvl?: number\n imagesSrcset: string\n productURL: string\n productBadges: Badge[]\n productTextBadges?: TextBadge[]\n alternativeProducts?: AlternativeProduct[]\n tags?: string[]\n promoTileConfig?: PromoTileConfig\n attributes?: Attribute[]\n p_spl?: number\n p_spl_id?: string\n isIspNoPrice?: boolean\n imageID?: string\n vrc?: object\n analytics?: ProductAnalytics\n}\n\nexport interface Variant {\n id: number,\n attributes: {\n [key: string]: VariantsAttribute\n }\n}\n\nexport type Variants = Variant[]\n\nexport type VariantsAttribute = string | number | boolean | string[] | undefined\n\nexport interface AlternativeProduct {\n color: string,\n url: string,\n id: string,\n variants?: Variants,\n s?: string,\n price: number\n comparePrice: number,\n formattedCompare?: string,\n formattedPrice?: string,\n attributes?: Attribute[] | undefined\n}\n\nexport interface ServerPromotile {\n height: number;\n id: string;\n image: string;\n link: string;\n width: number;\n title: string;\n}"]}
@@ -5,6 +5,7 @@ import { FacetItem } from "../FacetItem/FacetItem";
5
5
  import { NarrowParser, FacetsTypes, } from "@fast-simon/utilities";
6
6
  import { FromToFilter } from "../FromToFilter/FromToFilter";
7
7
  import { getBackOfficeFilters, getBackOfficeFilterTooltipText, getLastReceivedTimeRange } from "./utils";
8
+ import classNames from "classnames";
8
9
  const BackOfficeFiltersMenu = ({ narrow, onNarrowChange, onPageChange }) => {
9
10
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
10
11
  const [filters, setFilters] = useState(getBackOfficeFilters());
@@ -67,7 +68,7 @@ const BackOfficeFiltersMenu = ({ narrow, onNarrowChange, onPageChange }) => {
67
68
  onPageChange(1);
68
69
  setFilters(getBackOfficeFilters());
69
70
  };
70
- return (_jsxs("div", Object.assign({ className: classes.filtersContainer, style: { opacity: disableFilters ? 0.5 : 1, pointerEvents: disableFilters ? 'none' : 'auto' } }, { children: [_jsxs("div", Object.assign({ className: classes.headerContainer }, { children: [_jsx("h2", Object.assign({ className: classes.title }, { children: "Inventory & Sales Filters" })), _jsxs("div", Object.assign({ className: classes.clearAllButton, onClick: clearAll }, { children: [_jsx("span", { className: `ph ph-eraser`, style: { fontSize: '20px' } }), _jsx("span", Object.assign({ className: classes.clearAllText }, { children: "Clear all" }))] }))] })), _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"] }) }))] })));
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", {})] }) }))] })));
71
72
  };
72
73
  export default BackOfficeFiltersMenu;
73
74
  //# sourceMappingURL=BackOfficeFiltersMenu.js.map
@@ -1 +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\";\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.headerContainer}>\n <h2 className={classes.title}>Inventory & Sales Filters</h2>\n <div className={classes.clearAllButton} onClick={clearAll}>\n <span className={`ph ph-eraser`} style={{fontSize: '20px'}}/>\n <span className={classes.clearAllText}>Clear all</span>\n </div>\n </div>\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 </div>\n )\n};\n\nexport default BackOfficeFiltersMenu;"]}
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&nbsp;&nbsp;&nbsp;<i/></small>\n </span>\n </div>\n )\n};\n\nexport default BackOfficeFiltersMenu;\n"]}
@@ -1,50 +1,10 @@
1
1
  .filtersContainer {
2
- padding: 0;
3
- font-size: 12px;
2
+ padding: 8px 16px;
3
+ font-size: 12px;
4
4
  }
5
-
6
- .headerContainer {
7
- display: flex;
8
- justify-content: space-between;
9
- align-items: center;
10
- padding: 16px 24px;
11
- background-color: #f9fafb;
12
- }
13
-
14
- .title {
15
- font-family: Assistant;
16
- font-size: 18px;
17
- font-weight: bold;
18
- color: #222635;
19
- margin: 0;
20
- }
21
-
22
- .clearAllButton {
23
- display: flex;
24
- flex-direction: row;
25
- justify-content: center;
26
- align-items: center;
27
- gap: 4px;
28
- padding: 8px 10px;
29
- border-radius: 6px;
30
- border: solid 1px #dddfe4;
31
- background-color: #fff;
5
+ .clearAll {
6
+ color: var(--blue);
7
+ text-decoration: none;
32
8
  cursor: pointer;
33
- transition: background-color 150ms ease-in-out;
34
- }
35
-
36
- .clearAllButton:hover {
37
- background-color: #f5f7fa;
38
- }
39
-
40
- .clearAllText {
41
- font-family: Assistant;
42
- font-size: 14px;
43
- font-weight: normal;
44
- font-stretch: normal;
45
- font-style: normal;
46
- line-height: normal;
47
- letter-spacing: normal;
48
- text-align: center;
49
- color: #33394f;
9
+ font-size: 1.2rem;
50
10
  }
@@ -22,6 +22,35 @@
22
22
  width: 0;
23
23
  }
24
24
 
25
+ .checkmark {
26
+ min-height: 16px;
27
+ min-width: 16px;
28
+ background-color: #eee;
29
+ margin-right: 10px;
30
+ }
31
+
32
+ .fsCheckbox:hover input ~ .checkmark {
33
+ background-color: #d00202cf;
34
+ }
35
+
36
+ .fsCheckbox input:checked ~ .checkmark {
37
+ background-color: white;
38
+ }
39
+
40
+ .fsCheckbox input:checked ~ .checkmark:after {
41
+ display: block;
42
+ }
43
+
44
+ .fsCheckboxx .checkmark:after {
45
+ left: 5px;
46
+ width: 4px;
47
+ height: 9px;
48
+ border: solid white;
49
+ border-width: 0 2px 2px 0;
50
+ -webkit-transform: rotate(45deg);
51
+ -ms-transform: rotate(45deg);
52
+ transform: rotate(45deg);
53
+ }
25
54
  .fsSelectedCheckboxTrue{}
26
55
  .fsSelectedCheckboxFalse{}
27
56
 
@@ -40,6 +69,9 @@
40
69
  .checkbox {
41
70
  display: flex;
42
71
  position: relative;
72
+ padding: 0 5px 0 0;
73
+ margin-top: 5px;
74
+ margin-bottom: 5px;
43
75
  cursor: pointer;
44
76
  -webkit-user-select: none;
45
77
  -moz-user-select: none;
@@ -72,13 +104,10 @@
72
104
  }
73
105
 
74
106
  .checkmark {
75
- min-height: 13px;
76
- min-width: 13px;
77
- border: #717788 2px solid;
78
- background-color: unset;
79
- border-radius: 4px;
107
+ min-height: 16px;
108
+ min-width: 16px;
109
+ background-color: #eee;
80
110
  margin-right: 10px;
81
- position: relative;
82
111
  }
83
112
 
84
113
  .checkbox:hover input ~ .checkmark {
@@ -86,10 +115,7 @@
86
115
  }
87
116
 
88
117
  .checkbox input:checked ~ .checkmark {
89
- background-color: #4374f2;
90
- border: none;
91
- min-height: 17px;
92
- min-width: 17px;
118
+ background-color: #000000;
93
119
  }
94
120
 
95
121
  .checkmark:after {
@@ -103,10 +129,9 @@
103
129
  }
104
130
 
105
131
  .checkbox .checkmark:after {
106
- left: 6px;
107
- width: 3px;
108
- height: 8px;
109
- top: 2px;
132
+ left: 5px;
133
+ width: 4px;
134
+ height: 9px;
110
135
  border: solid white;
111
136
  border-width: 0 2px 2px 0;
112
137
  -webkit-transform: rotate(45deg);
@@ -115,4 +140,4 @@
115
140
  }
116
141
  :global(.modal-mobile-filters .fs-serp-filter-count, .modal-mobile-filters .fsSerpCheckmark) {
117
142
  display: none;
118
- }
143
+ }
@@ -8,13 +8,13 @@
8
8
  -webkit-font-smoothing: antialiased;
9
9
  -moz-osx-font-smoothing: grayscale;
10
10
  letter-spacing: .2px;
11
- background-color: #f9fafb;
11
+ background-color: #fff0;
12
12
  border: none;
13
- width: calc(100% - 48px);
13
+ width: 100%;
14
14
  text-align: left;
15
- padding: 12px 24px;
15
+ padding: 8px 0;
16
16
  position: relative;
17
- border-radius: 0;
17
+ border-radius: 8px;
18
18
  transition: background-color .2s ease-out;
19
19
  cursor: pointer;
20
20
  color: #000;
@@ -23,8 +23,6 @@
23
23
  display: flex;
24
24
  gap: 10px;
25
25
  align-items: center;
26
- border-top: solid 1px #dddfe4;
27
- border-bottom: solid 1px #dddfe4;
28
26
  }
29
27
 
30
28
  .fsFacetContainer {
@@ -27,6 +27,7 @@ import { newObject } from "../common";
27
27
  import { getShowSalesAnalyticsSetting } from "../../utils/getSalesAnalyticsSettings";
28
28
  import { getLSVectorSearchOn } from "../../utils/getLSVectorSearch";
29
29
  import { getPersonalizationSegment } from "../../utils/userSegmentPreview";
30
+ import { buildPersonalizationParams } from "../../utils/personalizationPreview";
30
31
  import { FullTextSearch } from "../../services/search";
31
32
  import { SmartCollections } from "../../services/smartCollections";
32
33
  import { Autocomplete } from "../../services/autocomplete";
@@ -63,6 +64,7 @@ const FastSimonApi = (_a) => {
63
64
  variation_id: variationId,
64
65
  force_and: false,
65
66
  user_segment_preview: 'none',
67
+ personalization_preview: null,
66
68
  // Compare Mode state
67
69
  comparisonData: null,
68
70
  isComparing: false
@@ -72,6 +74,10 @@ const FastSimonApi = (_a) => {
72
74
  const userSegmentPreviewRef = useRef(state.user_segment_preview);
73
75
  const lastFetchedSegmentRef = useRef(state.user_segment_preview);
74
76
  userSegmentPreviewRef.current = state.user_segment_preview;
77
+ // Ref for personalization_preview: same pattern as user segment
78
+ const personalizationPreviewRef = useRef(state.personalization_preview);
79
+ const lastFetchedPersonalizationRef = useRef(state.personalization_preview);
80
+ personalizationPreviewRef.current = state.personalization_preview;
75
81
  const [categories, setCategories] = useState([]);
76
82
  const [analyticsFetched, setAnalyticsFetched] = useState(false);
77
83
  const [lastAnalyticsQuery, setLastAnalyticsQuery] = useState('');
@@ -117,6 +123,10 @@ const FastSimonApi = (_a) => {
117
123
  userSegmentPreviewRef.current = preview;
118
124
  dispatch === null || dispatch === void 0 ? void 0 : dispatch({ type: 'setUserSegmentPreview', payload: preview });
119
125
  }
126
+ function setPersonalizationPreview(preview) {
127
+ personalizationPreviewRef.current = preview;
128
+ dispatch === null || dispatch === void 0 ? void 0 : dispatch({ type: 'setPersonalizationPreview', payload: preview });
129
+ }
120
130
  // Compute detailed comparison between Hybrid ON and Hybrid OFF using full ID lists
121
131
  function computeComparisonFromIds(hybridOnIds, hybridOffIds) {
122
132
  // Create rank maps (1-based index)
@@ -300,7 +310,6 @@ const FastSimonApi = (_a) => {
300
310
  disable_merchandising_rules: state.flag.find((f) => f == "disable_merchandising_rules") ? 1 : 0,
301
311
  disable_antonyms: state.flag.find((f) => f == "disable_antonyms") ? 1 : 0,
302
312
  variation_id: state.variation_id,
303
- force_and: state.force_and,
304
313
  };
305
314
  fetchResults(fetchParams, isInfiniteScroll, state.isAutocomplete);
306
315
  }
@@ -515,6 +524,12 @@ const FastSimonApi = (_a) => {
515
524
  setCollectionID(state.collectionID);
516
525
  }
517
526
  }, [state.user_segment_preview]);
527
+ // Refetch collection when personalization_preview changes
528
+ useEffect(() => {
529
+ if (state.collectionID && state.personalization_preview !== lastFetchedPersonalizationRef.current) {
530
+ setCollectionID(state.collectionID);
531
+ }
532
+ }, [state.personalization_preview]);
518
533
  // Settings modal refetch: triggered after state is updated (no race conditions)
519
534
  useEffect(() => {
520
535
  var _a, _b, _c, _d, _e, _f, _g;
@@ -673,6 +688,7 @@ const FastSimonApi = (_a) => {
673
688
  }));
674
689
  };
675
690
  const onCollection = (props, isInfiniteScroll) => {
691
+ var _a;
676
692
  setIsLoading({ products: true, filters: true });
677
693
  // Pass with_product_analytics only on first request for this collection OR when switching from search to collection
678
694
  // AND only if merchant is enterprise or subscription level 5
@@ -683,11 +699,13 @@ const FastSimonApi = (_a) => {
683
699
  const shouldFetchAnalytics = currentForceAnalytics || (isAnalyticsEnabled && (currentCollection !== lastAnalyticsCollection || lastAnalyticsMode !== 'collection'));
684
700
  const personalizationSegment = getPersonalizationSegment(userSegmentPreviewRef.current);
685
701
  lastFetchedSegmentRef.current = userSegmentPreviewRef.current;
686
- SmartCollections.getSmartCollections(Object.assign(Object.assign({}, props), { withAttributes: promoTiles || withProductAttributes, with_product_analytics: shouldFetchAnalytics, market_context: marketContext, variation_id: state.variation_id, ps: personalizationSegment, force_and: state.force_and }))
702
+ const personalizationParams = buildPersonalizationParams((_a = personalizationPreviewRef.current) !== null && _a !== void 0 ? _a : { enabled: false, spvJson: '', types: ['gender'] });
703
+ lastFetchedPersonalizationRef.current = personalizationPreviewRef.current;
704
+ SmartCollections.getSmartCollections(Object.assign(Object.assign({}, props), { withAttributes: promoTiles || withProductAttributes, with_product_analytics: shouldFetchAnalytics, market_context: marketContext, variation_id: state.variation_id, ps: personalizationSegment, spv: personalizationParams.spv, personalization: personalizationParams.personalization, force_and: state.force_and }))
687
705
  .then((response) => __awaiter(void 0, void 0, void 0, function* () {
688
- var _a;
706
+ var _b;
689
707
  // Mark analytics as fetched only if response contains analytics data with badges
690
- if (shouldFetchAnalytics && ((_a = response.analytics) === null || _a === void 0 ? void 0 : _a.badges)) {
708
+ if (shouldFetchAnalytics && ((_b = response.analytics) === null || _b === void 0 ? void 0 : _b.badges)) {
691
709
  setAnalyticsFetched(true);
692
710
  setLastAnalyticsCollection(currentCollection);
693
711
  setLastAnalyticsMode('collection');
@@ -703,6 +721,8 @@ const FastSimonApi = (_a) => {
703
721
  listIdRequestProps.variation_id = state.variation_id;
704
722
  listIdRequestProps.force_and = state.force_and;
705
723
  listIdRequestProps.ps = personalizationSegment;
724
+ listIdRequestProps.spv = personalizationParams.spv;
725
+ listIdRequestProps.personalization = personalizationParams.personalization;
706
726
  let listIdRes = yield SmartCollections.getSmartCollectionsProductsIds(listIdRequestProps).then((response) => {
707
727
  return response;
708
728
  });
@@ -716,6 +736,8 @@ const FastSimonApi = (_a) => {
716
736
  facetsRequestProps.variation_id = state.variation_id;
717
737
  facetsRequestProps.force_and = state.force_and;
718
738
  facetsRequestProps.ps = personalizationSegment;
739
+ facetsRequestProps.spv = personalizationParams.spv;
740
+ facetsRequestProps.personalization = personalizationParams.personalization;
719
741
  let facetsRes = yield SmartCollections.getSmartCollections(facetsRequestProps).then((response) => {
720
742
  return response;
721
743
  });
@@ -827,6 +849,7 @@ const FastSimonApi = (_a) => {
827
849
  setVariationId,
828
850
  setForceAnd,
829
851
  setUserSegmentPreview,
852
+ setPersonalizationPreview,
830
853
  updateSettingsAndRefetch
831
854
  } }, { children: _jsx(FastState.Provider, Object.assign({ value: stateContextValue }, { children: _jsx(ThemeProvider, Object.assign({ theme: mergedTheme }, { children: children })) })) })));
832
855
  };