PositiveAssert.ts 625 B

12345678910111213141516171819202122
  1. import type { AssertRule } from '~/types/interfaces'
  2. import { useI18n } from 'vue-i18n'
  3. export class PositiveAssert implements AssertRule {
  4. supports(key: string): boolean {
  5. return key === 'positive'
  6. }
  7. createRule(criteria: string): (value: unknown) => true | string {
  8. const { t } = useI18n()
  9. if (criteria === 'positive') {
  10. return (value: number) =>
  11. value === null || value > 0 || t(`must_be_positive`)
  12. } else if (criteria === 'positive_or_zero') {
  13. return (value: number) =>
  14. value === null || value >= 0 || t(`must_be_positive_or_egal_0`)
  15. }
  16. return () => true
  17. }
  18. }