From 1b795f44f2e768e9eacf423f932715ee641d470a Mon Sep 17 00:00:00 2001 From: Zack Porter <121693134+zaporter-work@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:17:13 -0500 Subject: [PATCH] Add iconCx to Pill (#597) --- packages/core/package.json | 2 +- packages/core/src/lib/__tests__/pill.spec.ts | 27 ++++++++++++++- packages/core/src/lib/pill.svelte | 35 ++++++++++++++++---- packages/core/src/routes/+page.svelte | 7 ++++ 4 files changed, 63 insertions(+), 8 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index b2fa46c2..04322fe5 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@viamrobotics/prime-core", - "version": "0.0.164", + "version": "0.0.165", "repository": { "type": "git", "url": "https://github.com/viamrobotics/prime.git", diff --git a/packages/core/src/lib/__tests__/pill.spec.ts b/packages/core/src/lib/__tests__/pill.spec.ts index bac2e7fb..5f0acd9f 100644 --- a/packages/core/src/lib/__tests__/pill.spec.ts +++ b/packages/core/src/lib/__tests__/pill.spec.ts @@ -1,9 +1,16 @@ -import { describe, it, expect, vi } from 'vitest'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/svelte'; import { Pill } from '$lib'; import { cxTestArguments, cxTestResults } from './cx-test'; +import userEvent from '@testing-library/user-event'; describe('Pill', () => { + let user: ReturnType; + + beforeEach(() => { + user = userEvent.setup(); + }); + it('Renders text within the pill if a value attribute is specified', () => { render(Pill, { value: 'test' }); expect(screen.getByText('test')).toBeVisible(); @@ -67,6 +74,11 @@ describe('Pill', () => { expect(screen.getByText('test').parentElement).toHaveClass(cxTestResults); }); + it('Renders with the passed iconCx classes', () => { + render(Pill, { value: 'test', icon: 'cog', iconCx: cxTestArguments }); + expect(screen.getByTestId('icon-cog')).toHaveClass(cxTestResults); + }); + it('Renders with the passed href', () => { render(Pill, { value: 'link', href: 'https://www.viam.com' }); expect(screen.getByRole('link', { name: 'link' })).toHaveAttribute( @@ -74,4 +86,17 @@ describe('Pill', () => { 'https://www.viam.com' ); }); + + it('Renders icon tooltip when hovered', async () => { + render(Pill, { value: 'test', icon: 'cog', iconTooltip: 'Live' }); + + const icon = screen.getByTestId('icon-cog'); + + await user.hover(icon); + + const tooltip = screen.getByRole('tooltip'); + + expect(tooltip).not.toHaveClass('hidden'); + expect(tooltip).toHaveTextContent('Live'); + }); }); diff --git a/packages/core/src/lib/pill.svelte b/packages/core/src/lib/pill.svelte index 3895776c..ed07d292 100644 --- a/packages/core/src/lib/pill.svelte +++ b/packages/core/src/lib/pill.svelte @@ -10,7 +10,13 @@ For displaying a list of items.