@workday/canvas-kit-labs-react 7.1.5 → 7.2.0-427-next.2
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/combobox/README.md +4 -4
- package/combobox/index.ts +0 -4
- package/combobox/lib/AutocompleteList.tsx +5 -8
- package/combobox/lib/Combobox.tsx +14 -20
- package/combobox/lib/Status.tsx +1 -3
- package/common/index.ts +0 -2
- package/common/lib/theming/index.ts +0 -1
- package/common/lib/theming/useThemeRTL.ts +14 -13
- package/dist/commonjs/combobox/index.d.ts +0 -3
- package/dist/commonjs/combobox/index.d.ts.map +1 -1
- package/dist/commonjs/combobox/index.js +0 -7
- package/dist/commonjs/combobox/lib/AutocompleteList.d.ts +4 -5
- package/dist/commonjs/combobox/lib/AutocompleteList.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/AutocompleteList.js +33 -53
- package/dist/commonjs/combobox/lib/Combobox.d.ts +4 -6
- package/dist/commonjs/combobox/lib/Combobox.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/Combobox.js +110 -142
- package/dist/commonjs/combobox/lib/Status.d.ts +1 -2
- package/dist/commonjs/combobox/lib/Status.d.ts.map +1 -1
- package/dist/commonjs/combobox/lib/Status.js +11 -11
- package/dist/commonjs/common/index.d.ts +0 -2
- package/dist/commonjs/common/index.d.ts.map +1 -1
- package/dist/commonjs/common/index.js +0 -5
- package/dist/commonjs/common/lib/theming/index.d.ts +0 -1
- package/dist/commonjs/common/lib/theming/index.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/index.js +0 -1
- package/dist/commonjs/common/lib/theming/useThemeRTL.d.ts +3 -0
- package/dist/commonjs/common/lib/theming/useThemeRTL.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/useThemeRTL.js +21 -46
- package/dist/commonjs/expandable/index.d.ts +3 -0
- package/dist/commonjs/expandable/index.d.ts.map +1 -0
- package/dist/commonjs/{drawer → expandable}/index.js +2 -10
- package/dist/commonjs/expandable/lib/Expandable.d.ts +108 -0
- package/dist/commonjs/expandable/lib/Expandable.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/Expandable.js +59 -0
- package/dist/commonjs/expandable/lib/ExpandableAvatar.d.ts +7 -0
- package/dist/commonjs/expandable/lib/ExpandableAvatar.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/ExpandableAvatar.js +23 -0
- package/dist/commonjs/expandable/lib/ExpandableContent.d.ts +21 -0
- package/dist/commonjs/expandable/lib/ExpandableContent.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/ExpandableContent.js +18 -0
- package/dist/commonjs/expandable/lib/ExpandableIcon.d.ts +29 -0
- package/dist/commonjs/expandable/lib/ExpandableIcon.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/ExpandableIcon.js +31 -0
- package/dist/commonjs/expandable/lib/ExpandableTarget.d.ts +33 -0
- package/dist/commonjs/expandable/lib/ExpandableTarget.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/ExpandableTarget.js +32 -0
- package/dist/commonjs/expandable/lib/ExpandableTitle.d.ts +11 -0
- package/dist/commonjs/expandable/lib/ExpandableTitle.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/ExpandableTitle.js +16 -0
- package/dist/commonjs/expandable/lib/hooks/index.d.ts +5 -0
- package/dist/commonjs/expandable/lib/hooks/index.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/hooks/index.js +16 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableContent.d.ts +18 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableContent.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableContent.js +11 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableIcon.d.ts +13 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableIcon.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableIcon.js +10 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableModel.d.ts +53 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableModel.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableModel.js +22 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableTarget.d.ts +15 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableTarget.d.ts.map +1 -0
- package/dist/commonjs/expandable/lib/hooks/useExpandableTarget.js +19 -0
- package/dist/commonjs/index.d.ts +1 -2
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +1 -2
- package/dist/commonjs/search-form/lib/SearchForm.d.ts +7 -3
- package/dist/commonjs/search-form/lib/SearchForm.d.ts.map +1 -1
- package/dist/commonjs/search-form/lib/SearchForm.js +118 -145
- package/dist/commonjs/search-form/lib/themes.js +7 -8
- package/dist/es6/combobox/index.d.ts +0 -3
- package/dist/es6/combobox/index.d.ts.map +1 -1
- package/dist/es6/combobox/index.js +0 -3
- package/dist/es6/combobox/lib/AutocompleteList.d.ts +4 -5
- package/dist/es6/combobox/lib/AutocompleteList.d.ts.map +1 -1
- package/dist/es6/combobox/lib/AutocompleteList.js +26 -48
- package/dist/es6/combobox/lib/Combobox.d.ts +4 -6
- package/dist/es6/combobox/lib/Combobox.d.ts.map +1 -1
- package/dist/es6/combobox/lib/Combobox.js +98 -131
- package/dist/es6/combobox/lib/Status.d.ts +1 -2
- package/dist/es6/combobox/lib/Status.d.ts.map +1 -1
- package/dist/es6/combobox/lib/Status.js +6 -8
- package/dist/es6/common/index.d.ts +0 -2
- package/dist/es6/common/index.d.ts.map +1 -1
- package/dist/es6/common/index.js +0 -2
- package/dist/es6/common/lib/theming/index.d.ts +0 -1
- package/dist/es6/common/lib/theming/index.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/index.js +0 -1
- package/dist/es6/common/lib/theming/useThemeRTL.d.ts +3 -0
- package/dist/es6/common/lib/theming/useThemeRTL.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/useThemeRTL.js +19 -44
- package/dist/es6/expandable/index.d.ts +3 -0
- package/dist/es6/expandable/index.d.ts.map +1 -0
- package/dist/es6/expandable/index.js +2 -0
- package/dist/es6/expandable/lib/Expandable.d.ts +108 -0
- package/dist/es6/expandable/lib/Expandable.d.ts.map +1 -0
- package/dist/es6/expandable/lib/Expandable.js +53 -0
- package/dist/es6/expandable/lib/ExpandableAvatar.d.ts +7 -0
- package/dist/es6/expandable/lib/ExpandableAvatar.d.ts.map +1 -0
- package/dist/es6/expandable/lib/ExpandableAvatar.js +17 -0
- package/dist/es6/expandable/lib/ExpandableContent.d.ts +21 -0
- package/dist/es6/expandable/lib/ExpandableContent.d.ts.map +1 -0
- package/dist/es6/expandable/lib/ExpandableContent.js +12 -0
- package/dist/es6/expandable/lib/ExpandableIcon.d.ts +29 -0
- package/dist/es6/expandable/lib/ExpandableIcon.d.ts.map +1 -0
- package/dist/es6/expandable/lib/ExpandableIcon.js +25 -0
- package/dist/es6/expandable/lib/ExpandableTarget.d.ts +33 -0
- package/dist/es6/expandable/lib/ExpandableTarget.d.ts.map +1 -0
- package/dist/es6/expandable/lib/ExpandableTarget.js +26 -0
- package/dist/es6/expandable/lib/ExpandableTitle.d.ts +11 -0
- package/dist/es6/expandable/lib/ExpandableTitle.d.ts.map +1 -0
- package/dist/es6/expandable/lib/ExpandableTitle.js +10 -0
- package/dist/es6/expandable/lib/hooks/index.d.ts +5 -0
- package/dist/es6/expandable/lib/hooks/index.d.ts.map +1 -0
- package/dist/es6/expandable/lib/hooks/index.js +4 -0
- package/dist/es6/expandable/lib/hooks/useExpandableContent.d.ts +18 -0
- package/dist/es6/expandable/lib/hooks/useExpandableContent.d.ts.map +1 -0
- package/dist/es6/expandable/lib/hooks/useExpandableContent.js +8 -0
- package/dist/es6/expandable/lib/hooks/useExpandableIcon.d.ts +13 -0
- package/dist/es6/expandable/lib/hooks/useExpandableIcon.d.ts.map +1 -0
- package/dist/es6/expandable/lib/hooks/useExpandableIcon.js +7 -0
- package/dist/es6/expandable/lib/hooks/useExpandableModel.d.ts +53 -0
- package/dist/es6/expandable/lib/hooks/useExpandableModel.d.ts.map +1 -0
- package/dist/es6/expandable/lib/hooks/useExpandableModel.js +19 -0
- package/dist/es6/expandable/lib/hooks/useExpandableTarget.d.ts +15 -0
- package/dist/es6/expandable/lib/hooks/useExpandableTarget.d.ts.map +1 -0
- package/dist/es6/expandable/lib/hooks/useExpandableTarget.js +16 -0
- package/dist/es6/index.d.ts +1 -2
- package/dist/es6/index.d.ts.map +1 -1
- package/dist/es6/index.js +1 -2
- package/dist/es6/search-form/lib/SearchForm.d.ts +7 -3
- package/dist/es6/search-form/lib/SearchForm.d.ts.map +1 -1
- package/dist/es6/search-form/lib/SearchForm.js +108 -136
- package/dist/es6/search-form/lib/themes.js +5 -6
- package/{drawer → expandable}/LICENSE +2 -1
- package/expandable/README.md +11 -0
- package/expandable/index.ts +2 -0
- package/expandable/lib/Expandable.tsx +68 -0
- package/expandable/lib/ExpandableAvatar.tsx +26 -0
- package/expandable/lib/ExpandableContent.tsx +32 -0
- package/expandable/lib/ExpandableIcon.tsx +75 -0
- package/expandable/lib/ExpandableTarget.tsx +67 -0
- package/expandable/lib/ExpandableTitle.tsx +32 -0
- package/expandable/lib/hooks/index.ts +4 -0
- package/expandable/lib/hooks/useExpandableContent.ts +9 -0
- package/expandable/lib/hooks/useExpandableIcon.ts +8 -0
- package/expandable/lib/hooks/useExpandableModel.tsx +20 -0
- package/expandable/lib/hooks/useExpandableTarget.ts +16 -0
- package/expandable/package.json +6 -0
- package/index.ts +1 -2
- package/package.json +5 -5
- package/search-form/lib/SearchForm.tsx +13 -11
- package/common/lib/storybook-utils/ComponentStatesTable.tsx +0 -80
- package/common/lib/storybook-utils/permutateProps.ts +0 -47
- package/common/lib/storybook-utils/propTypes.ts +0 -15
- package/common/lib/theming/useThemedRing.ts +0 -82
- package/dist/commonjs/common/lib/storybook-utils/ComponentStatesTable.d.ts +0 -26
- package/dist/commonjs/common/lib/storybook-utils/ComponentStatesTable.d.ts.map +0 -1
- package/dist/commonjs/common/lib/storybook-utils/ComponentStatesTable.js +0 -48
- package/dist/commonjs/common/lib/storybook-utils/permutateProps.d.ts +0 -5
- package/dist/commonjs/common/lib/storybook-utils/permutateProps.d.ts.map +0 -1
- package/dist/commonjs/common/lib/storybook-utils/permutateProps.js +0 -47
- package/dist/commonjs/common/lib/storybook-utils/propTypes.d.ts +0 -15
- package/dist/commonjs/common/lib/storybook-utils/propTypes.d.ts.map +0 -1
- package/dist/commonjs/common/lib/storybook-utils/propTypes.js +0 -2
- package/dist/commonjs/common/lib/theming/useThemedRing.d.ts +0 -11
- package/dist/commonjs/common/lib/theming/useThemedRing.d.ts.map +0 -1
- package/dist/commonjs/common/lib/theming/useThemedRing.js +0 -67
- package/dist/commonjs/drawer/index.d.ts +0 -6
- package/dist/commonjs/drawer/index.d.ts.map +0 -1
- package/dist/commonjs/drawer/lib/Drawer.d.ts +0 -49
- package/dist/commonjs/drawer/lib/Drawer.d.ts.map +0 -1
- package/dist/commonjs/drawer/lib/Drawer.js +0 -124
- package/dist/commonjs/drawer/lib/DrawerHeader.d.ts +0 -38
- package/dist/commonjs/drawer/lib/DrawerHeader.d.ts.map +0 -1
- package/dist/commonjs/drawer/lib/DrawerHeader.js +0 -105
- package/dist/es6/common/lib/storybook-utils/ComponentStatesTable.d.ts +0 -26
- package/dist/es6/common/lib/storybook-utils/ComponentStatesTable.d.ts.map +0 -1
- package/dist/es6/common/lib/storybook-utils/ComponentStatesTable.js +0 -41
- package/dist/es6/common/lib/storybook-utils/permutateProps.d.ts +0 -5
- package/dist/es6/common/lib/storybook-utils/permutateProps.d.ts.map +0 -1
- package/dist/es6/common/lib/storybook-utils/permutateProps.js +0 -43
- package/dist/es6/common/lib/storybook-utils/propTypes.d.ts +0 -15
- package/dist/es6/common/lib/storybook-utils/propTypes.d.ts.map +0 -1
- package/dist/es6/common/lib/storybook-utils/propTypes.js +0 -1
- package/dist/es6/common/lib/theming/useThemedRing.d.ts +0 -11
- package/dist/es6/common/lib/theming/useThemedRing.d.ts.map +0 -1
- package/dist/es6/common/lib/theming/useThemedRing.js +0 -59
- package/dist/es6/drawer/index.d.ts +0 -6
- package/dist/es6/drawer/index.d.ts.map +0 -1
- package/dist/es6/drawer/index.js +0 -5
- package/dist/es6/drawer/lib/Drawer.d.ts +0 -49
- package/dist/es6/drawer/lib/Drawer.d.ts.map +0 -1
- package/dist/es6/drawer/lib/Drawer.js +0 -99
- package/dist/es6/drawer/lib/DrawerHeader.d.ts +0 -38
- package/dist/es6/drawer/lib/DrawerHeader.d.ts.map +0 -1
- package/dist/es6/drawer/lib/DrawerHeader.js +0 -81
- package/drawer/README.md +0 -35
- package/drawer/index.ts +0 -5
- package/drawer/lib/Drawer.tsx +0 -119
- package/drawer/lib/DrawerHeader.tsx +0 -105
- package/drawer/package.json +0 -6
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { GrowthBehavior } from '@workday/canvas-kit-react/common';
|
|
3
3
|
import { TertiaryButtonProps } from '@workday/canvas-kit-react/button';
|
|
4
|
-
import { MenuItemProps } from '@workday/canvas-kit-preview-react/menu';
|
|
5
4
|
import { SearchTheme, SearchThemeAttributes } from './themes';
|
|
6
5
|
export interface SearchFormProps extends GrowthBehavior, React.FormHTMLAttributes<HTMLFormElement> {
|
|
7
6
|
/**
|
|
@@ -20,7 +19,7 @@ export interface SearchFormProps extends GrowthBehavior, React.FormHTMLAttribute
|
|
|
20
19
|
/**
|
|
21
20
|
* The autocomplete items of the SearchForm. This array of menu items is shown under the search bar.
|
|
22
21
|
*/
|
|
23
|
-
autocompleteItems?: React.ReactElement<
|
|
22
|
+
autocompleteItems?: React.ReactElement<any>[];
|
|
24
23
|
/**
|
|
25
24
|
* The theme of the header the search input is being rendered in.
|
|
26
25
|
*/
|
|
@@ -79,6 +78,11 @@ export interface SearchFormProps extends GrowthBehavior, React.FormHTMLAttribute
|
|
|
79
78
|
* @default false
|
|
80
79
|
*/
|
|
81
80
|
allowEmptyStringSearch?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Sets the `id` for the label
|
|
83
|
+
* @default unique identifier
|
|
84
|
+
*/
|
|
85
|
+
labelId?: string;
|
|
82
86
|
}
|
|
83
87
|
export interface SearchFormState {
|
|
84
88
|
showForm: boolean;
|
|
@@ -89,7 +93,7 @@ export declare class SearchForm extends React.Component<SearchFormProps, SearchF
|
|
|
89
93
|
static Theme: typeof SearchTheme;
|
|
90
94
|
private inputRef;
|
|
91
95
|
private openRef;
|
|
92
|
-
private
|
|
96
|
+
private defaultLabelId;
|
|
93
97
|
state: Readonly<SearchFormState>;
|
|
94
98
|
private getTheme;
|
|
95
99
|
private getThemeColors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchForm.d.ts","sourceRoot":"","sources":["../../../../search-form/lib/SearchForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,cAAc,EAA2B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAiB,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AAKrF,OAAO,
|
|
1
|
+
{"version":3,"file":"SearchForm.d.ts","sourceRoot":"","sources":["../../../../search-form/lib/SearchForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAC,cAAc,EAA2B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAiB,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AAKrF,OAAO,EAAe,WAAW,EAAE,qBAAqB,EAAC,MAAM,UAAU,CAAC;AAG1E,MAAM,WAAW,eAAgB,SAAQ,cAAc,EAAE,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC;IAChG;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAClD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC3D;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAAC;IAClD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAmLD,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC/E,MAAM,CAAC,KAAK,qBAAe;IAE3B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,cAAc,CAAsB;IAE5C,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAI9B;IAEF,OAAO,CAAC,QAAQ,CAUd;IAEF,OAAO,CAAC,cAAc,CAMpB;IAEF,iBAAiB,QAAO,mBAAmB,CAAC,SAAS,CAAC,CAOpD;IAEF,YAAY,UAAW,MAAM,SAAS,CAAC,eAAe,CAAC,KAAG,IAAI,CAO5D;IAEF,mBAAmB,QAAO,IAAI,CAI5B;IAEF,oBAAoB,QAAO,IAAI,CAI7B;IAEF,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe;IAWzE,UAAU,QAAO,IAAI,CAInB;IAEF,SAAS,QAAO,IAAI,CAIlB;IAEF,WAAW,QAAO,IAAI,CAEpB;IAEF,UAAU,QAAO,IAAI,CAEnB;IAEF,uBAAuB,UAAW,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI,CAM1E;IAEF,MAAM;CAoGP"}
|
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
extendStatics(d, b);
|
|
10
|
-
function __() { this.constructor = d; }
|
|
11
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
-
};
|
|
13
|
-
})();
|
|
14
|
-
var __assign = (this && this.__assign) || function () {
|
|
15
|
-
__assign = Object.assign || function(t) {
|
|
16
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
17
|
-
s = arguments[i];
|
|
18
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
19
|
-
t[p] = s[p];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
|
-
return __assign.apply(this, arguments);
|
|
24
|
-
};
|
|
25
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
-
var t = {};
|
|
27
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
-
t[p] = s[p];
|
|
29
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
-
t[p[i]] = s[p[i]];
|
|
33
|
-
}
|
|
34
|
-
return t;
|
|
35
|
-
};
|
|
36
1
|
import * as React from 'react';
|
|
37
2
|
import { colors, space, spaceNumbers } from '@workday/canvas-kit-react/tokens';
|
|
38
3
|
import { styled, generateUniqueId } from '@workday/canvas-kit-react/common';
|
|
@@ -54,19 +19,18 @@ function getInputColors(theme, isFocused) {
|
|
|
54
19
|
boxShadow: isFocused && theme.boxShadowFocus ? theme.boxShadowFocus : theme.boxShadow,
|
|
55
20
|
};
|
|
56
21
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
22
|
+
const formCollapsedBackground = colors.frenchVanilla100;
|
|
23
|
+
const maxWidth = 480;
|
|
24
|
+
const minWidth = 120;
|
|
25
|
+
const StyledSearchForm = styled('form')({
|
|
61
26
|
position: 'relative',
|
|
62
|
-
|
|
27
|
+
flexGrow: 1,
|
|
63
28
|
display: 'flex',
|
|
64
29
|
alignItems: 'center',
|
|
65
30
|
marginLeft: space.m,
|
|
66
31
|
minWidth: minWidth,
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
var collapseStyles = isCollapsed
|
|
32
|
+
}, ({ isCollapsed, showForm, rightAlign, grow }) => {
|
|
33
|
+
const collapseStyles = isCollapsed
|
|
70
34
|
? {
|
|
71
35
|
top: 0,
|
|
72
36
|
right: 0,
|
|
@@ -82,35 +46,30 @@ var StyledSearchForm = styled('form')({
|
|
|
82
46
|
zIndex: 1,
|
|
83
47
|
}
|
|
84
48
|
: {};
|
|
85
|
-
|
|
49
|
+
const rightAlignStyles = rightAlign
|
|
86
50
|
? {
|
|
87
51
|
textAlign: 'right',
|
|
88
52
|
maxWidth: grow ? '100%' : maxWidth,
|
|
89
53
|
}
|
|
90
54
|
: {};
|
|
91
|
-
return
|
|
55
|
+
return { ...rightAlignStyles, ...collapseStyles };
|
|
92
56
|
});
|
|
93
|
-
|
|
94
|
-
position:
|
|
57
|
+
const SearchContainer = styled('div')({
|
|
58
|
+
position: `relative`,
|
|
95
59
|
display: 'flex',
|
|
96
60
|
alignItems: 'center',
|
|
97
|
-
width:
|
|
61
|
+
width: `100%`,
|
|
98
62
|
textAlign: 'left',
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
});
|
|
63
|
+
}, ({ height }) => ({
|
|
64
|
+
minHeight: height,
|
|
65
|
+
}));
|
|
66
|
+
const SearchCombobox = styled(Combobox)({
|
|
67
|
+
width: `100%`,
|
|
105
68
|
});
|
|
106
|
-
|
|
107
|
-
width: "100%",
|
|
108
|
-
});
|
|
109
|
-
var SearchIcon = styled(TertiaryButton)(function (_a) {
|
|
110
|
-
var isCollapsed = _a.isCollapsed, isHidden = _a.isHidden;
|
|
69
|
+
const SearchIcon = styled(TertiaryButton)(({ isCollapsed, isHidden }) => {
|
|
111
70
|
return {
|
|
112
|
-
position:
|
|
113
|
-
margin: isCollapsed ?
|
|
71
|
+
position: `absolute`,
|
|
72
|
+
margin: isCollapsed ? `auto ${space.xxs}` : `auto ${space.xxxs}`,
|
|
114
73
|
top: 0,
|
|
115
74
|
bottom: 0,
|
|
116
75
|
left: 0,
|
|
@@ -119,19 +78,25 @@ var SearchIcon = styled(TertiaryButton)(function (_a) {
|
|
|
119
78
|
display: isHidden ? 'none' : 'flex',
|
|
120
79
|
};
|
|
121
80
|
});
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
var collapseStyles = isCollapsed && showForm
|
|
81
|
+
const CloseButton = styled(TertiaryButton)(({ isCollapsed, showForm }) => {
|
|
82
|
+
const collapseStyles = isCollapsed && showForm
|
|
125
83
|
? {
|
|
126
84
|
display: 'inline-block',
|
|
127
85
|
}
|
|
128
86
|
: {
|
|
129
87
|
display: 'none',
|
|
130
88
|
};
|
|
131
|
-
return
|
|
89
|
+
return {
|
|
90
|
+
position: `absolute`,
|
|
91
|
+
top: 0,
|
|
92
|
+
bottom: 0,
|
|
93
|
+
right: 0,
|
|
94
|
+
margin: `auto ${space.xxs}`,
|
|
95
|
+
zIndex: 3,
|
|
96
|
+
...collapseStyles,
|
|
97
|
+
};
|
|
132
98
|
});
|
|
133
|
-
|
|
134
|
-
var isCollapsed = _a.isCollapsed, showForm = _a.showForm, grow = _a.grow, height = _a.height;
|
|
99
|
+
const SearchField = styled(FormField)(({ isCollapsed, showForm, grow, height }) => {
|
|
135
100
|
return {
|
|
136
101
|
display: (isCollapsed && showForm) || !isCollapsed ? 'inline-block' : 'none',
|
|
137
102
|
width: '100%',
|
|
@@ -143,17 +108,15 @@ var SearchField = styled(FormField)(function (_a) {
|
|
|
143
108
|
},
|
|
144
109
|
};
|
|
145
110
|
});
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
var collapseStyles = isCollapsed
|
|
111
|
+
const SearchInput = styled(TextInput)(({ isCollapsed, inputColors, grow, height }) => {
|
|
112
|
+
const collapseStyles = isCollapsed
|
|
149
113
|
? {
|
|
150
114
|
fontSize: '20px',
|
|
151
|
-
lineHeight: '20px',
|
|
152
115
|
paddingLeft: spaceNumbers.xl + spaceNumbers.s,
|
|
153
116
|
paddingRight: spaceNumbers.xl + spaceNumbers.s,
|
|
154
117
|
maxWidth: 'none',
|
|
155
118
|
minWidth: 0,
|
|
156
|
-
backgroundColor:
|
|
119
|
+
backgroundColor: `rgba(0, 0, 0, 0)`,
|
|
157
120
|
height: height,
|
|
158
121
|
}
|
|
159
122
|
: {
|
|
@@ -164,11 +127,22 @@ var SearchInput = styled(TextInput)(function (_a) {
|
|
|
164
127
|
backgroundColor: inputColors.background,
|
|
165
128
|
height: height,
|
|
166
129
|
};
|
|
167
|
-
return
|
|
130
|
+
return {
|
|
131
|
+
fontSize: '14px',
|
|
132
|
+
boxShadow: inputColors.boxShadow,
|
|
133
|
+
color: inputColors.color,
|
|
134
|
+
border: 'none',
|
|
135
|
+
WebkitAppearance: 'none',
|
|
136
|
+
transition: 'background-color 120ms, color 120ms, box-shadow 200ms, border-color 200ms',
|
|
137
|
+
zIndex: 2,
|
|
138
|
+
width: '100%',
|
|
139
|
+
'&::-webkit-search-cancel-button': {
|
|
168
140
|
display: 'none',
|
|
169
|
-
},
|
|
141
|
+
},
|
|
142
|
+
'&::placeholder': {
|
|
170
143
|
color: inputColors.placeholderColor,
|
|
171
|
-
},
|
|
144
|
+
},
|
|
145
|
+
'&:not([disabled])': {
|
|
172
146
|
'&:focus, &:active': {
|
|
173
147
|
outline: 'none',
|
|
174
148
|
boxShadow: inputColors.boxShadow,
|
|
@@ -176,93 +150,93 @@ var SearchInput = styled(TextInput)(function (_a) {
|
|
|
176
150
|
'&:hover': {
|
|
177
151
|
backgroundColor: inputColors.backgroundHover,
|
|
178
152
|
},
|
|
179
|
-
}
|
|
153
|
+
},
|
|
154
|
+
...collapseStyles,
|
|
155
|
+
};
|
|
180
156
|
});
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
_this.state = {
|
|
157
|
+
export class SearchForm extends React.Component {
|
|
158
|
+
constructor() {
|
|
159
|
+
super(...arguments);
|
|
160
|
+
this.inputRef = React.createRef();
|
|
161
|
+
this.openRef = React.createRef();
|
|
162
|
+
this.defaultLabelId = generateUniqueId();
|
|
163
|
+
this.state = {
|
|
189
164
|
showForm: false,
|
|
190
165
|
searchQuery: '',
|
|
191
166
|
isFocused: false,
|
|
192
167
|
};
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (typeof
|
|
196
|
-
theme = searchThemes[
|
|
168
|
+
this.getTheme = () => {
|
|
169
|
+
let theme;
|
|
170
|
+
if (typeof this.props.searchTheme === 'number') {
|
|
171
|
+
theme = searchThemes[this.props.searchTheme];
|
|
197
172
|
}
|
|
198
|
-
else if (
|
|
199
|
-
theme =
|
|
173
|
+
else if (this.props.searchTheme) {
|
|
174
|
+
theme = this.props.searchTheme;
|
|
200
175
|
}
|
|
201
176
|
else {
|
|
202
177
|
theme = searchThemes[SearchTheme.Light];
|
|
203
178
|
}
|
|
204
179
|
return theme;
|
|
205
180
|
};
|
|
206
|
-
|
|
207
|
-
|
|
181
|
+
this.getThemeColors = () => {
|
|
182
|
+
const theme = this.props.isCollapsed && this.state.showForm
|
|
208
183
|
? searchThemes[SearchTheme.Transparent]
|
|
209
|
-
:
|
|
210
|
-
return getInputColors(theme,
|
|
184
|
+
: this.getTheme();
|
|
185
|
+
return getInputColors(theme, this.state.isFocused);
|
|
211
186
|
};
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (
|
|
187
|
+
this.getIconButtonType = () => {
|
|
188
|
+
let background = this.getThemeColors().background || `#fff`;
|
|
189
|
+
if (this.props.isCollapsed && this.state.showForm) {
|
|
215
190
|
background = formCollapsedBackground;
|
|
216
191
|
}
|
|
217
|
-
|
|
192
|
+
const isDarkBackground = chroma(background).get('lab.l') < 70;
|
|
218
193
|
return isDarkBackground ? 'inverse' : undefined;
|
|
219
194
|
};
|
|
220
|
-
|
|
195
|
+
this.handleSubmit = (event) => {
|
|
221
196
|
event.preventDefault();
|
|
222
|
-
if (
|
|
223
|
-
|
|
197
|
+
if (this.props.allowEmptyStringSearch || this.state.searchQuery.trim()) {
|
|
198
|
+
this.props.onSubmit(event);
|
|
224
199
|
}
|
|
225
200
|
else {
|
|
226
|
-
|
|
201
|
+
this.focusInput();
|
|
227
202
|
}
|
|
228
203
|
};
|
|
229
|
-
|
|
230
|
-
if (
|
|
231
|
-
|
|
204
|
+
this.openCollapsedSearch = () => {
|
|
205
|
+
if (this.props.isCollapsed && !this.state.showForm) {
|
|
206
|
+
this.setState({ showForm: true });
|
|
232
207
|
}
|
|
233
208
|
};
|
|
234
|
-
|
|
235
|
-
if (
|
|
236
|
-
|
|
209
|
+
this.closeCollapsedSearch = () => {
|
|
210
|
+
if (this.props.isCollapsed && this.state.showForm) {
|
|
211
|
+
this.setState({ showForm: false });
|
|
237
212
|
}
|
|
238
213
|
};
|
|
239
|
-
|
|
240
|
-
if (
|
|
241
|
-
|
|
214
|
+
this.focusInput = () => {
|
|
215
|
+
if (this.inputRef.current) {
|
|
216
|
+
this.inputRef.current.focus();
|
|
242
217
|
}
|
|
243
218
|
};
|
|
244
|
-
|
|
245
|
-
if (
|
|
246
|
-
|
|
219
|
+
this.focusOpen = () => {
|
|
220
|
+
if (this.openRef.current) {
|
|
221
|
+
this.openRef.current.focus();
|
|
247
222
|
}
|
|
248
223
|
};
|
|
249
|
-
|
|
250
|
-
|
|
224
|
+
this.handleFocus = () => {
|
|
225
|
+
this.setState({ isFocused: true });
|
|
251
226
|
};
|
|
252
|
-
|
|
253
|
-
|
|
227
|
+
this.handleBlur = () => {
|
|
228
|
+
this.setState({ isFocused: false });
|
|
254
229
|
};
|
|
255
|
-
|
|
230
|
+
this.handleSearchInputChange = (event) => {
|
|
256
231
|
event.preventDefault();
|
|
257
|
-
|
|
258
|
-
if (
|
|
259
|
-
|
|
232
|
+
this.setState({ searchQuery: event.target.value });
|
|
233
|
+
if (this.props.onInputChange) {
|
|
234
|
+
this.props.onInputChange(event);
|
|
260
235
|
}
|
|
261
236
|
};
|
|
262
|
-
return _this;
|
|
263
237
|
}
|
|
264
|
-
|
|
265
|
-
|
|
238
|
+
componentDidUpdate(prevProps, prevState) {
|
|
239
|
+
const showFormToggled = this.state.showForm !== prevState.showForm;
|
|
266
240
|
if (showFormToggled) {
|
|
267
241
|
if (this.state.showForm) {
|
|
268
242
|
this.focusInput();
|
|
@@ -271,19 +245,17 @@ var SearchForm = /** @class */ (function (_super) {
|
|
|
271
245
|
this.focusOpen();
|
|
272
246
|
}
|
|
273
247
|
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
return (React.createElement(StyledSearchForm,
|
|
248
|
+
}
|
|
249
|
+
render() {
|
|
250
|
+
const { clearButtonAriaLabel = 'Reset Search Form', placeholder = 'Search', inputLabel = 'Search', submitAriaLabel = 'Search', openButtonAriaLabel = 'Open Search', closeButtonAriaLabel = 'Cancel', labelId = this.defaultLabelId, showClearButton = true, height = 40, grow, onSubmit, isCollapsed, onInputChange, autocompleteItems, initialValue, searchTheme, rightAlign, allowEmptyStringSearch = false, ...elemProps } = this.props;
|
|
251
|
+
return (React.createElement(StyledSearchForm, Object.assign({ role: "search", action: ".", rightAlign: rightAlign, grow: grow, "aria-labelledby": labelId, isCollapsed: isCollapsed, onSubmit: this.handleSubmit, showForm: this.state.showForm }, elemProps),
|
|
278
252
|
React.createElement(SearchContainer, { height: height },
|
|
279
253
|
React.createElement(SearchIcon, { "aria-label": submitAriaLabel, icon: searchIcon, isCollapsed: isCollapsed, variant: this.getIconButtonType(), type: "submit", isHidden: !!isCollapsed && !this.state.showForm }),
|
|
280
254
|
React.createElement(SearchIcon, { "aria-label": openButtonAriaLabel, icon: searchIcon, isCollapsed: isCollapsed, variant: this.getIconButtonType(), onClick: this.openCollapsedSearch, ref: this.openRef, type: "button", isHidden: !isCollapsed || (!!isCollapsed && this.state.showForm) }),
|
|
281
|
-
React.createElement(SearchField, { grow: grow, id:
|
|
282
|
-
React.createElement(SearchCombobox, { initialValue: initialValue, clearButtonVariant: this.getIconButtonType(), autocompleteItems: autocompleteItems, onChange: this.handleSearchInputChange, onFocus: this.handleFocus, onBlur: this.handleBlur, showClearButton: !isCollapsed && showClearButton, clearButtonAriaLabel: clearButtonAriaLabel, labelId:
|
|
255
|
+
React.createElement(SearchField, { grow: grow, id: labelId, inputId: `input-${labelId}`, label: inputLabel, labelPosition: FormFieldLabelPosition.Hidden, useFieldset: false, isCollapsed: isCollapsed, showForm: this.state.showForm, height: height },
|
|
256
|
+
React.createElement(SearchCombobox, { initialValue: initialValue, clearButtonVariant: this.getIconButtonType(), autocompleteItems: autocompleteItems, onChange: this.handleSearchInputChange, onFocus: this.handleFocus, onBlur: this.handleBlur, showClearButton: !isCollapsed && showClearButton, clearButtonAriaLabel: clearButtonAriaLabel, labelId: labelId },
|
|
283
257
|
React.createElement(SearchInput, { ref: this.inputRef, value: this.state.searchQuery, placeholder: placeholder, isCollapsed: isCollapsed, inputColors: this.getThemeColors(), height: height, name: "search", autoComplete: "off" }))),
|
|
284
258
|
React.createElement(CloseButton, { "aria-label": closeButtonAriaLabel, icon: xIcon, isCollapsed: isCollapsed, showForm: this.state.showForm, onClick: this.closeCollapsedSearch, type: "button" }))));
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}(React.Component));
|
|
289
|
-
export { SearchForm };
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
SearchForm.Theme = SearchTheme;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
var _a;
|
|
2
1
|
import { focusRing } from '@workday/canvas-kit-react/common';
|
|
3
2
|
import { colors } from '@workday/canvas-kit-react/tokens';
|
|
4
3
|
export var SearchTheme;
|
|
@@ -7,8 +6,8 @@ export var SearchTheme;
|
|
|
7
6
|
SearchTheme[SearchTheme["Dark"] = 1] = "Dark";
|
|
8
7
|
SearchTheme[SearchTheme["Transparent"] = 2] = "Transparent";
|
|
9
8
|
})(SearchTheme || (SearchTheme = {}));
|
|
10
|
-
export
|
|
11
|
-
|
|
9
|
+
export const searchThemes = {
|
|
10
|
+
[SearchTheme.Transparent]: {
|
|
12
11
|
background: 'rgba(0, 0, 0, 0)',
|
|
13
12
|
backgroundFocus: 'rgba(0, 0, 0, 0)',
|
|
14
13
|
color: colors.blackPepper300,
|
|
@@ -18,7 +17,7 @@ export var searchThemes = (_a = {},
|
|
|
18
17
|
boxShadow: 'none',
|
|
19
18
|
boxShadowFocus: 'none',
|
|
20
19
|
},
|
|
21
|
-
|
|
20
|
+
[SearchTheme.Light]: {
|
|
22
21
|
background: colors.soap200,
|
|
23
22
|
backgroundFocus: colors.soap200,
|
|
24
23
|
backgroundHover: colors.soap300,
|
|
@@ -27,7 +26,7 @@ export var searchThemes = (_a = {},
|
|
|
27
26
|
boxShadow: 'none',
|
|
28
27
|
boxShadowFocus: focusRing().boxShadow,
|
|
29
28
|
},
|
|
30
|
-
|
|
29
|
+
[SearchTheme.Dark]: {
|
|
31
30
|
background: 'rgba(0, 0, 0, 0.2)',
|
|
32
31
|
backgroundFocus: colors.frenchVanilla100,
|
|
33
32
|
color: colors.frenchVanilla100,
|
|
@@ -36,4 +35,4 @@ export var searchThemes = (_a = {},
|
|
|
36
35
|
placeholderColorFocus: colors.licorice300,
|
|
37
36
|
boxShadow: 'none',
|
|
38
37
|
},
|
|
39
|
-
|
|
38
|
+
};
|
|
@@ -43,7 +43,8 @@ While redistributing the Work or Derivative Works thereof, You may choose to off
|
|
|
43
43
|
|
|
44
44
|
END OF TERMS AND CONDITIONS
|
|
45
45
|
|
|
46
|
-
©
|
|
46
|
+
©2021 Workday, Inc. All rights reserved. Workday and the Workday logo are registered trademarks of Workday, Inc. All other brand and product names are trademarks or registered trademarks of their respective holders.
|
|
47
|
+
|
|
47
48
|
|
|
48
49
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
|
|
49
50
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Canvas Kit Expandable Container
|
|
2
|
+
|
|
3
|
+
<a href="https://github.com/Workday/canvas-kit/tree/master/modules/labs-react/README.md">
|
|
4
|
+
<img src="https://img.shields.io/badge/LABS-alpha-orange" alt="LABS: Alpha" />
|
|
5
|
+
</a> This component is work in progress and currently in prerelease.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
View the
|
|
10
|
+
[documentation for Expandable](https://workday.github.io/canvas-kit/?path=/docs/labs-expandable-react--avatar)
|
|
11
|
+
on Storybook.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {createContainer, ExtractProps} from '@workday/canvas-kit-react/common';
|
|
4
|
+
import {Flex} from '@workday/canvas-kit-react/layout';
|
|
5
|
+
|
|
6
|
+
import {ExpandableContent} from './ExpandableContent';
|
|
7
|
+
import {ExpandableTarget} from './ExpandableTarget';
|
|
8
|
+
import {ExpandableIcon} from './ExpandableIcon';
|
|
9
|
+
import {ExpandableTitle} from './ExpandableTitle';
|
|
10
|
+
import {ExpandableAvatar} from './ExpandableAvatar';
|
|
11
|
+
import {useExpandableModel} from './hooks/useExpandableModel';
|
|
12
|
+
|
|
13
|
+
export interface ExpandableProps extends ExtractProps<typeof Flex, never> {
|
|
14
|
+
/**
|
|
15
|
+
* The children of the `Expandable` container. This should contain `Expandable.Target` and
|
|
16
|
+
* `Expandable.Container`
|
|
17
|
+
*/
|
|
18
|
+
children?: React.ReactNode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* `Expandable` wraps an `Expandable.Target` and an `Expandable.Content`. By default, it provides a
|
|
23
|
+
* `DisclosureModel` for its subcomponents. Alternatively, a model may be passed in using the
|
|
24
|
+
* hoisted model pattern.
|
|
25
|
+
*/
|
|
26
|
+
export const Expandable = createContainer('div')({
|
|
27
|
+
displayName: 'Expandable',
|
|
28
|
+
modelHook: useExpandableModel,
|
|
29
|
+
subComponents: {
|
|
30
|
+
/**
|
|
31
|
+
* `Expandable.Target` creates a heading and a button. The heading is a semantic heading to
|
|
32
|
+
* describe the associated content. The button provides users the ability to toggle the
|
|
33
|
+
* associated content.
|
|
34
|
+
*
|
|
35
|
+
* As according to the [W3 disclosure
|
|
36
|
+
* specification](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure), the button has
|
|
37
|
+
* `aria-expanded` and `aria-controls` attributes set by default
|
|
38
|
+
*
|
|
39
|
+
* This component should hold an `Expandable.Icon`, an optional `Expandable.Avatar`, and an
|
|
40
|
+
* `Expandable.Title`.
|
|
41
|
+
*/
|
|
42
|
+
Target: ExpandableTarget,
|
|
43
|
+
/**
|
|
44
|
+
* `Expandable.Title` styles the target text that describes the content.
|
|
45
|
+
*/
|
|
46
|
+
Title: ExpandableTitle,
|
|
47
|
+
/**
|
|
48
|
+
* `Expandable.Icon` creates an icon to visually indicate the state of the content. It takes an
|
|
49
|
+
* `iconPosition` prop to determine which chevron icon to use.
|
|
50
|
+
*/
|
|
51
|
+
Icon: ExpandableIcon,
|
|
52
|
+
/**
|
|
53
|
+
* `Expandable.Avatar` is an optional component that creates an `Avatar` to display a decorative
|
|
54
|
+
* image.
|
|
55
|
+
*/
|
|
56
|
+
Avatar: ExpandableAvatar,
|
|
57
|
+
/**
|
|
58
|
+
* `Expandable.Content` holds the content that will be conditionally expanded and collapsed. It
|
|
59
|
+
* has an `id` to ensure the `Expandable.Target` properly set it to the `aria-controls`
|
|
60
|
+
* attribute.
|
|
61
|
+
*/
|
|
62
|
+
Content: ExpandableContent,
|
|
63
|
+
},
|
|
64
|
+
})<ExpandableProps>(({children, ...elementProps}, Element) => (
|
|
65
|
+
<Flex as={Element} flexDirection={'column'} padding={'xxs'} {...elementProps}>
|
|
66
|
+
{children}
|
|
67
|
+
</Flex>
|
|
68
|
+
));
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {createComponent, ExtractProps, styled, StyledType} from '@workday/canvas-kit-react/common';
|
|
4
|
+
import {Avatar} from '@workday/canvas-kit-react/avatar';
|
|
5
|
+
import {space} from '@workday/canvas-kit-react/tokens';
|
|
6
|
+
|
|
7
|
+
export interface ExpandableAvatarProps
|
|
8
|
+
extends Omit<
|
|
9
|
+
ExtractProps<typeof Avatar, never>,
|
|
10
|
+
keyof React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
11
|
+
> {}
|
|
12
|
+
|
|
13
|
+
const StyledAvatar = styled(Avatar)<StyledType>({
|
|
14
|
+
marginRight: space.xxs,
|
|
15
|
+
flexShrink: 0,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// When the component is created, it needs to be a button element to match AvatarProps.
|
|
19
|
+
// Once Avatar becomes a `createComponent` we can default the element type to a `div`
|
|
20
|
+
// and the types should be properly extracted
|
|
21
|
+
export const ExpandableAvatar = createComponent('button')({
|
|
22
|
+
displayName: 'Expandable.Avatar',
|
|
23
|
+
Component: ({altText, ...elemProps}: ExpandableAvatarProps, ref) => {
|
|
24
|
+
return <StyledAvatar altText={undefined} as="div" ref={ref} size={32} {...elemProps} />;
|
|
25
|
+
},
|
|
26
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {space} from '@workday/canvas-kit-react/tokens';
|
|
4
|
+
import {createSubcomponent, ExtractProps} from '@workday/canvas-kit-react/common';
|
|
5
|
+
import {Box} from '@workday/canvas-kit-react/layout';
|
|
6
|
+
|
|
7
|
+
import {useExpandableContent} from './hooks/useExpandableContent';
|
|
8
|
+
import {useExpandableModel} from './hooks/useExpandableModel';
|
|
9
|
+
|
|
10
|
+
export interface ExpandableContentProps extends ExtractProps<typeof Box, never> {
|
|
11
|
+
/**
|
|
12
|
+
* The children of the `Expandable.Content` whose visibility is controlled by the associated
|
|
13
|
+
* `Expandable.Target`
|
|
14
|
+
*/
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const ExpandableContent = createSubcomponent('div')({
|
|
19
|
+
modelHook: useExpandableModel,
|
|
20
|
+
elemPropsHook: useExpandableContent,
|
|
21
|
+
})<ExpandableContentProps>(({children, ...elementProps}, Element) => {
|
|
22
|
+
return (
|
|
23
|
+
<Box
|
|
24
|
+
as={Element}
|
|
25
|
+
background="none"
|
|
26
|
+
padding={`${space.s} ${space.xxs} ${space.xxs}`}
|
|
27
|
+
{...elementProps}
|
|
28
|
+
>
|
|
29
|
+
{children}
|
|
30
|
+
</Box>
|
|
31
|
+
);
|
|
32
|
+
});
|