yii2 AutoComplete position - yii2

It was working perfectly, I have changed nothing, and I have realized that my AutoComplete widget is showing up not there where it was before (it was in the gridView, right underneath the filter textinput where it is expected). Now it shows up in the left upper corner of the page, with the first 2-3 options covered by the navbar. Is there a change in AutoComplete, or in Yii2 now? I have found an option appendTo that has maybe something to do with the problem, and I have done experiments with it but no luck, either it doesn't show up, or still on the wrong place. I have found nothing else relevant.
Here is my code in the gridview:
[
'attribute' => 'name',
'contentOptions' => ['nowrap' => 'nowrap'],
'filter' => AutoComplete::widget([
'model' => $searchModel,
'attribute' => 'name',
'clientOptions' => [
'source' => Pl::find()->allAutoCompleteName(),
'autoFill' => true,
],
'options' => ['class' => 'form-control']
]),
],
The id of the search field is plsearch-name
The js:
jQuery('#plsearch-name').autocomplete({"source":[{"value":"PE 150","label":"PE 150"}...],"autoFill":true});
If I'm setting the appendTo in clientOptions to '#plsearch-name', then it doesn't show up at all, however it is correct, isn't it? I don't see any styling in it.
What also quite interesting is:
<input
type="text"
id="plsearch-name"
class="form-control ui-autocomplete-input"
name="PlSearch[name]"
autocomplete="off"/>
What is this autocomplete="off" doing there?
Can you please point me to the right direction? Thanks a lot!

This Problem is fixed here: https://github.com/yiisoft/yii2-jui/commit/36468550d72bce9d963149abe85b13ea2f3a8c18
The JQuery UI Version should be updated to 1.12
"require": {
"yiisoft/yii2": "~2.0.4",
- "bower-asset/jquery-ui": "1.11.*#stable"
+ "bower-asset/jquery-ui": "~1.12.1"
},

Related

How to remove the "max-height" online style of modal?

I created a code that displays a link to open a modal window.
The problem is that the text comes out of the window.
When I inspect the code of my page, there is an online style style="max-height: 570px;"
If I add the following code to my style sheet, it works. But is there another solution? I make a mistake in my code :
div#drupal-modal--content[style] {
max-height: none !important;
}
How to remove the online style of modal ?
public function buildPaneForm(array $pane_form, FormStateInterface $form_state, array &$complete_form) {
$store_name = $this->order->getStore()->getName();
$store_id = $this->order->getStoreId();
$pane_form['#attached']['library'][] = 'core/drupal.dialog.ajax';
$attributes = [
'attributes' => [
'class' => 'use-ajax',
'data-dialog-type' => 'modal',
'data-dialog-options' => Json::encode([
'width' => auto,
]),
],
];

ExportMenu Kartik doesn't work in yii2 GridView widget

The export dropdown and toggle dropdown do not appear on click. I can't see any errors in console of developer tool.
I have used exactly same code in another project and that seems to work, the only difference is in the column set.
<?php
$exportColumns=[
'name',
'email',
'username',
];
echo ExportMenu::widget([
'dataProvider' => $dataProvider,
'columns' =>$exportColumns,
'dropdownOptions' => [
'label' => 'Export All',
'class' => 'btn btn-secondary'
]
]);
?>
I had a similar issue with my own Yii2 project. In my project the dropdown menu worked, but the buttons that appeared were unresponsive and the entire page froze without any console error.
My own mistake was that I required two bootstrap versions in my composer.json (I left in yiisoft/yii2-bootstrap in my case, removed the other).
Double Bootstrap

yii2 star widget does not appear

I can not see starwidget in my yii2, I installed the widget, but it doesn't display stars.
See loading gif:
Following is my code:
echo '<label class="control-label">Rating</label>';
echo StarRating::widget([
'name' => 'rating_2',
'value' => 2.5,
'disabled' => true
]);
Is there an explanation to this. Please help!?
Check your js assets. Check if jQuery is not loading twice.

kartik GridView link data tags in ActionColumn

I am using Kartik's GridView. I want to show a text in a DataColumn that is an external link. The thing is that I need to have pjax activated in the GridView, but disabled for this particular link. My code is the following:
[
'class'=>'\kartik\grid\DataColumn',
'attribute'=>'idSubject.idnumber',
'value'=>function($model) {
return Html::a($model->getIdSubject()->one()->idnumber ,
['/subject/view','id'=>$model->getIdSubject()->one()->id_subject],
[
'data-pjax'=>0
]);
},
'format'=>'html',
'filter'=>Html::activeTextInput($searchModel, 'idnumber', ['class'=>'form-control']),
'label' => Yii::t('app', 'ID'),
'vAlign' => 'middle'
],
The text link is generated correctly, but without the data-pjax tag. I've put a data-confirm tag as well, and it is ignored. It seems that all extra tags I specify in the link are ignored. However, if I generate the exact same link in an ActionColumn, everything works as expected. Is there a way do add tags to an Html::a element in a DataColumn?
try to Use
[ 'data-pjax' => false ]

How to change one attribute display in yii2 DetailView widget?

I am using yii\widgets\DetailView to display some single object informations like this:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'username',
'email:email',
[
'attribute'=>'status',
'value' => $model->status,
],
'created_at:date',
'updated_at:date',
],
]) ?>
I want to display status in different color. So basically I would like to either add class of .red to the wrapping <td> tag, or even better to wrap the status with <span class="red">{value}</span>
GridView has contentOptions which is really easy to use. But with DetailView I have tried with options and template, but I couldn't make it work. Maybe I did something wrong, or I need to use some other attribute.
So this is not working for me:
[
'attribute'=>'status',
'value' => $model->status,
'template' => '<tr><th>{label}</th><td><span class="red">{value}</span></td></tr>'
],
Can someone explain how to achieve this ?
Thanks in advance.
You should simply try :
[
'attribute'=>'status',
'value' => '<span class="red">'.$model->status.'</span>',
'format' => 'raw',
],
Read more.