Expand my Community achievements bar.

SOLVED

Convert Hex to RGB in AEM 6.5

Avatar

Level 2

Dear All,

 

I am getting my hex color from dialog to Html by using below.

 

dialog

<navBackGroundColor
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textfield"
fieldDescription="Enter the Navigation component background color Hex code"
fieldLabel="Navigation Component Background Color Hex Code"
hexvalidator="hexvalidation"
name="./navigationBackGroundColor"/>

 

HTL

<style>
.sunitaNavigation .stickyNav {
background-color: rgb(${properties.navigationBackGroundColor @CONTEXT='styleString'});
}
</style>

 

<td class="mandatoryField">
${properties.navigationBackGroundColor}
<p style="background-color:${properties.navigationBackGroundColor @ context='scriptString'}">${properties.navigationBackGroundColor}</p>
</td>

 

Now in my css (already i called in HTL in above) , I want rgb like below.

 

<style>
.sunitaNavigation .stickyNav {
background-color: rgb(${properties.navigationBackGroundColor @CONTEXT='styleString'});
}
</style>

 

But my color is not coming in rgb..it is coming in hex only. Do I need to convert Hex to RGB ?

 

How can I achieve this ?

 

Please suggest.

 

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

@sunitac93243435 

You can try something like-

<style> .sunitaNavigation .stickyNav { background-color: rgb( ${properties.navigationBackGroundColor.substring(1, 3) @ context='styleString'} | ${properties.navigationBackGroundColor.substring(3, 5) @ context='styleString'} | ${properties.navigationBackGroundColor.substring(5, 7) @ context='styleString'} ); } </style>

 

or could write a function:

function hexToRgb(hex) {
    // Remove the '#' if it exists
    hex = hex.replace(/^#/, '');

    // Parse the r, g, b values
    let bigint = parseInt(hex, 16);
    let r = (bigint >> 16) & 255;
    let g = (bigint >>  & 255;
    let b = bigint & 255;

    return `rgb(${r}, ${g}, ${b})`;
}

View solution in original post

1 Reply

Avatar

Correct answer by
Community Advisor

@sunitac93243435 

You can try something like-

<style> .sunitaNavigation .stickyNav { background-color: rgb( ${properties.navigationBackGroundColor.substring(1, 3) @ context='styleString'} | ${properties.navigationBackGroundColor.substring(3, 5) @ context='styleString'} | ${properties.navigationBackGroundColor.substring(5, 7) @ context='styleString'} ); } </style>

 

or could write a function:

function hexToRgb(hex) {
    // Remove the '#' if it exists
    hex = hex.replace(/^#/, '');

    // Parse the r, g, b values
    let bigint = parseInt(hex, 16);
    let r = (bigint >> 16) & 255;
    let g = (bigint >>  & 255;
    let b = bigint & 255;

    return `rgb(${r}, ${g}, ${b})`;
}