import { CardRenderer } from "../CardRenderers"; import { ComponentMeta } from "../ComponentsMeta"; import { IncompatibleWithAnyProducts } from "../IncompatibleWithAnyProducts"; import { __, CouponsPlus } from "../../globals"; import { usingTestable } from "./CardHelpers"; import { iconWithClassName } from "../IconWithClassName"; import { FieldType } from "../fields"; import { ComponentCategory } from "../components"; import { TabsProps } from "../fields/tabs"; import { productInIncludeModeOnlyWithVariableProducts } from "./InclusionValueValidator"; export type OnSaleOptions = { type: 'include' | 'exclude', } export const type = CouponsPlus?.components?.filters?.OnSale.type; export const OnSaleMeta: ComponentMeta = IncompatibleWithAnyProducts({ id: type, type: 'filters', fieldsTitlePrefix: false, category: ComponentCategory.Filter_Price, priority: 10, supportsCustomTitleForSuggestedScopes: (suggestedScope) => ['bogo'].includes(suggestedScope), icon: iconWithClassName(({className, context}) => { if (context === 'card') { // solid return } // outline return }), canBeCombined: productInIncludeModeOnlyWithVariableProducts, fieldsMap: [ [ {id: 'type', renderType: FieldType.Tab, fieldProps: {direction: 'vertical'} as TabsProps}, ] ] }) export const OnSaleRenderer: CardRenderer = { type: OnSaleMeta.id, icon: OnSaleMeta.icon!, prefix: false, example: __('Regular price or Discounted only'), ComputedValue: usingTestable((testable, {context}) => { const {options: {type}} = testable.getData()! if (type === 'include') { return
{__('On Sale Only')}
} return
{__('Not On Sale')}
}), AboveComputedValue: () => false, }