import {__, CouponsPlus} from "../../../globals" import {ComponentMeta} from "../../ComponentsMeta" import {iconWithClassName} from "../../IconWithClassName" import {CardRenderer, CardRendererContext} from "../../CardRenderers"; import {usingTestableOptions} from "../CardHelpers" import {ComponentCategory} from "../../components"; import {inclusionValueValidatorFieldsMap} from "../InclusionValueValidator"; import {getCardComponentData} from "../../cards"; import {fieldsCacheContainer} from "../../FieldsCache"; export type UserIDOptions = { ids: string[], inclusionType: 'allowed' | 'forbidden' } const type = CouponsPlus?.components?.conditions?.UserID?.type || 'UserID' export const UserIDMeta: ComponentMeta = { id: type, type: 'conditions', category: ComponentCategory.Account, priority: 5, supportsTiers: false, icon: iconWithClassName(({className, context}) => { if (context === 'card') { // solid return } // outline return }), fieldsMap: inclusionValueValidatorFieldsMap('conditions', type, undefined, 'ids') }; export const UserIDRenderer: CardRenderer = { type, icon: UserIDMeta.icon!, prefix: '*', example: __(''), AboveComputedValue: usingTestableOptions(({inclusionType}, {context}) => { if ((['tier-base', 'tier-subchild'] as CardRendererContext[]).includes(context)) { return false } return inclusionType === 'allowed' ? __('Eligible Users') : __('Ineligible Users') }), ComputedValue: usingTestableOptions(({ids}, {context}) => { if (context === 'tier-base') { return getCardComponentData('condition', UserIDMeta.id).name } if (!ids || ids.length === 0) { return {__('Select a user')} } return
{ids.map((id) => { const userOption = fieldsCacheContainer.get('users').get(id); return
{userOption?.label || `ID ${id}`}
; })}
; }), }