Skip to content

Commit c4e2a58

Browse files
committed
Merge branch 'ACP2E-3273' of https://github.com/adobe-commerce-tier-4/magento2ce into Tier4-09-12-2024
2 parents 92c8c57 + 6c9e67b commit c4e2a58

File tree

4 files changed

+112
-4
lines changed

4 files changed

+112
-4
lines changed

app/code/Magento/Checkout/view/frontend/web/template/form/element/email.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
mageInit: {'mage/trim-input':{}}"
2626
name="username"
2727
data-validate="{required:true, 'validate-email':true}"
28-
id="customer-email" />
28+
id="customer-email"></input>
2929
<!-- ko template: 'ui/form/element/helper/tooltip' --><!-- /ko -->
3030
<span class="note" data-bind="fadeVisible: isPasswordVisible() == false"><!-- ko i18n: 'You can create an account after checkout.'--><!-- /ko --></span>
3131
</div>
3232
</div>
3333

3434
<!--Hidden fields -->
35-
<fieldset class="fieldset hidden-fields" data-bind="fadeVisible: isPasswordVisible">
35+
<fieldset class="fieldset hidden-fields" data-bind="dimVisible: isPasswordVisible">
3636
<div class="field">
3737
<label class="label" for="customer-password"><span data-bind="i18n: 'Password'"></span></label>
3838
<div class="control">
@@ -44,7 +44,7 @@
4444
type="password"
4545
name="password"
4646
id="customer-password"
47-
data-validate="{required:true}" autocomplete="off"/>
47+
data-validate="{required:true}" autocomplete="off"></input>
4848
<span class="note" data-bind="i18n: 'You already have an account with us. Sign in or continue as guest.'"></span>
4949
</div>
5050

@@ -53,7 +53,7 @@
5353
<!-- ko template: getTemplate() --><!-- /ko -->
5454
<!-- /ko -->
5555
<div class="actions-toolbar">
56-
<input name="context" type="hidden" value="checkout" />
56+
<input name="context" type="hidden" value="checkout"></input>
5757
<div class="primary">
5858
<button type="submit" class="action login primary" data-action="checkout-method-login"><span data-bind="i18n: 'Login'"></span></button>
5959
</div>

app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/bootstrap.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ define(function (require) {
3131
datepicker: require('./datepicker'),
3232
outerClick: require('./outer_click'),
3333
fadeVisible: require('./fadeVisible'),
34+
dimVisible: require('./dimVisible'),
3435
collapsible: require('./collapsible'),
3536
staticChecked: require('./staticChecked'),
3637
simpleChecked: require('./simple-checked'),
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* Copyright 2024 Adobe
3+
* All Rights Reserved.
4+
*/
5+
6+
define([
7+
'jquery',
8+
'ko'
9+
], function ($, ko) {
10+
'use strict';
11+
12+
ko.bindingHandlers.dimVisible = {
13+
/**
14+
* Initially set the element to be instantly visible/hidden depending on the value.
15+
*
16+
* @param {HTMLElement} element
17+
* @param {Function} valueAccessor
18+
*/
19+
init: function (element, valueAccessor) {
20+
let value = valueAccessor();
21+
22+
// Use "unwrapObservable" so we can handle values that may or may not be observable
23+
if (ko.unwrap(value)) {
24+
$(element).css('visibility','visible').css('height','auto').css('position','relative');
25+
} else {
26+
$(element).css('visibility', 'hidden').css('height', '0').css('position', 'absolute');
27+
}
28+
},
29+
30+
/**
31+
* Whenever the value subsequently changes, update the state of the element accordingly.
32+
*
33+
* @param {HTMLElement} element
34+
* @param {Function} valueAccessor
35+
*/
36+
update: function (element, valueAccessor) {
37+
let value = valueAccessor();
38+
39+
if (ko.unwrap(value)) {
40+
$(element).css('visibility', 'visible').css('height', 'auto').css('position', 'relative');
41+
} else {
42+
$(element).css('visibility', 'hidden').css('height', '0').css('position', 'absolute');
43+
}
44+
}
45+
};
46+
});
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/**
2+
* Copyright 2024 Adobe
3+
* All Rights Reserved.
4+
*/
5+
6+
define([
7+
'ko',
8+
'jquery',
9+
'Magento_Ui/js/lib/knockout/bindings/dimVisible'
10+
], function (ko, $) {
11+
'use strict';
12+
13+
describe('dimVisible binding', function () {
14+
var elementToHide = $('<fieldset class="hidden-fields"></fieldset>');
15+
16+
beforeEach(function () {
17+
$(document.body).append(elementToHide);
18+
});
19+
20+
afterEach(function () {
21+
elementToHide.remove();
22+
});
23+
24+
it('Check that html element is hidden based on flag value', function () {
25+
let value = false,
26+
valueAccessor = jasmine.createSpy().and.returnValue(value);
27+
28+
ko.bindingHandlers.dimVisible.init(elementToHide, valueAccessor);
29+
expect(
30+
elementToHide.attr('style').indexOf('visibility: hidden; height: 0px; position: absolute;') !== -1
31+
).toBeTrue();
32+
});
33+
34+
it('Check that html element is displayed based on flag value', function () {
35+
let value = true,
36+
valueAccessor = jasmine.createSpy().and.returnValue(value);
37+
38+
ko.bindingHandlers.dimVisible.init(elementToHide, valueAccessor);
39+
expect(
40+
elementToHide.attr('style').indexOf('visibility: visible; height: auto; position: relative;') !== -1
41+
).toBeTrue();
42+
});
43+
44+
it('Check that html element is updated based on flags changing value', function () {
45+
let valueFalse = false,
46+
valueFalseAccessor = jasmine.createSpy().and.returnValue(valueFalse),
47+
valueTrue = true,
48+
valueTrueAccessor = jasmine.createSpy().and.returnValue(valueTrue);
49+
50+
ko.bindingHandlers.dimVisible.update(elementToHide, valueFalseAccessor);
51+
expect(
52+
elementToHide.attr('style').indexOf('visibility: hidden; height: 0px; position: absolute;') !== -1
53+
).toBeTrue();
54+
55+
ko.bindingHandlers.dimVisible.update(elementToHide, valueTrueAccessor);
56+
expect(
57+
elementToHide.attr('style').indexOf('visibility: visible; height: auto; position: relative;') !== -1
58+
).toBeTrue();
59+
});
60+
});
61+
});

0 commit comments

Comments
 (0)