J'essaie d'ajuster la largeur de la boîte de saisie react-datepicker et, étonnamment, j'ai trouvé peu d'informations et je ne suis pas en mesure d'affecter sa largeur. Je voudrais juste faire la largeur d'entrée 100% de son div contenant.
La largeur doit s'étendre jusqu'à la largeur de son conteneur parent.
<div className="myContainer">
<DatePicker
className="myDatePicker"
fixedHeight
readOnly={true}
isClearable={false}
placeholderText="End date"
selected={this.props.defaultValue}
onChange={(date) => this.props.handleDateChange(date)}
/>
</div>
Ce qui suit devrait avoir pour résultat que myDatePicker
a la même largeur que le parent myContainer
, mais la largeur reste inchangée.
.myContainer {
display: flex;
flex-wrap: nowrap;
flex-direction: row;
flex: 1 1 0px;
}
.myDatePicker {
width: 100%; // note: if I change this value to a fixed value (such as 500px) then the width is effected
}
La tentative la plus proche était celle-ci, mais elle affecte également la largeur de la fenêtre contextuelle, ce qui la fait s'étirer au-delà de la longueur de tout l'écran, donc cela ne fonctionne pas non plus comme une solution:
.myContainer div {
width: 100%;
}
Le sélecteur de date reste de la même longueur, sauf si une valeur px spécifique est définie pour la largeur.
Quelqu'un sait-il comment définir la largeur d'entrée à 100% pour react-datepicker?
[~ # ~] modifier [~ # ~] Je crois que la raison pour laquelle cela ne fonctionne pas comme un champ input
typique est parce que react-datepicker
est un input
qui est intégré plus profondément dans d'autres divs qui ont leur propre style (ou leur absence)
EDIT # 2: Voici un codepen montrant le problème - https://codepen.io/anon/pen/bjxENG
J'ai eu le même problème et l'ai résolu grâce à la réponse de Rbar.
Enveloppez votre composant DatePicker avec un conteneur personnalisé. Attribuez ensuite la largeur à ce conteneur et à ses enfants comme ci-dessous:
import "./customDatePickerWidth.css";
<div className="customDatePickerWidth">
<DatePicker dateFormat="dd/MM/yyyy" />
</div>
Dans le customDatePickerWidth.css:
.customDatePickerWidth,
.customDatePickerWidth > div.react-datepicker-wrapper,
.customDatePickerWidth > div > div.react-datepicker__input-container
.customDatePickerWidth > div > div.react-datepicker__input-container input {
width: 100%;
}
Pour empêcher les éléments flexibles de rétrécir, définissez le facteur de rétrécissement flexible sur 0:
.myContainer .myItem {flex-shrink: 0; }
.myContainer {
display: flex;
flex-wrap: nowrap;
flex-direction: row;
flex: 1 1 0px;
}
.myDatePicker {
width: 100%;
}
<div class="myContainer">
<input class="myDatePicker">
</div>
L'extrait ci-dessus fonctionne juste donc il DOIT y avoir un autre code interférant avec css ou échafaudage.
C'est mon html
<div class="container">
<div>
<div class="react-datepicker-wrapper">
<div class="react-datepicker__input-container">
<input class="form-control" type="text" value="">
</div>
</div>
</div>
</div>
J'ai utilisé un div wrapper autour du sélecteur de date de réaction et utilisé un sélecteur css spécifique pour que le diviseur de date réagisse aux wrappers s'applique autour de l'entrée et le div que j'ai ajouté pour avoir une largeur de 100%
c'est le sélecteur css appliqué à un div qui enveloppe l'extrait ci-dessus
.container > div,
.container > div > div.react-datepicker-wrapper,
.container > div > div > div.react-datepicker__input-container {
width: 100%;
}
Le résultat est que la largeur de la zone de saisie s'étend à 100%, mais la zone de sélection de la date de sortie reste la même largeur
//html file
<div className="customDatePickerWidth">
<DatePicker
placeholderText="Select Schedule Date"
/>
</div>
//css file
.customDatePickerWidth,
.customDatePickerWidth > div.react-datepicker-wrapper,
.customDatePickerWidth > div > div.react-datepicker__input-container
.customDatePickerWidth > div > div.react-datepicker__input-container input {
width: 100%;
height: 100%;
}
.react-datepicker__input-container {
width: inherit;
height: inherit;
}
.react-datepicker__input-container input {
width: inherit;
height: 100%;
}
.react-datepicker-wrapper {
width: 100%;
}
Utilisation de composants de style
import styled from 'styled-components';
const DatePickerStyled = styled.div`
/* STYLE FOR WITH */
.react-datepicker-wrapper {
width: 100%;
}
`;
enferme le composant
<DatePickerStyled>
<DatePicker dateFormat="dd/MM/yyyy" />
</DatePickerStyled>