@purpurds/autocomplete 5.15.0 → 5.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"useAutocomplete.d.ts","sourceRoot":"","sources":["../src/useAutocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIxE,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,IAAI;IAIrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAI/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAI3B,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAItE,EAAE,EAAE,MAAM,CAAC;IAIX,YAAY,EAAE,MAAM,CAAC;IAIrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAInC,aAAa,CAAC,EAAE,SAAS,CAAC;IAI1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAIxC,WAAW,CAAC,EAAE,OAAO,CAAC;IAItB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAI3C,OAAO,EAAE,CAAC,EAAE,CAAC;IAIb,cAAc,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,mOAgB7C,sBAAsB,CAAC,CAAC,CAAC;;;;;;;;kCA4KW,CAAC,SAAS,MAAM,KAAG,gBAAgB;;CAqDzE,CAAC"}
1
+ {"version":3,"file":"useAutocomplete.d.ts","sourceRoot":"","sources":["../src/useAutocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIxE,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,IAAI;IAIrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAInB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAI/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAI3B,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAItE,EAAE,EAAE,MAAM,CAAC;IAIX,YAAY,EAAE,MAAM,CAAC;IAIrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAInC,aAAa,CAAC,EAAE,SAAS,CAAC;IAI1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAIxC,WAAW,CAAC,EAAE,OAAO,CAAC;IAItB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAI3C,OAAO,EAAE,CAAC,EAAE,CAAC;IAIb,cAAc,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,mOAgB7C,sBAAsB,CAAC,CAAC,CAAC;;;;;;;;kCAqLW,CAAC,SAAS,MAAM,KAAG,gBAAgB;;CAqDzE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpurds/autocomplete",
3
- "version": "5.15.0",
3
+ "version": "5.16.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "main": "./dist/autocomplete.cjs.js",
6
6
  "types": "./dist/autocomplete.d.ts",
@@ -15,11 +15,11 @@
15
15
  "source": "src/autocomplete.tsx",
16
16
  "dependencies": {
17
17
  "classnames": "~2.5.0",
18
- "@purpurds/icon": "5.15.0",
19
- "@purpurds/listbox": "5.15.0",
20
- "@purpurds/paragraph": "5.15.0",
21
- "@purpurds/text-field": "5.15.0",
22
- "@purpurds/tokens": "5.15.0"
18
+ "@purpurds/icon": "5.16.0",
19
+ "@purpurds/text-field": "5.16.0",
20
+ "@purpurds/tokens": "5.16.0",
21
+ "@purpurds/paragraph": "5.16.0",
22
+ "@purpurds/listbox": "5.16.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@rushstack/eslint-patch": "~1.10.0",
@@ -45,10 +45,10 @@
45
45
  "typescript": "^5.5.4",
46
46
  "vite": "5.3.4",
47
47
  "vitest": "~1.5.0",
48
- "@purpurds/button": "5.15.0",
49
48
  "@purpurds/component-rig": "1.0.0",
50
- "@purpurds/icon": "5.15.0",
51
- "@purpurds/search-field": "5.15.0"
49
+ "@purpurds/icon": "5.16.0",
50
+ "@purpurds/button": "5.16.0",
51
+ "@purpurds/search-field": "5.16.0"
52
52
  },
53
53
  "scripts": {
54
54
  "build:dev": "vite",
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { TextField } from "@purpurds/text-field";
3
3
  import * as matchers from "@testing-library/jest-dom/matchers";
4
- import { cleanup, fireEvent, render, screen } from "@testing-library/react";
4
+ import { cleanup, fireEvent, render, screen, waitFor } from "@testing-library/react";
5
5
  import { afterEach, describe, expect, it, vi } from "vitest";
6
6
 
7
7
  import { Autocomplete } from "./autocomplete";
@@ -593,7 +593,7 @@ describe("B2xAutocomplete", () => {
593
593
  expect(input.value).toEqual("random text");
594
594
  });
595
595
 
596
- it("should reset input value on blur for combobox with no selected option", () => {
596
+ it("should reset input value on blur for combobox with no selected option", async () => {
597
597
  const onSelectMock = vi.fn();
598
598
  render(
599
599
  <Autocomplete
@@ -613,10 +613,12 @@ describe("B2xAutocomplete", () => {
613
613
  fireEvent.change(input, { target: { value: "random text" } });
614
614
  expect(input.value).toEqual("random text");
615
615
  fireEvent.blur(input);
616
- expect(input.value).toEqual("");
616
+ await waitFor(() => {
617
+ expect(input.value).toEqual("");
618
+ });
617
619
  });
618
620
 
619
- it("should reset input value on blur for combobox with selected option", () => {
621
+ it("should reset input value on blur for combobox with selected option", async () => {
620
622
  const onSelectMock = vi.fn();
621
623
  render(
622
624
  <Autocomplete
@@ -637,6 +639,8 @@ describe("B2xAutocomplete", () => {
637
639
  fireEvent.change(input, { target: { value: "random text" } });
638
640
  expect(input.value).toEqual("random text");
639
641
  fireEvent.blur(input);
640
- expect(input.value).toEqual(options[0].label);
642
+ await waitFor(() => {
643
+ expect(input.value).toEqual(options[0].label);
644
+ });
641
645
  });
642
646
  });
@@ -245,7 +245,16 @@ export const useAutocomplete = <T extends Option>({
245
245
 
246
246
  const handleOnBlur = () => {
247
247
  if (combobox) {
248
- populateInputField(selectedOption?.label ?? "");
248
+ // Use a timeout to allow click events on the listbox to fire before this check
249
+ setTimeout(() => {
250
+ // If the blur happened due to a click inside the listbox, don't reset the value
251
+ if (
252
+ !inputRef.current?.contains(document.activeElement) &&
253
+ !listboxRef.current?.contains(document.activeElement)
254
+ ) {
255
+ populateInputField(selectedOption ? selectedOption.label : "");
256
+ }
257
+ });
249
258
  }
250
259
  };
251
260