From 0fe6b6c6e1208aa3eef38b631705c94d18365ea0 Mon Sep 17 00:00:00 2001
From: RachelElysia <71795832+RachelElysia@users.noreply.github.com>
Date: Tue, 17 Sep 2024 10:10:34 -0700
Subject: [PATCH] Fleet UI: Host filter styling/click bug fixes (#22147)
---
.../forms/fields/Dropdown/Dropdown.jsx | 22 +++++-----
.../forms/fields/Dropdown/_styles.scss | 1 -
.../SoftwareTable/SoftwareTable.tsx | 2 +-
.../SoftwareVulnerabilitiesTable.tsx | 2 +-
.../hosts/ManageHostsPage/ManageHostsPage.tsx | 2 +-
.../HostsFilterBlock/HostsFilterBlock.tsx | 6 +++
.../components/HostsFilterBlock/_styles.scss | 37 +++++------------
.../PoliciesFilter/PoliciesFilter.tsx | 3 +-
.../components/PoliciesFilter/_styles.scss | 40 +------------------
.../HostSoftwareTable/HostSoftwareTable.tsx | 2 +-
.../AddPolicyModal/AddPolicyModal.tsx | 2 +-
.../components/QueriesTable/QueriesTable.tsx | 2 +-
12 files changed, 36 insertions(+), 85 deletions(-)
diff --git a/frontend/components/forms/fields/Dropdown/Dropdown.jsx b/frontend/components/forms/fields/Dropdown/Dropdown.jsx
index 302233e5d674..b44d6e4b7d77 100644
--- a/frontend/components/forms/fields/Dropdown/Dropdown.jsx
+++ b/frontend/components/forms/fields/Dropdown/Dropdown.jsx
@@ -49,8 +49,8 @@ class Dropdown extends Component {
parseTarget: PropTypes.bool,
tooltip: PropTypes.string,
autoFocus: PropTypes.bool,
- /** Includes styled filter icon */
- tableFilterDropdown: PropTypes.bool,
+ /** Includes styled icon */
+ iconName: PropTypes.string,
helpText: PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.string),
@@ -71,7 +71,7 @@ class Dropdown extends Component {
parseTarget: false,
tooltip: "",
autoFocus: false,
- tableFilterDropdown: false,
+ iconName: "",
};
onMenuOpen = () => {
@@ -155,16 +155,16 @@ class Dropdown extends Component {
);
};
- // Adds styled filter icon to dropdown
- renderCustomTableFilter = () => {
- const { options, value } = this.props;
+ // Adds styled icon to dropdown
+ renderWithIcon = () => {
+ const { options, value, iconName } = this.props;
const customLabel = options
.filter((option) => option.value === value)
.map((option) => option.label);
return (
);
@@ -177,7 +177,7 @@ class Dropdown extends Component {
onMenuOpen,
onMenuClose,
renderCustomDropdownArrow,
- renderCustomTableFilter,
+ renderWithIcon,
} = this;
const {
error,
@@ -192,7 +192,7 @@ class Dropdown extends Component {
wrapperClassName,
searchable,
autoFocus,
- tableFilterDropdown,
+ iconName,
} = this.props;
const formFieldProps = pick(this.props, [
@@ -230,9 +230,7 @@ class Dropdown extends Component {
onClose={onMenuClose}
autoFocus={autoFocus}
arrowRenderer={renderCustomDropdownArrow}
- valueComponent={
- tableFilterDropdown ? renderCustomTableFilter : undefined
- }
+ valueComponent={iconName ? renderWithIcon : undefined}
/>
);
diff --git a/frontend/components/forms/fields/Dropdown/_styles.scss b/frontend/components/forms/fields/Dropdown/_styles.scss
index 1b5f15309d30..c86dc61bf62c 100644
--- a/frontend/components/forms/fields/Dropdown/_styles.scss
+++ b/frontend/components/forms/fields/Dropdown/_styles.scss
@@ -6,7 +6,6 @@
}
&-label {
- width: 105px;
line-height: 38px;
font-size: $small;
}
diff --git a/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx b/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx
index 9b8df49c2cf9..24dd8a95e077 100644
--- a/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx
+++ b/frontend/pages/SoftwarePage/SoftwareTitles/SoftwareTable/SoftwareTable.tsx
@@ -300,7 +300,7 @@ const SoftwareTable = ({
options={SOFTWARE_TITLES_DROPDOWN_OPTIONS}
searchable={false}
onChange={handleCustomFilterDropdownChange}
- tableFilterDropdown
+ iconName="filter"
/>
)}
);
};
diff --git a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx
index 8587b8641a24..6464f4d59bf4 100644
--- a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx
+++ b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx
@@ -1443,7 +1443,7 @@ const ManageHostsPage = ({
options={getHostSelectStatuses(isSandboxMode)}
searchable={false}
onChange={handleStatusDropdownChange}
- tableFilterDropdown
+ iconName="filter"
/>
{renderSoftwareFilterBlock([HOSTS_QUERY_PARAMS.SOFTWARE_STATUS])}
>
diff --git a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/_styles.scss b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/_styles.scss
index b270d851842b..667c4f086ac4 100644
--- a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/_styles.scss
+++ b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/_styles.scss
@@ -10,40 +10,23 @@
// and other "form-fields" in the filter block
width: initial;
}
- }
- // NOTE: Look more into this styling
- &__os_settings-dropdown,
- &__macsettings-dropdown,
- &__sw-install-status-dropdown {
- .Select-value {
+ // Vertically centers icon and text
+ .Select-multi-value-wrapper {
display: flex;
align-items: center;
- position: initial !important;
- line-height: initial !important;
-
- &::before {
- position: relative;
- content: url(../assets/images/icon-filter-v2-black-16x16@2x.png);
- transform: scale(0.5);
- top: 1px;
- }
- }
-
- .Select-input {
- display: none !important;
- }
-
- .Select {
- box-sizing: initial;
- }
-
- .Select-control {
- height: 36px;
}
+ }
+ &__os_settings-dropdown,
+ &__macsettings-dropdown,
+ &__sw-install-status-dropdown {
.dropdown__select {
border: 1px solid #e2e4ea;
}
+
+ .Select-multi-value-wrapper {
+ width: 150px; // Fits all dropdown options without resizing
+ }
}
}
diff --git a/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/PoliciesFilter.tsx b/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/PoliciesFilter.tsx
index 77f3118d978c..fae5ba45e175 100644
--- a/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/PoliciesFilter.tsx
+++ b/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/PoliciesFilter.tsx
@@ -32,13 +32,14 @@ const PoliciesFilter = ({
const value = policyResponse;
return (
-
+
);
diff --git a/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/_styles.scss b/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/_styles.scss
index c7d9fa8af755..c1f44b8863e4 100644
--- a/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/_styles.scss
+++ b/frontend/pages/hosts/ManageHostsPage/components/PoliciesFilter/_styles.scss
@@ -1,41 +1,5 @@
.policies-filter {
- display: flex;
- justify-content: flex-start;
- align-items: center;
-
- &__status_dropdown {
- width: 114px;
-
- .Select-menu-outer {
- width: 114px;
- max-height: 310px;
-
- .Select-menu {
- max-height: none;
-
- .dropdown__option {
- font-size: $small !important;
- }
- }
- }
- .Select-value {
- padding-left: $pad-medium;
- padding-right: $pad-medium;
-
- &::before {
- display: inline-block;
- position: absolute;
- padding: 5px 0 0 0; // centers spin
- content: url(../assets/images/icon-filter-v2-black-16x16@2x.png);
- transform: scale(0.5);
- width: 16px;
- height: 26px;
- left: 2px;
- }
- }
- .Select-value-label {
- padding-left: $pad-large;
- font-size: $small !important;
- }
+ .Select-multi-value-wrapper {
+ width: 91px; // Fits all dropdown options without resizing
}
}
diff --git a/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx b/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx
index c3da51aafaf5..be7a476d781a 100644
--- a/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx
+++ b/frontend/pages/hosts/details/cards/Software/HostSoftwareTable/HostSoftwareTable.tsx
@@ -114,7 +114,7 @@ const HostSoftwareTable = ({
options={DROPDOWN_OPTIONS}
searchable={false}
onChange={handleFilterDropdownChange}
- tableFilterDropdown
+ iconName="filter"
/>
);
}, [handleFilterDropdownChange, hostSoftwareFilter]);
diff --git a/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/AddPolicyModal.tsx b/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/AddPolicyModal.tsx
index f4481316ac60..e6e1e9bd3882 100644
--- a/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/AddPolicyModal.tsx
+++ b/frontend/pages/policies/ManagePoliciesPage/components/AddPolicyModal/AddPolicyModal.tsx
@@ -183,7 +183,7 @@ const AddPolicyModal = ({
options={PLATFORM_FILTER_OPTIONS}
searchable={false}
onChange={onPlatformFilterChange}
- tableFilterDropdown
+ iconName="filter"
/>
{filteredPoliciesCount > 0 ? filteredPoliciesList : renderNoResults()}
diff --git a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx
index 9037d20a8980..eae763105bc9 100644
--- a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx
+++ b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx
@@ -272,7 +272,7 @@ const QueriesTable = ({
options={PLATFORM_FILTER_OPTIONS}
searchable={false}
onChange={handlePlatformFilterDropdownChange}
- tableFilterDropdown
+ iconName="filter"
/>
);
}, [platform, queryParams, router]);