This is an automated email from the ASF dual-hosted git repository.

mugdha pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 014da9402 RANGER-5198 : Prevent selected long string values from 
getting truncated in the react-select control
014da9402 is described below

commit 014da940226ec56fb792d6b0376e021740454813
Author: Mugdha Varadkar <mug...@apache.org>
AuthorDate: Mon Apr 21 01:13:26 2025 +0530

    RANGER-5198 : Prevent selected long string values from getting truncated in 
the react-select control
---
 .../src/components/CommonComponents.jsx            | 25 +++++++++++++-
 .../react-webapp/src/components/CreatableField.jsx |  6 ++--
 .../react-webapp/src/components/Editable.jsx       | 16 ++++-----
 .../main/webapp/react-webapp/src/styles/style.css  |  4 ---
 .../src/views/PermissionsModule/EditPermission.jsx | 16 +++++----
 .../views/PolicyListing/AddUpdatePolicyForm.jsx    | 15 ++++++---
 .../views/PolicyListing/PolicyConditionsComp.jsx   | 10 +++---
 .../views/PolicyListing/PolicyPermissionItem.jsx   |  4 ++-
 .../PolicyListing/PolicyValidityPeriodComp.jsx     | 14 +++++---
 .../views/PolicyListing/TagBasePermissionItem.jsx  | 18 ++++++----
 .../src/views/Reports/UserAccessLayout.jsx         | 13 +++++---
 .../src/views/Resources/ResourceComp.jsx           |  4 ++-
 .../src/views/Resources/ResourceSelectComp.jsx     |  5 +--
 .../src/views/SecurityZone/SecurityZoneForm.jsx    | 39 ++++++++++++----------
 .../src/views/ServiceManager/ExportPolicy.jsx      |  9 +++--
 .../src/views/ServiceManager/ImportPolicy.jsx      |  6 +++-
 .../views/ServiceManager/ServiceAuditFilter.jsx    | 19 ++++++-----
 .../src/views/ServiceManager/ServiceForm.jsx       | 13 ++++----
 .../UserGroupRoleListing/role_details/RoleForm.jsx | 17 +++++++---
 .../users_details/UserFormComp.jsx                 | 15 +++++----
 20 files changed, 167 insertions(+), 101 deletions(-)

diff --git 
a/security-admin/src/main/webapp/react-webapp/src/components/CommonComponents.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/components/CommonComponents.jsx
index 574a1ee74..85a361dd3 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/components/CommonComponents.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/components/CommonComponents.jsx
@@ -184,6 +184,7 @@ export class AccessMoreLess extends Component {
     );
   }
 }
+
 export const AuditFilterEntries = (props) => {
   const { entries, refreshTable } = props;
   const refreshTables = () => {
@@ -491,7 +492,29 @@ export const scrollToError = (selector) => {
   );
 };
 
-export const selectCustomStyles = {
+export const selectInputCustomStyles = {
+  option: (base) => ({
+    ...base,
+    textOverflow: "unset",
+    whiteSpace: "break-spaces",
+    wordBreak: "break-all"
+  }),
+  multiValueLabel: (base) => ({
+    ...base,
+    textOverflow: "unset",
+    whiteSpace: "break-spaces",
+    wordBreak: "break-all"
+  }),
+  singleValue: (base) => ({
+    ...base,
+    textOverflow: "unset",
+    whiteSpace: "break-spaces",
+    wordBreak: "break-all"
+  })
+};
+
+export const selectInputCustomErrorStyles = {
+  ...selectInputCustomStyles,
   control: () => {
     return {
       border: "4px solid red",
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/components/CreatableField.jsx 
b/security-admin/src/main/webapp/react-webapp/src/components/CreatableField.jsx
index dba0df762..0b2620d46 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/components/CreatableField.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/components/CreatableField.jsx
@@ -19,6 +19,7 @@
 
 import React, { useState, useRef, useEffect } from "react";
 import CreatableSelect from "react-select/creatable";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 const CreatableField = (props) => {
   const { actionValues, creatableOnChange } = props;
@@ -33,12 +34,12 @@ const CreatableField = (props) => {
     }
   }, [actionValues]);
 
-  const handleChange = (value, input) => {
+  const handleChange = (value) => {
     setActionValue(value);
     creatableOnChange(value);
   };
 
-  const handleKeyDown = (e, input) => {
+  const handleKeyDown = (e) => {
     if (!actionInputValue) return;
     switch (e.key) {
       case "Enter":
@@ -73,6 +74,7 @@ const CreatableField = (props) => {
       onChange={(actionValue) => handleChange(actionValue)}
       onInputChange={handleInputChange}
       onKeyDown={(e) => handleKeyDown(e)}
+      styles={selectInputCustomStyles}
     />
   );
 };
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx 
b/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx
index e7003c243..9d1234d2b 100644
--- a/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx
+++ b/security-admin/src/main/webapp/react-webapp/src/components/Editable.jsx
@@ -31,8 +31,9 @@ import { find, findIndex, isArray, isEmpty, sortBy } from 
"lodash";
 import { isObject } from "Utils/XAUtils";
 import CreatableSelect from "react-select/creatable";
 import Select from "react-select";
-import { InfoIcon } from "../utils/XAUtils";
-import { RegexMessage } from "../utils/XAMessages";
+import { InfoIcon } from "Utils/XAUtils";
+import { RegexMessage } from "Utils/XAMessages";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 const esprima = require("esprima");
 const TYPE_SELECT = "select";
@@ -298,9 +299,10 @@ const CustomCondition = (props) => {
                         selectedInputVal == "" ? null : selectedInputVal
                       }
                       onChange={(e) => handleChange(e, m.name)}
-                      placeholder="enter expression"
+                      placeholder=""
                       width="500px"
                       isClearable={false}
+                      styles={selectInputCustomStyles}
                     />
                   </Form.Group>
                 </div>
@@ -404,7 +406,7 @@ const Editable = (props) => {
     const policyConditionDisplayValue = () => {
       let ipRangVal, uiHintVal;
       if (selectVal) {
-        return sortBy(Object.keys(selectVal)).map((property, index) => {
+        return sortBy(Object.keys(selectVal)).map((property) => {
           let conditionObj = find(conditionDefVal, function (m) {
             if (m.name == property) {
               return m;
@@ -647,7 +649,7 @@ const Editable = (props) => {
       : (selectValRef.current = editableValue);
   }, [editableValue]);
 
-  const handleApply = (e) => {
+  const handleApply = () => {
     let errors, uiHintVal;
     if (selectValRef?.current) {
       sortBy(Object.keys(selectValRef.current)).map((property) => {
@@ -664,9 +666,7 @@ const Editable = (props) => {
             selectValRef.current[conditionObj.name] != undefined
           ) {
             try {
-              let t = esprima.parseScript(
-                selectValRef.current[conditionObj.name]
-              );
+              esprima.parseScript(selectValRef.current[conditionObj.name]);
             } catch (e) {
               errors = e.message;
             }
diff --git a/security-admin/src/main/webapp/react-webapp/src/styles/style.css 
b/security-admin/src/main/webapp/react-webapp/src/styles/style.css
index 40f28e75f..51bc0e071 100644
--- a/security-admin/src/main/webapp/react-webapp/src/styles/style.css
+++ b/security-admin/src/main/webapp/react-webapp/src/styles/style.css
@@ -713,10 +713,6 @@ header {
   background-color: #e4e4e4;
   margin: 3px 3px;
   float: left;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  max-width: 200px;
 }
 
 .formHeader {
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
index 821390814..c482363a1 100755
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PermissionsModule/EditPermission.jsx
@@ -28,7 +28,11 @@ import {
 } from "react-bootstrap";
 import React, { useEffect, useReducer, useRef } from "react";
 import { useParams, useNavigate } from "react-router-dom";
-import { Loader } from "Components/CommonComponents";
+import {
+  Loader,
+  BlockUi,
+  selectInputCustomStyles
+} from "Components/CommonComponents";
 import { fetchApi } from "Utils/fetchAPI";
 import AsyncSelect from "react-select/async";
 import { toast } from "react-toastify";
@@ -38,8 +42,7 @@ import {
   CustomInfinteScroll,
   commonBreadcrumb,
   serverError
-} from "../../utils/XAUtils";
-import { BlockUi } from "../../components/CommonComponents";
+} from "Utils/XAUtils";
 
 const initialState = {
   loader: true,
@@ -397,7 +400,6 @@ const EditPermission = () => {
                                   name="selectGroups"
                                   render={({ input }) => (
                                     <div>
-                                      {" "}
                                       <AsyncSelect
                                         {...input}
                                         className="edit-perm-select"
@@ -410,8 +412,8 @@ const EditPermission = () => {
                                         }}
                                         isClearable={false}
                                         placeholder="Select Groups"
-                                        width="500px"
                                         isMulti
+                                        styles={selectInputCustomStyles}
                                       />
                                       <Button
                                         size="sm"
@@ -451,14 +453,14 @@ const EditPermission = () => {
                                         defaultOptions
                                         filterOption={filterUsrOp}
                                         loadOptions={fetchUsers}
-                                        isMulti
-                                        width="500px"
                                         components={{
                                           DropdownIndicator: () => null,
                                           IndicatorSeparator: () => null
                                         }}
                                         isClearable={false}
                                         placeholder="Select Users"
+                                        isMulti
+                                        styles={selectInputCustomStyles}
                                       />
 
                                       <Button
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
index 2cb72e815..c81d8d5c7 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/AddUpdatePolicyForm.jsx
@@ -49,7 +49,12 @@ import {
   cloneDeep
 } from "lodash";
 import { toast } from "react-toastify";
-import { Loader, scrollToError } from "Components/CommonComponents";
+import {
+  BlockUi,
+  Loader,
+  scrollToError,
+  selectInputCustomStyles
+} from "Components/CommonComponents";
 import { fetchApi } from "Utils/fetchAPI";
 import { RangerPolicyType, getEnumElementByValue } from "Utils/XAEnums";
 import ResourceComp from "../Resources/ResourceComp";
@@ -64,14 +69,13 @@ import {
   commonBreadcrumb,
   isPolicyExpired,
   getResourcesDefVal
-} from "../../utils/XAUtils";
+} from "Utils/XAUtils";
 import { useAccordionButton } from "react-bootstrap/AccordionButton";
 import AccordionContext from "react-bootstrap/AccordionContext";
 import usePrompt from "Hooks/usePrompt";
-import { RegexMessage } from "../../utils/XAMessages";
+import { RegexMessage } from "Utils/XAMessages";
 import { policyInfo } from "Utils/XAUtils";
-import { BlockUi } from "../../components/CommonComponents";
-import { getServiceDef } from "../../utils/appState";
+import { getServiceDef } from "Utils/appState";
 import { FieldArray } from "react-final-form-arrays";
 
 const noneOptions = {
@@ -1384,6 +1388,7 @@ export default function AddUpdatePolicyForm() {
                                     onFocusPolicyLabel();
                                   }}
                                   defaultOptions={defaultPolicyLabelOptions}
+                                  styles={selectInputCustomStyles}
                                 />
                               </Col>
                             </FormB.Group>
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyConditionsComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyConditionsComp.jsx
index 80b341d61..7c8aba953 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyConditionsComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyConditionsComp.jsx
@@ -23,8 +23,9 @@ import { Form, Field } from "react-final-form";
 import Select from "react-select";
 import CreatableSelect from "react-select/creatable";
 import { find, isEmpty } from "lodash";
-import { InfoIcon } from "../../utils/XAUtils";
-import { RegexMessage } from "../../utils/XAMessages";
+import { InfoIcon } from "Utils/XAUtils";
+import { RegexMessage } from "Utils/XAMessages";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 const esprima = require("esprima");
 
 export default function PolicyConditionsComp(props) {
@@ -98,7 +99,7 @@ export default function PolicyConditionsComp(props) {
     let errors = "";
     if (values) {
       try {
-        let t = esprima.parseScript(values);
+        esprima.parseScript(values);
       } catch (e) {
         errors = e.message;
       }
@@ -221,10 +222,11 @@ export default function PolicyConditionsComp(props) {
                                     {...input}
                                     isMulti
                                     isClearable
-                                    placeholder="enter expression"
+                                    placeholder=""
                                     width="500px"
                                     value={ipRangeVal(input.value)}
                                     onChange={(e) => handleChange(e, input)}
+                                    styles={selectInputCustomStyles}
                                   />
                                 )}
                               />
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
index 896c34cb0..4496f7541 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyPermissionItem.jsx
@@ -43,7 +43,8 @@ import {
   drop,
   dragOver,
   policyConditionUpdatedJSON
-} from "../../utils/XAUtils";
+} from "Utils/XAUtils";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 const noneOptions = {
   label: "None",
@@ -285,6 +286,7 @@ export default function PolicyPermissionItem(props) {
   };
 
   const customStyles = {
+    ...selectInputCustomStyles,
     control: (base) => ({
       ...base,
       width: 200,
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyValidityPeriodComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyValidityPeriodComp.jsx
index 8eb788a05..983308510 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyValidityPeriodComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/PolicyValidityPeriodComp.jsx
@@ -26,7 +26,10 @@ import Datetime from "react-datetime";
 import { getAllTimeZoneList } from "Utils/XAUtils";
 import { isEmpty } from "lodash";
 import moment from "moment-timezone";
-import { CustomTooltip } from "../../components/CommonComponents";
+import {
+  CustomTooltip,
+  selectInputCustomStyles
+} from "Components/CommonComponents";
 
 export default function PolicyValidityPeriodComp(props) {
   const { addPolicyItem } = props;
@@ -46,7 +49,7 @@ export default function PolicyValidityPeriodComp(props) {
     }
   };
 
-  const RenderInput = (props, openCalendar, closeCalendar) => {
+  const RenderInput = (props) => {
     function clear() {
       props.dateProps.onChange({ target: { value: "" } });
     }
@@ -125,7 +128,7 @@ export default function PolicyValidityPeriodComp(props) {
             </thead>
             <tbody>
               <FieldArray name="validitySchedules">
-                {({ fields, ...arg }) =>
+                {({ fields }) =>
                   fields.map((name, index) => (
                     <tr key={name}>
                       <td className="text-center">
@@ -143,7 +146,7 @@ export default function PolicyValidityPeriodComp(props) {
                                 dateFormat="MM-DD-YYYY"
                                 timeFormat="HH:mm:ss"
                                 closeOnSelect
-                                isValidDate={(currentDate, selectedDate) =>
+                                isValidDate={(currentDate) =>
                                   calEndDate(fields.value[index], currentDate)
                                 }
                               />
@@ -168,7 +171,7 @@ export default function PolicyValidityPeriodComp(props) {
                                 dateFormat="MM-DD-YYYY"
                                 timeFormat="HH:mm:ss"
                                 closeOnSelect
-                                isValidDate={(currentDate, selectedDate) =>
+                                isValidDate={(currentDate) =>
                                   calStartDate(fields.value[index], 
currentDate)
                                 }
                               />
@@ -197,6 +200,7 @@ export default function PolicyValidityPeriodComp(props) {
                                     ? true
                                     : false
                                 }
+                                styles={selectInputCustomStyles}
                               />
                               {meta.touched && meta.error && (
                                 <span>{meta.error}</span>
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/TagBasePermissionItem.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/TagBasePermissionItem.jsx
index 7b9b43e80..083bba71c 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/TagBasePermissionItem.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/PolicyListing/TagBasePermissionItem.jsx
@@ -36,7 +36,8 @@ import {
   cloneDeep
 } from "lodash";
 import { RangerPolicyType } from "Utils/XAEnums";
-import { getServiceDef } from "../../utils/appState";
+import { getServiceDef } from "Utils/appState";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 export default function TagBasePermissionItem(props) {
   const serviceDefs = cloneDeep(getServiceDef());
@@ -55,6 +56,14 @@ export default function TagBasePermissionItem(props) {
     color: "black"
   };
 
+  const customStyles = {
+    ...selectInputCustomStyles,
+    noOptionsMessage: (base) => ({
+      ...base,
+      ...msgStyles
+    })
+  };
+
   const noOptionMsg = (inputValue) => {
     if (
       formValues?.policyType ==
@@ -356,12 +365,7 @@ export default function TagBasePermissionItem(props) {
                         noOptionsMessage={({ inputValue }) =>
                           noOptionMsg(inputValue)
                         }
-                        styles={{
-                          noOptionsMessage: (base) => ({
-                            ...base,
-                            ...msgStyles
-                          })
-                        }}
+                        styles={customStyles}
                         components={{
                           DropdownIndicator: () => null,
                           IndicatorSeparator: () => null
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
index 72f516f77..29a739184 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Reports/UserAccessLayout.jsx
@@ -47,12 +47,12 @@ import {
 } from "lodash";
 import { toast } from "react-toastify";
 import { fetchApi } from "Utils/fetchAPI";
-import { useQuery } from "../../components/CommonComponents";
+import { useQuery, selectInputCustomStyles } from 
"Components/CommonComponents";
 import SearchPolicyTable from "./SearchPolicyTable";
-import { isAuditor, isKeyAdmin, isKMSAuditor } from "../../utils/XAUtils";
-import CustomBreadcrumb from "../CustomBreadcrumb";
+import { isAuditor, isKeyAdmin, isKMSAuditor } from "Utils/XAUtils";
+import CustomBreadcrumb from "Views/CustomBreadcrumb";
 import moment from "moment-timezone";
-import { getServiceDef } from "../../utils/appState";
+import { getServiceDef } from "Utils/appState";
 
 function UserAccessLayout() {
   const isKMSRole = isKeyAdmin() || isKMSAuditor();
@@ -557,8 +557,9 @@ function UserAccessLayout() {
                                   isMulti
                                   isClearable={false}
                                   options={serviceDefOpts}
-                                  placeholder="Select Component Type"
                                   menuPlacement="auto"
+                                  placeholder="Select Component Type"
+                                  styles={selectInputCustomStyles}
                                 />
                               )}
                             </Field>
@@ -596,6 +597,7 @@ function UserAccessLayout() {
                                   isClearable={true}
                                   loadOptions={fetchPolicyLabels}
                                   placeholder="Select Policy Label"
+                                  styles={selectInputCustomStyles}
                                 />
                               )}
                             </Field>
@@ -616,6 +618,7 @@ function UserAccessLayout() {
                                       options={zoneNameOpts}
                                       menuPlacement="auto"
                                       placeholder="Select Zone Name"
+                                      styles={selectInputCustomStyles}
                                     />
                                   )}
                                 </Field>
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
index fb17d3bd5..661e8237d 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceComp.jsx
@@ -26,7 +26,8 @@ import { filter, groupBy, some } from "lodash";
 import { toast } from "react-toastify";
 import { udfResourceWarning } from "../../utils/XAMessages";
 import ResourceSelectComp from "./ResourceSelectComp";
-import { getResourcesDefVal } from "../../utils/XAUtils";
+import { getResourcesDefVal } from "Utils/XAUtils";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 const noneOptions = {
   label: "None",
@@ -207,6 +208,7 @@ export default function ResourceComp(props) {
                           handleResourceChange(value, input, index)
                         }
                         isSearchable={false}
+                        styles={selectInputCustomStyles}
                       />
                     </span>
                     <RenderValidateField name={`resourceName-${levelKey}`} />
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
index f43f447c2..128796f55 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/Resources/ResourceSelectComp.jsx
@@ -23,6 +23,7 @@ import CreatableSelect from "react-select/creatable";
 import { debounce, isArray } from "lodash";
 import { toast } from "react-toastify";
 import { fetchApi } from "Utils/fetchAPI";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 const noneOptions = {
   label: "None",
@@ -36,8 +37,7 @@ export default function ResourceSelectComp(props) {
     levelKey,
     serviceDetails,
     name,
-    isMultiResources,
-    changePolicyItemPermissions
+    isMultiResources
   } = props;
   const [options, setOptions] = useState([]);
   const [isLoading, setIsLoading] = useState(false);
@@ -215,6 +215,7 @@ export default function ResourceSelectComp(props) {
             }}
             filterOption={customFilterOptions}
             isLoading={isLoading}
+            styles={selectInputCustomStyles}
           />
           {formValues &&
             formValues[`resourceName-${levelKey}`]?.mandatory &&
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
index 41c0f56f0..854ef671f 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/SecurityZone/SecurityZoneForm.jsx
@@ -38,18 +38,19 @@ import {
 import { Table } from "react-bootstrap";
 import { FieldArray } from "react-final-form-arrays";
 import arrayMutators from "final-form-arrays";
-import ModalResourceComp from "../Resources/ModalResourceComp";
+import ModalResourceComp from "Views/Resources/ModalResourceComp";
 import { RegexValidation } from "Utils/XAEnums";
 import { toast } from "react-toastify";
-import { commonBreadcrumb, serverError } from "../../utils/XAUtils";
+import { commonBreadcrumb, serverError } from "Utils/XAUtils";
 import {
   BlockUi,
   Loader,
   scrollToError,
-  selectCustomStyles
-} from "../../components/CommonComponents";
+  selectInputCustomStyles,
+  selectInputCustomErrorStyles
+} from "Components/CommonComponents";
 import usePrompt from "Hooks/usePrompt";
-import { getServiceDef } from "../../utils/appState";
+import { getServiceDef } from "Utils/appState";
 
 const noneOptions = {
   label: "None",
@@ -847,8 +848,8 @@ const SecurityZoneForm = () => {
                               {...input}
                               styles={
                                 meta.error && meta.touched
-                                  ? selectCustomStyles
-                                  : ""
+                                  ? selectInputCustomErrorStyles
+                                  : selectInputCustomStyles
                               }
                               id={
                                 meta.error && meta.touched
@@ -888,17 +889,17 @@ const SecurityZoneForm = () => {
                           </Col>
                           <Col xs={4}>
                             <AsyncSelect
+                              {...input}
                               styles={
                                 meta.error && meta.touched
-                                  ? selectCustomStyles
-                                  : ""
+                                  ? selectInputCustomErrorStyles
+                                  : selectInputCustomStyles
                               }
                               id={
                                 meta.error && meta.touched
                                   ? "isError"
                                   : "adminUserGroups"
                               }
-                              {...input}
                               cacheOptions
                               loadOptions={fetchGroupsData}
                               onFocus={() => {
@@ -935,8 +936,8 @@ const SecurityZoneForm = () => {
                               {...input}
                               styles={
                                 meta.error && meta.touched
-                                  ? selectCustomStyles
-                                  : ""
+                                  ? selectInputCustomErrorStyles
+                                  : selectInputCustomStyles
                               }
                               id={
                                 meta.error && meta.touched
@@ -984,8 +985,8 @@ const SecurityZoneForm = () => {
                               {...input}
                               styles={
                                 meta.error && meta.touched
-                                  ? selectCustomStyles
-                                  : ""
+                                  ? selectInputCustomErrorStyles
+                                  : selectInputCustomStyles
                               }
                               id={
                                 meta.error && meta.touched
@@ -1028,8 +1029,8 @@ const SecurityZoneForm = () => {
                               {...input}
                               styles={
                                 meta.error && meta.touched
-                                  ? selectCustomStyles
-                                  : ""
+                                  ? selectInputCustomErrorStyles
+                                  : selectInputCustomStyles
                               }
                               id={
                                 meta.error && meta.touched
@@ -1072,8 +1073,8 @@ const SecurityZoneForm = () => {
                               {...input}
                               styles={
                                 meta.error && meta.touched
-                                  ? selectCustomStyles
-                                  : ""
+                                  ? selectInputCustomErrorStyles
+                                  : selectInputCustomStyles
                               }
                               id={
                                 meta.error && meta.touched
@@ -1136,6 +1137,7 @@ const SecurityZoneForm = () => {
                               }}
                               isClearable={true}
                               placeholder="Select Tag Services"
+                              styles={selectInputCustomStyles}
                             />
                           </Col>
                         </Row>
@@ -1172,6 +1174,7 @@ const SecurityZoneForm = () => {
                               isClearable={false}
                               isSearchable={true}
                               placeholder="Select Service Name"
+                              styles={selectInputCustomStyles}
                             />
                           </Col>
                         </Row>
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ExportPolicy.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ExportPolicy.jsx
index d835bfad1..5685801bc 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ExportPolicy.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ExportPolicy.jsx
@@ -23,7 +23,8 @@ import Select from "react-select";
 import { map, toString, isEmpty } from "lodash";
 import { fetchApi } from "Utils/fetchAPI";
 import { toast } from "react-toastify";
-import { getBaseUrl, serverError } from "../../utils/XAUtils";
+import { getBaseUrl, serverError } from "Utils/XAUtils";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 class ExportPolicy extends Component {
   constructor(props) {
@@ -85,10 +86,6 @@ class ExportPolicy extends Component {
   };
 
   handleServiceChange = (value) => {
-    let difference = this.state.selectedServices.filter(
-      (service) => !value.includes(service)
-    );
-
     this.setState({ selectedServices: value });
   };
 
@@ -185,6 +182,7 @@ class ExportPolicy extends Component {
                     defaultValue={this.serviceDefOptions}
                     menuPlacement="auto"
                     placeholder="Select Service Type"
+                    styles={selectInputCustomStyles}
                   />
                 </div>
               )}
@@ -205,6 +203,7 @@ class ExportPolicy extends Component {
                   value={selectedServices}
                   menuPlacement="auto"
                   placeholder="Select Service Name"
+                  styles={selectInputCustomStyles}
                 />
               </div>
             </Modal.Body>
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ImportPolicy.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ImportPolicy.jsx
index 75ae1bdab..d5a3335e1 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ImportPolicy.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ImportPolicy.jsx
@@ -35,7 +35,8 @@ import {
   uniq
 } from "lodash";
 import { fetchApi } from "Utils/fetchAPI";
-import { serverError } from "../../utils/XAUtils";
+import { serverError } from "Utils/XAUtils";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 class ImportPolicy extends Component {
   constructor(props) {
@@ -286,6 +287,7 @@ class ImportPolicy extends Component {
       label: service.name
     }));
   };
+
   Theme = (theme) => {
     return {
       ...theme,
@@ -295,7 +297,9 @@ class ImportPolicy extends Component {
       }
     };
   };
+
   CustomStyles = {
+    ...selectInputCustomStyles,
     option: (provided, state) => ({
       ...provided,
       color: state.isSelected ? "white" : "black"
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceAuditFilter.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceAuditFilter.jsx
index 513a2c5c5..ee57fff2e 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceAuditFilter.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceAuditFilter.jsx
@@ -25,10 +25,11 @@ import Select from "react-select";
 import AsyncSelect from "react-select/async";
 import Editable from "Components/Editable";
 import CreatableField from "Components/CreatableField";
-import ModalResourceComp from "../Resources/ModalResourceComp";
+import ModalResourceComp from "Views/Resources/ModalResourceComp";
 import { uniq, map, join, isEmpty, isArray } from "lodash";
-import TagBasePermissionItem from "../PolicyListing/TagBasePermissionItem";
-import { dragStart, dragEnter, drop, dragOver } from "../../utils/XAUtils";
+import TagBasePermissionItem from "Views/PolicyListing/TagBasePermissionItem";
+import { dragStart, dragEnter, drop, dragOver } from "Utils/XAUtils";
+import { selectInputCustomStyles } from "Components/CommonComponents";
 
 export default function ServiceAuditFilter(props) {
   const {
@@ -265,7 +266,7 @@ export default function ServiceAuditFilter(props) {
                             name={`${name}.accessResult`}
                           >
                             {({ input }) => (
-                              <div style={{ minWidth: "195px" }}>
+                              <div style={{ minWidth: "220px" }}>
                                 <Select
                                   {...input}
                                   menuPortalTarget={document.body}
@@ -426,6 +427,7 @@ export default function ServiceAuditFilter(props) {
                                   menuPlacement="auto"
                                   cacheOptions
                                   isMulti
+                                  styles={selectInputCustomStyles}
                                 />
                               </div>
                             )}
@@ -458,12 +460,13 @@ export default function ServiceAuditFilter(props) {
                                   }}
                                   defaultOptions={defaultGroupOptions}
                                   isClearable={false}
-                                  menuPlacement="auto"
                                   noOptionsMessage={() =>
                                     groupLoading ? "Loading..." : "No options"
                                   }
+                                  menuPlacement="auto"
                                   cacheOptions
                                   isMulti
+                                  styles={selectInputCustomStyles}
                                 />
                               </div>
                             )}
@@ -486,7 +489,6 @@ export default function ServiceAuditFilter(props) {
                               >
                                 <AsyncSelect
                                   {...input}
-                                  key={input.name}
                                   menuPortalTarget={document.body}
                                   components={{
                                     IndicatorSeparator: () => null
@@ -497,12 +499,13 @@ export default function ServiceAuditFilter(props) {
                                   }}
                                   defaultOptions={defaultUserOptions}
                                   isClearable={false}
-                                  menuPlacement="auto"
-                                  cacheOptions
                                   noOptionsMessage={() =>
                                     userLoading ? "Loading..." : "No options"
                                   }
+                                  menuPlacement="auto"
+                                  cacheOptions
                                   isMulti
+                                  styles={selectInputCustomStyles}
                                 />
                               </div>
                             )}
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
index 402193a73..44580c32a 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/ServiceManager/ServiceForm.jsx
@@ -34,14 +34,15 @@ import {
   navigateTo,
   serverError,
   updateTagActive
-} from "../../utils/XAUtils";
+} from "Utils/XAUtils";
 import {
   BlockUi,
   Condition,
   CustomPopover,
   Loader,
-  scrollToError
-} from "../../components/CommonComponents";
+  scrollToError,
+  selectInputCustomStyles
+} from "Components/CommonComponents";
 import {
   difference,
   flatMap,
@@ -57,12 +58,11 @@ import {
   split,
   without,
   maxBy,
-  isArray,
   cloneDeep
 } from "lodash";
 import withRouter from "Hooks/withRouter";
-import { RangerPolicyType } from "../../utils/XAEnums";
-import { getServiceDef } from "../../utils/appState";
+import { RangerPolicyType } from "Utils/XAEnums";
+import { getServiceDef } from "Utils/appState";
 
 class ServiceForm extends Component {
   constructor(props) {
@@ -1178,6 +1178,7 @@ class ServiceForm extends Component {
                                   isLoading={this.state.loadingOptions}
                                   isClearable={true}
                                   cacheOptions
+                                  styles={selectInputCustomStyles}
                                 />
                               </Col>
                             </Row>
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/role_details/RoleForm.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/role_details/RoleForm.jsx
index eb706e797..a58fb9c01 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/role_details/RoleForm.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/role_details/RoleForm.jsx
@@ -20,19 +20,23 @@
 import React, { useEffect, useReducer } from "react";
 import { Button, Form as BForm, Col, Row, Table } from "react-bootstrap";
 import { Form, Field } from "react-final-form";
-import { scrollToError } from "Components/CommonComponents";
+import {
+  scrollToError,
+  BlockUi,
+  Loader,
+  CustomTooltip,
+  selectInputCustomStyles
+} from "Components/CommonComponents";
 import { FieldArray } from "react-final-form-arrays";
 import arrayMutators from "final-form-arrays";
 import AsyncSelect from "react-select/async";
 import { toast } from "react-toastify";
 import { findIndex, isEmpty, filter } from "lodash";
-import { commonBreadcrumb, serverError } from "../../../utils/XAUtils";
-import { Loader, CustomTooltip } from "Components/CommonComponents";
+import { commonBreadcrumb, serverError } from "Utils/XAUtils";
 import { useLocation, useParams, useNavigate } from "react-router-dom";
 import { fetchApi } from "Utils/fetchAPI";
 import usePrompt from "Hooks/usePrompt";
-import { RegexValidation } from "../../../utils/XAEnums";
-import { BlockUi } from "../../../components/CommonComponents";
+import { RegexValidation } from "Utils/XAEnums";
 
 const initialState = {
   loader: true,
@@ -617,6 +621,7 @@ function RoleForm() {
                             isMulti
                             data-name="usersSelect"
                             data-cy="usersSelect"
+                            styles={selectInputCustomStyles}
                           />
                         </div>
                         <div className="col-sm-3">
@@ -723,6 +728,7 @@ function RoleForm() {
                             isMulti
                             data-name="groupsSelect"
                             data-cy="groupsSelect"
+                            styles={selectInputCustomStyles}
                           />
                         </div>
                         <div className="col-sm-3">
@@ -829,6 +835,7 @@ function RoleForm() {
                             isMulti
                             data-name="rolesSelect"
                             data-cy="rolesSelect"
+                            styles={selectInputCustomStyles}
                           />
                         </div>
                         <div className="col-sm-3">
diff --git 
a/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/UserFormComp.jsx
 
b/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/UserFormComp.jsx
index 9f5d642f2..0a7606556 100644
--- 
a/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/UserFormComp.jsx
+++ 
b/security-admin/src/main/webapp/react-webapp/src/views/UserGroupRoleListing/users_details/UserFormComp.jsx
@@ -20,7 +20,11 @@
 import React, { useReducer, useState } from "react";
 import { Button, Row, Col } from "react-bootstrap";
 import { Form, Field } from "react-final-form";
-import { scrollToError } from "Components/CommonComponents";
+import {
+  BlockUi,
+  scrollToError,
+  selectInputCustomStyles
+} from "Components/CommonComponents";
 import AsyncSelect from "react-select/async";
 import Select from "react-select";
 import { fetchApi } from "Utils/fetchAPI";
@@ -31,13 +35,11 @@ import {
   UserTypes
 } from "Utils/XAEnums";
 import { toast } from "react-toastify";
-import { getUserAccessRoleList, serverError } from "Utils/XAUtils";
+import { InfoIcon, getUserAccessRoleList, serverError } from "Utils/XAUtils";
 import { getUserProfile, setUserProfile } from "Utils/appState";
 import { cloneDeep, has, isEmpty, isUndefined } from "lodash";
-import { SyncSourceDetails } from "../SyncSourceDetails";
-import { BlockUi } from "../../../components/CommonComponents";
-import { InfoIcon } from "../../../utils/XAUtils";
-import { RegexMessage, roleChngWarning } from "../../../utils/XAMessages";
+import { SyncSourceDetails } from 
"Views/UserGroupRoleListing/SyncSourceDetails";
+import { RegexMessage, roleChngWarning } from "Utils/XAMessages";
 import { useLocation, useNavigate } from "react-router-dom";
 import usePrompt from "Hooks/usePrompt";
 
@@ -220,6 +222,7 @@ function UserFormComp(props) {
         isDisabled={
           isEditView && userInfo && isExternalOrFederatedUser ? true : false
         }
+        styles={selectInputCustomStyles}
       />
     );
   };


Reply via email to