@workday/canvas-kit-preview-react 16.1.7 → 16.1.9

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 (72) hide show
  1. package/dist/commonjs/color-picker/lib/ColorPicker.js +1 -1
  2. package/dist/commonjs/color-picker/lib/parts/ColorReset.js +1 -1
  3. package/dist/commonjs/color-picker/lib/parts/SwatchBook.js +1 -1
  4. package/dist/commonjs/divider/lib/Divider.js +3 -3
  5. package/dist/commonjs/loading-sparkles/lib/LoadingSparkles.js +2 -2
  6. package/dist/commonjs/multi-select/lib/MultiSelectInput.js +3 -3
  7. package/dist/commonjs/radio/lib/RadioGroup.js +3 -3
  8. package/dist/commonjs/radio/lib/RadioLabel.js +1 -1
  9. package/dist/commonjs/radio/lib/RadioText.js +3 -3
  10. package/dist/commonjs/radio/lib/StyledRadioButton.js +5 -5
  11. package/dist/commonjs/side-panel/lib/SidePanel.js +7 -7
  12. package/dist/commonjs/side-panel/lib/SidePanelToggleButton.js +11 -11
  13. package/dist/commonjs/status-indicator/lib/StatusIndicator.js +14 -14
  14. package/dist/commonjs/status-indicator/lib/StatusIndicatorLabel.js +1 -1
  15. package/dist/commonjs/switch/lib/SwitchBackground.js +1 -1
  16. package/dist/commonjs/switch/lib/SwitchCircle.js +2 -2
  17. package/dist/commonjs/switch/lib/SwitchContainer.js +1 -1
  18. package/dist/commonjs/switch/lib/SwitchIcon.js +2 -2
  19. package/dist/commonjs/switch/lib/SwitchInput.js +3 -3
  20. package/dist/commonjs/tabs/lib/TabsItem.d.ts +3 -1
  21. package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
  22. package/dist/commonjs/tabs/lib/TabsItem.js +60 -5
  23. package/dist/commonjs/tabs/lib/TabsList.d.ts +330 -2
  24. package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -1
  25. package/dist/commonjs/tabs/lib/TabsList.js +65 -12
  26. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +24 -215
  27. package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
  28. package/dist/commonjs/tabs/lib/TabsOverflowButton.js +71 -6
  29. package/dist/commonjs/tabs/lib/TabsPanels.js +2 -2
  30. package/dist/commonjs/tabs/lib/useTabsModel.d.ts +17 -12
  31. package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
  32. package/dist/commonjs/tabs/lib/useTabsModel.js +144 -5
  33. package/dist/commonjs/version/lib/version.js +1 -1
  34. package/dist/es6/color-picker/lib/ColorPicker.js +1 -1
  35. package/dist/es6/color-picker/lib/parts/ColorReset.js +1 -1
  36. package/dist/es6/color-picker/lib/parts/SwatchBook.js +1 -1
  37. package/dist/es6/divider/lib/Divider.js +3 -3
  38. package/dist/es6/loading-sparkles/lib/LoadingSparkles.js +2 -2
  39. package/dist/es6/multi-select/lib/MultiSelectInput.js +3 -3
  40. package/dist/es6/radio/lib/RadioGroup.js +3 -3
  41. package/dist/es6/radio/lib/RadioLabel.js +1 -1
  42. package/dist/es6/radio/lib/RadioText.js +3 -3
  43. package/dist/es6/radio/lib/StyledRadioButton.js +5 -5
  44. package/dist/es6/side-panel/lib/SidePanel.js +7 -7
  45. package/dist/es6/side-panel/lib/SidePanelToggleButton.js +11 -11
  46. package/dist/es6/status-indicator/lib/StatusIndicator.js +14 -14
  47. package/dist/es6/status-indicator/lib/StatusIndicatorLabel.js +1 -1
  48. package/dist/es6/switch/lib/SwitchBackground.js +1 -1
  49. package/dist/es6/switch/lib/SwitchCircle.js +2 -2
  50. package/dist/es6/switch/lib/SwitchContainer.js +1 -1
  51. package/dist/es6/switch/lib/SwitchIcon.js +2 -2
  52. package/dist/es6/switch/lib/SwitchInput.js +3 -3
  53. package/dist/es6/tabs/lib/TabsItem.d.ts +3 -1
  54. package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
  55. package/dist/es6/tabs/lib/TabsItem.js +38 -6
  56. package/dist/es6/tabs/lib/TabsList.d.ts +330 -2
  57. package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -1
  58. package/dist/es6/tabs/lib/TabsList.js +67 -15
  59. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +24 -215
  60. package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +1 -1
  61. package/dist/es6/tabs/lib/TabsOverflowButton.js +72 -8
  62. package/dist/es6/tabs/lib/TabsPanels.js +2 -2
  63. package/dist/es6/tabs/lib/useTabsModel.d.ts +17 -12
  64. package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
  65. package/dist/es6/tabs/lib/useTabsModel.js +144 -5
  66. package/dist/es6/version/lib/version.js +1 -1
  67. package/package.json +4 -4
  68. package/tabs/lib/TabsItem.tsx +39 -0
  69. package/tabs/lib/TabsList.tsx +83 -5
  70. package/tabs/lib/TabsOverflowButton.tsx +77 -5
  71. package/tabs/lib/TabsPanels.tsx +2 -2
  72. package/tabs/lib/useTabsModel.tsx +161 -3
@@ -1,7 +1,31 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.TabsItem = exports.useTabsItem = exports.StyledTabItem = void 0;
4
27
  const jsx_runtime_1 = require("react/jsx-runtime");
28
+ const React = __importStar(require("react"));
5
29
  const collection_1 = require("@workday/canvas-kit-react/collection");
6
30
  const common_1 = require("@workday/canvas-kit-react/common");
7
31
  const icon_1 = require("@workday/canvas-kit-react/icon");
@@ -12,20 +36,51 @@ const canvas_tokens_web_1 = require("@workday/canvas-tokens-web");
12
36
  const useTabsModel_1 = require("./useTabsModel");
13
37
  const tabItemStencil = (0, canvas_kit_styling_1.createStencil)({
14
38
  extends: common_1.cornerShapeStencil,
15
- base: { name: "1gms67", styles: "box-sizing:border-box;--shape-corner-shape-ccab68:var(--cnvs-sys-shape-lg, 0.75rem);font-family:var(--cnvs-sys-font-family-default, \"Roboto\");font-weight:var(--cnvs-sys-font-weight-medium);line-height:var(--cnvs-sys-line-height-subtext-lg, 1.25rem);font-size:var(--cnvs-sys-font-size-subtext-lg, 0.875rem);letter-spacing:var(--cnvs-sys-letter-spacing-subtext-lg, 0.015rem);background-color:var(--cnvs-sys-color-surface-transparent, var(--cnvs-sys-color-bg-transparent-default, oklch(0 0 0 / 0)));flex:0 0 auto;min-width:0;align-items:center;padding:0 var(--cnvs-sys-padding-md, var(--cnvs-sys-space-x4, 1rem));height:var(--cnvs-sys-size-md, var(--cnvs-sys-space-x10, 2.5rem));cursor:pointer;color:var(--cnvs-sys-color-fg-default);position:relative;transition:background 150ms ease, color 150ms ease;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;--color-system-icon-c9acc3:currentColor;--size-svg-bca693:var(--cnvs-component-system-icon-size-md, var(--cnvs-sys-space-x5, 1.25rem));&:has(span){display:flex;gap:var(--cnvs-base-size-75, 0.375rem);}&:hover, &.hover{color:var(--cnvs-sys-color-fg-strong);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-strong);}&:focus-visible, &.focus{outline:0.125rem solid transparent;background-color:var(--cnvs-sys-color-surface-transparent, var(--cnvs-sys-color-bg-transparent-default, oklch(0 0 0 / 0)));color:var(--cnvs-sys-color-fg-strong);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-strong);}&:disabled, &.disabled, &[aria-disabled]{opacity:var(--cnvs-sys-opacity-disabled);&:hover{cursor:auto;background-color:var(--cnvs-sys-color-surface-transparent, var(--cnvs-sys-color-bg-transparent-default, oklch(0 0 0 / 0)));--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-default);}}&[aria-selected=true]{color:var(--cnvs-sys-color-fg-default);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-default);&:hover, &.hover, &:focus-visible, &.focus{color:var(--cnvs-sys-color-fg-default);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-default);}}" },
39
+ base: { name: "3ltuqx", styles: "box-sizing:border-box;--shape-corner-shape-ccab68:var(--cnvs-sys-shape-lg, 0.75rem);font-family:var(--cnvs-sys-font-family-default, \"Roboto\");font-weight:var(--cnvs-sys-font-weight-medium);line-height:var(--cnvs-sys-line-height-subtext-lg, 1.25rem);font-size:var(--cnvs-sys-font-size-subtext-lg, 0.875rem);letter-spacing:var(--cnvs-sys-letter-spacing-subtext-lg, 0.015rem);background-color:var(--cnvs-sys-color-surface-transparent, var(--cnvs-sys-color-bg-transparent-default, oklch(0 0 0 / 0)));flex:0 0 auto;min-width:0;align-items:center;padding:0 var(--cnvs-sys-padding-md, var(--cnvs-sys-space-x4, 1rem));height:var(--cnvs-sys-size-md, var(--cnvs-sys-space-x10, 2.5rem));cursor:pointer;color:var(--cnvs-sys-color-fg-default);position:relative;transition:background 150ms ease, color 150ms ease;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;--color-system-icon-c9acc3:currentColor;--size-svg-bca693:var(--cnvs-component-system-icon-size-md, var(--cnvs-sys-space-x5, 1.25rem));&:has(span){display:flex;gap:var(--cnvs-base-size-75, 0.375rem);}&:hover, &.hover{color:var(--cnvs-sys-color-fg-strong);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-strong);}&:focus-visible, &.focus{outline:0.125rem solid transparent;background-color:var(--cnvs-sys-color-surface-transparent, var(--cnvs-sys-color-bg-transparent-default, oklch(0 0 0 / 0)));color:var(--cnvs-sys-color-fg-strong);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-strong);}&:disabled, &.disabled, &[aria-disabled]{opacity:var(--cnvs-sys-opacity-disabled);&:hover{cursor:auto;background-color:var(--cnvs-sys-color-surface-transparent, var(--cnvs-sys-color-bg-transparent-default, oklch(0 0 0 / 0)));--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-default);}}&[aria-selected=true]{color:var(--cnvs-sys-color-fg-default);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-default);&:hover, &.hover, &:focus-visible, &.focus{color:var(--cnvs-sys-color-fg-default);--color-system-icon-c9acc3:var(--cnvs-sys-color-fg-default);}}" },
16
40
  modifiers: {
17
41
  variant: {
18
- filled: { name: "2q70v4", styles: "border:0.0625rem solid transparent;&:hover, &.hover{background-color:var(--cnvs-sys-color-surface-overlay-hover-default, oklch(0.3343 0.0951 253.3 / 0.05));}&:focus-visible, &.focus{box-shadow:0 0 0 2px var(--cnvs-sys-color-focus-inverse, var(--cnvs-sys-color-border-input-inverse, oklch(1 0 0 / 1))), 0 0 0 4px var(--cnvs-sys-color-brand-focus-primary, var(--cnvs-brand-common-focus-outline, oklch(0.6023 0.2032 255.68 / 1)));}&[aria-selected=true]{background-color:var(--cnvs-sys-color-surface-overlay-pressed-default, oklch(0.3337 0.0688 250.79 / 0.09));border-color:var(--cnvs-sys-color-border-input-default);&:hover, &.hover, &:focus-visible, &.focus{background-color:var(--cnvs-sys-color-surface-overlay-pressed-default, oklch(0.3337 0.0688 250.79 / 0.09));}&:focus-visible, &.focus{border-width:0.125rem;margin-inline:-0.0625rem;}@media (forced-colors: active){outline:0.125rem solid ButtonBorder;}}" },
19
- outlined: { name: "mer0y", styles: "border:0.0625rem solid var(--cnvs-sys-color-border-default, var(--cnvs-sys-color-border-divider, oklch(0.3057 0.079 256.22 / 0.13)));margin-inline:0.0625rem;&:hover, &.hover{border-color:var(--cnvs-sys-color-border-strong, var(--cnvs-sys-color-border-container, oklch(0.2442 0.0693 257.66 / 0.21)));}&:focus-visible, &.focus{margin-inline:0rem;border:0.125rem solid var(--cnvs-sys-color-brand-focus-primary, var(--cnvs-brand-common-focus-outline, oklch(0.6023 0.2032 255.68 / 1)));}&[aria-selected=true]{margin-inline:0rem;border:0.125rem solid var(--cnvs-sys-color-border-contrast-default);&:hover, &.hover, &:focus-visible, &.focus{border:0.125rem solid var(--cnvs-sys-color-border-contrast-default);}&:focus-visible, &.focus{box-shadow:0 0 0 2px var(--cnvs-sys-color-focus-inverse, var(--cnvs-sys-color-border-input-inverse, oklch(1 0 0 / 1))), 0 0 0 4px var(--cnvs-sys-color-brand-focus-primary, var(--cnvs-brand-common-focus-outline, oklch(0.6023 0.2032 255.68 / 1)));}}" }
42
+ filled: { name: "436ihx", styles: "border:0.0625rem solid transparent;&:hover, &.hover{background-color:var(--cnvs-sys-color-surface-overlay-hover-default, oklch(0.3343 0.0951 253.3 / 0.05));}&:focus-visible, &.focus{box-shadow:0 0 0 2px var(--cnvs-sys-color-focus-inverse, var(--cnvs-sys-color-border-input-inverse, oklch(1 0 0 / 1))), 0 0 0 4px var(--cnvs-sys-color-brand-focus-primary, var(--cnvs-brand-common-focus-outline, oklch(0.6023 0.2032 255.68 / 1)));}&[aria-selected=true]{background-color:var(--cnvs-sys-color-surface-overlay-pressed-default, oklch(0.3337 0.0688 250.79 / 0.09));border-color:var(--cnvs-sys-color-border-input-default);&:hover, &.hover, &:focus-visible, &.focus{background-color:var(--cnvs-sys-color-surface-overlay-pressed-default, oklch(0.3337 0.0688 250.79 / 0.09));}&:focus-visible, &.focus{border-width:0.125rem;margin-inline:-0.0625rem;}@media (forced-colors: active){outline:0.125rem solid ButtonBorder;}}" },
43
+ outlined: { name: "1qy9us", styles: "border:0.0625rem solid var(--cnvs-sys-color-border-default, var(--cnvs-sys-color-border-divider, oklch(0.3057 0.079 256.22 / 0.13)));margin-inline:0.0625rem;&:hover, &.hover{border-color:var(--cnvs-sys-color-border-strong, var(--cnvs-sys-color-border-container, oklch(0.2442 0.0693 257.66 / 0.21)));}&:focus-visible, &.focus{margin-inline:0rem;border:0.125rem solid var(--cnvs-sys-color-brand-focus-primary, var(--cnvs-brand-common-focus-outline, oklch(0.6023 0.2032 255.68 / 1)));}&[aria-selected=true]{margin-inline:0rem;border:0.125rem solid var(--cnvs-sys-color-border-contrast-default);&:hover, &.hover, &:focus-visible, &.focus{border:0.125rem solid var(--cnvs-sys-color-border-contrast-default);}&:focus-visible, &.focus{box-shadow:0 0 0 2px var(--cnvs-sys-color-focus-inverse, var(--cnvs-sys-color-border-input-inverse, oklch(1 0 0 / 1))), 0 0 0 4px var(--cnvs-sys-color-brand-focus-primary, var(--cnvs-brand-common-focus-outline, oklch(0.6023 0.2032 255.68 / 1)));}}" }
20
44
  }
21
45
  }
22
- }, "tab-item-be6a86");
46
+ }, "tab-item-a5f594");
23
47
  exports.StyledTabItem = (0, common_1.createComponent)('button')({
24
48
  displayName: 'StyledTabItem',
25
49
  Component: ({ children, variant, ...elemProps }, ref, Element) => {
26
50
  return ((0, jsx_runtime_1.jsx)(Element, { ref: ref, ...(0, layout_1.mergeStyles)(elemProps, tabItemStencil({ variant })), children: children }));
27
51
  },
28
52
  });
53
+ /**
54
+ * When the selected tab receives ArrowDown, move focus to its tab panel.
55
+ * Returning `null` is the mergeCallback sentinel that stops later-merged
56
+ * `onKeyDown` handlers (including roving focus) from also handling this key.
57
+ * This hook must be composed before `useListItemRovingFocus` so it runs after
58
+ * that hook and its return value can skip the roving handler.
59
+ * Tabs.OverflowButton does not use this hook.
60
+ *
61
+ * ArrowDown is only intercepted in horizontal orientation. In a vertical tablist,
62
+ * ArrowDown is the roving-navigation key and must reach `useListItemRovingFocus`.
63
+ */
64
+ const useTabsItemFocusPanelOnArrowDown = (0, common_1.createElemPropsHook)(useTabsModel_1.useTabsModel)(({ state }, _, elemProps = {}) => {
65
+ const { item } = React.useContext(collection_1.ListRenderItemContext);
66
+ const name = elemProps['data-id'] || (item === null || item === void 0 ? void 0 : item.id) || '';
67
+ const selected = !!name && (0, collection_1.isSelected)(name, state);
68
+ return {
69
+ onKeyDown(event) {
70
+ if (!selected || state.orientation !== 'horizontal' || event.key !== 'ArrowDown') {
71
+ return;
72
+ }
73
+ event.preventDefault();
74
+ const panelId = (0, common_1.slugify)(`tabpanel-${state.id}-${name}`);
75
+ const panel = document.getElementById(panelId);
76
+ if (panel) {
77
+ panel.focus();
78
+ }
79
+ // mergeCallback: `null` prevents the roving-focus onKeyDown from running.
80
+ return null;
81
+ },
82
+ };
83
+ });
29
84
  exports.useTabsItem = (0, common_1.composeHooks)((0, common_1.createElemPropsHook)(useTabsModel_1.useTabsModel)(({ state }, _, elemProps = {}) => {
30
85
  const name = elemProps['data-id'] || '';
31
86
  const selected = !!elemProps['data-id'] && (0, collection_1.isSelected)(name, state);
@@ -35,7 +90,7 @@ exports.useTabsItem = (0, common_1.composeHooks)((0, common_1.createElemPropsHoo
35
90
  'aria-selected': selected,
36
91
  'aria-controls': (0, common_1.slugify)(`tabpanel-${state.id}-${name}`),
37
92
  };
38
- }), collection_1.useListItemSelect, collection_1.useOverflowListItemMeasure, collection_1.useListItemRovingFocus, collection_1.useListItemRegister);
93
+ }), collection_1.useListItemSelect, collection_1.useOverflowListItemMeasure, useTabsItemFocusPanelOnArrowDown, collection_1.useListItemRovingFocus, collection_1.useListItemRegister);
39
94
  exports.TabsItem = (0, common_1.createSubcomponent)('button')({
40
95
  displayName: 'Tabs.Item',
41
96
  modelHook: useTabsModel_1.useTabsModel,
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
- import { ExtractProps } from '@workday/canvas-kit-react/common';
2
+ import { ExtractProps, Generic } from '@workday/canvas-kit-react/common';
3
3
  import { Flex } from '@workday/canvas-kit-react/layout';
4
+ import { useTabsModel } from './useTabsModel';
4
5
  export interface TabListProps<T = any> extends Omit<ExtractProps<typeof Flex, never>, 'children'> {
5
6
  /**
6
7
  * If items are passed to a `TabsModel`, the child of `Tabs.List` should be a render prop. The
@@ -329,6 +330,327 @@ export declare const useTabOverflowScroll: import("@workday/canvas-kit-react/com
329
330
  readonly ref: (instance: HTMLDivElement | null) => void;
330
331
  readonly onScroll: (event: React.UIEvent<HTMLDivElement>) => void;
331
332
  }>;
333
+ /**
334
+ * Resets the tablist cursor on blur to the selected tab when visible, or to the first visible
335
+ * item (e.g. the overflow button) when the selected tab is hidden. This ensures the roving
336
+ * tabindex always lands on a focusable element when only the "More" button is visible.
337
+ */
338
+ export declare const useTabsListResetCursorOnBlur: import("@workday/canvas-kit-react/common").BehaviorHook<{
339
+ state: {
340
+ getId: (item: any) => string;
341
+ orientation: import("@workday/canvas-kit-react/collection").Orientation;
342
+ panels: import("@workday/canvas-kit-react/collection").Item<any>[];
343
+ panelIndexRef: React.MutableRefObject<number>;
344
+ variant: "filled" | "outlined";
345
+ hiddenIds: string[];
346
+ itemSizeCache: Record<string, number>;
347
+ itemWidthCache: Record<string, number>;
348
+ containerSize: number;
349
+ containerWidth: number;
350
+ containerGap: number;
351
+ overflowTargetWidth: number;
352
+ selectedIds: string[] | "all";
353
+ unselectedIds: string[];
354
+ cursorId: string | string[];
355
+ columnCount: number;
356
+ pageSizeRef: React.MutableRefObject<number>;
357
+ cursorIndexRef: {
358
+ readonly current: number;
359
+ };
360
+ UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
361
+ UNSTABLE_defaultItemHeight: number;
362
+ containerRef: React.RefObject<HTMLDivElement>;
363
+ id: string;
364
+ indexRef: React.MutableRefObject<number>;
365
+ nonInteractiveIds: string[];
366
+ isVirtualized: boolean;
367
+ items: import("@workday/canvas-kit-react/collection").Item<any>[];
368
+ };
369
+ events: {
370
+ registerPanel: (data: {
371
+ id: string;
372
+ textValue: string;
373
+ }) => void;
374
+ unregisterPanel: (data: {
375
+ id: string;
376
+ }) => void;
377
+ select(data: {
378
+ id: string;
379
+ }): void;
380
+ setContainerSize(data: {
381
+ width?: number | undefined;
382
+ height?: number | undefined;
383
+ }): void;
384
+ setContainerWidth(data: {
385
+ width?: number | undefined;
386
+ }): void;
387
+ setContainerGap(data: {
388
+ size: number;
389
+ }): void;
390
+ setOverflowTargetSize(data: {
391
+ width: number;
392
+ height: number;
393
+ }): void;
394
+ setOverflowTargetWidth(data: {
395
+ width: number;
396
+ }): void;
397
+ addItemWidth(data: {
398
+ id: string;
399
+ width: number;
400
+ }): void;
401
+ addItemSize(data: {
402
+ id: string;
403
+ width: number;
404
+ height: number;
405
+ }): void;
406
+ removeItemSize(data: {
407
+ id: string;
408
+ }): void;
409
+ removeItemWidth(data: {
410
+ id: string;
411
+ }): void;
412
+ addHiddenKey(data: {
413
+ id: string;
414
+ }): void;
415
+ removeHiddenKey(data: {
416
+ id: string;
417
+ }): void;
418
+ selectAll(): void;
419
+ unselectAll(): void;
420
+ setSelectedIds(ids: string[] | "all"): void;
421
+ remove(data: {
422
+ id: string;
423
+ nextId?: string | undefined;
424
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
425
+ }): void;
426
+ goTo(data: {
427
+ id: string;
428
+ }): void;
429
+ goToNext(): void;
430
+ goToPrevious(): void;
431
+ goToPreviousRow(): void;
432
+ goToNextRow(): void;
433
+ goToFirst(): void;
434
+ goToLast(): void;
435
+ goToFirstOfRow(): void;
436
+ goToLastOfRow(): void;
437
+ goToNextPage(): void;
438
+ goToPreviousPage(): void;
439
+ registerItem(data: {
440
+ id: string;
441
+ textValue: string;
442
+ }): void;
443
+ unregisterItem(data: {
444
+ id: string;
445
+ }): void;
446
+ updateItemHeight(data: {
447
+ value: number;
448
+ }): void;
449
+ };
450
+ menu: {
451
+ state: {
452
+ stackRef: React.RefObject<HTMLDivElement>;
453
+ targetRef: React.RefObject<HTMLButtonElement>;
454
+ initialFocusRef: React.RefObject<any> | undefined;
455
+ returnFocusRef: React.RefObject<any> | undefined;
456
+ placement: import("@popperjs/core").Placement;
457
+ id: string;
458
+ visibility: "hidden" | "visible";
459
+ selectedIds: string[] | "all";
460
+ unselectedIds: string[];
461
+ cursorId: string | string[];
462
+ columnCount: number;
463
+ pageSizeRef: React.MutableRefObject<number>;
464
+ cursorIndexRef: {
465
+ readonly current: number;
466
+ };
467
+ UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
468
+ UNSTABLE_defaultItemHeight: number;
469
+ containerRef: React.RefObject<HTMLDivElement>;
470
+ orientation: "horizontal" | "vertical";
471
+ indexRef: React.MutableRefObject<number>;
472
+ nonInteractiveIds: string[];
473
+ isVirtualized: boolean;
474
+ items: import("@workday/canvas-kit-react/collection").Item<any>[];
475
+ mode: "multiple" | "single";
476
+ };
477
+ events: {
478
+ updatePlacement(data: {
479
+ placement: import("@popperjs/core").Placement;
480
+ }): void;
481
+ show(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
482
+ hide(event?: Event | React.SyntheticEvent<Element, Event> | undefined): void;
483
+ select(data: {
484
+ id: string;
485
+ }): void;
486
+ selectAll(): void;
487
+ unselectAll(): void;
488
+ setSelectedIds(ids: string[] | "all"): void;
489
+ remove(data: {
490
+ id: string;
491
+ nextId?: string | undefined;
492
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
493
+ }): void;
494
+ goTo(data: {
495
+ id: string;
496
+ }): void;
497
+ goToNext(): void;
498
+ goToPrevious(): void;
499
+ goToPreviousRow(): void;
500
+ goToNextRow(): void;
501
+ goToFirst(): void;
502
+ goToLast(): void;
503
+ goToFirstOfRow(): void;
504
+ goToLastOfRow(): void;
505
+ goToNextPage(): void;
506
+ goToPreviousPage(): void;
507
+ registerItem(data: {
508
+ id: string;
509
+ textValue: string;
510
+ }): void;
511
+ unregisterItem(data: {
512
+ id: string;
513
+ }): void;
514
+ updateItemHeight(data: {
515
+ value: number;
516
+ }): void;
517
+ };
518
+ UNSTABLE_parentModel: {
519
+ state: {
520
+ selectedIds: string[] | "all";
521
+ unselectedIds: string[];
522
+ cursorId: string | string[];
523
+ columnCount: number;
524
+ pageSizeRef: React.MutableRefObject<number>;
525
+ cursorIndexRef: {
526
+ readonly current: number;
527
+ };
528
+ UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
529
+ UNSTABLE_defaultItemHeight: number;
530
+ containerRef: React.RefObject<HTMLDivElement>;
531
+ id: string;
532
+ orientation: "horizontal" | "vertical";
533
+ indexRef: React.MutableRefObject<number>;
534
+ nonInteractiveIds: string[];
535
+ isVirtualized: boolean;
536
+ items: import("@workday/canvas-kit-react/collection").Item<any>[];
537
+ };
538
+ events: {
539
+ select(data: {
540
+ id: string;
541
+ }): void;
542
+ selectAll(): void;
543
+ unselectAll(): void;
544
+ setSelectedIds(ids: string[] | "all"): void;
545
+ remove(data: {
546
+ id: string;
547
+ nextId?: string | undefined;
548
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
549
+ }): void;
550
+ goTo(data: {
551
+ id: string;
552
+ }): void;
553
+ goToNext(): void;
554
+ goToPrevious(): void;
555
+ goToPreviousRow(): void;
556
+ goToNextRow(): void;
557
+ goToFirst(): void;
558
+ goToLast(): void;
559
+ goToFirstOfRow(): void;
560
+ goToLastOfRow(): void;
561
+ goToNextPage(): void;
562
+ goToPreviousPage(): void;
563
+ registerItem(data: {
564
+ id: string;
565
+ textValue: string;
566
+ }): void;
567
+ unregisterItem(data: {
568
+ id: string;
569
+ }): void;
570
+ updateItemHeight(data: {
571
+ value: number;
572
+ }): void;
573
+ };
574
+ selection: import("@workday/canvas-kit-react/collection").SelectionManager;
575
+ navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
576
+ getId: (item: any) => string;
577
+ getTextValue: (item: any) => string;
578
+ UNSTABLE_parentModel: {
579
+ state: {
580
+ selectedIds: string[] | "all";
581
+ unselectedIds: string[];
582
+ cursorId: string | string[];
583
+ columnCount: number;
584
+ pageSizeRef: React.MutableRefObject<number>;
585
+ cursorIndexRef: {
586
+ readonly current: number;
587
+ };
588
+ UNSTABLE_virtual: import("@tanstack/virtual-core").Virtualizer<HTMLDivElement, Element>;
589
+ UNSTABLE_defaultItemHeight: number;
590
+ containerRef: React.RefObject<HTMLDivElement>;
591
+ id: string;
592
+ orientation: "horizontal" | "vertical";
593
+ indexRef: React.MutableRefObject<number>;
594
+ nonInteractiveIds: string[];
595
+ isVirtualized: boolean;
596
+ items: import("@workday/canvas-kit-react/collection").Item<any>[];
597
+ };
598
+ events: {
599
+ select(data: {
600
+ id: string;
601
+ }): void;
602
+ selectAll(): void;
603
+ unselectAll(): void;
604
+ setSelectedIds(ids: string[] | "all"): void;
605
+ remove(data: {
606
+ id: string;
607
+ nextId?: string | undefined;
608
+ event?: Event | React.SyntheticEvent<Element, Event> | undefined;
609
+ }): void;
610
+ goTo(data: {
611
+ id: string;
612
+ }): void;
613
+ goToNext(): void;
614
+ goToPrevious(): void;
615
+ goToPreviousRow(): void;
616
+ goToNextRow(): void;
617
+ goToFirst(): void;
618
+ goToLast(): void;
619
+ goToFirstOfRow(): void;
620
+ goToLastOfRow(): void;
621
+ goToNextPage(): void;
622
+ goToPreviousPage(): void;
623
+ registerItem(data: {
624
+ id: string;
625
+ textValue: string;
626
+ }): void;
627
+ unregisterItem(data: {
628
+ id: string;
629
+ }): void;
630
+ updateItemHeight(data: {
631
+ value: number;
632
+ }): void;
633
+ };
634
+ selection: import("@workday/canvas-kit-react/collection").SelectionManager;
635
+ navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
636
+ getId: (item: any) => string;
637
+ getTextValue: (item: any) => string;
638
+ } | undefined;
639
+ };
640
+ selection: import("@workday/canvas-kit-react/collection").SelectionManager;
641
+ navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
642
+ getId: (item: any) => string;
643
+ getTextValue: (item: any) => string;
644
+ };
645
+ selection: import("@workday/canvas-kit-react/collection").SelectionManager;
646
+ navigation: import("@workday/canvas-kit-react/collection").NavigationManager;
647
+ getId: (item: any) => string;
648
+ getTextValue: (item: any) => string;
649
+ }, {
650
+ readonly onKeyDown: (event: React.KeyboardEvent) => void;
651
+ readonly onFocus: () => void;
652
+ readonly onBlur: () => void;
653
+ }>;
332
654
  export declare const useTabsList: import("@workday/canvas-kit-react/common").BehaviorHook<{
333
655
  state: {
334
656
  getId: (item: any) => string;
@@ -649,7 +971,7 @@ export declare const useTabsList: import("@workday/canvas-kit-react/common").Beh
649
971
  }, import("@workday/canvas-kit-react/common").MergeProps<{
650
972
  readonly ref: (instance: HTMLElement | null) => void;
651
973
  }, import("@workday/canvas-kit-react/common").MergeProps<{
652
- readonly onKeyDown: (event: React.KeyboardEvent<Element>) => void;
974
+ readonly onKeyDown: (event: React.KeyboardEvent) => void;
653
975
  readonly onFocus: () => void;
654
976
  readonly onBlur: () => void;
655
977
  }, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, {}>>>>>>>>;
@@ -681,6 +1003,12 @@ export declare const tabsListStencil: import("@workday/canvas-kit-styling").Sten
681
1003
  right: {};
682
1004
  };
683
1005
  }, {}, {}, never, never>;
1006
+ /**
1007
+ * Custom render function for tabs that filters out the synthetic overflow button item.
1008
+ * This is needed because the overflow button is included in the model's items array
1009
+ * for navigation purposes, but should not be rendered by the list or panel render function.
1010
+ */
1011
+ export declare function useTabsCollectionRenderItems(model: ReturnType<typeof useTabsModel>, children: ((item: Generic, index: number) => React.ReactNode) | React.ReactNode): React.ReactNode;
684
1012
  export declare const TabsList: import("@workday/canvas-kit-react/common").ElementComponentM<"div", TabListProps<any> & {
685
1013
  maskImage?: string | undefined;
686
1014
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"TabsList.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/TabsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EACL,YAAY,EAMb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,IAAI,EAAc,MAAM,kCAAkC,CAAC;AAMnE,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAC/F;;;;;;;;OAQG;IACH,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC3D,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAClC;AAyCD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAqBX,aAAa,CAAC,cAAc,CAAC;EAKjD,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAPF,aAAa,CAAC,cAAc,CAAC;;;;;;;;;;iIAiBlD,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA0C1B,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBpB,CAAC"}
1
+ {"version":3,"file":"TabsList.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/TabsList.tsx"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.TabsList = exports.tabsListStencil = exports.useTabsList = exports.useTabOverflowScroll = void 0;
26
+ exports.TabsList = exports.useTabsCollectionRenderItems = exports.tabsListStencil = exports.useTabsList = exports.useTabsListResetCursorOnBlur = exports.useTabOverflowScroll = void 0;
27
27
  const jsx_runtime_1 = require("react/jsx-runtime");
28
28
  const React = __importStar(require("react"));
29
29
  const collection_1 = require("@workday/canvas-kit-react/collection");
@@ -85,30 +85,83 @@ exports.useTabOverflowScroll = (0, common_1.createElemPropsHook)(useTabsModel_1.
85
85
  },
86
86
  };
87
87
  });
88
+ /**
89
+ * Resets the tablist cursor on blur to the selected tab when visible, or to the first visible
90
+ * item (e.g. the overflow button) when the selected tab is hidden. This ensures the roving
91
+ * tabindex always lands on a focusable element when only the "More" button is visible.
92
+ */
93
+ exports.useTabsListResetCursorOnBlur = (0, common_1.createElemPropsHook)(useTabsModel_1.useTabsModel)(({ state, events }) => {
94
+ const programmaticFocusRef = React.useRef(false);
95
+ const requestAnimationFrameRef = React.useRef(0);
96
+ (0, common_1.useMountLayout)(() => {
97
+ return () => {
98
+ cancelAnimationFrame(requestAnimationFrameRef.current);
99
+ };
100
+ });
101
+ return {
102
+ onKeyDown(event) {
103
+ if (Object.keys(collection_1.orientationKeyMap[state.orientation]).indexOf(event.key) !== -1) {
104
+ programmaticFocusRef.current = true;
105
+ }
106
+ },
107
+ onFocus() {
108
+ programmaticFocusRef.current = false;
109
+ },
110
+ onBlur() {
111
+ if (!programmaticFocusRef.current) {
112
+ requestAnimationFrameRef.current = requestAnimationFrame(() => {
113
+ var _a;
114
+ const selectedId = state.selectedIds !== 'all' && state.selectedIds.length
115
+ ? state.selectedIds[0]
116
+ : undefined;
117
+ const visibleItems = state.items.filter(item => !state.hiddenIds.includes(item.id));
118
+ const targetId = selectedId && !state.hiddenIds.includes(selectedId) ? selectedId : (_a = visibleItems[0]) === null || _a === void 0 ? void 0 : _a.id;
119
+ if (targetId && !(0, collection_1.isCursor)(state, targetId)) {
120
+ events.goTo({ id: targetId });
121
+ }
122
+ });
123
+ }
124
+ },
125
+ };
126
+ });
88
127
  exports.useTabsList = (0, common_1.composeHooks)(exports.useTabOverflowScroll, (0, common_1.createElemPropsHook)(useTabsModel_1.useTabsModel)(model => {
89
128
  return {
90
129
  role: 'tablist',
91
130
  'aria-orientation': model.state.orientation,
92
131
  };
93
- }), collection_1.useOverflowListMeasure, collection_1.useListResetCursorOnBlur);
132
+ }), collection_1.useOverflowListMeasure, exports.useTabsListResetCursorOnBlur);
94
133
  exports.tabsListStencil = (0, canvas_kit_styling_1.createStencil)({
95
- base: { name: "2vw4bg", styles: "box-sizing:border-box;display:flex;position:relative;gap:var(--cnvs-sys-gap-sm, var(--cnvs-sys-space-x2, 0.5rem));@media screen and (max-width: 768px){padding-inline:var(--cnvs-sys-padding-md, var(--cnvs-sys-space-x4, 1rem));}" },
134
+ base: { name: "nzaec", styles: "box-sizing:border-box;display:flex;position:relative;min-width:0;gap:var(--cnvs-sys-gap-sm, var(--cnvs-sys-space-x2, 0.5rem));@media screen and (max-width: 768px){padding-inline:var(--cnvs-sys-padding-md, var(--cnvs-sys-space-x4, 1rem));}" },
96
135
  modifiers: {
97
136
  modality: {
98
- touch: { name: "148053", styles: "overflow-x:auto;padding-inline:0;&[data-scroll-position=\"start\"]{mask-image:linear-gradient(to right, white 80%, transparent);}&[data-scroll-position=\"middle\"]{mask-image:linear-gradient(to left, white 80%, transparent), linear-gradient(to right, white 80%, transparent);mask-composite:intersect;}&[data-scroll-position=\"end\"]{mask-image:linear-gradient(to left, white 80%, transparent);}" },
99
- mouse: { name: "23gkfe", styles: "" },
100
- pen: { name: "1n6o9n", styles: "" }
137
+ touch: { name: "qr38j", styles: "overflow-x:auto;padding-inline:0;&[data-scroll-position=\"start\"]{mask-image:linear-gradient(to right, white 80%, transparent);}&[data-scroll-position=\"middle\"]{mask-image:linear-gradient(to left, white 80%, transparent), linear-gradient(to right, white 80%, transparent);mask-composite:intersect;}&[data-scroll-position=\"end\"]{mask-image:linear-gradient(to left, white 80%, transparent);}" },
138
+ mouse: { name: "291zhq", styles: "" },
139
+ pen: { name: "1k5j4b", styles: "" }
101
140
  },
102
141
  isDragging: {
103
- true: { name: "odpz5", styles: "" },
104
- false: { name: "23veoa", styles: "" }
142
+ true: { name: "3jtc7x", styles: "" },
143
+ false: { name: "7o9ys", styles: "" }
105
144
  },
106
145
  direction: {
107
- left: { name: "zxb2i", styles: "" },
108
- right: { name: "1atqj0", styles: "" }
146
+ left: { name: "3lon18", styles: "" },
147
+ right: { name: "5f6hs", styles: "" }
109
148
  }
110
149
  }
111
- }, "tabs-list-adfaf8");
150
+ }, "tabs-list-8b7545");
151
+ /**
152
+ * Custom render function for tabs that filters out the synthetic overflow button item.
153
+ * This is needed because the overflow button is included in the model's items array
154
+ * for navigation purposes, but should not be rendered by the list or panel render function.
155
+ */
156
+ function useTabsCollectionRenderItems(model, children) {
157
+ const itemsToRender = model.state.items.filter(item => item.id !== useTabsModel_1.TABS_OVERFLOW_BUTTON_ID);
158
+ const items = typeof children === 'function' ? (itemsToRender.map(item => {
159
+ const child = children(item.value, item.index);
160
+ return ((0, jsx_runtime_1.jsx)(collection_1.ListRenderItemContext.Provider, { value: { item }, children: child }, item.id || item.index));
161
+ })) : ((0, jsx_runtime_1.jsx)(collection_1.ListRenderItemContext.Provider, { value: {}, children: children }));
162
+ return items;
163
+ }
164
+ exports.useTabsCollectionRenderItems = useTabsCollectionRenderItems;
112
165
  exports.TabsList = (0, common_1.createSubcomponent)('div')({
113
166
  displayName: 'Tabs.List',
114
167
  modelHook: useTabsModel_1.useTabsModel,
@@ -117,5 +170,5 @@ exports.TabsList = (0, common_1.createSubcomponent)('div')({
117
170
  const modality = (0, common_1.useModalityType)();
118
171
  return ((0, jsx_runtime_1.jsxs)(Element, { ...(0, layout_1.mergeStyles)(elemProps, (0, exports.tabsListStencil)({
119
172
  modality: modality,
120
- })), children: [(0, collection_1.useListRenderItems)(model, children), overflowButton] }));
173
+ })), children: [useTabsCollectionRenderItems(model, children), overflowButton] }));
121
174
  });