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
138 lines
2.8 KiB
Plaintext
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 |