@workday/canvas-kit-react 14.0.0-alpha.1254-next.0 → 14.0.0-alpha.1256-next.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.
Files changed (163) hide show
  1. package/button/lib/BaseButton.tsx +0 -6
  2. package/button/lib/Button.tsx +27 -2
  3. package/button/lib/ToolbarDropdownButton.tsx +21 -2
  4. package/button/lib/ToolbarIconButton.tsx +11 -1
  5. package/button/lib/parts/ButtonLabelIcon.tsx +21 -3
  6. package/collection/lib/keyUtils.ts +4 -2
  7. package/collection/lib/useListItemRemoveable.ts +2 -3
  8. package/collection/lib/useListItemRovingFocus.tsx +2 -3
  9. package/collection/lib/useListKeyboardHandler.ts +2 -4
  10. package/combobox/lib/hooks/useComboboxListKeyboardHandler.ts +2 -4
  11. package/common/lib/theming/README.md +3 -48
  12. package/common/lib/theming/useIsRTL.ts +5 -1
  13. package/common/lib/utils/index.ts +1 -0
  14. package/common/lib/utils/isElementRTL.ts +27 -0
  15. package/dist/commonjs/avatar/lib/Avatar.js +7 -7
  16. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  17. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  18. package/dist/commonjs/button/lib/BaseButton.d.ts +0 -5
  19. package/dist/commonjs/button/lib/BaseButton.d.ts.map +1 -1
  20. package/dist/commonjs/button/lib/BaseButton.js +28 -28
  21. package/dist/commonjs/button/lib/Button.d.ts +14 -0
  22. package/dist/commonjs/button/lib/Button.d.ts.map +1 -1
  23. package/dist/commonjs/button/lib/Button.js +2 -2
  24. package/dist/commonjs/button/lib/DeleteButton.js +1 -1
  25. package/dist/commonjs/button/lib/ExternalHyperlink.js +1 -1
  26. package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
  27. package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
  28. package/dist/commonjs/button/lib/TertiaryButton.js +3 -3
  29. package/dist/commonjs/button/lib/ToolbarDropdownButton.d.ts +11 -0
  30. package/dist/commonjs/button/lib/ToolbarDropdownButton.d.ts.map +1 -1
  31. package/dist/commonjs/button/lib/ToolbarDropdownButton.js +6 -3
  32. package/dist/commonjs/button/lib/ToolbarIconButton.d.ts +1 -0
  33. package/dist/commonjs/button/lib/ToolbarIconButton.d.ts.map +1 -1
  34. package/dist/commonjs/button/lib/ToolbarIconButton.js +4 -4
  35. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +10 -1
  36. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
  37. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +2 -2
  38. package/dist/commonjs/collection/lib/keyUtils.d.ts +1 -1
  39. package/dist/commonjs/collection/lib/keyUtils.d.ts.map +1 -1
  40. package/dist/commonjs/collection/lib/keyUtils.js +3 -1
  41. package/dist/commonjs/collection/lib/useListItemRemoveable.d.ts.map +1 -1
  42. package/dist/commonjs/collection/lib/useListItemRemoveable.js +1 -2
  43. package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
  44. package/dist/commonjs/collection/lib/useListItemRovingFocus.js +1 -2
  45. package/dist/commonjs/collection/lib/useListKeyboardHandler.d.ts.map +1 -1
  46. package/dist/commonjs/collection/lib/useListKeyboardHandler.js +1 -2
  47. package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -1
  48. package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.js +1 -2
  49. package/dist/commonjs/common/lib/theming/useIsRTL.d.ts +5 -1
  50. package/dist/commonjs/common/lib/theming/useIsRTL.d.ts.map +1 -1
  51. package/dist/commonjs/common/lib/theming/useIsRTL.js +5 -1
  52. package/dist/commonjs/common/lib/utils/index.d.ts +1 -0
  53. package/dist/commonjs/common/lib/utils/index.d.ts.map +1 -1
  54. package/dist/commonjs/common/lib/utils/index.js +1 -0
  55. package/dist/commonjs/common/lib/utils/isElementRTL.d.ts +25 -0
  56. package/dist/commonjs/common/lib/utils/isElementRTL.d.ts.map +1 -0
  57. package/dist/commonjs/common/lib/utils/isElementRTL.js +31 -0
  58. package/dist/commonjs/expandable/lib/ExpandableIcon.d.ts +8 -4
  59. package/dist/commonjs/expandable/lib/ExpandableIcon.d.ts.map +1 -1
  60. package/dist/commonjs/icon/lib/AccentIcon.d.ts +8 -4
  61. package/dist/commonjs/icon/lib/AccentIcon.d.ts.map +1 -1
  62. package/dist/commonjs/icon/lib/AccentIcon.js +3 -2
  63. package/dist/commonjs/icon/lib/AppletIcon.d.ts +8 -5
  64. package/dist/commonjs/icon/lib/AppletIcon.d.ts.map +1 -1
  65. package/dist/commonjs/icon/lib/AppletIcon.js +2 -2
  66. package/dist/commonjs/icon/lib/Graphic.d.ts +8 -3
  67. package/dist/commonjs/icon/lib/Graphic.d.ts.map +1 -1
  68. package/dist/commonjs/icon/lib/Graphic.js +1 -1
  69. package/dist/commonjs/icon/lib/Svg.d.ts +17 -1
  70. package/dist/commonjs/icon/lib/Svg.d.ts.map +1 -1
  71. package/dist/commonjs/icon/lib/Svg.js +8 -5
  72. package/dist/commonjs/icon/lib/SystemIcon.d.ts +7 -0
  73. package/dist/commonjs/icon/lib/SystemIcon.d.ts.map +1 -1
  74. package/dist/commonjs/icon/lib/SystemIcon.js +1 -1
  75. package/dist/commonjs/icon/lib/SystemIconCircle.d.ts +10 -1
  76. package/dist/commonjs/icon/lib/SystemIconCircle.d.ts.map +1 -1
  77. package/dist/commonjs/icon/lib/SystemIconCircle.js +4 -4
  78. package/dist/commonjs/modal/lib/ModalOverlay.js +1 -1
  79. package/dist/commonjs/pagination/lib/Pagination/PageButton.js +2 -2
  80. package/dist/commonjs/popup/lib/hooks/usePopupStack.d.ts.map +1 -1
  81. package/dist/commonjs/popup/lib/hooks/usePopupStack.js +10 -7
  82. package/dist/commonjs/segmented-control/lib/SegmentedControlButton.js +1 -1
  83. package/dist/commonjs/tabs/lib/TabsItem.d.ts +1 -5
  84. package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
  85. package/dist/commonjs/tabs/lib/TabsItem.js +1 -1
  86. package/dist/es6/avatar/lib/Avatar.js +7 -7
  87. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  88. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  89. package/dist/es6/button/lib/BaseButton.d.ts +0 -5
  90. package/dist/es6/button/lib/BaseButton.d.ts.map +1 -1
  91. package/dist/es6/button/lib/BaseButton.js +28 -28
  92. package/dist/es6/button/lib/Button.d.ts +14 -0
  93. package/dist/es6/button/lib/Button.d.ts.map +1 -1
  94. package/dist/es6/button/lib/Button.js +2 -2
  95. package/dist/es6/button/lib/DeleteButton.js +1 -1
  96. package/dist/es6/button/lib/ExternalHyperlink.js +1 -1
  97. package/dist/es6/button/lib/PrimaryButton.js +2 -2
  98. package/dist/es6/button/lib/SecondaryButton.js +2 -2
  99. package/dist/es6/button/lib/TertiaryButton.js +3 -3
  100. package/dist/es6/button/lib/ToolbarDropdownButton.d.ts +11 -0
  101. package/dist/es6/button/lib/ToolbarDropdownButton.d.ts.map +1 -1
  102. package/dist/es6/button/lib/ToolbarDropdownButton.js +6 -3
  103. package/dist/es6/button/lib/ToolbarIconButton.d.ts +1 -0
  104. package/dist/es6/button/lib/ToolbarIconButton.d.ts.map +1 -1
  105. package/dist/es6/button/lib/ToolbarIconButton.js +4 -4
  106. package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +10 -1
  107. package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
  108. package/dist/es6/button/lib/parts/ButtonLabelIcon.js +2 -2
  109. package/dist/es6/collection/lib/keyUtils.d.ts +1 -1
  110. package/dist/es6/collection/lib/keyUtils.d.ts.map +1 -1
  111. package/dist/es6/collection/lib/keyUtils.js +3 -1
  112. package/dist/es6/collection/lib/useListItemRemoveable.d.ts.map +1 -1
  113. package/dist/es6/collection/lib/useListItemRemoveable.js +2 -3
  114. package/dist/es6/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
  115. package/dist/es6/collection/lib/useListItemRovingFocus.js +2 -3
  116. package/dist/es6/collection/lib/useListKeyboardHandler.d.ts.map +1 -1
  117. package/dist/es6/collection/lib/useListKeyboardHandler.js +2 -3
  118. package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -1
  119. package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.js +2 -3
  120. package/dist/es6/common/lib/theming/useIsRTL.d.ts +5 -1
  121. package/dist/es6/common/lib/theming/useIsRTL.d.ts.map +1 -1
  122. package/dist/es6/common/lib/theming/useIsRTL.js +5 -1
  123. package/dist/es6/common/lib/utils/index.d.ts +1 -0
  124. package/dist/es6/common/lib/utils/index.d.ts.map +1 -1
  125. package/dist/es6/common/lib/utils/index.js +1 -0
  126. package/dist/es6/common/lib/utils/isElementRTL.d.ts +25 -0
  127. package/dist/es6/common/lib/utils/isElementRTL.d.ts.map +1 -0
  128. package/dist/es6/common/lib/utils/isElementRTL.js +27 -0
  129. package/dist/es6/expandable/lib/ExpandableIcon.d.ts +8 -4
  130. package/dist/es6/expandable/lib/ExpandableIcon.d.ts.map +1 -1
  131. package/dist/es6/icon/lib/AccentIcon.d.ts +8 -4
  132. package/dist/es6/icon/lib/AccentIcon.d.ts.map +1 -1
  133. package/dist/es6/icon/lib/AccentIcon.js +3 -2
  134. package/dist/es6/icon/lib/AppletIcon.d.ts +8 -5
  135. package/dist/es6/icon/lib/AppletIcon.d.ts.map +1 -1
  136. package/dist/es6/icon/lib/AppletIcon.js +2 -2
  137. package/dist/es6/icon/lib/Graphic.d.ts +8 -3
  138. package/dist/es6/icon/lib/Graphic.d.ts.map +1 -1
  139. package/dist/es6/icon/lib/Graphic.js +1 -1
  140. package/dist/es6/icon/lib/Svg.d.ts +17 -1
  141. package/dist/es6/icon/lib/Svg.d.ts.map +1 -1
  142. package/dist/es6/icon/lib/Svg.js +8 -5
  143. package/dist/es6/icon/lib/SystemIcon.d.ts +7 -0
  144. package/dist/es6/icon/lib/SystemIcon.d.ts.map +1 -1
  145. package/dist/es6/icon/lib/SystemIcon.js +1 -1
  146. package/dist/es6/icon/lib/SystemIconCircle.d.ts +10 -1
  147. package/dist/es6/icon/lib/SystemIconCircle.d.ts.map +1 -1
  148. package/dist/es6/icon/lib/SystemIconCircle.js +4 -4
  149. package/dist/es6/modal/lib/ModalOverlay.js +1 -1
  150. package/dist/es6/pagination/lib/Pagination/PageButton.js +2 -2
  151. package/dist/es6/popup/lib/hooks/usePopupStack.d.ts.map +1 -1
  152. package/dist/es6/popup/lib/hooks/usePopupStack.js +11 -8
  153. package/dist/es6/segmented-control/lib/SegmentedControlButton.js +1 -1
  154. package/dist/es6/tabs/lib/TabsItem.d.ts +1 -5
  155. package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
  156. package/dist/es6/tabs/lib/TabsItem.js +1 -1
  157. package/icon/lib/AccentIcon.tsx +10 -1
  158. package/icon/lib/AppletIcon.tsx +3 -1
  159. package/icon/lib/Svg.tsx +23 -3
  160. package/icon/lib/SystemIconCircle.tsx +26 -3
  161. package/modal/lib/ModalOverlay.tsx +1 -1
  162. package/package.json +4 -4
  163. package/popup/lib/hooks/usePopupStack.ts +10 -7
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { PopupStack } from '@workday/canvas-kit-popup-stack';
3
- import { useLocalRef, useIsRTL, useCanvasThemeToCssVars } from '@workday/canvas-kit-react/common';
3
+ import { useLocalRef, useCanvasThemeToCssVars, isElementRTL } from '@workday/canvas-kit-react/common';
4
4
  import { ThemeContext } from '@emotion/react';
5
5
  /**
6
6
  * **Note:** If you're using {@link Popper}, you do not need to use this hook directly.
@@ -46,7 +46,6 @@ import { ThemeContext } from '@emotion/react';
46
46
  */
47
47
  export const usePopupStack = (ref, target) => {
48
48
  const { elementRef, localRef } = useLocalRef(ref);
49
- const isRTL = useIsRTL();
50
49
  // Pulls the theme from the context so that we can pass it to `useCanvasThemeToCssVars`
51
50
  const theme = React.useContext(ThemeContext);
52
51
  const { className, style } = useCanvasThemeToCssVars(theme, {});
@@ -83,13 +82,17 @@ export const usePopupStack = (ref, target) => {
83
82
  // hierarchy, so we'll add it back here.
84
83
  React.useLayoutEffect(() => {
85
84
  var _a, _b;
86
- if (isRTL) {
87
- (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute('dir', 'rtl');
88
- }
89
- else {
90
- (_b = localRef.current) === null || _b === void 0 ? void 0 : _b.removeAttribute('dir');
85
+ const targetEl = target ? ('current' in target ? target.current : target) : undefined;
86
+ if (targetEl) {
87
+ const isRTL = isElementRTL(targetEl);
88
+ if (isRTL) {
89
+ (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute('dir', 'rtl');
90
+ }
91
+ else {
92
+ (_b = localRef.current) === null || _b === void 0 ? void 0 : _b.setAttribute('dir', 'ltr');
93
+ }
91
94
  }
92
- }, [localRef, isRTL]);
95
+ }, [localRef, target]);
93
96
  /**
94
97
  * This pulls the className that gets generated by `useCanvasThemeToCssVars` and adds it to the Popup element to ensure
95
98
  * theming is applied. Popups get portaled to the DOM and therefore don't "live" inside the CanvasProvider.
@@ -6,7 +6,7 @@ import { createComponent } from '@workday/canvas-kit-react/common';
6
6
  import { systemIconStencil } from '@workday/canvas-kit-react/icon';
7
7
  const segmentedControlButtonStencil = createStencil({
8
8
  extends: buttonStencil,
9
- base: { name: "1lnc1a", styles: "box-sizing:border-box;border-inline-start:none;min-width:auto;--background-button-65cb05:var(--cnvs-sys-color-bg-alt-soft);--border-button-65cb05:var(--cnvs-sys-color-border-container);--borderRadius-button-65cb05:var(--cnvs-sys-shape-zero);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-muted-soft);&:hover, &.hover{--background-button-65cb05:var(--cnvs-sys-color-bg-alt-default);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-strong);}&:active, &.active{--background-button-65cb05:var(--cnvs-sys-color-bg-alt-stronger);}&:disabled, &.disabled{--background-button-65cb05:var(--cnvs-sys-color-bg-alt-softer);--border-button-65cb05:var(--cnvs-sys-color-border-container);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-soft);}&:first-of-type{border-radius:var(--cnvs-sys-shape-x1) 0 0 var(--cnvs-sys-shape-x1);border-inline-start:0.0625rem solid var(--cnvs-sys-color-border-container);}&:last-of-type{border-radius:0 var(--cnvs-sys-shape-x1) var(--cnvs-sys-shape-x1) 0;}&[aria-pressed=\"true\"]{--background-button-65cb05:var(--cnvs-brand-primary-base);--border-button-65cb05:var(--cnvs-brand-primary-base);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-inverse);&:first-of-type{border-inline-start-color:var(--cnvs-brand-primary-base);}&:disabled, &.disabled{--background-button-65cb05:var(--cnvs-sys-color-bg-alt-softer);--border-button-65cb05:var(--cnvs-sys-color-border-container);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-soft);}}&:focus-visible, &.focus{border-radius:var(--cnvs-sys-shape-x1);z-index:1;animation:none;transition:all 120ms border-radius 1ms;}" },
9
+ base: { name: "1lnc1a", styles: "box-sizing:border-box;border-inline-start:none;min-width:auto;--background-button-85bf0e:var(--cnvs-sys-color-bg-alt-soft);--border-button-85bf0e:var(--cnvs-sys-color-border-container);--borderRadius-button-85bf0e:var(--cnvs-sys-shape-zero);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-muted-soft);&:hover, &.hover{--background-button-85bf0e:var(--cnvs-sys-color-bg-alt-default);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-strong);}&:active, &.active{--background-button-85bf0e:var(--cnvs-sys-color-bg-alt-stronger);}&:disabled, &.disabled{--background-button-85bf0e:var(--cnvs-sys-color-bg-alt-softer);--border-button-85bf0e:var(--cnvs-sys-color-border-container);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-soft);}&:first-of-type{border-radius:var(--cnvs-sys-shape-x1) 0 0 var(--cnvs-sys-shape-x1);border-inline-start:0.0625rem solid var(--cnvs-sys-color-border-container);}&:last-of-type{border-radius:0 var(--cnvs-sys-shape-x1) var(--cnvs-sys-shape-x1) 0;}&[aria-pressed=\"true\"]{--background-button-85bf0e:var(--cnvs-brand-primary-base);--border-button-85bf0e:var(--cnvs-brand-primary-base);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-inverse);&:first-of-type{border-inline-start-color:var(--cnvs-brand-primary-base);}&:disabled, &.disabled{--background-button-85bf0e:var(--cnvs-sys-color-bg-alt-softer);--border-button-85bf0e:var(--cnvs-sys-color-border-container);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-soft);}}&:focus-visible, &.focus{border-radius:var(--cnvs-sys-shape-x1);z-index:1;animation:none;transition:all 120ms border-radius 1ms;}" },
10
10
  modifiers: {
11
11
  segmentedControlButtonSize: {
12
12
  small: { name: "151b63", styles: "width:var(--cnvs-sys-space-x8);height:var(--cnvs-sys-space-x8);" },
@@ -377,11 +377,7 @@ export declare const useTabsItem: import("@workday/canvas-kit-react/common").Beh
377
377
  readonly style: {};
378
378
  readonly inert: boolean | "" | undefined;
379
379
  }, import("@workday/canvas-kit-react/common").MergeProps<{
380
- readonly onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void; /**
381
- * Part of the ARIA specification for tabs. Lets screen readers know which tab is active. This
382
- * should either be `true` or `undefined` and never `false`. This is automatically set by the
383
- * component and should only be used in advanced cases.
384
- */
380
+ readonly onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
385
381
  readonly onClick: () => void;
386
382
  readonly 'data-focus-id': string;
387
383
  readonly tabIndex: 0 | -1;
@@ -1 +1 @@
1
- {"version":3,"file":"TabsItem.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/TabsItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAKL,YAAY,EAKb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,GAAG,EAAE,SAAS,EAAc,MAAM,kCAAkC,CAAC;AAe7E,MAAM,WAAW,aACf,SAAQ,YAAY,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,EACrC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8ED,eAAO,MAAM,aAAa,sFASxB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2EApGtB;;;;OAIG;;;;;;;;;;;;;uEAiHJ,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBnB,CAAC"}
1
+ {"version":3,"file":"TabsItem.d.ts","sourceRoot":"","sources":["../../../../tabs/lib/TabsItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAKL,YAAY,EAKb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,GAAG,EAAE,SAAS,EAAc,MAAM,kCAAkC,CAAC;AAe7E,MAAM,WAAW,aACf,SAAQ,YAAY,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,EACrC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8ED,eAAO,MAAM,aAAa,sFASxB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAiBvB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBnB,CAAC"}
@@ -9,7 +9,7 @@ import { useTabsModel } from './useTabsModel';
9
9
  import { buttonStencil } from '@workday/canvas-kit-react/button';
10
10
  import { system, brand } from '@workday/canvas-tokens-web';
11
11
  const tabItemStencil = createStencil({
12
- base: { name: "43htft", styles: "box-sizing:border-box;font-family:var(--cnvs-sys-font-family-default), Helvetica Neue, Helvetica, Arial, sans-serif;font-weight:var(--cnvs-sys-font-weight-medium);line-height:var(--cnvs-sys-line-height-subtext-large);font-size:var(--cnvs-sys-font-size-subtext-large);letter-spacing:var(--cnvs-base-letter-spacing-150);border:none;background-color:transparent;flex:0 0 auto;min-width:var(--cnvs-sys-space-zero);align-items:center;padding:var(--cnvs-sys-space-x3) var(--cnvs-sys-space-x4);height:3.25rem;cursor:pointer;color:var(--cnvs-sys-color-fg-muted-default);position:relative;border-radius:var(--cnvs-sys-space-x1) var(--cnvs-sys-space-x1) var(--cnvs-sys-space-zero) var(--cnvs-sys-space-zero);transition:background 150ms ease, color 150ms ease;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;--color-system-icon-3a4847:currentColor;&:has(span){display:flex;gap:var(--cnvs-sys-space-x2);}&:hover, &.hover, &:focus-visible, &.focus{background-color:var(--cnvs-sys-color-bg-alt-default);color:var(--cnvs-sys-color-fg-contrast-default);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-contrast-default);}&:focus-visible, &.focus{outline:0.125rem solid transparent;box-shadow:inset 0 0 0 2px var(--cnvs-brand-common-focus-outline, rgba(8,117,225,1)), inset 0 0 0 2px var(--cnvs-sys-color-border-inverse, rgba(255,255,255,1));--boxShadowInner-button-65cb05:var(--cnvs-sys-color-border-inverse);--boxShadowOuter-button-65cb05:var(--cnvs-brand-common-focus-outline);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-strong);}&:disabled, &.disabled, &[aria-disabled]{color:var(--cnvs-sys-color-text-disabled);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-disabled);&:hover{cursor:auto;background-color:var(--cnvs-sys-color-bg-transparent-default);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-disabled);}}&[aria-selected=true]{color:var(--cnvs-brand-primary-base);cursor:default;--color-system-icon-3a4847:var(--cnvs-brand-primary-base);&:after{position:absolute;border-bottom:var(--cnvs-sys-space-x1) solid transparent;border-radius:var(--cnvs-sys-shape-x1) var(--cnvs-sys-shape-x1) var(--cnvs-sys-shape-zero) var(--cnvs-sys-shape-zero);background-color:var(--cnvs-brand-primary-base);bottom:var(--cnvs-sys-space-zero);content:'';left:var(--cnvs-sys-space-zero);margin-block-start:calc(calc(var(--cnvs-sys-space-x2) / var(--cnvs-sys-space-x1)) * -1);width:100%;}&:hover, &.hover, &:focus-visible, &.focus{background-color:var(--cnvs-sys-color-bg-transparent-default);color:var(--cnvs-brand-primary-base);}}" }
12
+ base: { name: "43htft", styles: "box-sizing:border-box;font-family:var(--cnvs-sys-font-family-default), Helvetica Neue, Helvetica, Arial, sans-serif;font-weight:var(--cnvs-sys-font-weight-medium);line-height:var(--cnvs-sys-line-height-subtext-large);font-size:var(--cnvs-sys-font-size-subtext-large);letter-spacing:var(--cnvs-base-letter-spacing-150);border:none;background-color:transparent;flex:0 0 auto;min-width:var(--cnvs-sys-space-zero);align-items:center;padding:var(--cnvs-sys-space-x3) var(--cnvs-sys-space-x4);height:3.25rem;cursor:pointer;color:var(--cnvs-sys-color-fg-muted-default);position:relative;border-radius:var(--cnvs-sys-space-x1) var(--cnvs-sys-space-x1) var(--cnvs-sys-space-zero) var(--cnvs-sys-space-zero);transition:background 150ms ease, color 150ms ease;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;--color-system-icon-3a4847:currentColor;&:has(span){display:flex;gap:var(--cnvs-sys-space-x2);}&:hover, &.hover, &:focus-visible, &.focus{background-color:var(--cnvs-sys-color-bg-alt-default);color:var(--cnvs-sys-color-fg-contrast-default);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-contrast-default);}&:focus-visible, &.focus{outline:0.125rem solid transparent;box-shadow:inset 0 0 0 2px var(--cnvs-brand-common-focus-outline, rgba(8,117,225,1)), inset 0 0 0 2px var(--cnvs-sys-color-border-inverse, rgba(255,255,255,1));--boxShadowInner-button-85bf0e:var(--cnvs-sys-color-border-inverse);--boxShadowOuter-button-85bf0e:var(--cnvs-brand-common-focus-outline);--color-system-icon-3a4847:var(--cnvs-sys-color-icon-strong);}&:disabled, &.disabled, &[aria-disabled]{color:var(--cnvs-sys-color-text-disabled);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-disabled);&:hover{cursor:auto;background-color:var(--cnvs-sys-color-bg-transparent-default);--color-system-icon-3a4847:var(--cnvs-sys-color-fg-disabled);}}&[aria-selected=true]{color:var(--cnvs-brand-primary-base);cursor:default;--color-system-icon-3a4847:var(--cnvs-brand-primary-base);&:after{position:absolute;border-bottom:var(--cnvs-sys-space-x1) solid transparent;border-radius:var(--cnvs-sys-shape-x1) var(--cnvs-sys-shape-x1) var(--cnvs-sys-shape-zero) var(--cnvs-sys-shape-zero);background-color:var(--cnvs-brand-primary-base);bottom:var(--cnvs-sys-space-zero);content:'';left:var(--cnvs-sys-space-zero);margin-block-start:calc(calc(var(--cnvs-sys-space-x2) / var(--cnvs-sys-space-x1)) * -1);width:100%;}&:hover, &.hover, &:focus-visible, &.focus{background-color:var(--cnvs-sys-color-bg-transparent-default);color:var(--cnvs-brand-primary-base);}}" }
13
13
  }, "tab-item-116136");
14
14
  export const StyledTabItem = createComponent('button')({
15
15
  displayName: 'StyledTabItem',
@@ -79,7 +79,15 @@ export const accentIconStencil = createStencil({
79
79
  export const AccentIcon = createComponent('span')({
80
80
  displayName: 'AccentIcon',
81
81
  Component: (
82
- {transparent, size, icon, color, shouldMirror, ...elemProps}: AccentIconProps,
82
+ {
83
+ transparent,
84
+ size,
85
+ icon,
86
+ color,
87
+ shouldMirror,
88
+ shouldMirrorInRTL,
89
+ ...elemProps
90
+ }: AccentIconProps,
83
91
  ref,
84
92
  Element
85
93
  ) => {
@@ -94,6 +102,7 @@ export const AccentIcon = createComponent('span')({
94
102
  color: transformColorNameToToken(color),
95
103
  size: typeof size === 'number' ? px2rem(size) : undefined,
96
104
  shouldMirror,
105
+ shouldMirrorInRTL,
97
106
  transparent,
98
107
  }),
99
108
  ])}
@@ -62,7 +62,9 @@ export const appletIconStyles = ({
62
62
  };
63
63
  };
64
64
 
65
- export interface AppletIconProps extends AppletIconStyles, Pick<SvgProps, 'shouldMirror' | 'cs'> {
65
+ export interface AppletIconProps
66
+ extends AppletIconStyles,
67
+ Pick<SvgProps, 'shouldMirror' | 'shouldMirrorInRTL' | 'cs'> {
66
68
  /**
67
69
  * The icon to display from `@workday/canvas-applet-icons-web`.
68
70
  */
package/icon/lib/Svg.tsx CHANGED
@@ -9,10 +9,19 @@ export interface SvgProps extends BoxProps {
9
9
  src: CanvasIcon;
10
10
  type: CanvasIconTypes;
11
11
  /**
12
- * If set to `true`, transform the SVG's x-axis to mirror the graphic
12
+ * If set to `true`, transform the SVG's x-axis to mirror the graphic. Use this if you want to
13
+ * always mirror the icon regardless of the content direction. If the SVG should mirror only when
14
+ * in an right-to-left language, use `shouldMirrorInRTL` instead.
13
15
  * @default false
14
16
  */
15
17
  shouldMirror?: boolean;
18
+ /**
19
+ * If set to `true`, transform the SVG's x-axis to mirror the graphic when the content direction
20
+ * is `rtl`. Icons don't have enough context to know if they should be mirrored in all cases.
21
+ * Setting this to `true` indicates the icon should be mirrored in right-to-left languages.
22
+ * @default false
23
+ */
24
+ shouldMirrorInRTL?: boolean;
16
25
  }
17
26
 
18
27
  export const svgStencil = createStencil({
@@ -38,6 +47,13 @@ export const svgStencil = createStencil({
38
47
  transform: 'scaleX(-1)',
39
48
  },
40
49
  },
50
+ shouldMirrorInRTL: {
51
+ true: {
52
+ '&:dir(rtl)': {
53
+ transform: 'scaleX(-1)',
54
+ },
55
+ },
56
+ },
41
57
  },
42
58
  });
43
59
 
@@ -56,7 +72,11 @@ export const transformColorNameToToken = (color?: string) => {
56
72
 
57
73
  export const Svg = createComponent('span')({
58
74
  displayName: 'Svg',
59
- Component: ({shouldMirror, src, type, ...elemProps}: SvgProps, ref, Element) => {
75
+ Component: (
76
+ {shouldMirror, shouldMirrorInRTL, src, type, ...elemProps}: SvgProps,
77
+ ref,
78
+ Element
79
+ ) => {
60
80
  try {
61
81
  validateIconType(src, type);
62
82
  } catch (e) {
@@ -68,7 +88,7 @@ export const Svg = createComponent('span')({
68
88
  <Element
69
89
  ref={ref}
70
90
  dangerouslySetInnerHTML={{__html: src.svg}}
71
- {...mergeStyles(elemProps, svgStencil({shouldMirror}))}
91
+ {...mergeStyles(elemProps, svgStencil({shouldMirror, shouldMirrorInRTL}))}
72
92
  />
73
93
  );
74
94
  },
@@ -38,10 +38,19 @@ export interface SystemIconCircleProps extends CSProps {
38
38
  */
39
39
  size?: SystemIconCircleSize | number;
40
40
  /**
41
- * If set to `true`, transform the SVG's x-axis to mirror the graphic
41
+ * If set to `true`, transform the SVG's x-axis to mirror the graphic. Use this if you want to
42
+ * always mirror the icon regardless of the content direction. If the SVG should mirror only when
43
+ * in an right-to-left language, use `shouldMirrorInRTL` instead.
42
44
  * @default false
43
45
  */
44
46
  shouldMirror?: boolean;
47
+ /**
48
+ * If set to `true`, transform the SVG's x-axis to mirror the graphic when the content direction
49
+ * is `rtl`. Icons don't have enough context to know if they should be mirrored in all cases.
50
+ * Setting this to `true` indicates the icon should be mirrored in right-to-left languages.
51
+ * @default false
52
+ */
53
+ shouldMirrorInRTL?: boolean;
45
54
  }
46
55
 
47
56
  export const systemIconCircleStencil = createStencil({
@@ -73,7 +82,15 @@ export const systemIconCircleStencil = createStencil({
73
82
  export const SystemIconCircle = createComponent('span')({
74
83
  displayName: 'SystemIconCircle',
75
84
  Component: (
76
- {background, color, size, icon, shouldMirror, ...elemProps}: SystemIconCircleProps,
85
+ {
86
+ background,
87
+ color,
88
+ size,
89
+ icon,
90
+ shouldMirror,
91
+ shouldMirrorInRTL,
92
+ ...elemProps
93
+ }: SystemIconCircleProps,
77
94
  ref,
78
95
  Element
79
96
  ) => {
@@ -98,7 +115,13 @@ export const SystemIconCircle = createComponent('span')({
98
115
  })
99
116
  )}
100
117
  >
101
- <SystemIcon as={Element} ref={ref} icon={icon} shouldMirror={shouldMirror} />
118
+ <SystemIcon
119
+ as={Element}
120
+ ref={ref}
121
+ icon={icon}
122
+ shouldMirror={shouldMirror}
123
+ shouldMirrorInRTL={shouldMirrorInRTL}
124
+ />
102
125
  </div>
103
126
  );
104
127
  },
@@ -63,7 +63,7 @@ export const modalOverlayContainerStencil = createStencil({
63
63
 
64
64
  export const useModalOverlay = createElemPropsHook(usePopupModel)(({state}, ref) => {
65
65
  const elementRef = useForkRef(ref, state.stackRef);
66
- usePopupStack(elementRef);
66
+ usePopupStack(elementRef, state.targetRef);
67
67
 
68
68
  return {
69
69
  // The ref should not be applied to an element. The passed ref will apply to the stackRef instead
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workday/canvas-kit-react",
3
- "version": "14.0.0-alpha.1254-next.0",
3
+ "version": "14.0.0-alpha.1256-next.0",
4
4
  "description": "The parent module that contains all Workday Canvas Kit React components",
5
5
  "author": "Workday, Inc. (https://www.workday.com)",
6
6
  "license": "Apache-2.0",
@@ -52,8 +52,8 @@
52
52
  "@popperjs/core": "^2.5.4",
53
53
  "@tanstack/react-virtual": "^3.13.9",
54
54
  "@workday/canvas-colors-web": "^2.0.0",
55
- "@workday/canvas-kit-popup-stack": "^14.0.0-alpha.1254-next.0",
56
- "@workday/canvas-kit-styling": "^14.0.0-alpha.1254-next.0",
55
+ "@workday/canvas-kit-popup-stack": "^14.0.0-alpha.1256-next.0",
56
+ "@workday/canvas-kit-styling": "^14.0.0-alpha.1256-next.0",
57
57
  "@workday/canvas-system-icons-web": "^3.0.35",
58
58
  "@workday/canvas-tokens-web": "3.0.0-alpha.12",
59
59
  "@workday/design-assets-types": "^0.2.10",
@@ -68,5 +68,5 @@
68
68
  "@workday/canvas-accent-icons-web": "^3.0.0",
69
69
  "@workday/canvas-applet-icons-web": "^2.0.0"
70
70
  },
71
- "gitHead": "a177192ec9673c8f8d71ab20c7effc6382cae308"
71
+ "gitHead": "ecb8230f9b648de52e89d8b84340dcd31b2514b2"
72
72
  }
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
 
3
3
  import {PopupStack} from '@workday/canvas-kit-popup-stack';
4
- import {useLocalRef, useIsRTL, useCanvasThemeToCssVars} from '@workday/canvas-kit-react/common';
4
+ import {useLocalRef, useCanvasThemeToCssVars, isElementRTL} from '@workday/canvas-kit-react/common';
5
5
  import {ThemeContext, Theme} from '@emotion/react';
6
6
 
7
7
  /**
@@ -51,7 +51,6 @@ export const usePopupStack = <E extends HTMLElement>(
51
51
  target?: HTMLElement | React.RefObject<HTMLElement>
52
52
  ): React.RefObject<HTMLElement> => {
53
53
  const {elementRef, localRef} = useLocalRef(ref);
54
- const isRTL = useIsRTL();
55
54
  // Pulls the theme from the context so that we can pass it to `useCanvasThemeToCssVars`
56
55
  const theme = React.useContext(ThemeContext as React.Context<Theme>);
57
56
 
@@ -93,12 +92,16 @@ export const usePopupStack = <E extends HTMLElement>(
93
92
  // The direction will properly follow the theme via React context, but portals lose the `dir`
94
93
  // hierarchy, so we'll add it back here.
95
94
  React.useLayoutEffect(() => {
96
- if (isRTL) {
97
- localRef.current?.setAttribute('dir', 'rtl');
98
- } else {
99
- localRef.current?.removeAttribute('dir');
95
+ const targetEl = target ? ('current' in target ? target.current : target) : undefined;
96
+ if (targetEl) {
97
+ const isRTL = isElementRTL(targetEl);
98
+ if (isRTL) {
99
+ localRef.current?.setAttribute('dir', 'rtl');
100
+ } else {
101
+ localRef.current?.setAttribute('dir', 'ltr');
102
+ }
100
103
  }
101
- }, [localRef, isRTL]);
104
+ }, [localRef, target]);
102
105
 
103
106
  /**
104
107
  * This pulls the className that gets generated by `useCanvasThemeToCssVars` and adds it to the Popup element to ensure