Skip to content

Commit 01a7917

Browse files
ENGCOM-3357: Fix for Issue #4136, MAGETWO-53440 #14485
2 parents 645b78a + 043b52f commit 01a7917

File tree

9 files changed

+59
-10
lines changed

9 files changed

+59
-10
lines changed

app/code/Magento/Rule/Model/Condition/AbstractCondition.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,9 @@ public function getValueElement()
615615
// date format intentionally hard-coded
616616
$elementParams['input_format'] = \Magento\Framework\Stdlib\DateTime::DATE_INTERNAL_FORMAT;
617617
$elementParams['date_format'] = \Magento\Framework\Stdlib\DateTime::DATE_INTERNAL_FORMAT;
618+
$elementParams['placeholder'] = \Magento\Framework\Stdlib\DateTime::DATE_INTERNAL_FORMAT;
619+
$elementParams['autocomplete'] = 'off';
620+
$elementParams['readonly'] = 'true';
618621
}
619622
return $this->getForm()->addField(
620623
$this->getPrefix() . '__' . $this->getId() . '__value',

app/code/Magento/Rule/view/adminhtml/web/rules.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,8 @@ define([
220220

221221
var elem = Element.down(elemContainer, 'input.input-text');
222222

223+
jQuery(elem).trigger('contentUpdated');
224+
223225
if (elem) {
224226
elem.focus();
225227

app/design/adminhtml/Magento/backend/web/css/styles-old.less

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3845,6 +3845,26 @@
38453845

38463846
.rule-param-edit .element {
38473847
display: inline;
3848+
position: relative;
3849+
}
3850+
3851+
.rule-param-edit .element input.input-date,
3852+
.rule-param-edit .element input.input-date[readonly] {
3853+
background-color: @color-white;
3854+
min-width: 140px;
3855+
width: 140px !important;
3856+
cursor: pointer;
3857+
text-align: center;
3858+
opacity: 1;
3859+
margin-right: 10px;
3860+
padding-right: 40px;
3861+
3862+
+ .ui-datepicker-trigger {
3863+
position: absolute;
3864+
width: 140px;
3865+
text-align: right;
3866+
left: 0;
3867+
}
38483868
}
38493869

38503870
.rule-param-edit .element .addafter {

dev/tests/functional/lib/Magento/Mtf/Client/Element/ConditionsElement.php

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
namespace Magento\Mtf\Client\Element;
88

9-
use Magento\Mtf\ObjectManager;
10-
use Magento\Mtf\Client\Locator;
119
use Magento\Mtf\Client\ElementInterface;
10+
use Magento\Mtf\Client\Locator;
11+
use Magento\Mtf\ObjectManager;
1212

1313
/**
1414
* Typified element class for conditions.
@@ -135,6 +135,13 @@ class ConditionsElement extends SimpleElement
135135
*/
136136
protected $chooserGridLocator = 'div[id*=chooser]';
137137

138+
/**
139+
* Datepicker xpath.
140+
*
141+
* @var string
142+
*/
143+
private $datepicker = './/*[contains(@class,"ui-datepicker-trigger")]';
144+
138145
/**
139146
* Key of last find param.
140147
*
@@ -189,10 +196,7 @@ class ConditionsElement extends SimpleElement
189196
protected $exception;
190197

191198
/**
192-
* Set value to conditions.
193-
*
194-
* @param string $value
195-
* @return void
199+
* @inheritdoc
196200
*/
197201
public function setValue($value)
198202
{
@@ -411,7 +415,16 @@ protected function fillText($rule, ElementInterface $param)
411415
{
412416
$value = $param->find('input', Locator::SELECTOR_TAG_NAME);
413417
if ($value->isVisible()) {
414-
$value->setValue($rule);
418+
if (!$value->getAttribute('readonly')) {
419+
$value->setValue($rule);
420+
} else {
421+
$datepicker = $param->find(
422+
$this->datepicker,
423+
Locator::SELECTOR_XPATH,
424+
DatepickerElement::class
425+
);
426+
$datepicker->setValue($rule);
427+
}
415428

416429
$apply = $param->find('.//*[@class="rule-param-apply"]', Locator::SELECTOR_XPATH);
417430
if ($apply->isVisible()) {

dev/tests/functional/lib/Magento/Mtf/Client/Element/DatepickerElement.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,16 @@ public function setValue($value)
6666
$date = $this->parseDate($value);
6767
$date[1] = ltrim($date[1], '0');
6868
$this->click();
69-
$this->find($this->datePickerButton, Locator::SELECTOR_XPATH)->click();
7069
$datapicker = $this->find($this->datePickerBlock, Locator::SELECTOR_XPATH);
70+
$datepickerClose = $datapicker->find($this->datePickerButtonClose, Locator::SELECTOR_XPATH);
71+
if (!$datepickerClose->isVisible()) {
72+
$this->find($this->datePickerButton, Locator::SELECTOR_XPATH)->click();
73+
}
7174
$datapicker->find($this->datePickerYear, Locator::SELECTOR_XPATH, 'select')->setValue($date[2]);
7275
$datapicker->find($this->datePickerMonth, Locator::SELECTOR_XPATH, 'select')->setValue($date[0]);
7376
$datapicker->find(sprintf($this->datePickerCalendar, $date[1]), Locator::SELECTOR_XPATH)->click();
7477
if ($datapicker->isVisible()) {
75-
$datapicker->find($this->datePickerButtonClose, Locator::SELECTOR_XPATH)->click();
78+
$datepickerClose->click();
7679
}
7780
}
7881

lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ public function getHtmlAttributes()
238238
'onchange',
239239
'disabled',
240240
'readonly',
241+
'autocomplete',
241242
'tabindex',
242243
'placeholder',
243244
'data-form-part',

lib/internal/Magento/Framework/Data/Form/Element/Date.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public function getValueInstance()
146146
*/
147147
public function getElementHtml()
148148
{
149-
$this->addClass('admin__control-text input-text');
149+
$this->addClass('admin__control-text input-text input-date');
150150
$dateFormat = $this->getDateFormat() ?: $this->getFormat();
151151
$timeFormat = $this->getTimeFormat();
152152
if (empty($dateFormat)) {

lib/internal/Magento/Framework/Data/Test/Unit/Form/Element/AbstractElementTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ public function testGetHtmlAttributes()
195195
'onchange',
196196
'disabled',
197197
'readonly',
198+
'autocomplete',
198199
'tabindex',
199200
'placeholder',
200201
'data-form-part',

lib/web/mage/calendar.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@
6666
* Widget calendar
6767
*/
6868
$.widget('mage.calendar', {
69+
options: {
70+
autoComplete: true
71+
},
6972

7073
/**
7174
* Merge global options with options passed to widget invoke
@@ -379,6 +382,9 @@
379382
.addClass('v-middle')
380383
.text('') // Remove jQuery UI datepicker generated image
381384
.append('<span>' + pickerButtonText + '</span>');
385+
386+
$(element).attr('autocomplete', this.options.autoComplete ? 'on' : 'off');
387+
382388
this._setCurrentDate(element);
383389
},
384390

0 commit comments

Comments
 (0)