@cratis/components 4.18.0 → 4.19.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.
Files changed (59) hide show
  1. package/compat-manifest.json +11 -11
  2. package/dist/esm/Common/ActionMenubar.d.ts +4 -1
  3. package/dist/esm/Common/ActionMenubar.js +10 -5
  4. package/dist/esm/Common/ActionMenubar.js.map +1 -1
  5. package/dist/esm/Common/CratisComponentsProvider.d.ts +13 -0
  6. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -1
  7. package/dist/esm/Common/ToolbarFocusMode.d.ts +8 -0
  8. package/dist/esm/Common/ToolbarFocusMode.d.ts.map +1 -0
  9. package/dist/esm/Common/ToolbarFocusMode.js +8 -0
  10. package/dist/esm/Common/ToolbarFocusMode.js.map +1 -0
  11. package/dist/esm/Common/index.d.ts +1 -0
  12. package/dist/esm/Common/index.js +1 -0
  13. package/dist/esm/Common/index.js.map +1 -1
  14. package/dist/esm/Common/useToolbarKeyboardNavigation.d.ts +9 -0
  15. package/dist/esm/Common/useToolbarKeyboardNavigation.js +76 -0
  16. package/dist/esm/Common/useToolbarKeyboardNavigation.js.map +1 -0
  17. package/dist/esm/Filter/CheckboxListFilter.d.ts +1 -1
  18. package/dist/esm/Filter/CheckboxListFilter.js +3 -1
  19. package/dist/esm/Filter/CheckboxListFilter.js.map +1 -1
  20. package/dist/esm/Filter/FilterPanel.d.ts +2 -2
  21. package/dist/esm/Filter/FilterPanel.js +165 -19
  22. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  23. package/dist/esm/Filter/types.d.ts +1 -1
  24. package/dist/esm/Filter/types.d.ts.map +1 -1
  25. package/dist/esm/Filter/utils.d.ts +1 -1
  26. package/dist/esm/Filter/utils.js +2 -2
  27. package/dist/esm/Filter/utils.js.map +1 -1
  28. package/dist/esm/PivotViewer/PivotViewer.js +1 -1
  29. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  30. package/dist/esm/PivotViewer/PivotViewerLabels.d.ts +3 -1
  31. package/dist/esm/PivotViewer/PivotViewerLabels.d.ts.map +1 -1
  32. package/dist/esm/PivotViewer/components/FilterPanel.js +1 -1
  33. package/dist/esm/PivotViewer/components/FilterPanel.js.map +1 -1
  34. package/dist/esm/PivotViewer/components/PivotCanvas.js +2 -1
  35. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  36. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts +3 -1
  37. package/dist/esm/PivotViewer/components/PivotViewerMain.js +2 -2
  38. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  39. package/dist/esm/PivotViewer/components/Toolbar.js +6 -2
  40. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  41. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts +1 -0
  42. package/dist/esm/PivotViewer/components/pivot/sprites.js +15 -1
  43. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  44. package/dist/esm/PivotViewer/types.d.ts +1 -1
  45. package/dist/esm/Toolbar/Toolbar.d.ts +4 -2
  46. package/dist/esm/Toolbar/Toolbar.js +6 -2
  47. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  48. package/dist/esm/Toolbar/index.d.ts +1 -0
  49. package/dist/esm/Toolbar/index.js +1 -0
  50. package/dist/esm/Toolbar/index.js.map +1 -1
  51. package/dist/esm/configuration/CratisComponentsDefaults.js +3 -0
  52. package/dist/esm/configuration/CratisComponentsDefaults.js.map +1 -1
  53. package/dist/esm/index.d.ts +1 -1
  54. package/dist/esm/styles.Filter.css +1 -0
  55. package/dist/esm/styles.PivotViewer.css +30 -0
  56. package/dist/esm/styles.Toolbar.css +9 -17
  57. package/dist/esm/styles.css +39 -17
  58. package/package.json +1 -1
  59. package/dist/esm/Toolbar/Toolbar.d.ts.map +0 -1
@@ -68,7 +68,7 @@
68
68
  {
69
69
  "name": "@cratis/components",
70
70
  "role": "core",
71
- "version": "4.18.0",
71
+ "version": "4.19.1",
72
72
  "releaseMajorRange": ">=4 <5",
73
73
  "independentRelease": false,
74
74
  "private": false,
@@ -92,7 +92,7 @@
92
92
  {
93
93
  "name": "@cratis/eslint-plugin-components",
94
94
  "role": "eslint",
95
- "version": "4.18.0",
95
+ "version": "4.19.1",
96
96
  "releaseMajorRange": ">=4 <5",
97
97
  "independentRelease": false,
98
98
  "private": false,
@@ -105,7 +105,7 @@
105
105
  {
106
106
  "name": "@cratis/components.migrator",
107
107
  "role": "migrator",
108
- "version": "4.18.0",
108
+ "version": "4.19.1",
109
109
  "releaseMajorRange": ">=4 <5",
110
110
  "independentRelease": false,
111
111
  "private": false,
@@ -116,13 +116,13 @@
116
116
  {
117
117
  "name": "@cratis/components.conformance",
118
118
  "role": "conformance",
119
- "version": "4.18.0",
119
+ "version": "4.19.1",
120
120
  "releaseMajorRange": ">=4 <5",
121
121
  "independentRelease": false,
122
122
  "private": false,
123
123
  "packageAccess": "public",
124
124
  "peerDependencies": {
125
- "@cratis/components": "4.18.0",
125
+ "@cratis/components": "4.19.1",
126
126
  "react": "^19.0.0",
127
127
  "react-dom": "^19.0.0"
128
128
  },
@@ -132,13 +132,13 @@
132
132
  {
133
133
  "name": "@cratis/components.mui",
134
134
  "role": "renderer-adapter",
135
- "version": "4.18.0",
135
+ "version": "4.19.1",
136
136
  "releaseMajorRange": ">=4 <5",
137
137
  "independentRelease": false,
138
138
  "private": false,
139
139
  "packageAccess": "public",
140
140
  "peerDependencies": {
141
- "@cratis/components": "4.18.0",
141
+ "@cratis/components": "4.19.1",
142
142
  "@emotion/react": ">=11.5 <12",
143
143
  "@emotion/styled": ">=11.11 <12",
144
144
  "@mui/material": ">=9 <10",
@@ -188,13 +188,13 @@
188
188
  {
189
189
  "name": "@cratis/components.primereact",
190
190
  "role": "renderer-adapter",
191
- "version": "4.18.0",
191
+ "version": "4.19.1",
192
192
  "releaseMajorRange": ">=4 <5",
193
193
  "independentRelease": false,
194
194
  "private": false,
195
195
  "packageAccess": "public",
196
196
  "peerDependencies": {
197
- "@cratis/components": "4.18.0",
197
+ "@cratis/components": "4.19.1",
198
198
  "@primereact/core": ">=11 <12",
199
199
  "@primereact/ui": ">=11 <12",
200
200
  "@primeuix/themes": ">=3 <4",
@@ -256,13 +256,13 @@
256
256
  {
257
257
  "name": "@cratis/components.primereact10",
258
258
  "role": "renderer-adapter",
259
- "version": "4.18.0",
259
+ "version": "4.19.1",
260
260
  "releaseMajorRange": ">=4 <5",
261
261
  "independentRelease": false,
262
262
  "private": false,
263
263
  "packageAccess": "public",
264
264
  "peerDependencies": {
265
- "@cratis/components": "4.18.0",
265
+ "@cratis/components": "4.19.1",
266
266
  "primereact": ">=10.9.9 <11",
267
267
  "react": "^19.0.0",
268
268
  "react-dom": "^19.0.0"
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type ButtonParts, type ButtonSeverity } from './Button.js';
3
+ import { ToolbarFocusMode } from './ToolbarFocusMode.js';
3
4
  /** A single action in an {@link ActionMenubar}. */
4
5
  export interface ActionMenuItem {
5
6
  /** The visible label. */
@@ -19,6 +20,8 @@ export interface ActionMenuItem {
19
20
  }
20
21
  /** Props for {@link ActionMenubar}. */
21
22
  export interface ActionMenubarProps {
23
+ /** Keyboard focus behavior (default: {@link ToolbarFocusMode.Arrows}). */
24
+ focusMode?: ToolbarFocusMode;
22
25
  /** Actions to render from left to right. */
23
26
  model: ActionMenuItem[];
24
27
  /** Extra class name for the toolbar container. */
@@ -37,4 +40,4 @@ export interface ActionMenubarProps {
37
40
  unstyled?: boolean;
38
41
  }
39
42
  /** A horizontal, accessible toolbar of command actions. */
40
- export declare const ActionMenubar: ({ model, className, pt, 'aria-label': ariaLabel, }: ActionMenubarProps) => import("react").JSX.Element;
43
+ export declare const ActionMenubar: ({ model, focusMode, className, pt, 'aria-label': ariaLabel, }: ActionMenubarProps) => import("react").JSX.Element;
@@ -1,6 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Fragment } from 'react';
3
3
  import { Button } from './Button.js';
4
+ import { ToolbarFocusMode } from './ToolbarFocusMode.js';
5
+ import { useToolbarKeyboardNavigation } from './useToolbarKeyboardNavigation.js';
4
6
 
5
7
  const buttonToneForSeverity = {
6
8
  secondary: 'neutral',
@@ -11,11 +13,14 @@ const buttonToneForSeverity = {
11
13
  danger: 'critical',
12
14
  contrast: 'neutral',
13
15
  };
14
- const ActionMenubar = ({ model, className, pt, 'aria-label': ariaLabel, }) => (jsx("div", { role: 'toolbar', className: ['cratis-action-menubar', className].filter(Boolean).join(' '), "data-cratis-part": 'root', "aria-label": ariaLabel, children: model.map((item, index) => {
15
- if (item.template)
16
- return jsx(Fragment, { children: item.template(item) }, index);
17
- return (jsx(Button, { variant: 'ghost', tone: item.severity ? buttonToneForSeverity[item.severity] : undefined, onClick: item.command, disabled: item.disabled, className: item.className, icon: item.icon, label: item.label, pt: pt }, index));
18
- }) }));
16
+ const ActionMenubar = ({ model, focusMode = ToolbarFocusMode.Arrows, className, pt, 'aria-label': ariaLabel, }) => {
17
+ const { rootRef, onKeyDown } = useToolbarKeyboardNavigation('horizontal', focusMode);
18
+ return jsx("div", { ref: rootRef, onKeyDown: onKeyDown, role: 'toolbar', className: ['cratis-action-menubar', className].filter(Boolean).join(' '), "data-cratis-part": 'root', "aria-label": ariaLabel, children: model.map((item, index) => {
19
+ if (item.template)
20
+ return jsx(Fragment, { children: item.template(item) }, index);
21
+ return (jsx(Button, { variant: 'ghost', tone: item.severity ? buttonToneForSeverity[item.severity] : undefined, onClick: item.command, disabled: item.disabled, className: item.className, icon: item.icon, label: item.label, pt: pt }, index));
22
+ }) });
23
+ };
19
24
 
20
25
  export { ActionMenubar };
21
26
  //# sourceMappingURL=ActionMenubar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMenubar.js","sources":["../../../Common/ActionMenubar.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AA4CA,MAAM,qBAAqB,GAAuC;AAC9D,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,QAAQ,EAAE,SAAS;CACtB;AAGM,MAAM,aAAa,GAAG,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,EAAE,EACF,YAAY,EAAE,SAAS,GACN,MACjBA,GAAA,CAAA,KAAA,EAAA,EACI,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAA,kBAAA,EACxD,MAAM,EAAA,YAAA,EACX,SAAS,EAAA,QAAA,EAEpB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;QACvB,IAAI,IAAI,CAAC,QAAQ;AACb,YAAA,OAAOA,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAA,EAA3B,KAAK,CAAkC;AAEjE,QAAA,QACIA,GAAA,CAAC,MAAM,EAAA,EAEH,OAAO,EAAC,OAAO,EACf,IAAI,EACA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,EAEpE,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,EAAE,EAAE,EAAE,EAAA,EAVD,KAAK,CAWZ;IAEV,CAAC,CAAC,EAAA,CACA;;"}
1
+ {"version":3,"file":"ActionMenubar.js","sources":["../../../Common/ActionMenubar.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;;AAgDA,MAAM,qBAAqB,GAAuC;AAC9D,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,QAAQ,EAAE,SAAS;CACtB;MAGY,aAAa,GAAG,CAAC,EAC1B,KAAK,EACL,SAAS,GAAG,gBAAgB,CAAC,MAAM,EACnC,SAAS,EACT,EAAE,EACF,YAAY,EAAE,SAAS,GACN,KAAI;AACrB,IAAA,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,4BAA4B,CAAC,YAAY,EAAE,SAAS,CAAC;IACpF,OAAOA,GAAA,CAAA,KAAA,EAAA,EACH,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAA,kBAAA,EACxD,MAAM,EAAA,YAAA,EACX,SAAS,YAEpB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACvB,IAAI,IAAI,CAAC,QAAQ;AACb,gBAAA,OAAOA,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAA,EAA3B,KAAK,CAAkC;AAEjE,YAAA,QACIA,GAAA,CAAC,MAAM,EAAA,EAEH,OAAO,EAAC,OAAO,EACf,IAAI,EACA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,EAEpE,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,EAAE,EAAE,EAAE,EAAA,EAVD,KAAK,CAWZ;QAEV,CAAC,CAAC,GACA;AACV;;"}
@@ -92,6 +92,17 @@ export interface CratisDataTableMessages {
92
92
  /** Message shown when a query denies access. */
93
93
  unauthorized?: string;
94
94
  }
95
+ /** Localizable accessible names for the Cratis filter panel and its searches. */
96
+ export interface CratisFilterMessages {
97
+ /** FilterPanel dialog name. Defaults to 'Filters'. */
98
+ label?: string;
99
+ /**
100
+ * Search-input name for FilterPanel, its option groups, and standalone CheckboxListFilter.
101
+ * Unset by default so an effective search placeholder retains precedence over 'Search'.
102
+ * PivotViewer supplies group-specific names instead of using this shared name for its groups.
103
+ */
104
+ searchAriaLabel?: string;
105
+ }
95
106
  /** Localizable labels owned by the Cratis column-filter popup. */
96
107
  export interface CratisColumnFilterMessages {
97
108
  /** Builds the filter-trigger accessible name from the effective field. */
@@ -132,6 +143,8 @@ export interface CratisComponentsMessages {
132
143
  notifications?: CratisNotificationsMessages;
133
144
  /** DataTable search, selection, and query-state messages. */
134
145
  dataTable?: CratisDataTableMessages;
146
+ /** FilterPanel dialog and search-input accessible names. */
147
+ filter?: CratisFilterMessages;
135
148
  /** Column-filter popup labels and match-mode copy. */
136
149
  columnFilter?: CratisColumnFilterMessages;
137
150
  /** Toolbar accessible-name fallback. */
@@ -1 +1 @@
1
- {"version":3,"file":"CratisComponentsProvider.js","sources":["../../../Common/CratisComponentsProvider.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,GAAG,qBAAqB;AAiPnC,MAAM,2BAA2B,GAAG,CACvC,KAAyC,KACjB;IACxB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,CAA2B;IACpE,OAAO,KAAK,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAAM;AACvF;AAEA,MAAM,wBAAwB,GAAG,CAC7B,MAA8B,EAC9B,gBAAsD,KAC9B;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS;AAC1E,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,MAAM;IAC1B,OAAO;AACH,QAAA,GAAG,MAAM;AACT,QAAA,QAAQ,EAAE;YACN,GAAG,MAAM,CAAC,QAAQ;AAClB,YAAA,SAAS,EAAE;AACP,gBAAA,UAAU,EACN,gBAAgB,EAAE,SAAS,EAAE,UAAU;oBACvC,MAAM,CAAC,IAAI,EAAE,UAAU;AACvB,oBAAA,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU;AAC1C,gBAAA,KAAK,EACD,gBAAgB,EAAE,SAAS,EAAE,KAAK;oBAClC,MAAM,CAAC,IAAI,EAAE,cAAc;AAC3B,oBAAA,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK;AACrC,gBAAA,QAAQ,EACJ,gBAAgB,EAAE,SAAS,EAAE,QAAQ;oBACrC,MAAM,CAAC,IAAI,EAAE,aAAa;AAC1B,oBAAA,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ;AACxC,gBAAA,IAAI,EACA,gBAAgB,EAAE,SAAS,EAAE,IAAI;oBACjC,MAAM,CAAC,IAAI,EAAE,aAAa;AAC1B,oBAAA,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI;AACpC,gBAAA,IAAI,EACA,gBAAgB,EAAE,SAAS,EAAE,IAAI;oBACjC,MAAM,CAAC,IAAI,EAAE,aAAa;AAC1B,oBAAA,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI;AACvC,aAAA;AACD,YAAA,UAAU,EAAE;AACR,gBAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU;AAC9B,gBAAA,KAAK,EACD,gBAAgB,EAAE,UAAU,EAAE,KAAK;AACnC,oBAAA,MAAM,CAAC,KAAK;AACZ,oBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK;AACtC,gBAAA,KAAK,EACD,gBAAgB,EAAE,UAAU,EAAE,KAAK;AACnC,oBAAA,MAAM,CAAC,KAAK;AACZ,oBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK;AACtC,gBAAA,YAAY,EACR,gBAAgB,EAAE,UAAU,EAAE,YAAY;AAC1C,oBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY;AAC7C,gBAAA,aAAa,EACT,gBAAgB,EAAE,UAAU,EAAE,aAAa;AAC3C,oBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa;AAC9C,gBAAA,SAAS,EACL,gBAAgB,EAAE,UAAU,EAAE,SAAS;AACvC,oBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS;AAC7C,aAAA;AACJ,SAAA;KACJ;AACL,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAA0B,KAAI;AAC/C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,OAAO;AAC3B,IAAA,IAAI;QACA,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;IAC7C;AAAE,IAAA,MAAM;AACJ,QAAA,OAAO,OAAO;IAClB;AACJ,CAAC;MAGY,wBAAwB,GAAG,CAAC,EACrC,KAAK,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,QAAQ,GACoB,KAAI;IAChC,MAAM,QAAQ,GAAG,OAAO,CACpB,MACI,wBAAwB,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,EACjF,CAAC,KAAK,CAAC,CACV;AAED,IAAA,QACIA,GAAA,CAAC,YAAY,EAAA,EACT,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,YAE5BA,GAAA,CAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,EAAA,QAAA,EAC7CC,KAAC,YAAY,EAAA,EAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,CAC7C,QAAQ,EACR,OAAO,KACJD,GAAA,CAAC,OAAO,QAAM,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC,GAAI,CAChE,CAAA,EAAA,CACU,EAAA,CACgB,EAAA,CACxB;AAEvB;;"}
1
+ {"version":3,"file":"CratisComponentsProvider.js","sources":["../../../Common/CratisComponentsProvider.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** Keyboard focus behavior for Toolbar and ActionMenubar. A single-Tab-stop mode is planned for #353. */
2
+ export declare enum ToolbarFocusMode {
3
+ /** Navigate with arrows and Home/End while retaining every tool's Tab stop (default). */
4
+ Arrows = "arrows",
5
+ /** Keep native focus behavior with no toolbar keyboard handling. */
6
+ None = "none"
7
+ }
8
+ //# sourceMappingURL=ToolbarFocusMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarFocusMode.d.ts","sourceRoot":"","sources":["../../../Common/ToolbarFocusMode.ts"],"names":[],"mappings":"AAGA,yGAAyG;AACzG,oBAAY,gBAAgB;IACxB,yFAAyF;IACzF,MAAM,WAAW;IACjB,oEAAoE;IACpE,IAAI,SAAS;CAChB"}
@@ -0,0 +1,8 @@
1
+ var ToolbarFocusMode;
2
+ (function (ToolbarFocusMode) {
3
+ ToolbarFocusMode["Arrows"] = "arrows";
4
+ ToolbarFocusMode["None"] = "none";
5
+ })(ToolbarFocusMode || (ToolbarFocusMode = {}));
6
+
7
+ export { ToolbarFocusMode };
8
+ //# sourceMappingURL=ToolbarFocusMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarFocusMode.js","sources":["../../../Common/ToolbarFocusMode.ts"],"sourcesContent":[null],"names":[],"mappings":"IAIY;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAExB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEjB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;"}
@@ -1,4 +1,5 @@
1
1
  export * from './ActionMenubar.js';
2
+ export { ToolbarFocusMode } from './ToolbarFocusMode.js';
2
3
  export * from './CratisComponentsProvider.js';
3
4
  export * from './DatePickerInput.js';
4
5
  export * from './ErrorBoundary.js';
@@ -1,4 +1,5 @@
1
1
  export { ActionMenubar } from './ActionMenubar.js';
2
+ export { ToolbarFocusMode } from './ToolbarFocusMode.js';
2
3
  export { CratisComponentsProvider, mergeCratisComponentsConfig } from './CratisComponentsProvider.js';
3
4
  export { DatePickerInput } from './DatePickerInput.js';
4
5
  export { ErrorBoundary } from './ErrorBoundary.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { type KeyboardEvent } from 'react';
2
+ import { ToolbarFocusMode } from './ToolbarFocusMode.js';
3
+ type Orientation = 'horizontal' | 'vertical';
4
+ /** Components-owned toolbar focus behavior; never captures keys from child widgets. */
5
+ export declare const useToolbarKeyboardNavigation: (orientation: Orientation, focusMode: ToolbarFocusMode) => {
6
+ rootRef: import("react").RefObject<HTMLDivElement | null>;
7
+ onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;
8
+ };
9
+ export {};
@@ -0,0 +1,76 @@
1
+ import { useRef, useCallback } from 'react';
2
+ import { ToolbarFocusMode } from './ToolbarFocusMode.js';
3
+
4
+ const toolSelector = 'button, a[href], input, select, textarea, [tabindex]';
5
+ const widgetSelector = 'input:not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select, [contenteditable]:not([contenteditable="false"]), [role="slider"], [role="spinbutton"], [role="textbox"], [role="combobox"], [role="listbox"], [role="menu"], [role="menubar"], [role="tree"], [role="grid"], [role="application"]';
6
+ const useToolbarKeyboardNavigation = (orientation, focusMode) => {
7
+ const rootRef = useRef(null);
8
+ const tools = useCallback(() => {
9
+ const root = rootRef.current;
10
+ if (!root)
11
+ return [];
12
+ return Array.from(root.querySelectorAll(toolSelector)).filter(tool => {
13
+ if (tool.closest('[role="toolbar"]') !== root || tool.matches(':disabled, [disabled], [aria-disabled="true"]'))
14
+ return false;
15
+ if (tool.getAttribute('tabindex') === '-1')
16
+ return false;
17
+ for (let element = tool; element && element !== root; element = element.parentElement) {
18
+ if (element.hidden || element.hasAttribute('inert') || element.getAttribute('aria-hidden') === 'true')
19
+ return false;
20
+ const style = getComputedStyle(element);
21
+ if (style.display === 'none' || style.visibility === 'hidden' || style.visibility === 'collapse')
22
+ return false;
23
+ }
24
+ return true;
25
+ });
26
+ }, []);
27
+ const onKeyDown = (event) => {
28
+ if (focusMode === ToolbarFocusMode.None || event.defaultPrevented || event.isPropagationStopped() ||
29
+ event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || event.nativeEvent.isComposing)
30
+ return;
31
+ const root = rootRef.current;
32
+ const target = event.target;
33
+ if (!(target instanceof Element) || !root?.contains(target) ||
34
+ target.closest('[role="toolbar"]') !== root)
35
+ return;
36
+ for (let element = target; element && element !== root; element = element.parentElement) {
37
+ if (element.matches(widgetSelector))
38
+ return;
39
+ }
40
+ const available = tools();
41
+ const current = target.closest(toolSelector);
42
+ if (!current || current === root || current.closest('[role="toolbar"]') !== root)
43
+ return;
44
+ const index = available.indexOf(current);
45
+ const directionElement = root.closest('[dir]');
46
+ const direction = getComputedStyle(root).direction || directionElement?.dir || 'ltr';
47
+ const forward = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
48
+ const backward = direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
49
+ let candidates = [];
50
+ if (event.key === 'Home')
51
+ candidates = available;
52
+ else if (event.key === 'End')
53
+ candidates = available.slice().reverse();
54
+ else if (event.key === (orientation === 'vertical' ? 'ArrowDown' : forward))
55
+ candidates = index >= 0
56
+ ? available.slice(index + 1)
57
+ : available.filter(tool => !!(current.compareDocumentPosition(tool) & Node.DOCUMENT_POSITION_FOLLOWING));
58
+ else if (event.key === (orientation === 'vertical' ? 'ArrowUp' : backward))
59
+ candidates = index >= 0
60
+ ? available.slice(0, index).reverse()
61
+ : available.slice().reverse().filter(tool => !!(current.compareDocumentPosition(tool) & Node.DOCUMENT_POSITION_PRECEDING));
62
+ for (const candidate of candidates) {
63
+ if (candidate === current)
64
+ return;
65
+ candidate.focus();
66
+ if (candidate.getRootNode().activeElement === candidate || candidate.matches(':focus')) {
67
+ event.preventDefault();
68
+ return;
69
+ }
70
+ }
71
+ };
72
+ return { rootRef, onKeyDown };
73
+ };
74
+
75
+ export { useToolbarKeyboardNavigation };
76
+ //# sourceMappingURL=useToolbarKeyboardNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolbarKeyboardNavigation.js","sources":["../../../Common/useToolbarKeyboardNavigation.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export interface CheckboxListFilterProps {
23
23
  searchable?: boolean;
24
24
  /** Placeholder text for the search input. Defaults to 'Search…'. */
25
25
  searchPlaceholder?: string;
26
- /** Accessible name for the search input. Falls back to its placeholder, then 'Search'. */
26
+ /** Accessible name for the search input. Falls back to `messages.filter.searchAriaLabel`, its placeholder, then 'Search'. */
27
27
  searchAriaLabel?: string;
28
28
  /** Focus the search when visible. FilterPanel enables this only for expanded groups. Defaults to false. */
29
29
  autoFocusSearch?: boolean;
@@ -1,11 +1,13 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useState, useRef, useId, useEffect, useMemo } from 'react';
3
3
  import { useOptionListOverflow } from './useOptionListOverflow.js';
4
+ import { useCratisComponentsConfig } from '../configuration/CratisComponentsContext.js';
4
5
 
5
6
  function renderOptionCount(count) {
6
7
  return typeof count === 'number' ? count : '';
7
8
  }
8
9
  function CheckboxListFilter({ options, selected, multi = false, onToggle, searchable, searchPlaceholder = 'Search…', searchAriaLabel, autoFocusSearch = false, emptyMessage = 'Nothing to choose from.', noMatchesMessage = 'No matches.', name, }) {
10
+ const { messages } = useCratisComponentsConfig();
9
11
  const [search, setSearch] = useState('');
10
12
  const containerRef = useRef(null);
11
13
  const mirrorRef = useRef(null);
@@ -33,7 +35,7 @@ function CheckboxListFilter({ options, selected, multi = false, onToggle, search
33
35
  if (!hasOptions) {
34
36
  return jsx("p", { className: 'pv-option-list-empty', children: emptyMessage });
35
37
  }
36
- return (jsxs("div", { className: 'pv-option-list', ref: containerRef, children: [showSearch && (jsx("div", { className: 'pv-filter-group-search pv-option-list-search', children: jsx("input", { ref: searchInputRef, type: 'search', placeholder: searchPlaceholder, "aria-label": (searchAriaLabel ?? searchPlaceholder) || 'Search', value: search, onChange: (event) => setSearch(event.target.value) }) })), jsxs("ul", { className: 'pv-option-list-options', children: [visibleOptions.map((option) => {
38
+ return (jsxs("div", { className: 'pv-option-list', ref: containerRef, children: [showSearch && (jsx("div", { className: 'pv-filter-group-search pv-option-list-search', children: jsx("input", { ref: searchInputRef, type: 'search', placeholder: searchPlaceholder, "aria-label": (searchAriaLabel ?? messages?.filter?.searchAriaLabel ?? searchPlaceholder) || 'Search', value: search, onChange: (event) => setSearch(event.target.value) }) })), jsxs("ul", { className: 'pv-option-list-options', children: [visibleOptions.map((option) => {
37
39
  const checked = selected.has(option.key);
38
40
  return (jsx("li", { "data-selected": checked || undefined, children: jsxs("label", { "data-selected": checked || undefined, children: [jsx("input", { type: multi ? 'checkbox' : 'radio', "data-selected": checked || undefined, name: groupName, checked: checked, onChange: () => onToggle(option.key) }), jsx("span", { children: option.label }), jsx("span", { className: 'pv-option-count', children: renderOptionCount(option.count) })] }) }, option.key));
39
41
  }), visibleOptions.length === 0 && (jsx("li", { className: 'pv-option-list-empty', children: jsx("span", { children: noMatchesMessage }) }))] }), autoDetect && (jsx("ul", { className: 'pv-option-list-mirror', ref: mirrorRef, "aria-hidden": 'true', children: options.map((option) => (jsx("li", { children: jsxs("label", { children: [jsx("input", { type: multi ? 'checkbox' : 'radio', disabled: true, tabIndex: -1 }), jsx("span", { className: 'pv-option-mirror-label', "data-label": option.label }), jsx("span", { className: 'pv-option-count pv-option-mirror-label', "data-label": renderOptionCount(option.count) })] }) }, option.key))) }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxListFilter.js","sources":["../../../Filter/CheckboxListFilter.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"CheckboxListFilter.js","sources":["../../../Filter/CheckboxListFilter.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -22,9 +22,9 @@ export interface FilterPanelProps {
22
22
  search?: string;
23
23
  /** Placeholder text for the search input. Defaults to 'Search…'. */
24
24
  searchPlaceholder?: string;
25
- /** Accessible name for the non-modal dialog. Defaults to 'Filters'. */
25
+ /** Accessible name for the non-modal dialog. Overrides `messages.filter.label`, then 'Filters'. */
26
26
  'aria-label'?: string;
27
- /** Accessible name for the panel search. Falls back to its placeholder, then 'Search'. */
27
+ /** Accessible name for the panel search. Falls back to `messages.filter.searchAriaLabel`, its placeholder, then 'Search'. */
28
28
  searchAriaLabel?: string;
29
29
  /** Accessible name for a clear-filter button. Override to localize. Defaults to 'Clear filter'. */
30
30
  clearFilterAriaLabel?: string;