From ea3fae2ce40180685d3639145d5b150dfa5315f1 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Wed, 6 Oct 2021 10:33:15 +0200 Subject: [PATCH] Make add-on sorting case insensitive (#10061) --- hassio/src/addon-store/hassio-addon-repository.ts | 3 ++- hassio/src/dashboard/hassio-addons.ts | 4 ++-- .../dialogs/repositories/dialog-hassio-repositories.ts | 3 ++- src/dialogs/config-flow/step-flow-pick-handler.ts | 3 ++- src/dialogs/quick-bar/ha-quick-bar.ts | 9 +++------ 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hassio/src/addon-store/hassio-addon-repository.ts b/hassio/src/addon-store/hassio-addon-repository.ts index 513f053d1c..49da9c3c21 100644 --- a/hassio/src/addon-store/hassio-addon-repository.ts +++ b/hassio/src/addon-store/hassio-addon-repository.ts @@ -4,6 +4,7 @@ import { property } from "lit/decorators"; import memoizeOne from "memoize-one"; import { atLeastVersion } from "../../../src/common/config/version"; import { navigate } from "../../../src/common/navigate"; +import { caseInsensitiveStringCompare } from "../../../src/common/string/compare"; import "../../../src/components/ha-card"; import { HassioAddonInfo, @@ -32,7 +33,7 @@ class HassioAddonRepositoryEl extends LitElement { return filterAndSort(addons, filter); } return addons.sort((a, b) => - a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1 + caseInsensitiveStringCompare(a.name, b.name) ); } ); diff --git a/hassio/src/dashboard/hassio-addons.ts b/hassio/src/dashboard/hassio-addons.ts index 0a5d1308e8..358bb3788c 100644 --- a/hassio/src/dashboard/hassio-addons.ts +++ b/hassio/src/dashboard/hassio-addons.ts @@ -3,7 +3,7 @@ import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators"; import { atLeastVersion } from "../../../src/common/config/version"; import { navigate } from "../../../src/common/navigate"; -import { stringCompare } from "../../../src/common/string/compare"; +import { caseInsensitiveStringCompare } from "../../../src/common/string/compare"; import "../../../src/components/ha-card"; import { Supervisor } from "../../../src/data/supervisor/supervisor"; import { haStyle } from "../../../src/resources/styles"; @@ -33,7 +33,7 @@ class HassioAddons extends LitElement { ` : this.supervisor.supervisor.addons - .sort((a, b) => stringCompare(a.name, b.name)) + .sort((a, b) => caseInsensitiveStringCompare(a.name, b.name)) .map( (addon) => html` diff --git a/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts b/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts index 4ab98e50c3..64eb324a20 100644 --- a/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts +++ b/hassio/src/dialogs/repositories/dialog-hassio-repositories.ts @@ -9,6 +9,7 @@ import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { customElement, property, query, state } from "lit/decorators"; import memoizeOne from "memoize-one"; import { fireEvent } from "../../../../src/common/dom/fire_event"; +import { caseInsensitiveStringCompare } from "../../../../src/common/string/compare"; import "../../../../src/components/ha-alert"; import "../../../../src/components/ha-circular-progress"; import { createCloseHeading } from "../../../../src/components/ha-dialog"; @@ -57,7 +58,7 @@ class HassioRepositoriesDialog extends LitElement { private _filteredRepositories = memoizeOne((repos: HassioAddonRepository[]) => repos .filter((repo) => repo.slug !== "core" && repo.slug !== "local") - .sort((a, b) => (a.name < b.name ? -1 : 1)) + .sort((a, b) => caseInsensitiveStringCompare(a.name, b.name)) ); protected render(): TemplateResult { diff --git a/src/dialogs/config-flow/step-flow-pick-handler.ts b/src/dialogs/config-flow/step-flow-pick-handler.ts index 97c43f67aa..e444729a64 100644 --- a/src/dialogs/config-flow/step-flow-pick-handler.ts +++ b/src/dialogs/config-flow/step-flow-pick-handler.ts @@ -7,6 +7,7 @@ import { styleMap } from "lit/directives/style-map"; import memoizeOne from "memoize-one"; import { fireEvent } from "../../common/dom/fire_event"; import "../../common/search/search-input"; +import { caseInsensitiveStringCompare } from "../../common/string/compare"; import { LocalizeFunc } from "../../common/translations/localize"; import "../../components/ha-icon-next"; import { domainToName } from "../../data/integration"; @@ -59,7 +60,7 @@ class StepFlowPickHandler extends LitElement { return fuse.search(filter).map((result) => result.item); } return handlers.sort((a, b) => - a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1 + caseInsensitiveStringCompare(a.name, b.name) ); } ); diff --git a/src/dialogs/quick-bar/ha-quick-bar.ts b/src/dialogs/quick-bar/ha-quick-bar.ts index bde8b0eba6..c0f9caf20b 100644 --- a/src/dialogs/quick-bar/ha-quick-bar.ts +++ b/src/dialogs/quick-bar/ha-quick-bar.ts @@ -25,7 +25,7 @@ import { computeStateName } from "../../common/entity/compute_state_name"; import { domainIcon } from "../../common/entity/domain_icon"; import { navigate } from "../../common/navigate"; import "../../common/search/search-input"; -import { stringCompare } from "../../common/string/compare"; +import { caseInsensitiveStringCompare } from "../../common/string/compare"; import { fuzzyFilterSort, ScorableTextItem, @@ -399,7 +399,7 @@ export class QuickBar extends LitElement { }; }) .sort((a, b) => - stringCompare(a.primaryText.toLowerCase(), b.primaryText.toLowerCase()) + caseInsensitiveStringCompare(a.primaryText, b.primaryText) ); } @@ -409,10 +409,7 @@ export class QuickBar extends LitElement { ...this._generateServerControlCommands(), ...this._generateNavigationCommands(), ].sort((a, b) => - stringCompare( - a.strings.join(" ").toLowerCase(), - b.strings.join(" ").toLowerCase() - ) + caseInsensitiveStringCompare(a.strings.join(" "), b.strings.join(" ")) ); }