From 22ed2ef558aac4dcd322f58a023b7facf2a9ebac Mon Sep 17 00:00:00 2001 From: mimshins Date: Mon, 19 May 2025 15:33:59 +0330 Subject: [PATCH 1/3] remove unnecessary `reflect` behaviors --- .../src/base-text-input/base-text-input.ts | 2 +- .../src/bottom-navigation/item/item.ts | 2 +- .../src/button/base/base-button.ts | 2 +- .../web-components/src/checkbox/checkbox.ts | 4 +- .../src/chip-group/chip-group.test.ts | 37 +++++++++---------- packages/web-components/src/chip/chip.test.ts | 12 +++--- packages/web-components/src/chip/chip.ts | 2 +- .../src/file-input/file-input.ts | 2 +- packages/web-components/src/modal/modal.ts | 2 +- packages/web-components/src/notice/notice.ts | 2 +- .../web-components/src/pin-input/pin-input.ts | 2 +- .../web-components/src/snackbar/snackbar.ts | 2 +- .../src/text-field/text-field.ts | 4 +- .../web-components/src/tooltip/tooltip.ts | 2 +- 14 files changed, 38 insertions(+), 39 deletions(-) diff --git a/packages/web-components/src/base-text-input/base-text-input.ts b/packages/web-components/src/base-text-input/base-text-input.ts index 49735207..ad0fffac 100644 --- a/packages/web-components/src/base-text-input/base-text-input.ts +++ b/packages/web-components/src/base-text-input/base-text-input.ts @@ -100,7 +100,7 @@ export abstract class BaseTextInput extends BaseInput { * @attr {string} error * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public error = false; /** diff --git a/packages/web-components/src/bottom-navigation/item/item.ts b/packages/web-components/src/bottom-navigation/item/item.ts index 0fdbae32..beeaac9b 100644 --- a/packages/web-components/src/bottom-navigation/item/item.ts +++ b/packages/web-components/src/bottom-navigation/item/item.ts @@ -39,7 +39,7 @@ export class BottomNavigationItem extends LitElement { * @attr {string} active * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public get active(): boolean { return this._active; } diff --git a/packages/web-components/src/button/base/base-button.ts b/packages/web-components/src/button/base/base-button.ts index 5fca473f..400e9bbd 100644 --- a/packages/web-components/src/button/base/base-button.ts +++ b/packages/web-components/src/button/base/base-button.ts @@ -77,7 +77,7 @@ export abstract class BaseButton extends BaseClass implements FormSubmitter { * @attr {string} loading * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public loading = false; /** diff --git a/packages/web-components/src/checkbox/checkbox.ts b/packages/web-components/src/checkbox/checkbox.ts index a959cab7..db8537f5 100644 --- a/packages/web-components/src/checkbox/checkbox.ts +++ b/packages/web-components/src/checkbox/checkbox.ts @@ -33,7 +33,7 @@ export class Checkbox extends BaseInput { * @attr {string} checked * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public checked = false; /** @@ -67,7 +67,7 @@ export class Checkbox extends BaseInput { * @attr {string} error * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public error = false; @state() diff --git a/packages/web-components/src/chip-group/chip-group.test.ts b/packages/web-components/src/chip-group/chip-group.test.ts index d72fd304..7191bb2c 100644 --- a/packages/web-components/src/chip-group/chip-group.test.ts +++ b/packages/web-components/src/chip-group/chip-group.test.ts @@ -72,30 +72,30 @@ describe("🧩 chip-group", () => { await item1.click(); await handleSelectChange.matchResult({ callCount: 1 }); - await expect(item1).toHaveAttribute("selected"); + await expect(item1).toHaveJSProperty("selected", true); await forEachLocator([item2, item3, item4], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); await item2.click(); await handleSelectChange.matchResult({ callCount: 2 }); - await expect(item2).toHaveAttribute("selected"); + await expect(item2).toHaveJSProperty("selected", true); await forEachLocator([item1, item3, item4], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); await item3.click(); await handleSelectChange.matchResult({ callCount: 3 }); - await expect(item3).toHaveAttribute("selected"); + await expect(item3).toHaveJSProperty("selected", true); await forEachLocator([item1, item2, item4], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); await item4.click(); await handleSelectChange.matchResult({ callCount: 4 }); - await expect(item4).toHaveAttribute("selected"); + await expect(item4).toHaveJSProperty("selected", true); await forEachLocator([item1, item2, item3], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); }); @@ -118,32 +118,32 @@ describe("🧩 chip-group", () => { const item4 = page.getByTestId("test-chip-4"); await forEachLocator([item1, item2, item3, item4], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); await item1.click(); - await expect(item1).toHaveAttribute("selected"); + await expect(item1).toHaveJSProperty("selected", true); await forEachLocator([item2, item3, item4], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); await item2.click(); await forEachLocator([item1, item2], async chip => { - await expect(chip).toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", true); }); await forEachLocator([item3, item4], async chip => { - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); await item3.click(); await forEachLocator([item1, item2, item3], async chip => { - await expect(chip).toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", true); }); - await expect(item4).not.toHaveAttribute("selected"); + await expect(item4).toHaveJSProperty("selected", false); await item4.click(); await forEachLocator([item1, item2, item3, item4], async chip => { - await expect(chip).toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", true); }); }); @@ -160,16 +160,15 @@ describe("🧩 chip-group", () => { const item1 = page.getByTestId("test-chip-1"); - await expect(item1).toHaveAttribute("selected"); + await expect(item1).toHaveJSProperty("selected", true); await item1.click(); - await expect(item1).not.toHaveAttribute("selected"); + await expect(item1).toHaveJSProperty("selected", false); }); test("🧪 should work with multiple `cols` in `vertical` orientation", async ({ page, }) => { - // we have 6 chips (c1-c6) inside out chip group. await render( page, ` diff --git a/packages/web-components/src/chip/chip.test.ts b/packages/web-components/src/chip/chip.test.ts index 6fec3847..d51bffba 100644 --- a/packages/web-components/src/chip/chip.test.ts +++ b/packages/web-components/src/chip/chip.test.ts @@ -8,16 +8,16 @@ describe("🧩 chip", () => { ); const chip = page.getByTestId("test-chip"); - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); await page.keyboard.press("Tab"); await expect(chip).toBeFocused(); await page.keyboard.press("Space"); - await expect(chip).toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", true); await page.keyboard.press("Space"); - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); test("🧪 should toggle on click", async ({ page }) => { @@ -27,13 +27,13 @@ describe("🧩 chip", () => { ); const chip = page.getByTestId("test-chip"); - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); await chip.click(); - await expect(chip).toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", true); await chip.click(); - await expect(chip).not.toHaveAttribute("selected"); + await expect(chip).toHaveJSProperty("selected", false); }); test("🧪 should render leading and trailing icons", async ({ page }) => { diff --git a/packages/web-components/src/chip/chip.ts b/packages/web-components/src/chip/chip.ts index 015f11b2..64cd6304 100644 --- a/packages/web-components/src/chip/chip.ts +++ b/packages/web-components/src/chip/chip.ts @@ -64,7 +64,7 @@ export class Chip extends LitElement { * @attr {string} selected * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public get selected(): boolean { return this._selected; } diff --git a/packages/web-components/src/file-input/file-input.ts b/packages/web-components/src/file-input/file-input.ts index 9e341ca3..353cd4b8 100644 --- a/packages/web-components/src/file-input/file-input.ts +++ b/packages/web-components/src/file-input/file-input.ts @@ -180,7 +180,7 @@ export class FileInput extends BaseClass { * @attr {string} error * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public error = false; /** diff --git a/packages/web-components/src/modal/modal.ts b/packages/web-components/src/modal/modal.ts index 5351e876..bb1b33f6 100644 --- a/packages/web-components/src/modal/modal.ts +++ b/packages/web-components/src/modal/modal.ts @@ -127,7 +127,7 @@ export class Modal extends LitElement { * * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public set open(openState: boolean) { if (openState === this._open) return; diff --git a/packages/web-components/src/notice/notice.ts b/packages/web-components/src/notice/notice.ts index 3fd0d4d4..5d741226 100644 --- a/packages/web-components/src/notice/notice.ts +++ b/packages/web-components/src/notice/notice.ts @@ -63,7 +63,7 @@ export class Notice extends LitElement { * @attr {string} visible * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public visible = false; /** diff --git a/packages/web-components/src/pin-input/pin-input.ts b/packages/web-components/src/pin-input/pin-input.ts index fdca9287..8e553535 100644 --- a/packages/web-components/src/pin-input/pin-input.ts +++ b/packages/web-components/src/pin-input/pin-input.ts @@ -204,7 +204,7 @@ export class PinInput extends BaseClass { * @attr {string} error * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public error = false; /** diff --git a/packages/web-components/src/snackbar/snackbar.ts b/packages/web-components/src/snackbar/snackbar.ts index e76e7c16..5ede88da 100644 --- a/packages/web-components/src/snackbar/snackbar.ts +++ b/packages/web-components/src/snackbar/snackbar.ts @@ -77,7 +77,7 @@ export class Snackbar extends LitElement { * @attr {string} open * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public open = false; /** diff --git a/packages/web-components/src/text-field/text-field.ts b/packages/web-components/src/text-field/text-field.ts index 40a7c8b4..f12a6494 100644 --- a/packages/web-components/src/text-field/text-field.ts +++ b/packages/web-components/src/text-field/text-field.ts @@ -41,7 +41,7 @@ export class TextField extends BaseTextInput { * @attr {string} type * @default "text" */ - @property({ reflect: true }) + @property() public type: | "email" | "number" @@ -97,7 +97,7 @@ export class TextField extends BaseTextInput { * @attr {string} multiple * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public multiple = false; /** diff --git a/packages/web-components/src/tooltip/tooltip.ts b/packages/web-components/src/tooltip/tooltip.ts index 236d1918..d01f82b5 100644 --- a/packages/web-components/src/tooltip/tooltip.ts +++ b/packages/web-components/src/tooltip/tooltip.ts @@ -106,7 +106,7 @@ export class Tooltip extends LitElement { * @attr {string} visible * @default false */ - @property({ type: Boolean, reflect: true }) + @property({ type: Boolean }) public visible = false; /** From e9e1d5c01e21607994d95f659c4f9f94f8c4ea36 Mon Sep 17 00:00:00 2001 From: mimshins Date: Mon, 19 May 2025 15:35:48 +0330 Subject: [PATCH 2/3] add changeset --- .changeset/ninety-mugs-shine.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/ninety-mugs-shine.md diff --git a/.changeset/ninety-mugs-shine.md b/.changeset/ninety-mugs-shine.md new file mode 100644 index 00000000..ab94145e --- /dev/null +++ b/.changeset/ninety-mugs-shine.md @@ -0,0 +1,6 @@ +--- +"@tapsioss/web-components": minor +--- + +Remove unnecessary `reflect` behaviors + \ No newline at end of file From f61df3b1eb5d77833b3aabc3d7202c8debfe5b9f Mon Sep 17 00:00:00 2001 From: mimshins Date: Mon, 19 May 2025 15:36:51 +0330 Subject: [PATCH 3/3] update changeset descriptions --- .changeset/sad-sloths-mate.md | 2 +- .changeset/sad-webs-fall.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/sad-sloths-mate.md b/.changeset/sad-sloths-mate.md index 8dc645e7..aba0a8c5 100644 --- a/.changeset/sad-sloths-mate.md +++ b/.changeset/sad-sloths-mate.md @@ -2,5 +2,5 @@ "@tapsioss/web-components": minor --- -Update `value` property to be readonly +Update `value` property to be readonly in pinwheel \ No newline at end of file diff --git a/.changeset/sad-webs-fall.md b/.changeset/sad-webs-fall.md index 9904cbf8..9a125eb8 100644 --- a/.changeset/sad-webs-fall.md +++ b/.changeset/sad-webs-fall.md @@ -2,5 +2,5 @@ "@tapsioss/web-components": patch --- -Remove iOS-specific behaviors xD +Remove iOS-specific behaviors for scroll locker \ No newline at end of file