@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.
- package/button/lib/BaseButton.tsx +0 -6
- package/button/lib/Button.tsx +27 -2
- package/button/lib/ToolbarDropdownButton.tsx +21 -2
- package/button/lib/ToolbarIconButton.tsx +11 -1
- package/button/lib/parts/ButtonLabelIcon.tsx +21 -3
- package/collection/lib/keyUtils.ts +4 -2
- package/collection/lib/useListItemRemoveable.ts +2 -3
- package/collection/lib/useListItemRovingFocus.tsx +2 -3
- package/collection/lib/useListKeyboardHandler.ts +2 -4
- package/combobox/lib/hooks/useComboboxListKeyboardHandler.ts +2 -4
- package/common/lib/theming/README.md +3 -48
- package/common/lib/theming/useIsRTL.ts +5 -1
- package/common/lib/utils/index.ts +1 -0
- package/common/lib/utils/isElementRTL.ts +27 -0
- package/dist/commonjs/avatar/lib/Avatar.js +7 -7
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
- package/dist/commonjs/button/lib/BaseButton.d.ts +0 -5
- package/dist/commonjs/button/lib/BaseButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/BaseButton.js +28 -28
- package/dist/commonjs/button/lib/Button.d.ts +14 -0
- package/dist/commonjs/button/lib/Button.d.ts.map +1 -1
- package/dist/commonjs/button/lib/Button.js +2 -2
- package/dist/commonjs/button/lib/DeleteButton.js +1 -1
- package/dist/commonjs/button/lib/ExternalHyperlink.js +1 -1
- package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
- package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
- package/dist/commonjs/button/lib/TertiaryButton.js +3 -3
- package/dist/commonjs/button/lib/ToolbarDropdownButton.d.ts +11 -0
- package/dist/commonjs/button/lib/ToolbarDropdownButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/ToolbarDropdownButton.js +6 -3
- package/dist/commonjs/button/lib/ToolbarIconButton.d.ts +1 -0
- package/dist/commonjs/button/lib/ToolbarIconButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/ToolbarIconButton.js +4 -4
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +10 -1
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +2 -2
- package/dist/commonjs/collection/lib/keyUtils.d.ts +1 -1
- package/dist/commonjs/collection/lib/keyUtils.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/keyUtils.js +3 -1
- package/dist/commonjs/collection/lib/useListItemRemoveable.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListItemRemoveable.js +1 -2
- package/dist/commonjs/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListItemRovingFocus.js +1 -2
- package/dist/commonjs/collection/lib/useListKeyboardHandler.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/useListKeyboardHandler.js +1 -2
- package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/hooks/useComboboxListKeyboardHandler.js +1 -2
- package/dist/commonjs/common/lib/theming/useIsRTL.d.ts +5 -1
- package/dist/commonjs/common/lib/theming/useIsRTL.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/useIsRTL.js +5 -1
- package/dist/commonjs/common/lib/utils/index.d.ts +1 -0
- package/dist/commonjs/common/lib/utils/index.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/index.js +1 -0
- package/dist/commonjs/common/lib/utils/isElementRTL.d.ts +25 -0
- package/dist/commonjs/common/lib/utils/isElementRTL.d.ts.map +1 -0
- package/dist/commonjs/common/lib/utils/isElementRTL.js +31 -0
- package/dist/commonjs/expandable/lib/ExpandableIcon.d.ts +8 -4
- package/dist/commonjs/expandable/lib/ExpandableIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/AccentIcon.d.ts +8 -4
- package/dist/commonjs/icon/lib/AccentIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/AccentIcon.js +3 -2
- package/dist/commonjs/icon/lib/AppletIcon.d.ts +8 -5
- package/dist/commonjs/icon/lib/AppletIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/AppletIcon.js +2 -2
- package/dist/commonjs/icon/lib/Graphic.d.ts +8 -3
- package/dist/commonjs/icon/lib/Graphic.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/Graphic.js +1 -1
- package/dist/commonjs/icon/lib/Svg.d.ts +17 -1
- package/dist/commonjs/icon/lib/Svg.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/Svg.js +8 -5
- package/dist/commonjs/icon/lib/SystemIcon.d.ts +7 -0
- package/dist/commonjs/icon/lib/SystemIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/SystemIcon.js +1 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.d.ts +10 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.js +4 -4
- package/dist/commonjs/modal/lib/ModalOverlay.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/PageButton.js +2 -2
- package/dist/commonjs/popup/lib/hooks/usePopupStack.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupStack.js +10 -7
- package/dist/commonjs/segmented-control/lib/SegmentedControlButton.js +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +1 -5
- package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.js +1 -1
- package/dist/es6/avatar/lib/Avatar.js +7 -7
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
- package/dist/es6/button/lib/BaseButton.d.ts +0 -5
- package/dist/es6/button/lib/BaseButton.d.ts.map +1 -1
- package/dist/es6/button/lib/BaseButton.js +28 -28
- package/dist/es6/button/lib/Button.d.ts +14 -0
- package/dist/es6/button/lib/Button.d.ts.map +1 -1
- package/dist/es6/button/lib/Button.js +2 -2
- package/dist/es6/button/lib/DeleteButton.js +1 -1
- package/dist/es6/button/lib/ExternalHyperlink.js +1 -1
- package/dist/es6/button/lib/PrimaryButton.js +2 -2
- package/dist/es6/button/lib/SecondaryButton.js +2 -2
- package/dist/es6/button/lib/TertiaryButton.js +3 -3
- package/dist/es6/button/lib/ToolbarDropdownButton.d.ts +11 -0
- package/dist/es6/button/lib/ToolbarDropdownButton.d.ts.map +1 -1
- package/dist/es6/button/lib/ToolbarDropdownButton.js +6 -3
- package/dist/es6/button/lib/ToolbarIconButton.d.ts +1 -0
- package/dist/es6/button/lib/ToolbarIconButton.d.ts.map +1 -1
- package/dist/es6/button/lib/ToolbarIconButton.js +4 -4
- package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +10 -1
- package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
- package/dist/es6/button/lib/parts/ButtonLabelIcon.js +2 -2
- package/dist/es6/collection/lib/keyUtils.d.ts +1 -1
- package/dist/es6/collection/lib/keyUtils.d.ts.map +1 -1
- package/dist/es6/collection/lib/keyUtils.js +3 -1
- package/dist/es6/collection/lib/useListItemRemoveable.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListItemRemoveable.js +2 -3
- package/dist/es6/collection/lib/useListItemRovingFocus.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListItemRovingFocus.js +2 -3
- package/dist/es6/collection/lib/useListKeyboardHandler.d.ts.map +1 -1
- package/dist/es6/collection/lib/useListKeyboardHandler.js +2 -3
- package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.d.ts.map +1 -1
- package/dist/es6/combobox/lib/hooks/useComboboxListKeyboardHandler.js +2 -3
- package/dist/es6/common/lib/theming/useIsRTL.d.ts +5 -1
- package/dist/es6/common/lib/theming/useIsRTL.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/useIsRTL.js +5 -1
- package/dist/es6/common/lib/utils/index.d.ts +1 -0
- package/dist/es6/common/lib/utils/index.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/index.js +1 -0
- package/dist/es6/common/lib/utils/isElementRTL.d.ts +25 -0
- package/dist/es6/common/lib/utils/isElementRTL.d.ts.map +1 -0
- package/dist/es6/common/lib/utils/isElementRTL.js +27 -0
- package/dist/es6/expandable/lib/ExpandableIcon.d.ts +8 -4
- package/dist/es6/expandable/lib/ExpandableIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/AccentIcon.d.ts +8 -4
- package/dist/es6/icon/lib/AccentIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/AccentIcon.js +3 -2
- package/dist/es6/icon/lib/AppletIcon.d.ts +8 -5
- package/dist/es6/icon/lib/AppletIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/AppletIcon.js +2 -2
- package/dist/es6/icon/lib/Graphic.d.ts +8 -3
- package/dist/es6/icon/lib/Graphic.d.ts.map +1 -1
- package/dist/es6/icon/lib/Graphic.js +1 -1
- package/dist/es6/icon/lib/Svg.d.ts +17 -1
- package/dist/es6/icon/lib/Svg.d.ts.map +1 -1
- package/dist/es6/icon/lib/Svg.js +8 -5
- package/dist/es6/icon/lib/SystemIcon.d.ts +7 -0
- package/dist/es6/icon/lib/SystemIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/SystemIcon.js +1 -1
- package/dist/es6/icon/lib/SystemIconCircle.d.ts +10 -1
- package/dist/es6/icon/lib/SystemIconCircle.d.ts.map +1 -1
- package/dist/es6/icon/lib/SystemIconCircle.js +4 -4
- package/dist/es6/modal/lib/ModalOverlay.js +1 -1
- package/dist/es6/pagination/lib/Pagination/PageButton.js +2 -2
- package/dist/es6/popup/lib/hooks/usePopupStack.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/usePopupStack.js +11 -8
- package/dist/es6/segmented-control/lib/SegmentedControlButton.js +1 -1
- package/dist/es6/tabs/lib/TabsItem.d.ts +1 -5
- package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -1
- package/dist/es6/tabs/lib/TabsItem.js +1 -1
- package/icon/lib/AccentIcon.tsx +10 -1
- package/icon/lib/AppletIcon.tsx +3 -1
- package/icon/lib/Svg.tsx +23 -3
- package/icon/lib/SystemIconCircle.tsx +26 -3
- package/modal/lib/ModalOverlay.tsx +1 -1
- package/package.json +4 -4
- 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,
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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,
|
|
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-
|
|
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
|
|
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-
|
|
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',
|
package/icon/lib/AccentIcon.tsx
CHANGED
|
@@ -79,7 +79,15 @@ export const accentIconStencil = createStencil({
|
|
|
79
79
|
export const AccentIcon = createComponent('span')({
|
|
80
80
|
displayName: 'AccentIcon',
|
|
81
81
|
Component: (
|
|
82
|
-
{
|
|
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
|
])}
|
package/icon/lib/AppletIcon.tsx
CHANGED
|
@@ -62,7 +62,9 @@ export const appletIconStyles = ({
|
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
64
|
|
|
65
|
-
export interface AppletIconProps
|
|
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: (
|
|
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
|
-
{
|
|
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
|
|
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.
|
|
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.
|
|
56
|
-
"@workday/canvas-kit-styling": "^14.0.0-alpha.
|
|
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": "
|
|
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,
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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,
|
|
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
|