Giter VIP home page Giter VIP logo

Comments (4)

danielweinmann avatar danielweinmann commented on September 1, 2024

Hey, @wladiston! Thanks for creating this issue!

Can you share a code example with the schema, the action, and the form?

Thanks!

from remix-forms.

wladpaiva avatar wladpaiva commented on September 1, 2024

Sure thing, there you go

Schema

export const CurrencySchema = z
  .string()
  .regex(
    /^\d*(\.\d{3})?(,\d{1,2})?$/,
    'Deve ser um número com duas casas decimais depois da virgula.',
  )
  .transform(transformMoney)

/**
 * Convert the monetary string to the money in cents
 * @param text
 * @returns money in cents
 */
function transformMoney(text: unknown) {
  const numbers = (text as string).replace(/[A-Za-z.]/, '').split(',')
  const decimals = `${numbers[1] === undefined ? '' : numbers[1]}00`.slice(0, 2)
  const formattedNumber = `${numbers[0]}${decimals}`
  return parseInt(formattedNumber, 10)
}

export const schema = z.object({
  value: CurrencySchema.refine(
    a => (typeof a === 'number' ? a > 0 : true),
    'Valor deve ser maior que zero',
  ),
})

action

const mutation = makeDomainFunction(schema)(async (values, {venueId}) => {
  console.log('values', values)
  debugger
})

export const action: ActionFunction = async ({request, params}) => 
  formAction({
    request,
    schema,
    mutation,
  })

Form is just a normal magic one

from remix-forms.

danielweinmann avatar danielweinmann commented on September 1, 2024

Hey, @wladiston!

I just ran a test with your code and it seems to be working for me. Let me check if I understand the idea: if I type 1234,56 on the field, values inside your mutation should be { values: 123456 }? That's what I'm getting.

from remix-forms.

wladpaiva avatar wladpaiva commented on September 1, 2024

Correct, yeap, I actually forgot to close this cause I got it working

from remix-forms.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.