@workday/canvas-kit-preview-react 12.6.9 → 12.6.11
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/dist/commonjs/divider/lib/Divider.js +1 -1
- package/dist/commonjs/information-highlight/lib/InformationHighlight.js +7 -7
- package/dist/commonjs/information-highlight/lib/parts/Body.js +1 -1
- package/dist/commonjs/information-highlight/lib/parts/Heading.js +1 -1
- package/dist/commonjs/information-highlight/lib/parts/Link.js +1 -1
- package/dist/commonjs/loading-sparkles/lib/LoadingSparkles.js +3 -3
- package/dist/commonjs/multi-select/lib/MultiSelectInput.d.ts +57 -3
- package/dist/commonjs/multi-select/lib/MultiSelectInput.d.ts.map +1 -1
- package/dist/commonjs/multi-select/lib/MultiSelectInput.js +21 -12
- package/dist/commonjs/multi-select/lib/MultiSelectedItem.d.ts +4 -0
- package/dist/commonjs/multi-select/lib/MultiSelectedItem.d.ts.map +1 -1
- package/dist/commonjs/multi-select/lib/MultiSelectedItem.js +2 -2
- package/dist/commonjs/multi-select/lib/MultiSelectedList.d.ts +5 -0
- package/dist/commonjs/multi-select/lib/MultiSelectedList.d.ts.map +1 -1
- package/dist/commonjs/multi-select/lib/MultiSelectedList.js +2 -2
- package/dist/commonjs/radio/lib/RadioGroup.js +3 -3
- package/dist/commonjs/radio/lib/RadioLabel.js +1 -1
- package/dist/commonjs/radio/lib/RadioText.js +4 -4
- package/dist/commonjs/radio/lib/StyledRadioButton.js +5 -5
- package/dist/commonjs/status-indicator/lib/StatusIndicator.js +13 -13
- package/dist/commonjs/status-indicator/lib/StatusIndicatorLabel.js +1 -1
- package/dist/es6/divider/lib/Divider.js +1 -1
- package/dist/es6/information-highlight/lib/InformationHighlight.js +7 -7
- package/dist/es6/information-highlight/lib/parts/Body.js +1 -1
- package/dist/es6/information-highlight/lib/parts/Heading.js +1 -1
- package/dist/es6/information-highlight/lib/parts/Link.js +1 -1
- package/dist/es6/loading-sparkles/lib/LoadingSparkles.js +3 -3
- package/dist/es6/multi-select/lib/MultiSelectInput.d.ts +57 -3
- package/dist/es6/multi-select/lib/MultiSelectInput.d.ts.map +1 -1
- package/dist/es6/multi-select/lib/MultiSelectInput.js +23 -14
- package/dist/es6/multi-select/lib/MultiSelectedItem.d.ts +4 -0
- package/dist/es6/multi-select/lib/MultiSelectedItem.d.ts.map +1 -1
- package/dist/es6/multi-select/lib/MultiSelectedItem.js +2 -2
- package/dist/es6/multi-select/lib/MultiSelectedList.d.ts +5 -0
- package/dist/es6/multi-select/lib/MultiSelectedList.d.ts.map +1 -1
- package/dist/es6/multi-select/lib/MultiSelectedList.js +2 -2
- package/dist/es6/radio/lib/RadioGroup.js +3 -3
- package/dist/es6/radio/lib/RadioLabel.js +1 -1
- package/dist/es6/radio/lib/RadioText.js +4 -4
- package/dist/es6/radio/lib/StyledRadioButton.js +5 -5
- package/dist/es6/status-indicator/lib/StatusIndicator.js +13 -13
- package/dist/es6/status-indicator/lib/StatusIndicatorLabel.js +1 -1
- package/multi-select/lib/MultiSelectInput.tsx +71 -14
- package/multi-select/lib/MultiSelectedItem.tsx +6 -2
- package/multi-select/lib/MultiSelectedList.tsx +29 -17
- package/package.json +4 -4
|
@@ -23,15 +23,15 @@ const AI_COLORS = {
|
|
|
23
23
|
/**
|
|
24
24
|
* The animation for the sparkle.
|
|
25
25
|
*/
|
|
26
|
-
const LOADING_ANIMATION = keyframes({ name: "
|
|
27
|
-
const loadingSparklesIconStyles = createStyles({ name: "
|
|
26
|
+
const LOADING_ANIMATION = keyframes({ name: "vfis3", styles: "0%, 79%, 100%{opacity:0.2;transform:scale(0.55);}27%{opacity:1;transform:scale(1);}53%{opacity:0.6;transform:scale(0.7);}" });
|
|
27
|
+
const loadingSparklesIconStyles = createStyles({ name: "vfis4", styles: "animation-duration:1230ms;animation-fill-mode:both;animation-iteration-count:infinite;animation-name:animation-vfis3;animation-timing-function:ease-in-out;.wd-sparkle-fill{fill:#8C17D2;}&:nth-child(1){animation-delay:0ms;}&:nth-child(2){animation-delay:calc(1230ms * (1/3));}&:nth-child(3){animation-delay:calc(1230ms * (2/3));}@media (prefers-contrast: more){.wd-sparkle-fill{color:currentColor;fill:currentColor;}}" });
|
|
28
28
|
/**
|
|
29
29
|
* An individual loading sparkle. ✨
|
|
30
30
|
*/
|
|
31
31
|
const Sparkle = () => {
|
|
32
32
|
return (React.createElement(SystemIcon, { icon: sparkleIcon, cs: [loadingSparklesIconStyles], size: cssVar(system.space.x3) }));
|
|
33
33
|
};
|
|
34
|
-
const loadingSparklesStyles = createStyles({ name: "
|
|
34
|
+
const loadingSparklesStyles = createStyles({ name: "vfis5", styles: "display:inline-flex;gap:0.0625rem;" });
|
|
35
35
|
/**
|
|
36
36
|
* A simple component that displays three horizontal sparkles, to be used when an AI operation is in progress.
|
|
37
37
|
*/
|
|
@@ -1,7 +1,60 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { ErrorType } from '@workday/canvas-kit-react/common';
|
|
2
3
|
import { CSProps } from '@workday/canvas-kit-styling';
|
|
3
4
|
import { MultiSelectedItemProps } from './MultiSelectedItem';
|
|
4
|
-
export declare const
|
|
5
|
+
export declare const multiSelectInputStencil: import("@workday/canvas-kit-styling").Stencil<{
|
|
6
|
+
error: {
|
|
7
|
+
error: {
|
|
8
|
+
borderColor: "--cnvs-brand-error-base";
|
|
9
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-error-base`;
|
|
10
|
+
'&:has(:hover, :disabled, :focus-visible), &:is(.hover, .disabled, .focus)': {
|
|
11
|
+
borderColor: "--cnvs-brand-error-base";
|
|
12
|
+
};
|
|
13
|
+
'&:has(:focus-visible:not([disabled])), &.focus': {
|
|
14
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-error-base, 0 0 0 2px --cnvs-sys-color-border-inverse, 0 0 0 4px --cnvs-brand-common-focus-outline`;
|
|
15
|
+
outlineOffset: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
alert: {
|
|
19
|
+
borderColor: "--cnvs-brand-alert-darkest";
|
|
20
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-alert-base`;
|
|
21
|
+
'&:has(:hover, .hover, :disabled, .disabled, :focus-visible:not([disabled])), .focus:not(:has([disabled]))': {
|
|
22
|
+
borderColor: "--cnvs-brand-alert-darkest";
|
|
23
|
+
};
|
|
24
|
+
'&:has(:focus-visible, .focus):not(:has([disabled]))': {
|
|
25
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-alert-base,\n 0 0 0 2px --cnvs-sys-color-border-inverse,\n 0 0 0 4px --cnvs-brand-common-focus-outline`;
|
|
26
|
+
};
|
|
27
|
+
outlineOffset: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}, {}, {}, never, never>;
|
|
31
|
+
/** @deprecated use `multiSelectInputStencil` instead. This will be removed in a future version. */
|
|
32
|
+
export declare const multiSelectStencil: import("@workday/canvas-kit-styling").Stencil<{
|
|
33
|
+
error: {
|
|
34
|
+
error: {
|
|
35
|
+
borderColor: "--cnvs-brand-error-base";
|
|
36
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-error-base`;
|
|
37
|
+
'&:has(:hover, :disabled, :focus-visible), &:is(.hover, .disabled, .focus)': {
|
|
38
|
+
borderColor: "--cnvs-brand-error-base";
|
|
39
|
+
};
|
|
40
|
+
'&:has(:focus-visible:not([disabled])), &.focus': {
|
|
41
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-error-base, 0 0 0 2px --cnvs-sys-color-border-inverse, 0 0 0 4px --cnvs-brand-common-focus-outline`;
|
|
42
|
+
outlineOffset: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
alert: {
|
|
46
|
+
borderColor: "--cnvs-brand-alert-darkest";
|
|
47
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-alert-base`;
|
|
48
|
+
'&:has(:hover, .hover, :disabled, .disabled, :focus-visible:not([disabled])), .focus:not(:has([disabled]))': {
|
|
49
|
+
borderColor: "--cnvs-brand-alert-darkest";
|
|
50
|
+
};
|
|
51
|
+
'&:has(:focus-visible, .focus):not(:has([disabled]))': {
|
|
52
|
+
boxShadow: `inset 0 0 0 ${string} --cnvs-brand-alert-base,\n 0 0 0 2px --cnvs-sys-color-border-inverse,\n 0 0 0 4px --cnvs-brand-common-focus-outline`;
|
|
53
|
+
};
|
|
54
|
+
outlineOffset: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
}, {}, {}, never, never>;
|
|
5
58
|
export declare const useMultiSelectInput: import("@workday/canvas-kit-react/common").BehaviorHook<{
|
|
6
59
|
state: {
|
|
7
60
|
stackRef: React.RefObject<HTMLDivElement>;
|
|
@@ -192,9 +245,10 @@ export declare const useMultiSelectInput: import("@workday/canvas-kit-react/comm
|
|
|
192
245
|
readonly onClick: (event: React.MouseEvent<Element, MouseEvent>) => void;
|
|
193
246
|
}, {}>>>>>>>, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, import("@workday/canvas-kit-react/common").MergeProps<{}, {}>>>>>>>>;
|
|
194
247
|
export interface MultiSelectInputProps extends CSProps, Pick<React.InputHTMLAttributes<HTMLInputElement>, 'disabled' | 'className' | 'style' | 'aria-labelledby'>, Pick<MultiSelectedItemProps, 'removeLabel'> {
|
|
248
|
+
error?: ErrorType;
|
|
195
249
|
}
|
|
196
250
|
export declare const MultiSelectInput: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"input", import("@workday/canvas-kit-react/text-input").TextInputProps> & {
|
|
197
|
-
ErrorType: typeof
|
|
251
|
+
ErrorType: typeof ErrorType;
|
|
198
252
|
}, MultiSelectInputProps, {
|
|
199
253
|
state: {
|
|
200
254
|
stackRef: React.RefObject<HTMLDivElement>;
|
|
@@ -346,7 +400,7 @@ export declare const MultiSelectInput: import("@workday/canvas-kit-react/common"
|
|
|
346
400
|
};
|
|
347
401
|
}>;
|
|
348
402
|
export declare const MultiSelectSearchInput: import("@workday/canvas-kit-react/common").ElementComponentM<import("@workday/canvas-kit-react/common").ElementComponent<"input", import("@workday/canvas-kit-react/text-input").TextInputProps> & {
|
|
349
|
-
ErrorType: typeof
|
|
403
|
+
ErrorType: typeof ErrorType;
|
|
350
404
|
}, MultiSelectInputProps, {
|
|
351
405
|
state: {
|
|
352
406
|
stackRef: React.RefObject<HTMLDivElement>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectInput.d.ts","sourceRoot":"","sources":["../../../../multi-select/lib/MultiSelectInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiSelectInput.d.ts","sourceRoot":"","sources":["../../../../multi-select/lib/MultiSelectInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EACL,SAAS,EAIV,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAgB,OAAO,EAA6B,MAAM,6BAA6B,CAAC;AAM/F,OAAO,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAG3D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;wBA8GlC,CAAC;AAEH,mGAAmG;AACnG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;wBAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAGT,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sMA2BzC,CAAC;AAEF,MAAM,WAAW,qBACf,SAAQ,OAAO,EACb,IAAI,CACF,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,iBAAiB,CACvD,EACD,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC5B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDlC,CAAC"}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { system } from '@workday/canvas-tokens-web';
|
|
2
|
+
import { brand, system } from '@workday/canvas-tokens-web';
|
|
3
3
|
import { caretDownSmallIcon, searchIcon } from '@workday/canvas-system-icons-web';
|
|
4
4
|
import { composeHooks, createElemPropsHook, createSubcomponent, } from '@workday/canvas-kit-react/common';
|
|
5
|
-
import { createStencil, handleCsProp } from '@workday/canvas-kit-styling';
|
|
6
|
-
import { InputGroup, TextInput } from '@workday/canvas-kit-react/text-input';
|
|
5
|
+
import { createStencil, handleCsProp, px2rem, calc } from '@workday/canvas-kit-styling';
|
|
6
|
+
import { InputGroup, TextInput, textInputStencil } from '@workday/canvas-kit-react/text-input';
|
|
7
7
|
import { SystemIcon } from '@workday/canvas-kit-react/icon';
|
|
8
8
|
import { useComboboxInput, useComboboxInputConstrained } from '@workday/canvas-kit-react/combobox';
|
|
9
9
|
import { useMultiSelectModel } from './useMultiSelectModel';
|
|
10
10
|
import { MultiSelectedList } from './MultiSelectedList';
|
|
11
|
-
export const
|
|
12
|
-
|
|
13
|
-
}, "
|
|
11
|
+
export const multiSelectInputStencil = createStencil({
|
|
12
|
+
//@ts-ignore Types don't like defining a variable in `base` and using a variable in a nested selector. One or the other is fine, but not both.
|
|
13
|
+
base: { name: "vfis2b", styles: "box-sizing:border-box;border:1px solid var(--cnvs-sys-color-border-input-default);display:flex;flex-direction:column;background-color:var(--cnvs-sys-color-bg-default);border-radius:var(--cnvs-sys-shape-x1);min-height:var(--cnvs-sys-space-x10);transition:0.2s box-shadow, 0.2s border-color;margin:0;--width-text-input-d81f49:100%;&:hover, &.hover{border-color:var(--cnvs-sys-color-border-input-strong);}&:has(:focus-visible:not([disabled])), &.focus{border-color:var(--cnvs-sys-color-border-primary-default);box-shadow:inset 0 0 0 1px var(--cnvs-sys-color-border-primary-default);}& [data-part=\"user-input\"]{font-family:var(--cnvs-sys-font-family-default);font-weight:var(--cnvs-sys-font-weight-normal);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);background-color:var(--cnvs-sys-color-bg-transparent);border-radius:var(--cnvs-sys-shape-x1);&:where([data-part=\"user-input\"], [data-part=\"form-input\"]){height:calc(var(--cnvs-sys-space-x10) - 0.125rem);}border:none !important;box-shadow:none !important;outline-width:0px;&:where(:not([aria-autocomplete])){caret-color:transparent;cursor:default;&::selection{background-color:transparent;}}}&:has(:disabled, .disabled){border-color:var(--cnvs-sys-color-border-input-disabled);color:var(--cnvs-sys-color-text-disabled);}& :where([data-part=\"form-input\"]){position:absolute;top:var(--cnvs-sys-space-zero);bottom:var(--cnvs-sys-space-zero);left:var(--cnvs-sys-space-zero);right:var(--cnvs-sys-space-zero);opacity:var(--cnvs-sys-opacity-zero);cursor:default;pointer-events:none;}& :where([data-part=\"separator\"]){background-color:var(--cnvs-sys-color-border-divider);height:1px;margin:var(--cnvs-sys-space-zero) var(--cnvs-sys-space-x2);}& :where([data-part=\"list\"]){display:flex;gap:var(--cnvs-sys-space-x2);padding:var(--cnvs-sys-space-x2);flex-wrap:wrap;}" },
|
|
14
|
+
modifiers: {
|
|
15
|
+
error: {
|
|
16
|
+
error: { name: "vfis2c", styles: "border-color:var(--cnvs-brand-error-base);box-shadow:inset 0 0 0 0.0625rem var(--cnvs-brand-error-base);&:has(:hover, :disabled, :focus-visible), &:is(.hover, .disabled, .focus){border-color:var(--cnvs-brand-error-base);}&:has(:focus-visible:not([disabled])), &.focus{box-shadow:inset 0 0 0 0.0625rem var(--cnvs-brand-error-base), 0 0 0 2px var(--cnvs-sys-color-border-inverse), 0 0 0 4px var(--cnvs-brand-common-focus-outline);outline-offset:0.125rem;}" },
|
|
17
|
+
alert: { name: "vfis2d", styles: "border-color:var(--cnvs-brand-alert-darkest);box-shadow:inset 0 0 0 0.125rem var(--cnvs-brand-alert-base);&:has(:hover, .hover, :disabled, .disabled, :focus-visible:not([disabled])), .focus:not(:has([disabled])){border-color:var(--cnvs-brand-alert-darkest);}&:has(:focus-visible, .focus):not(:has([disabled])){box-shadow:inset 0 0 0 0.125rem var(--cnvs-brand-alert-base),\n 0 0 0 2px var(--cnvs-sys-color-border-inverse),\n 0 0 0 4px var(--cnvs-brand-common-focus-outline);}outline-offset:0.125rem;" }
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}, "multi-select-input-36ec84");
|
|
21
|
+
/** @deprecated use `multiSelectInputStencil` instead. This will be removed in a future version. */
|
|
22
|
+
export const multiSelectStencil = multiSelectInputStencil;
|
|
14
23
|
export const useMultiSelectInput = composeHooks(createElemPropsHook(useMultiSelectModel)((model, ref) => {
|
|
15
24
|
return {
|
|
16
25
|
onKeyDown(event) {
|
|
@@ -38,28 +47,28 @@ export const useMultiSelectInput = composeHooks(createElemPropsHook(useMultiSele
|
|
|
38
47
|
export const MultiSelectInput = createSubcomponent(TextInput)({
|
|
39
48
|
modelHook: useMultiSelectModel,
|
|
40
49
|
elemPropsHook: useMultiSelectInput,
|
|
41
|
-
})(({ className, cs, style, 'aria-labelledby': ariaLabelledBy, removeLabel, formInputProps, ...elemProps }, Element
|
|
42
|
-
return (React.createElement("div", { ...handleCsProp({ className, cs, style },
|
|
50
|
+
})(({ className, cs, style, error, 'aria-labelledby': ariaLabelledBy, removeLabel, disabled, formInputProps, ...elemProps }, Element) => {
|
|
51
|
+
return (React.createElement("div", { ...handleCsProp({ className, cs, style }, multiSelectInputStencil({ error })) },
|
|
43
52
|
React.createElement(InputGroup, null,
|
|
44
53
|
React.createElement(InputGroup.Input, { "data-part": "form-input", ...formInputProps }),
|
|
45
|
-
React.createElement(InputGroup.Input, { "data-part": "user-input", as: Element, "aria-labelledby": ariaLabelledBy, readOnly: true, ...elemProps }),
|
|
54
|
+
React.createElement(InputGroup.Input, { "data-part": "user-input", as: Element, "aria-labelledby": ariaLabelledBy, readOnly: true, disabled: disabled, error: error, ...elemProps }),
|
|
46
55
|
React.createElement(InputGroup.InnerEnd, { pointerEvents: "none" },
|
|
47
56
|
React.createElement(SystemIcon, { icon: caretDownSmallIcon }))),
|
|
48
|
-
React.createElement(MultiSelectedList, { removeLabel: removeLabel })));
|
|
57
|
+
React.createElement(MultiSelectedList, { disabled: disabled, removeLabel: removeLabel })));
|
|
49
58
|
});
|
|
50
59
|
export const MultiSelectSearchInput = createSubcomponent(TextInput)({
|
|
51
60
|
modelHook: useMultiSelectModel,
|
|
52
61
|
elemPropsHook: useMultiSelectInput,
|
|
53
|
-
})(({ className, cs, style, 'aria-labelledby': ariaLabelledBy, removeLabel, formInputProps, ref, ...elemProps }, Element
|
|
54
|
-
return (React.createElement("div", { ...handleCsProp({ className, cs, style },
|
|
62
|
+
})(({ className, cs, style, 'aria-labelledby': ariaLabelledBy, removeLabel, formInputProps, ref, disabled, error, ...elemProps }, Element) => {
|
|
63
|
+
return (React.createElement("div", { ...handleCsProp({ className, cs, style }, multiSelectInputStencil({})) },
|
|
55
64
|
React.createElement(InputGroup, null,
|
|
56
65
|
React.createElement(InputGroup.InnerStart, { pointerEvents: "none", width: system.space.x8 },
|
|
57
66
|
React.createElement(SystemIcon, { icon: searchIcon, size: system.space.x4 })),
|
|
58
67
|
React.createElement(InputGroup.Input, { "data-part": "form-input", placeholder: null, ...formInputProps }),
|
|
59
|
-
React.createElement(InputGroup.Input, { "data-part": "user-input", as: Element, "aria-labelledby": ariaLabelledBy, ...elemProps }),
|
|
68
|
+
React.createElement(InputGroup.Input, { "data-part": "user-input", as: Element, "aria-labelledby": ariaLabelledBy, disabled: disabled, error: error, ...elemProps }),
|
|
60
69
|
React.createElement(InputGroup.InnerEnd, { width: system.space.x4 },
|
|
61
70
|
React.createElement(InputGroup.ClearButton, null)),
|
|
62
71
|
React.createElement(InputGroup.InnerEnd, { pointerEvents: "none" },
|
|
63
72
|
React.createElement(SystemIcon, { icon: caretDownSmallIcon }))),
|
|
64
|
-
React.createElement(MultiSelectedList, { removeLabel: removeLabel })));
|
|
73
|
+
React.createElement(MultiSelectedList, { removeLabel: removeLabel, disabled: disabled })));
|
|
65
74
|
});
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export interface MultiSelectedItemProps {
|
|
3
|
+
/**
|
|
4
|
+
* Disabled on the `Pill` component.
|
|
5
|
+
*/
|
|
6
|
+
disabled?: boolean;
|
|
3
7
|
/**
|
|
4
8
|
* Remove label on a MultiSelectedItem. In English, the label may be "Remove" and the screen
|
|
5
9
|
* reader will read out "Remove {option}".
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectedItem.d.ts","sourceRoot":"","sources":["../../../../multi-select/lib/MultiSelectedItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iIAShC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"MultiSelectedItem.d.ts","sourceRoot":"","sources":["../../../../multi-select/lib/MultiSelectedItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iIAShC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC"}
|
|
@@ -12,8 +12,8 @@ export const useMultiSelectedItem = composeHooks(createElemPropsHook(useMultiSel
|
|
|
12
12
|
export const MultiSelectedItem = createSubcomponent('span')({
|
|
13
13
|
modelHook: useMultiSelectModel,
|
|
14
14
|
elemPropsHook: useMultiSelectedItem,
|
|
15
|
-
})(({ children, removeLabel, ref, ...elemProps }, Element) => {
|
|
16
|
-
return (React.createElement(Pill, { as: Element, variant: "removable" },
|
|
15
|
+
})(({ children, removeLabel, disabled, ref, ...elemProps }, Element) => {
|
|
16
|
+
return (React.createElement(Pill, { as: Element, disabled: disabled, variant: "removable" },
|
|
17
17
|
children,
|
|
18
18
|
React.createElement(Pill.IconButton, { "aria-label": removeLabel, ref: ref, ...elemProps })));
|
|
19
19
|
});
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { MultiSelectedItemProps } from './MultiSelectedItem';
|
|
3
3
|
export interface MultiSelectedListProps extends MultiSelectedItemProps, React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/**
|
|
5
|
+
* Disabled is forwarded to the MultiSelectedItem component to make sure each item is also
|
|
6
|
+
* disabled.
|
|
7
|
+
*/
|
|
8
|
+
disabled?: boolean;
|
|
4
9
|
}
|
|
5
10
|
export declare const MultiSelectedList: import("@workday/canvas-kit-react/common").ElementComponentM<"div", MultiSelectedListProps, {
|
|
6
11
|
state: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelectedList.d.ts","sourceRoot":"","sources":["../../../../multi-select/lib/MultiSelectedList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAoB,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,sBACf,SAAQ,sBAAsB,EAC5B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiSelectedList.d.ts","sourceRoot":"","sources":["../../../../multi-select/lib/MultiSelectedList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAoB,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,sBACf,SAAQ,sBAAsB,EAC5B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB7B,CAAC"}
|
|
@@ -5,8 +5,8 @@ import { useMultiSelectModel } from './useMultiSelectModel';
|
|
|
5
5
|
import { MultiSelectedItem } from './MultiSelectedItem';
|
|
6
6
|
export const MultiSelectedList = createSubcomponent('div')({
|
|
7
7
|
modelHook: useMultiSelectModel,
|
|
8
|
-
})(({ 'aria-labelledby': ariaLabelledBy, removeLabel }, Element, model) => {
|
|
8
|
+
})(({ 'aria-labelledby': ariaLabelledBy, disabled, removeLabel }, Element, model) => {
|
|
9
9
|
return model.selected.state.items.length ? (React.createElement(React.Fragment, null,
|
|
10
10
|
React.createElement("div", { "data-part": "separator" }),
|
|
11
|
-
React.createElement(ListBox, { model: model.selected, as: Element, role: "listbox", "aria-orientation": "horizontal", "aria-labelledby": ariaLabelledBy }, item => React.createElement(MultiSelectedItem, { removeLabel: removeLabel }, item.textValue)))) : null;
|
|
11
|
+
React.createElement(ListBox, { model: model.selected, as: Element, role: "listbox", "aria-orientation": "horizontal", "aria-labelledby": ariaLabelledBy }, item => (React.createElement(MultiSelectedItem, { disabled: disabled, removeLabel: removeLabel }, item.textValue))))) : null;
|
|
12
12
|
});
|
|
@@ -10,11 +10,11 @@ import { brand, system } from '@workday/canvas-tokens-web';
|
|
|
10
10
|
* Styles for RadioGroup
|
|
11
11
|
*/
|
|
12
12
|
const radioGroupStencil = createStencil({
|
|
13
|
-
base: { name: "
|
|
13
|
+
base: { name: "vfisw", styles: "box-sizing:border-box;display:flex;flex-direction:column;border-radius:var(--cnvs-sys-shape-x1);gap:var(--cnvs-sys-space-x2);padding:0.625rem var(--cnvs-sys-space-x3) var(--cnvs-sys-space-x2);margin:0 calc(var(--cnvs-sys-space-x3) * -1);transition:100ms box-shadow;width:fit-content;" },
|
|
14
14
|
modifiers: {
|
|
15
15
|
error: {
|
|
16
|
-
error: { name: "
|
|
17
|
-
alert: { name: "
|
|
16
|
+
error: { name: "vfisx", styles: "box-shadow:inset 0 0 0 0.125rem var(--cnvs-brand-error-base);" },
|
|
17
|
+
alert: { name: "vfisy", styles: "box-shadow:inset 0 0 0 0.0625rem var(--cnvs-brand-alert-darkest), inset 0 0 0 0.1875rem var(--cnvs-brand-alert-base);" }
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}, "radio-group-ce2b62");
|
|
@@ -7,7 +7,7 @@ import { RadioText } from './RadioText';
|
|
|
7
7
|
import { createStencil } from '@workday/canvas-kit-styling';
|
|
8
8
|
import { system } from '@workday/canvas-tokens-web';
|
|
9
9
|
const radioLabelStencil = createStencil({
|
|
10
|
-
base: { name: "
|
|
10
|
+
base: { name: "vfisv", styles: "box-sizing:border-box;align-items:flex-start;min-height:var(--cnvs-sys-space-x6);position:relative;gap:var(--cnvs-sys-space-x3);" }
|
|
11
11
|
}, "radio-label-0cca27");
|
|
12
12
|
export const RadioLabelContext = React.createContext({});
|
|
13
13
|
export const RadioLabel = createSubcomponent('label')({
|
|
@@ -8,19 +8,19 @@ import { system } from '@workday/canvas-tokens-web';
|
|
|
8
8
|
import { mergeStyles } from '@workday/canvas-kit-react/layout';
|
|
9
9
|
const radioTextStencil = createStencil({
|
|
10
10
|
extends: textStencil,
|
|
11
|
-
base: { name: "
|
|
11
|
+
base: { name: "vfisr", styles: "box-sizing:border-box;cursor:pointer;" },
|
|
12
12
|
modifiers: {
|
|
13
13
|
variant: {
|
|
14
|
-
inverse: { name: "
|
|
14
|
+
inverse: { name: "vfiss", styles: "color:var(--cnvs-sys-color-text-inverse);" }
|
|
15
15
|
},
|
|
16
16
|
disabled: {
|
|
17
|
-
true: { name: "
|
|
17
|
+
true: { name: "vfist", styles: "cursor:default;color:var(--cnvs-sys-color-text-disabled);" }
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
compound: [
|
|
21
21
|
{
|
|
22
22
|
modifiers: { variant: 'inverse', disabled: true },
|
|
23
|
-
styles: { name: "
|
|
23
|
+
styles: { name: "vfisu", styles: "color:var(--cnvs-sys-color-text-inverse);opacity:var(--cnvs-sys-opacity-disabled);" }
|
|
24
24
|
}
|
|
25
25
|
],
|
|
26
26
|
defaultModifiers: {
|
|
@@ -7,10 +7,10 @@ import { RadioLabelContext } from './RadioLabel';
|
|
|
7
7
|
const radioWidth = 18;
|
|
8
8
|
const radioHeight = 18;
|
|
9
9
|
const radioInputStencil = createStencil({
|
|
10
|
-
base: { name: "
|
|
10
|
+
base: { name: "vfis6", styles: "box-sizing:border-box;cursor:pointer;height:1.125rem;width:1.125rem;border-radius:var(--cnvs-sys-shape-round);position:absolute;margin:var(--cnvs-sys-space-zero);&:focus-visible, &.focus, &:active{outline:transparent;}&:disabled, &.disabled{cursor:auto;+ .cnvs-radio-check{border-color:var(--cnvs-sys-color-border-input-disabled);background-color:var(--cnvs-sys-color-bg-alt-softer);}&:hover + .cnvs-radio-check, &.hover + .cnvs-radio-check{border-color:var(--cnvs-sys-color-border-input-disabled);}&:checked + .cnvs-radio-check, &.checked + .cnvs-radio-check{background-color:var(--cnvs-brand-primary-accent);border:0.3125rem solid var(--cnvs-brand-primary-base);}}+ .cnvs-radio-check{display:flex;flex-direction:column;align-items:center;background-color:var(--cnvs-sys-color-bg-default);border-radius:var(--cnvs-sys-shape-round);box-sizing:border-box;border:0.0625rem solid var(--cnvs-sys-color-border-input-default);height:1.125rem;width:1.125rem;justify-content:center;pointer-events:none;position:absolute;transition:border 200ms ease, background 200ms;opacity:var(--cnvs-sys-opacity-full);}&:hover + .cnvs-radio-check, &.hover + .cnvs-radio-check{border-color:var(--cnvs-sys-color-border-input-strong);}&:focus-visible + .cnvs-radio-check, &.focus + .cnvs-radio-check{border-color:var(--cnvs-sys-color-border-primary-default);box-shadow:0 0 0 0px var(--cnvs-sys-color-border-inverse), 0 0 0 1px var(--cnvs-brand-common-focus-outline);}&:focus-visible:hover + .cnvs-radio-check, &.focus:hover + .cnvs-radio-check{outline:transparent;}&:checked + .cnvs-radio-check, &.checked + .cnvs-radio-check{background-color:var(--cnvs-brand-primary-accent);border:0.3125rem solid var(--cnvs-brand-primary-base);}&:focus-visible:checked + .cnvs-radio-check, &:focus-visible:hover:checked + .cnvs-radio-check, &.focus:checked + .cnvs-radio-check, &.focus:hover:checked + .cnvs-radio-check{outline:transparent;box-shadow:0 0 0 2px var(--cnvs-sys-color-border-inverse), 0 0 0 4px var(--cnvs-brand-common-focus-outline);}" },
|
|
11
11
|
modifiers: {
|
|
12
12
|
variant: {
|
|
13
|
-
inverse: { name: "
|
|
13
|
+
inverse: { name: "vfis7", styles: "+ .cnvs-radio-check{background-color:var(--cnvs-sys-color-bg-alt-softer);border-color:var(--cnvs-sys-color-border-input-inverse);}&:disabled, &.disabled{opacity:var(--cnvs-sys-opacity-disabled);+ .cnvs-radio-check{background-color:var(--cnvs-sys-color-bg-alt-softer);border-color:var(--cnvs-sys-color-border-input-disabled);opacity:var(--cnvs-sys-opacity-disabled);}&:checked + .cnvs-radio-check, &.checked + .cnvs-radio-check{background-color:var(--cnvs-brand-primary-base);border-color:var(--cnvs-sys-color-border-inverse);}}&:hover + .cnvs-radio-check, &.hover + .cnvs-radio-check{border-color:var(--cnvs-sys-color-border-input-inverse);}&:focus-visible + .cnvs-radio-check, &.focus + .cnvs-radio-check{border-color:var(--cnvs-sys-color-border-input-inverse);}&:checked + .cnvs-radio-check, &.checked + .cnvs-radio-check{background-color:var(--cnvs-brand-primary-base);border-color:var(--cnvs-sys-color-border-inverse);}&:focus-visible + .cnvs-radio-check, &:focus-visible:hover + .cnvs-radio-check, &.focus + .cnvs-radio-check, &.focus:hover + .cnvs-radio-check{box-shadow:0 0 0 0px var(--cnvs-sys-color-border-contrast-default), 0 0 0 2px var(--cnvs-sys-color-border-inverse);}&:focus-visible:checked + .cnvs-radio-check, &:focus-visible:hover:checked + .cnvs-radio-check, &.focus:checked + .cnvs-radio-check, &.focus:hover:checked + .cnvs-radio-check{box-shadow:0 0 0 2px var(--cnvs-sys-color-border-contrast-default), 0 0 0 4px var(--cnvs-sys-color-border-inverse);}" }
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}, "radio-input-f05aaa");
|
|
@@ -21,13 +21,13 @@ const StyledRadioInput = createComponent('input')({
|
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
23
|
const radioInputWrapperStyles = createStencil({
|
|
24
|
-
base: { name: "
|
|
24
|
+
base: { name: "vfis8", styles: "box-sizing:border-box;height:1.125rem;width:1.125rem;flex:0 0 auto;::before{content:'';position:absolute;border-radius:var(--cnvs-sys-shape-round);height:1.125rem;transition:box-shadow 150ms ease-out;width:1.125rem;pointer-events:none;opacity:var(--cnvs-sys-opacity-full);}&:hover:before, &.hover:before{box-shadow:0 0 0 calc(var(--cnvs-sys-space-x2) - 0.0625rem) var(--cnvs-sys-color-bg-alt-soft);}" },
|
|
25
25
|
modifiers: {
|
|
26
26
|
variant: {
|
|
27
|
-
inverse: { name: "
|
|
27
|
+
inverse: { name: "vfis9", styles: "::before{opacity:var(--cnvs-sys-opacity-disabled);}" }
|
|
28
28
|
},
|
|
29
29
|
disabled: {
|
|
30
|
-
true: { name: "
|
|
30
|
+
true: { name: "vfisa", styles: "&:hover:before, &.hover:before{box-shadow:none;cursor:auto;}" }
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
}, "radio-input-wrapper-styles-fce2c4");
|
|
@@ -7,31 +7,31 @@ import { systemIconStencil } from '@workday/canvas-kit-react/icon';
|
|
|
7
7
|
import { StatusIndicatorIcon } from './StatusIndicatorIcon';
|
|
8
8
|
import { StatusIndicatorLabel } from './StatusIndicatorLabel';
|
|
9
9
|
const statusIndicatorStencil = createStencil({
|
|
10
|
-
base: { name: "
|
|
10
|
+
base: { name: "vfis1g", styles: "box-sizing:border-box;display:inline-flex;gap:var(--cnvs-sys-space-x1);max-width:12.5rem;align-items:center;border-radius:var(--cnvs-sys-shape-half);height:1.25rem;padding:var(--cnvs-sys-space-zero) var(--cnvs-sys-space-x1);outline:0.0625rem solid transparent;" },
|
|
11
11
|
modifiers: {
|
|
12
12
|
gray: {
|
|
13
|
-
high: { name: "
|
|
14
|
-
low: { name: "
|
|
13
|
+
high: { name: "vfis1k", styles: "color:var(--cnvs-sys-color-static-white);--color-system-icon-212f69:var(--cnvs-sys-color-static-white);background:var(--cnvs-sys-color-static-gray-default);" },
|
|
14
|
+
low: { name: "vfis1l", styles: "color:var(--cnvs-sys-color-static-gray-strong);--color-system-icon-212f69:var(--cnvs-sys-color-static-gray-strong);background:var(--cnvs-sys-color-static-gray-soft);" }
|
|
15
15
|
},
|
|
16
16
|
orange: {
|
|
17
|
-
high: { name: "
|
|
18
|
-
low: { name: "
|
|
17
|
+
high: { name: "vfis1m", styles: "color:var(--cnvs-sys-color-static-gray-stronger);--color-system-icon-212f69:var(--cnvs-sys-color-static-gray-stronger);background:var(--cnvs-sys-color-static-orange-default);" },
|
|
18
|
+
low: { name: "vfis1n", styles: "color:var(--cnvs-sys-color-static-gold-stronger);--color-system-icon-212f69:var(--cnvs-sys-color-static-gold-stronger);background:var(--cnvs-sys-color-static-orange-soft);" }
|
|
19
19
|
},
|
|
20
20
|
blue: {
|
|
21
|
-
high: { name: "
|
|
22
|
-
low: { name: "
|
|
21
|
+
high: { name: "vfis1o", styles: "color:var(--cnvs-sys-color-static-white);--color-system-icon-212f69:var(--cnvs-sys-color-static-white);background:var(--cnvs-sys-color-static-blue-default);" },
|
|
22
|
+
low: { name: "vfis1p", styles: "color:var(--cnvs-sys-color-static-blue-strong);--color-system-icon-212f69:var(--cnvs-sys-color-static-blue-strong);background:var(--cnvs-sys-color-static-blue-soft);" }
|
|
23
23
|
},
|
|
24
24
|
green: {
|
|
25
|
-
high: { name: "
|
|
26
|
-
low: { name: "
|
|
25
|
+
high: { name: "vfis1q", styles: "color:var(--cnvs-sys-color-static-white);--color-system-icon-212f69:var(--cnvs-sys-color-static-white);background:var(--cnvs-sys-color-static-green-strong);" },
|
|
26
|
+
low: { name: "vfis1r", styles: "color:var(--cnvs-sys-color-static-green-strong);--color-system-icon-212f69:var(--cnvs-sys-color-static-green-strong);background:var(--cnvs-sys-color-static-green-soft);" }
|
|
27
27
|
},
|
|
28
28
|
red: {
|
|
29
|
-
high: { name: "
|
|
30
|
-
low: { name: "
|
|
29
|
+
high: { name: "vfis1s", styles: "color:var(--cnvs-sys-color-static-white);--color-system-icon-212f69:var(--cnvs-sys-color-static-white);background:var(--cnvs-sys-color-static-red-default);" },
|
|
30
|
+
low: { name: "vfis1t", styles: "color:var(--cnvs-sys-color-static-red-strong);--color-system-icon-212f69:var(--cnvs-sys-color-static-red-strong);background:var(--cnvs-sys-color-static-red-soft);" }
|
|
31
31
|
},
|
|
32
32
|
transparent: {
|
|
33
|
-
high: { name: "
|
|
34
|
-
low: { name: "
|
|
33
|
+
high: { name: "vfis1u", styles: "color:var(--cnvs-sys-color-static-white);--color-system-icon-212f69:var(--cnvs-sys-color-static-white);background:var(--cnvs-sys-color-bg-translucent);" },
|
|
34
|
+
low: { name: "vfis1v", styles: "color:var(--cnvs-sys-color-static-white);--color-system-icon-212f69:var(--cnvs-sys-color-static-white);background:var(--cnvs-sys-color-bg-translucent);" }
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}, "status-indicator-1a565e");
|
|
@@ -6,7 +6,7 @@ import { mergeStyles } from '@workday/canvas-kit-react/layout';
|
|
|
6
6
|
import { system } from '@workday/canvas-tokens-web';
|
|
7
7
|
const statusIndicatorLabelStencil = createStencil({
|
|
8
8
|
extends: textStencil,
|
|
9
|
-
base: { name: "
|
|
9
|
+
base: { name: "vfis1f", styles: "box-sizing:border-box;font-weight:var(--cnvs-sys-font-weight-bold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize;color:inherit;" },
|
|
10
10
|
defaultModifiers: { typeLevel: 'subtext.large' }
|
|
11
11
|
}, "status-indicator-label-fbd39a");
|
|
12
12
|
export const StatusIndicatorLabel = createComponent('span')({
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {system} from '@workday/canvas-tokens-web';
|
|
3
|
+
import {brand, system} from '@workday/canvas-tokens-web';
|
|
4
4
|
import {caretDownSmallIcon, searchIcon} from '@workday/canvas-system-icons-web';
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
+
ErrorType,
|
|
7
8
|
composeHooks,
|
|
8
9
|
createElemPropsHook,
|
|
9
10
|
createSubcomponent,
|
|
10
11
|
} from '@workday/canvas-kit-react/common';
|
|
11
|
-
import {createStencil, CSProps, handleCsProp} from '@workday/canvas-kit-styling';
|
|
12
|
-
import {InputGroup, TextInput} from '@workday/canvas-kit-react/text-input';
|
|
12
|
+
import {createStencil, CSProps, handleCsProp, px2rem, calc} from '@workday/canvas-kit-styling';
|
|
13
|
+
import {InputGroup, TextInput, textInputStencil} from '@workday/canvas-kit-react/text-input';
|
|
13
14
|
import {SystemIcon} from '@workday/canvas-kit-react/icon';
|
|
14
15
|
import {useComboboxInput, useComboboxInputConstrained} from '@workday/canvas-kit-react/combobox';
|
|
15
16
|
|
|
@@ -17,7 +18,8 @@ import {useMultiSelectModel} from './useMultiSelectModel';
|
|
|
17
18
|
import {MultiSelectedItemProps} from './MultiSelectedItem';
|
|
18
19
|
import {MultiSelectedList} from './MultiSelectedList';
|
|
19
20
|
|
|
20
|
-
export const
|
|
21
|
+
export const multiSelectInputStencil = createStencil({
|
|
22
|
+
//@ts-ignore Types don't like defining a variable in `base` and using a variable in a nested selector. One or the other is fine, but not both.
|
|
21
23
|
base: {
|
|
22
24
|
border: `1px solid ${system.color.border.input.default}`,
|
|
23
25
|
display: 'flex',
|
|
@@ -28,12 +30,13 @@ export const multiSelectStencil = createStencil({
|
|
|
28
30
|
minHeight: system.space.x10,
|
|
29
31
|
transition: '0.2s box-shadow, 0.2s border-color',
|
|
30
32
|
margin: 0, // Fix Safari
|
|
33
|
+
[textInputStencil.vars.width]: '100%',
|
|
31
34
|
|
|
32
35
|
'&:hover, &.hover': {
|
|
33
36
|
borderColor: system.color.border.input.strong,
|
|
34
37
|
},
|
|
35
38
|
|
|
36
|
-
'&:focus-
|
|
39
|
+
'&:has(:focus-visible:not([disabled])), &.focus': {
|
|
37
40
|
borderColor: system.color.border.primary.default,
|
|
38
41
|
boxShadow: `inset 0 0 0 1px ${system.color.border.primary.default}`,
|
|
39
42
|
},
|
|
@@ -44,6 +47,12 @@ export const multiSelectStencil = createStencil({
|
|
|
44
47
|
backgroundColor: system.color.bg.transparent,
|
|
45
48
|
borderRadius: system.shape.x1,
|
|
46
49
|
|
|
50
|
+
// collapse the height of the input by the border width so that an empty multi-select
|
|
51
|
+
// is the same height as a `TextInput`
|
|
52
|
+
'&:where([data-part="user-input"], [data-part="form-input"])': {
|
|
53
|
+
height: calc.subtract(system.space.x10, px2rem(2)),
|
|
54
|
+
},
|
|
55
|
+
|
|
47
56
|
// Remove the focus ring - it is handled at the container level
|
|
48
57
|
border: 'none !important',
|
|
49
58
|
boxShadow: 'none !important',
|
|
@@ -58,6 +67,11 @@ export const multiSelectStencil = createStencil({
|
|
|
58
67
|
},
|
|
59
68
|
},
|
|
60
69
|
|
|
70
|
+
'&:has(:disabled, .disabled)': {
|
|
71
|
+
borderColor: system.color.border.input.disabled,
|
|
72
|
+
color: system.color.text.disabled,
|
|
73
|
+
},
|
|
74
|
+
|
|
61
75
|
'& :where([data-part="form-input"])': {
|
|
62
76
|
position: 'absolute',
|
|
63
77
|
top: system.space.zero,
|
|
@@ -82,8 +96,43 @@ export const multiSelectStencil = createStencil({
|
|
|
82
96
|
flexWrap: 'wrap',
|
|
83
97
|
},
|
|
84
98
|
},
|
|
99
|
+
modifiers: {
|
|
100
|
+
error: {
|
|
101
|
+
error: {
|
|
102
|
+
borderColor: brand.error.base,
|
|
103
|
+
boxShadow: `inset 0 0 0 ${px2rem(1)} ${brand.error.base}`,
|
|
104
|
+
'&:has(:hover, :disabled, :focus-visible), &:is(.hover, .disabled, .focus)': {
|
|
105
|
+
borderColor: brand.error.base,
|
|
106
|
+
},
|
|
107
|
+
'&:has(:focus-visible:not([disabled])), &.focus': {
|
|
108
|
+
boxShadow: `inset 0 0 0 ${px2rem(1)} ${brand.error.base}, 0 0 0 2px ${
|
|
109
|
+
system.color.border.inverse
|
|
110
|
+
}, 0 0 0 4px ${brand.common.focusOutline}`,
|
|
111
|
+
outlineOffset: px2rem(2),
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
alert: {
|
|
115
|
+
borderColor: brand.alert.darkest,
|
|
116
|
+
boxShadow: `inset 0 0 0 ${px2rem(2)} ${brand.alert.base}`,
|
|
117
|
+
'&:has(:hover, .hover, :disabled, .disabled, :focus-visible:not([disabled])), .focus:not(:has([disabled]))':
|
|
118
|
+
{
|
|
119
|
+
borderColor: brand.alert.darkest,
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
'&:has(:focus-visible, .focus):not(:has([disabled]))': {
|
|
123
|
+
boxShadow: `inset 0 0 0 ${px2rem(2)} ${brand.alert.base},
|
|
124
|
+
0 0 0 2px ${system.color.border.inverse},
|
|
125
|
+
0 0 0 4px ${brand.common.focusOutline}`,
|
|
126
|
+
},
|
|
127
|
+
outlineOffset: px2rem(2),
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
85
131
|
});
|
|
86
132
|
|
|
133
|
+
/** @deprecated use `multiSelectInputStencil` instead. This will be removed in a future version. */
|
|
134
|
+
export const multiSelectStencil = multiSelectInputStencil;
|
|
135
|
+
|
|
87
136
|
export const useMultiSelectInput = composeHooks(
|
|
88
137
|
createElemPropsHook(useMultiSelectModel)((model, ref) => {
|
|
89
138
|
return {
|
|
@@ -122,7 +171,9 @@ export interface MultiSelectInputProps
|
|
|
122
171
|
React.InputHTMLAttributes<HTMLInputElement>,
|
|
123
172
|
'disabled' | 'className' | 'style' | 'aria-labelledby'
|
|
124
173
|
>,
|
|
125
|
-
Pick<MultiSelectedItemProps, 'removeLabel'> {
|
|
174
|
+
Pick<MultiSelectedItemProps, 'removeLabel'> {
|
|
175
|
+
error?: ErrorType;
|
|
176
|
+
}
|
|
126
177
|
|
|
127
178
|
export const MultiSelectInput = createSubcomponent(TextInput)({
|
|
128
179
|
modelHook: useMultiSelectModel,
|
|
@@ -133,16 +184,17 @@ export const MultiSelectInput = createSubcomponent(TextInput)({
|
|
|
133
184
|
className,
|
|
134
185
|
cs,
|
|
135
186
|
style,
|
|
187
|
+
error,
|
|
136
188
|
'aria-labelledby': ariaLabelledBy,
|
|
137
189
|
removeLabel,
|
|
190
|
+
disabled,
|
|
138
191
|
formInputProps,
|
|
139
192
|
...elemProps
|
|
140
193
|
},
|
|
141
|
-
Element
|
|
142
|
-
model
|
|
194
|
+
Element
|
|
143
195
|
) => {
|
|
144
196
|
return (
|
|
145
|
-
<div {...handleCsProp({className, cs, style},
|
|
197
|
+
<div {...handleCsProp({className, cs, style}, multiSelectInputStencil({error}))}>
|
|
146
198
|
<InputGroup>
|
|
147
199
|
<InputGroup.Input data-part="form-input" {...formInputProps} />
|
|
148
200
|
<InputGroup.Input
|
|
@@ -150,13 +202,15 @@ export const MultiSelectInput = createSubcomponent(TextInput)({
|
|
|
150
202
|
as={Element}
|
|
151
203
|
aria-labelledby={ariaLabelledBy}
|
|
152
204
|
readOnly
|
|
205
|
+
disabled={disabled}
|
|
206
|
+
error={error}
|
|
153
207
|
{...elemProps}
|
|
154
208
|
/>
|
|
155
209
|
<InputGroup.InnerEnd pointerEvents="none">
|
|
156
210
|
<SystemIcon icon={caretDownSmallIcon} />
|
|
157
211
|
</InputGroup.InnerEnd>
|
|
158
212
|
</InputGroup>
|
|
159
|
-
<MultiSelectedList removeLabel={removeLabel} />
|
|
213
|
+
<MultiSelectedList disabled={disabled} removeLabel={removeLabel} />
|
|
160
214
|
</div>
|
|
161
215
|
);
|
|
162
216
|
}
|
|
@@ -175,13 +229,14 @@ export const MultiSelectSearchInput = createSubcomponent(TextInput)({
|
|
|
175
229
|
removeLabel,
|
|
176
230
|
formInputProps,
|
|
177
231
|
ref,
|
|
232
|
+
disabled,
|
|
233
|
+
error,
|
|
178
234
|
...elemProps
|
|
179
235
|
},
|
|
180
|
-
Element
|
|
181
|
-
model
|
|
236
|
+
Element
|
|
182
237
|
) => {
|
|
183
238
|
return (
|
|
184
|
-
<div {...handleCsProp({className, cs, style},
|
|
239
|
+
<div {...handleCsProp({className, cs, style}, multiSelectInputStencil({}))}>
|
|
185
240
|
<InputGroup>
|
|
186
241
|
<InputGroup.InnerStart pointerEvents="none" width={system.space.x8}>
|
|
187
242
|
<SystemIcon icon={searchIcon} size={system.space.x4} />
|
|
@@ -195,6 +250,8 @@ export const MultiSelectSearchInput = createSubcomponent(TextInput)({
|
|
|
195
250
|
data-part="user-input"
|
|
196
251
|
as={Element}
|
|
197
252
|
aria-labelledby={ariaLabelledBy}
|
|
253
|
+
disabled={disabled}
|
|
254
|
+
error={error}
|
|
198
255
|
{...elemProps}
|
|
199
256
|
/>
|
|
200
257
|
<InputGroup.InnerEnd width={system.space.x4}>
|
|
@@ -204,7 +261,7 @@ export const MultiSelectSearchInput = createSubcomponent(TextInput)({
|
|
|
204
261
|
<SystemIcon icon={caretDownSmallIcon} />
|
|
205
262
|
</InputGroup.InnerEnd>
|
|
206
263
|
</InputGroup>
|
|
207
|
-
<MultiSelectedList removeLabel={removeLabel} />
|
|
264
|
+
<MultiSelectedList removeLabel={removeLabel} disabled={disabled} />
|
|
208
265
|
</div>
|
|
209
266
|
);
|
|
210
267
|
}
|