fix(ui): render Select arrow independently of icon CSS

This commit is contained in:
Clintchiz committed 2026-08-26 17:59:17 +05:30
1 parent 43bc2330b2
commit 24f15e8b78
4 files changed
+28 -4

No files matched your search

+1 -1
View File
@@ -688,7 +688,7 @@
}, },
"packages/ui": { "packages/ui": {
"name": "@wrnexus/ui", "name": "@wrnexus/ui",
"version": "0.8.60", "version": "0.8.61",
"dependencies": { "dependencies": {
"@wrnexus/core": "workspace:*", "@wrnexus/core": "workspace:*",
}, },
+6 -2
View File
@@ -57,7 +57,7 @@ size: string = "default"
{#if !multiple}<option value="" selected="{value === ''}" disabled="{required}">{placeholder}</option>{/if} {#if !multiple}<option value="" selected="{value === ''}" disabled="{required}">{placeholder}</option>{/if}
{#each options as option}<option value="{option.value}" selected="{selected(option)}" disabled="{option.disabled}">{option.label}</option>{/each} {#each options as option}<option value="{option.value}" selected="{selected(option)}" disabled="{option.disabled}">{option.label}</option>{/each}
</select> </select>
{#if !multiple}<span class="icon-[lucide--chevron-down] wrn-next__select-indicator" aria-hidden="true"></span>{/if} {#if !multiple}<svg class="wrn-next__select-indicator" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m6 9 6 6 6-6"></path></svg>{/if}
{#if variant === "floating"}<span class="wrn-next__field-floating-label">{label}</span>{/if} {#if variant === "floating"}<span class="wrn-next__field-floating-label">{label}</span>{/if}
</div> </div>
{#if helperText}<small class="wrn-next__field-help">{helperText}</small>{/if} {#if helperText}<small class="wrn-next__field-help">{helperText}</small>{/if}
@@ -79,7 +79,11 @@ size: string = "default"
.wrn-next__select-indicator { .wrn-next__select-indicator {
position: absolute; position: absolute;
right: 0.85rem; inset-inline-end: 0.85rem;
top: 50%;
transform: translateY(-50%);
width: 1rem;
height: 1rem;
color: var(--wrn-color-muted); color: var(--wrn-color-muted);
pointer-events: none; pointer-events: none;
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@wrnexus/ui", "name": "@wrnexus/ui",
"version": "0.8.60", "version": "0.8.61",
"private": true, "private": true,
"type": "module", "type": "module",
"main": "src/index.ts", "main": "src/index.ts",
+20
View File
@@ -1372,6 +1372,26 @@ test("basic fields suppress native popups and render package constraint messages
expect(selectSource).toContain("wrn-next__select-indicator"); expect(selectSource).toContain("wrn-next__select-indicator");
}); });
test("Select renders its own directional indicator without app icon CSS", async () => {
const source = readFileSync(uiComponentPath("Select"), "utf8");
const dom = mountHtml(
await renderComponent(source, {
name: "method",
value: "totp",
options: [{ label: "Authenticator app", value: "totp" }],
}),
);
const indicator = dom.querySelector("svg.wrn-next__select-indicator");
expect(indicator?.getAttribute("width")).toBe("16");
expect(indicator?.getAttribute("height")).toBe("16");
expect(indicator?.getAttribute("aria-hidden")).toBe("true");
expect(indicator?.querySelector("path")?.getAttribute("d")).toBe("m6 9 6 6 6-6");
expect(source).toContain("inset-inline-end: 0.85rem");
expect(source).not.toContain("icon-[lucide--chevron-down]");
const multiple = mountHtml(await renderComponent(source, { multiple: true }));
expect(multiple.querySelector(".wrn-next__select-indicator")).toBeNull();
});
test("OTP inputs accept six digits and show custom inline errors without native popups", async () => { test("OTP inputs accept six digits and show custom inline errors without native popups", async () => {
const source = readFileSync(uiComponentPath("Input"), "utf8"); const source = readFileSync(uiComponentPath("Input"), "utf8");
const dom = mountHtml( const dom = mountHtml(