Make add-on sorting case insensitive (#10061)

This commit is contained in:
Philip Allgaier 2021-10-06 10:33:15 +02:00 committed by GitHub
parent 2fb3ac74eb
commit ea3fae2ce4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 11 deletions

View File

@ -4,6 +4,7 @@ import { property } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { atLeastVersion } from "../../../src/common/config/version"; import { atLeastVersion } from "../../../src/common/config/version";
import { navigate } from "../../../src/common/navigate"; import { navigate } from "../../../src/common/navigate";
import { caseInsensitiveStringCompare } from "../../../src/common/string/compare";
import "../../../src/components/ha-card"; import "../../../src/components/ha-card";
import { import {
HassioAddonInfo, HassioAddonInfo,
@ -32,7 +33,7 @@ class HassioAddonRepositoryEl extends LitElement {
return filterAndSort(addons, filter); return filterAndSort(addons, filter);
} }
return addons.sort((a, b) => return addons.sort((a, b) =>
a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1 caseInsensitiveStringCompare(a.name, b.name)
); );
} }
); );

View File

@ -3,7 +3,7 @@ import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property } from "lit/decorators"; import { customElement, property } from "lit/decorators";
import { atLeastVersion } from "../../../src/common/config/version"; import { atLeastVersion } from "../../../src/common/config/version";
import { navigate } from "../../../src/common/navigate"; 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 "../../../src/components/ha-card";
import { Supervisor } from "../../../src/data/supervisor/supervisor"; import { Supervisor } from "../../../src/data/supervisor/supervisor";
import { haStyle } from "../../../src/resources/styles"; import { haStyle } from "../../../src/resources/styles";
@ -33,7 +33,7 @@ class HassioAddons extends LitElement {
</ha-card> </ha-card>
` `
: this.supervisor.supervisor.addons : this.supervisor.supervisor.addons
.sort((a, b) => stringCompare(a.name, b.name)) .sort((a, b) => caseInsensitiveStringCompare(a.name, b.name))
.map( .map(
(addon) => html` (addon) => html`
<ha-card .addon=${addon} @click=${this._addonTapped}> <ha-card .addon=${addon} @click=${this._addonTapped}>

View File

@ -9,6 +9,7 @@ import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, query, state } from "lit/decorators"; import { customElement, property, query, state } from "lit/decorators";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { fireEvent } from "../../../../src/common/dom/fire_event"; import { fireEvent } from "../../../../src/common/dom/fire_event";
import { caseInsensitiveStringCompare } from "../../../../src/common/string/compare";
import "../../../../src/components/ha-alert"; import "../../../../src/components/ha-alert";
import "../../../../src/components/ha-circular-progress"; import "../../../../src/components/ha-circular-progress";
import { createCloseHeading } from "../../../../src/components/ha-dialog"; import { createCloseHeading } from "../../../../src/components/ha-dialog";
@ -57,7 +58,7 @@ class HassioRepositoriesDialog extends LitElement {
private _filteredRepositories = memoizeOne((repos: HassioAddonRepository[]) => private _filteredRepositories = memoizeOne((repos: HassioAddonRepository[]) =>
repos repos
.filter((repo) => repo.slug !== "core" && repo.slug !== "local") .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 { protected render(): TemplateResult {

View File

@ -7,6 +7,7 @@ import { styleMap } from "lit/directives/style-map";
import memoizeOne from "memoize-one"; import memoizeOne from "memoize-one";
import { fireEvent } from "../../common/dom/fire_event"; import { fireEvent } from "../../common/dom/fire_event";
import "../../common/search/search-input"; import "../../common/search/search-input";
import { caseInsensitiveStringCompare } from "../../common/string/compare";
import { LocalizeFunc } from "../../common/translations/localize"; import { LocalizeFunc } from "../../common/translations/localize";
import "../../components/ha-icon-next"; import "../../components/ha-icon-next";
import { domainToName } from "../../data/integration"; import { domainToName } from "../../data/integration";
@ -59,7 +60,7 @@ class StepFlowPickHandler extends LitElement {
return fuse.search(filter).map((result) => result.item); return fuse.search(filter).map((result) => result.item);
} }
return handlers.sort((a, b) => return handlers.sort((a, b) =>
a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1 caseInsensitiveStringCompare(a.name, b.name)
); );
} }
); );

View File

@ -25,7 +25,7 @@ import { computeStateName } from "../../common/entity/compute_state_name";
import { domainIcon } from "../../common/entity/domain_icon"; import { domainIcon } from "../../common/entity/domain_icon";
import { navigate } from "../../common/navigate"; import { navigate } from "../../common/navigate";
import "../../common/search/search-input"; import "../../common/search/search-input";
import { stringCompare } from "../../common/string/compare"; import { caseInsensitiveStringCompare } from "../../common/string/compare";
import { import {
fuzzyFilterSort, fuzzyFilterSort,
ScorableTextItem, ScorableTextItem,
@ -399,7 +399,7 @@ export class QuickBar extends LitElement {
}; };
}) })
.sort((a, b) => .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._generateServerControlCommands(),
...this._generateNavigationCommands(), ...this._generateNavigationCommands(),
].sort((a, b) => ].sort((a, b) =>
stringCompare( caseInsensitiveStringCompare(a.strings.join(" "), b.strings.join(" "))
a.strings.join(" ").toLowerCase(),
b.strings.join(" ").toLowerCase()
)
); );
} }