Files
klz-cables.com/.pnpm-store/v10/files/72/e3426d37ed73f6bde6ac66468c23f47ad85d16843d5dc04df11b3d6f872d619ef67504d59e3649268d563211dc6b3b28a762acb7c8ff23e950d63326864802
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

138 lines
2.8 KiB
Plaintext

'use client';
const equalsOperators = [{
label: 'equals',
value: 'equals'
}, {
label: 'isNotEqualTo',
value: 'not_equals'
}];
export const arrayOperators = [{
label: 'isIn',
value: 'in'
}, {
label: 'isNotIn',
value: 'not_in'
}];
const exists = {
label: 'exists',
value: 'exists'
};
const base = [...equalsOperators, ...arrayOperators, exists];
const numeric = [...base, {
label: 'isGreaterThan',
value: 'greater_than'
}, {
label: 'isLessThan',
value: 'less_than'
}, {
label: 'isLessThanOrEqualTo',
value: 'less_than_equal'
}, {
label: 'isGreaterThanOrEqualTo',
value: 'greater_than_equal'
}];
const geo = [...equalsOperators, {
label: 'near',
value: 'near'
}];
const within = {
label: 'within',
value: 'within'
};
const intersects = {
label: 'intersects',
value: 'intersects'
};
const like = {
label: 'isLike',
value: 'like'
};
const notLike = {
label: 'isNotLike',
value: 'not_like'
};
const contains = {
label: 'contains',
value: 'contains'
};
export const fieldTypeConditions = {
checkbox: {
component: 'Text',
operators: [...equalsOperators, exists]
},
code: {
component: 'Text',
operators: [...base, like, notLike, contains]
},
date: {
component: 'Date',
operators: [...numeric, exists]
},
email: {
component: 'Text',
operators: [...base, contains]
},
json: {
component: 'Text',
operators: [...base, like, contains, notLike, within, intersects]
},
number: {
component: 'Number',
operators: [...numeric, exists]
},
point: {
component: 'Point',
operators: [...geo, exists, within, intersects]
},
radio: {
component: 'Select',
operators: [...base]
},
relationship: {
component: 'Relationship',
operators: [...base]
},
richText: {
component: 'Text',
operators: [...base, like, notLike, contains]
},
select: {
component: 'Select',
operators: [...base]
},
text: {
component: 'Text',
operators: [...base, like, notLike, contains]
},
textarea: {
component: 'Text',
operators: [...base, like, notLike, contains]
},
upload: {
component: 'Relationship',
operators: [...base]
}
};
export const getValidFieldOperators = ({
field,
operator
}) => {
let validOperators = [];
if (field.type === 'relationship' && Array.isArray(field.relationTo)) {
if ('hasMany' in field && field.hasMany) {
validOperators = [...equalsOperators, exists];
} else {
validOperators = [...base];
}
} else {
validOperators = [...fieldTypeConditions[field.type].operators];
}
return {
validOperator: operator && validOperators.find(({
value
}) => value === operator) ? operator : validOperators[0].value,
validOperators
};
};
//# sourceMappingURL=field-types.js.map