Reputation: 1459
About this React component library.
How can I put border styling with input component?
<CardElement style={{
base: {
fontSize: '18px',
border: '1px solid red' // it is not work.
}
}} />
but, seems they didn't provide custom style interface, though.
Anyone know?
Update:
following are sample code that using StripeElement
class to apply custom styling.
.StripeElement {
border: 1px solid #eee;
}
.StripeElement--invalid {
border: 1px solid red;
}
Upvotes: 45
Views: 80920
Reputation: 1
There is an appearance api (https://stripe.com/docs/elements/appearance-api ) where you can see what CSS properties you can use on style object in options prop.
For now I have found a couple of ways of styling.
<div style={{ display: "flex" }}>
<div style={{ flexBasis: "100%" }}>
<CardExpiryElement
options={options}
className="cardExpiryElement"
/>
</div>
<div style={{ flexBasis: "100%" }}>
<CardCvcElement options={options} className="cardCvcElement" />
</div>
</div>
</div>
Upvotes: 0
Reputation: 1305
In the docs there is a reference to an options
prop which you can add to the CardElement
component:
const cardElementOptions = {
style: {
base: {
color: "#666",
fontSize: "20px",
},
invalid: {
color: "#fa755a",
fontSize: "20px",
}
}
}
return (
<form onSubmit={handleOnSubmit}>
<CardElement options={cardElementOptions} />
<button type="submit">Submit</button>
</form>
)
See also https://stripe.com/docs/js/appendix/style
Upvotes: 3
Reputation: 6705
The simplest solution is:
<div
style={
{
border: '2px solid red'
}
}
>
</div>
Upvotes: 15
Reputation: 9211
I was trying to add padding, and the wrapper div did not work for me. However, they added a change to react-stripe-elements to allow for a className
on the card element. That worked for me:
In my css:
.card-element {
padding: 11.4px 12px;
}
For my CardElement:
<CardElement style={style} className="card-element" />
You still have to use inline styling for the attributes that are in the element options styles: https://stripe.com/docs/stripe-js/reference#element-options
Upvotes: 6
Reputation: 738
Great question! As noted here, to apply padding or a border to a Stripe element you want to style the parent DOM node that contains the element, not the element itself:
https://stripe.com/docs/elements/reference#the-element-container
I'd wrap your CardElement in a div and then apply styling to that. As noted above, Elements automatically applies the StripeElement
class to the parent element, as well as complete/empty/focus/invalid states.
Upvotes: 18