web-dev-qa-db-ja.com

bootstrapからcssクラスを適用するときのPrimeNGカレンダーのバグ

PrimeNGを使用してアプリケーションにDatePickerを表示するこの奇妙なバグがあります。ブートストラップのform-controlを使用しようとすると、視覚的なバグが発生します。

これが私のテンプレートです:

<div class="form-group row">
    <div class="form-group col-md-2">
        <label for="valeur">Valeur</label>
        <input type="number" id="valeur" class="form-control" />
    </div>

    <div class="form-group col-md-5">
        <label for="dateDebut">Date de début</label>
        <p-calendar id="dateDebut" dateFormat="dd/mm/yy" styleClass="form-control" [showIcon]="true"></p-calendar>
    </div>

    <div class="form-group col-md-5">
        <label for="dateFin">Date de fin</label>
        <p-calendar id="dateFin" dateFormat="dd/mm/yy" styleClass="form-control" [showIcon]="true"></p-calendar>
    </div>
</div>

これが結果です:

enter image description here

[〜#〜]編集[〜#〜]

それが助けになるなら、ここに生成されたHTMLがあります:

<div class="form-group col-md-5" _ngcontent-scp-1="">
   <label for="dateDebut" _ngcontent-scp-1="">Date de début</label>
   <p-calendar ng-reflect-show-icon="true" ng-reflect-date-format="dd/mm/yy" ng-reflect-style-class="form-control" styleclass="form-control" id="dateDebut" dateformat="dd/mm/yy" _ngcontent-scp-1="">
      <!--template bindings={
         "ng-reflect-ng-if": "true"
         }-->
      <span ng-reflect-initial-classes="form-control" class="form-control ui-calendar" ng-reflect-raw-class="ui-calendar">
         <input id="dp1467976345328" ng-reflect-value="" class="hasDatepicker ui-inputtext ui-widget ui-state-default ui-corner-left" ng-reflect-raw-class="[object Object]" type="text"><!--template bindings={
            "ng-reflect-ng-if": "true"
            }--><button ng-reflect-icon="fa-calendar" type="button" pbutton="" class="ui-datepicker-trigger ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only"><span class="ui-button-icon-left ui-c fa fa-fw fa-calendar"></span><span class="ui-button-text ui-c">ui-button</span></button>
      </span>
      <!--template bindings={
         "ng-reflect-ng-if": "false"
         }-->
   </p-calendar>
</div>
8
Shimrod

私は以下の回避策を使用しましたが、これはIEとChromeの両方で正常に動作しています:

<p-calendar [inputStyle]="{'width':'55%'}" ...

それを試してみてください

6
iPaul

PrimeNGのカレンダーコンポーネントには、4つのスタイル属性があります。2つはインラインスタイルの追加用で、もう2つはスタイル(css)クラスの追加用です-stylestyleClassinputStyleおよびinputStyleClass

  • stylestyleClassは、コンポーネント自体をスタイルするために使用されます(カレンダー)
  • inputStyleおよびinputStyleClassは、入力フィールドのスタイルを設定するために使用されます

したがって、この動作はバグではありません。間違った属性を使用しているため、これは予想される動作です。追加する場合はform-controlクラスをPrimeNGのカレンダー入力フィールドに追加するには、inputStyleClass属性の代わりにstyleClassを使用する必要があります。

 <div class="form-group col-md-5">
    <label for="dateFin">Date de fin</label>
    <p-calendar id="dateFin" dateFormat="dd/mm/yy" inputStyleClass="form-control" [showIcon]="true"></p-calendar>
</div>

PrimeNGのカレンダーコンポーネントの属性のリスト全体を確認してください here

5
Stefan Svrkota

このcssを追加すると、アイコンが配置され、inputStyleClass属性にフォームコントロールが追加されます。

.ui-calendar button {
    right: 0;
    top: 0;
}
.ui-calendar {
    width: 100%;
}

<p-calendar dateFormat="dd/mm/yy" showTime="showTime" hourFormat="24" formControlName="start" [showIcon]="true" inputStyleClass="form-control"></p-calendar>
3
louisl
  1. "inputStyleClass"プロパティを使用してcssクラスを設定します

<p-calendar inputStyleClass="form-control"></p-calendar>

  1. インラインフォームを使用していない場合は、「ui-calendar "cssクラス
.ui-calendar {
    display: block;
}
2
Mina Matta

@Srefan Svrkotaの回答への追加。フォームコントロールクラスのインラインスタイルを上書きする別のcssクラスを作成できます。

    .showCalenderInline
    {
    display: inline !important;
    }

and apply to calendar : inputStyleClass="form-control showCalenderInline"
0
ravi gupta

こんにちは皆さん多分あなたはこれを試すことができます。私のコードにこれを使用しています

次のようにstyleClassおよびinputStyleClassを追加します。

<p-calendar styleClass="form-control" inputStyleClass="form-control" ></p-calendar>

そして、私のためにいくつかのCSSを変更してみてください:

.ui-inputtext{ margin:-7px -12px; }

.ui-button, button.ui-button.ui-state-default, .ui-button.ui-state-default{ top:0px; right: -1px; }

.ui-calendar button{ width: 2.5em; }

結果は enter image description here

0