@furystack/shades-common-components 15.0.0 → 15.0.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [15.0.1] - 2026-03-19
4
+
5
+ ### ✨ Features
6
+
7
+ - Added `navSection` prop to `Accordion`, `DataGrid`, `List`, and `Tree` for spatial‑navigation scoping.
8
+ - Added `trapFocus` and `navSection` props to `Modal` and `Dialog`, plus focusable behaviour for `Chip` and `Image` when interactive.
9
+ - Introduced `focusOutline` theme variable and `injectFocusVisibleStyles()` helper; added focus coordination to DataGrid/List/Tree and semantics improvements across components.
10
+
11
+ ### ⬆️ Dependencies
12
+
13
+ - Upgraded `vite` from ^7.3.1 to ^8.0.0 for improved build performance and new features
14
+ - Upgraded `vitest` from ^4.0.18 to ^4.1.0
15
+ - Upgraded `@vitest/coverage-istanbul` from ^4.0.18 to ^4.1.0
16
+
17
+ ### 💥 Breaking Changes
18
+
19
+ - Removed arrow‑key and Tab handlers from `ListService`/`CollectionService`/`TreeService`; spatial navigation now handles boundaries.
20
+ - `AccordionItem` header changed to a native `<button disabled>`; custom CSS selectors must be updated.
21
+ - Themes must supply a `focusOutline` value; various behavioural changes to keyboard handling detailed in package changelog.
22
+
3
23
  ## [15.0.0] - 2026-03-10
4
24
 
5
25
  ### ✨ Features
@@ -51,13 +51,13 @@ let SuggestManager = class SuggestManager extends EventHub {
51
51
  if (this.lastGetSuggestionOptions?.term === options.term) {
52
52
  return;
53
53
  }
54
- const lastSelectedSuggestion = JSON.stringify(this.currentSuggestions.getValue()[this.selectedIndex.getValue()]);
54
+ const lastSelectedEntry = JSON.stringify(this.currentSuggestions.getValue()[this.selectedIndex.getValue()]?.entry);
55
55
  this.isLoading.setValue(true);
56
56
  this.lastGetSuggestionOptions = options;
57
57
  const newEntries = await this.getEntries(options.term);
58
58
  this.isOpened.setValue(true);
59
59
  this.currentSuggestions.setValue(newEntries.map((e) => ({ entry: e, suggestion: this.getSuggestionEntry(e) })));
60
- this.selectedIndex.setValue(Math.max(0, this.currentSuggestions.getValue().findIndex((e) => JSON.stringify(e) === lastSelectedSuggestion)));
60
+ this.selectedIndex.setValue(Math.max(0, this.currentSuggestions.getValue().findIndex((e) => JSON.stringify(e.entry) === lastSelectedEntry)));
61
61
  }
62
62
  finally {
63
63
  this.isLoading.setValue(false);
@@ -1 +1 @@
1
- {"version":3,"file":"suggest-manager.js","sourceRoot":"","sources":["../../../src/components/suggest/suggest-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suggest-manager.js","sourceRoot":"","sources":["../../../src/components/suggest/suggest-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/shades-common-components",
3
- "version": "15.0.0",
3
+ "version": "15.0.1",
4
4
  "description": "Common UI components for FuryStack Shades",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -45,14 +45,14 @@
45
45
  "homepage": "https://github.com/furystack/furystack",
46
46
  "devDependencies": {
47
47
  "typescript": "^5.9.3",
48
- "vitest": "^4.0.18"
48
+ "vitest": "^4.1.0"
49
49
  },
50
50
  "dependencies": {
51
- "@furystack/cache": "^6.1.1",
52
- "@furystack/core": "^16.0.0",
53
- "@furystack/inject": "^12.0.32",
54
- "@furystack/shades": "^13.1.0",
55
- "@furystack/utils": "^8.2.1",
51
+ "@furystack/cache": "^6.1.2",
52
+ "@furystack/core": "^16.0.1",
53
+ "@furystack/inject": "^12.0.33",
54
+ "@furystack/shades": "^13.1.1",
55
+ "@furystack/utils": "^8.2.2",
56
56
  "path-to-regexp": "^8.3.0"
57
57
  },
58
58
  "engines": {
@@ -51,7 +51,7 @@ export class SuggestManager<T> extends EventHub<{ onSelectSuggestion: T }> imple
51
51
  if (this.lastGetSuggestionOptions?.term === options.term) {
52
52
  return
53
53
  }
54
- const lastSelectedSuggestion = JSON.stringify(this.currentSuggestions.getValue()[this.selectedIndex.getValue()])
54
+ const lastSelectedEntry = JSON.stringify(this.currentSuggestions.getValue()[this.selectedIndex.getValue()]?.entry)
55
55
  this.isLoading.setValue(true)
56
56
  this.lastGetSuggestionOptions = options
57
57
  const newEntries = await this.getEntries(options.term)
@@ -60,7 +60,7 @@ export class SuggestManager<T> extends EventHub<{ onSelectSuggestion: T }> imple
60
60
  this.selectedIndex.setValue(
61
61
  Math.max(
62
62
  0,
63
- this.currentSuggestions.getValue().findIndex((e) => JSON.stringify(e) === lastSelectedSuggestion),
63
+ this.currentSuggestions.getValue().findIndex((e) => JSON.stringify(e.entry) === lastSelectedEntry),
64
64
  ),
65
65
  )
66
66
  } finally {