@zendeskgarden/react-dropdowns.legacy 9.0.0-next.10
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/LICENSE.md +176 -0
- package/README.md +100 -0
- package/dist/esm/elements/Autocomplete/Autocomplete.js +144 -0
- package/dist/esm/elements/Combobox/Combobox.js +106 -0
- package/dist/esm/elements/Dropdown/Dropdown.js +178 -0
- package/dist/esm/elements/Fields/Field.js +35 -0
- package/dist/esm/elements/Fields/Hint.js +15 -0
- package/dist/esm/elements/Fields/Label.js +46 -0
- package/dist/esm/elements/Fields/Message.js +19 -0
- package/dist/esm/elements/Menu/Items/AddItem.js +66 -0
- package/dist/esm/elements/Menu/Items/HeaderIcon.js +44 -0
- package/dist/esm/elements/Menu/Items/HeaderItem.js +44 -0
- package/dist/esm/elements/Menu/Items/Item.js +140 -0
- package/dist/esm/elements/Menu/Items/ItemMeta.js +49 -0
- package/dist/esm/elements/Menu/Items/MediaBody.js +44 -0
- package/dist/esm/elements/Menu/Items/MediaFigure.js +42 -0
- package/dist/esm/elements/Menu/Items/MediaItem.js +44 -0
- package/dist/esm/elements/Menu/Items/NextItem.js +90 -0
- package/dist/esm/elements/Menu/Items/PreviousItem.js +87 -0
- package/dist/esm/elements/Menu/Menu.js +160 -0
- package/dist/esm/elements/Menu/Separator.js +37 -0
- package/dist/esm/elements/Multiselect/Multiselect.js +316 -0
- package/dist/esm/elements/Select/Select.js +195 -0
- package/dist/esm/elements/Trigger/Trigger.js +185 -0
- package/dist/esm/index.js +29 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/check-lg-stroke.svg.js +28 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js +25 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-left-stroke.svg.js +25 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-right-stroke.svg.js +25 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/plus-stroke.svg.js +26 -0
- package/dist/esm/styled/items/StyledAddItem.js +23 -0
- package/dist/esm/styled/items/StyledItem.js +44 -0
- package/dist/esm/styled/items/StyledItemIcon.js +27 -0
- package/dist/esm/styled/items/StyledItemMeta.js +22 -0
- package/dist/esm/styled/items/StyledNextIcon.js +31 -0
- package/dist/esm/styled/items/StyledNextItem.js +24 -0
- package/dist/esm/styled/items/StyledPreviousIcon.js +31 -0
- package/dist/esm/styled/items/StyledPreviousItem.js +23 -0
- package/dist/esm/styled/items/header/StyledHeaderIcon.js +22 -0
- package/dist/esm/styled/items/header/StyledHeaderItem.js +29 -0
- package/dist/esm/styled/items/media/StyledMediaBody.js +22 -0
- package/dist/esm/styled/items/media/StyledMediaFigure.js +34 -0
- package/dist/esm/styled/items/media/StyledMediaItem.js +23 -0
- package/dist/esm/styled/menu/StyledMenu.js +28 -0
- package/dist/esm/styled/menu/StyledMenuWrapper.js +30 -0
- package/dist/esm/styled/menu/StyledSeparator.js +23 -0
- package/dist/esm/styled/multiselect/StyledMultiselectInput.js +33 -0
- package/dist/esm/styled/multiselect/StyledMultiselectItemWrapper.js +22 -0
- package/dist/esm/styled/multiselect/StyledMultiselectItemsContainer.js +34 -0
- package/dist/esm/styled/multiselect/StyledMultiselectMoreAnchor.js +22 -0
- package/dist/esm/styled/select/StyledFauxInput.js +25 -0
- package/dist/esm/styled/select/StyledInput.js +25 -0
- package/dist/esm/styled/select/StyledSelect.js +22 -0
- package/dist/esm/types/index.js +10 -0
- package/dist/esm/utils/garden-placements.js +77 -0
- package/dist/esm/utils/useDropdownContext.js +18 -0
- package/dist/esm/utils/useFieldContext.js +18 -0
- package/dist/esm/utils/useItemContext.js +18 -0
- package/dist/esm/utils/useMenuContext.js +18 -0
- package/dist/index.cjs.js +2066 -0
- package/dist/typings/elements/Autocomplete/Autocomplete.d.ts +14 -0
- package/dist/typings/elements/Combobox/Combobox.d.ts +14 -0
- package/dist/typings/elements/Dropdown/Dropdown.d.ts +26 -0
- package/dist/typings/elements/Fields/Field.d.ts +11 -0
- package/dist/typings/elements/Fields/Hint.d.ts +11 -0
- package/dist/typings/elements/Fields/Label.d.ts +12 -0
- package/dist/typings/elements/Fields/Message.d.ts +12 -0
- package/dist/typings/elements/Menu/Items/AddItem.d.ts +12 -0
- package/dist/typings/elements/Menu/Items/HeaderIcon.d.ts +11 -0
- package/dist/typings/elements/Menu/Items/HeaderItem.d.ts +12 -0
- package/dist/typings/elements/Menu/Items/Item.d.ts +12 -0
- package/dist/typings/elements/Menu/Items/ItemMeta.d.ts +11 -0
- package/dist/typings/elements/Menu/Items/MediaBody.d.ts +11 -0
- package/dist/typings/elements/Menu/Items/MediaFigure.d.ts +11 -0
- package/dist/typings/elements/Menu/Items/MediaItem.d.ts +12 -0
- package/dist/typings/elements/Menu/Items/NextItem.d.ts +12 -0
- package/dist/typings/elements/Menu/Items/PreviousItem.d.ts +12 -0
- package/dist/typings/elements/Menu/Menu.d.ts +14 -0
- package/dist/typings/elements/Menu/Separator.d.ts +11 -0
- package/dist/typings/elements/Multiselect/Multiselect.d.ts +14 -0
- package/dist/typings/elements/Select/Select.d.ts +14 -0
- package/dist/typings/elements/Trigger/Trigger.d.ts +24 -0
- package/dist/typings/index.d.ts +31 -0
- package/dist/typings/styled/index.d.ts +29 -0
- package/dist/typings/styled/items/StyledAddItem.d.ts +13 -0
- package/dist/typings/styled/items/StyledItem.d.ts +20 -0
- package/dist/typings/styled/items/StyledItemIcon.d.ts +17 -0
- package/dist/typings/styled/items/StyledItemMeta.d.ts +18 -0
- package/dist/typings/styled/items/StyledNextIcon.d.ts +12 -0
- package/dist/typings/styled/items/StyledNextItem.d.ts +13 -0
- package/dist/typings/styled/items/StyledPreviousIcon.d.ts +12 -0
- package/dist/typings/styled/items/StyledPreviousItem.d.ts +13 -0
- package/dist/typings/styled/items/header/StyledHeaderIcon.d.ts +14 -0
- package/dist/typings/styled/items/header/StyledHeaderItem.d.ts +16 -0
- package/dist/typings/styled/items/media/StyledMediaBody.d.ts +17 -0
- package/dist/typings/styled/items/media/StyledMediaFigure.d.ts +285 -0
- package/dist/typings/styled/items/media/StyledMediaItem.d.ts +13 -0
- package/dist/typings/styled/menu/StyledMenu.d.ts +20 -0
- package/dist/typings/styled/menu/StyledMenuWrapper.d.ts +16 -0
- package/dist/typings/styled/menu/StyledSeparator.d.ts +10 -0
- package/dist/typings/styled/multiselect/StyledMultiselectInput.d.ts +22 -0
- package/dist/typings/styled/multiselect/StyledMultiselectItemWrapper.d.ts +10 -0
- package/dist/typings/styled/multiselect/StyledMultiselectItemsContainer.d.ts +16 -0
- package/dist/typings/styled/multiselect/StyledMultiselectMoreAnchor.d.ts +15 -0
- package/dist/typings/styled/select/StyledFauxInput.d.ts +22 -0
- package/dist/typings/styled/select/StyledInput.d.ts +15 -0
- package/dist/typings/styled/select/StyledSelect.d.ts +10 -0
- package/dist/typings/types/index.d.ts +150 -0
- package/dist/typings/utils/garden-placements.d.ts +26 -0
- package/dist/typings/utils/useDropdownContext.d.ts +28 -0
- package/dist/typings/utils/useFieldContext.d.ts +17 -0
- package/dist/typings/utils/useItemContext.d.ts +16 -0
- package/dist/typings/utils/useMenuContext.d.ts +17 -0
- package/package.json +56 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledInput } from '../select/StyledInput.js';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'dropdowns.multiselect_input';
|
|
12
|
+
const visibleStyling = props => {
|
|
13
|
+
const margin = props.isVisible ? `${props.theme.space.base / 2}px` : 0;
|
|
14
|
+
const minWidth = props.isVisible ? `${props.theme.space.base * 15}px` : 0;
|
|
15
|
+
let height = '0';
|
|
16
|
+
if (props.isVisible) {
|
|
17
|
+
height = `${props.theme.space.base * (props.isCompact ? 5 : 8)}px`;
|
|
18
|
+
}
|
|
19
|
+
return css(["opacity:", ";margin:", ";width:", ";min-width:", ";height:", ";"], !props.isVisible && 0, margin, !props.isVisible && 0, minWidth, height);
|
|
20
|
+
};
|
|
21
|
+
const StyledMultiselectInput = styled(StyledInput).attrs({
|
|
22
|
+
'data-garden-id': COMPONENT_ID,
|
|
23
|
+
'data-garden-version': '9.0.0-next.10',
|
|
24
|
+
isBare: true
|
|
25
|
+
}).withConfig({
|
|
26
|
+
displayName: "StyledMultiselectInput",
|
|
27
|
+
componentId: "sc-iiow29-0"
|
|
28
|
+
})(["flex-basis:", "px;flex-grow:1;align-self:center;min-height:0;", ";", ";"], props => props.theme.space.base * 15, props => visibleStyling(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
29
|
+
StyledMultiselectInput.defaultProps = {
|
|
30
|
+
theme: DEFAULT_THEME
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { StyledMultiselectInput };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
|
|
10
|
+
const COMPONENT_ID = 'dropdowns.multiselect_item_wrapper';
|
|
11
|
+
const StyledMultiselectItemWrapper = styled.div.attrs({
|
|
12
|
+
'data-garden-id': COMPONENT_ID,
|
|
13
|
+
'data-garden-version': '9.0.0-next.10'
|
|
14
|
+
}).withConfig({
|
|
15
|
+
displayName: "StyledMultiselectItemWrapper",
|
|
16
|
+
componentId: "sc-vgr7nd-0"
|
|
17
|
+
})(["display:inline-flex;align-items:center;margin:", "px;max-width:100%;", ";"], props => props.theme.space.base / 2, props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
18
|
+
StyledMultiselectItemWrapper.defaultProps = {
|
|
19
|
+
theme: DEFAULT_THEME
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { StyledMultiselectItemWrapper };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
|
|
10
|
+
const COMPONENT_ID = 'dropdowns.multiselect_items_container';
|
|
11
|
+
const sizeStyles = props => {
|
|
12
|
+
let margin;
|
|
13
|
+
let padding;
|
|
14
|
+
if (!props.isBare) {
|
|
15
|
+
const marginVertical = props.isCompact ? `-${props.theme.space.base * 1.5}px` : `-${props.theme.space.base * 2.5}px`;
|
|
16
|
+
margin = `${marginVertical} 0`;
|
|
17
|
+
const paddingVertical = props.isCompact ? '3px' : '1px';
|
|
18
|
+
const paddingEnd = `${props.theme.space.base}px`;
|
|
19
|
+
padding = `${paddingVertical} ${props.theme.rtl ? 0 : paddingEnd} ${paddingVertical} ${props.theme.rtl ? paddingEnd : 0}`;
|
|
20
|
+
}
|
|
21
|
+
return css(["margin:", ";padding:", ";"], margin, padding);
|
|
22
|
+
};
|
|
23
|
+
const StyledMultiselectItemsContainer = styled.div.attrs({
|
|
24
|
+
'data-garden-id': COMPONENT_ID,
|
|
25
|
+
'data-garden-version': '9.0.0-next.10'
|
|
26
|
+
}).withConfig({
|
|
27
|
+
displayName: "StyledMultiselectItemsContainer",
|
|
28
|
+
componentId: "sc-1dxwjyz-0"
|
|
29
|
+
})(["display:inline-flex;flex-grow:1;flex-wrap:wrap;min-width:0;", ";", ";"], props => sizeStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
30
|
+
StyledMultiselectItemsContainer.defaultProps = {
|
|
31
|
+
theme: DEFAULT_THEME
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { StyledMultiselectItemsContainer };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { getLineHeight, getColorV8, retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
|
|
10
|
+
const COMPONENT_ID = 'dropdowns.multiselect_more_anchor';
|
|
11
|
+
const StyledMultiselectMoreAnchor = styled.div.attrs({
|
|
12
|
+
'data-garden-id': COMPONENT_ID,
|
|
13
|
+
'data-garden-version': '9.0.0-next.10'
|
|
14
|
+
}).withConfig({
|
|
15
|
+
displayName: "StyledMultiselectMoreAnchor",
|
|
16
|
+
componentId: "sc-pkakky-0"
|
|
17
|
+
})(["display:inline-block;cursor:", ";padding:", "px 0;overflow:hidden;user-select:none;text-overflow:ellipsis;line-height:", ";white-space:nowrap;color:", ";:hover{text-decoration:", ";}", ";"], props => props.isDisabled ? 'default' : 'pointer', props => props.theme.space.base * (props.isCompact ? 0.75 : 1.5), props => props.isCompact ? '1em' : getLineHeight(props.theme.space.base * 5, props.theme.fontSizes.md), props => props.isDisabled ? getColorV8('neutralHue', 400, props.theme) : getColorV8('primaryHue', 600, props.theme), props => !props.isDisabled && 'underline', props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
18
|
+
StyledMultiselectMoreAnchor.defaultProps = {
|
|
19
|
+
theme: DEFAULT_THEME
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { StyledMultiselectMoreAnchor };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { FauxInput } from '@zendeskgarden/react-forms';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'dropdowns.faux_input';
|
|
12
|
+
const StyledFauxInput = styled(FauxInput).attrs(props => ({
|
|
13
|
+
'data-garden-id': COMPONENT_ID,
|
|
14
|
+
'data-garden-version': '9.0.0-next.10',
|
|
15
|
+
mediaLayout: true,
|
|
16
|
+
theme: props.theme
|
|
17
|
+
})).withConfig({
|
|
18
|
+
displayName: "StyledFauxInput",
|
|
19
|
+
componentId: "sc-bk8odf-0"
|
|
20
|
+
})(["cursor:", ";min-width:", "px;", ";"], props => !props.disabled && 'pointer', props => props.theme.space.base * (props.isCompact ? 25 : 36), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
21
|
+
StyledFauxInput.defaultProps = {
|
|
22
|
+
theme: DEFAULT_THEME
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { StyledFauxInput };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { Input } from '@zendeskgarden/react-forms';
|
|
9
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'dropdowns.input';
|
|
12
|
+
const hiddenStyling = css(["position:fixed;border:0;clip:rect(1px,1px,1px,1px);padding:0;width:1px;height:1px;overflow:hidden;white-space:nowrap;"]);
|
|
13
|
+
const StyledInput = styled(Input).attrs({
|
|
14
|
+
'data-garden-id': COMPONENT_ID,
|
|
15
|
+
'data-garden-version': '9.0.0-next.10',
|
|
16
|
+
isBare: true
|
|
17
|
+
}).withConfig({
|
|
18
|
+
displayName: "StyledInput",
|
|
19
|
+
componentId: "sc-kykaw8-0"
|
|
20
|
+
})(["", ";", ";"], props => props.isHidden && hiddenStyling, props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
21
|
+
StyledInput.defaultProps = {
|
|
22
|
+
theme: DEFAULT_THEME
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { StyledInput };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
|
|
10
|
+
const COMPONENT_ID = 'dropdowns.select';
|
|
11
|
+
const StyledSelect = styled.div.attrs({
|
|
12
|
+
'data-garden-id': COMPONENT_ID,
|
|
13
|
+
'data-garden-version': '9.0.0-next.10'
|
|
14
|
+
}).withConfig({
|
|
15
|
+
displayName: "StyledSelect",
|
|
16
|
+
componentId: "sc-xf4qjv-0"
|
|
17
|
+
})(["flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;", ";"], props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
18
|
+
StyledSelect.defaultProps = {
|
|
19
|
+
theme: DEFAULT_THEME
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { StyledSelect };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
const SHARED_PLACEMENT = ['auto', 'top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end'];
|
|
8
|
+
const PLACEMENT = [...SHARED_PLACEMENT, 'end', 'end-top', 'end-bottom', 'start', 'start-top', 'start-bottom'];
|
|
9
|
+
|
|
10
|
+
export { PLACEMENT };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
function getPopperPlacement(gardenPlacement) {
|
|
8
|
+
switch (gardenPlacement) {
|
|
9
|
+
case 'end':
|
|
10
|
+
return 'right';
|
|
11
|
+
case 'end-top':
|
|
12
|
+
return 'right-start';
|
|
13
|
+
case 'end-bottom':
|
|
14
|
+
return 'right-end';
|
|
15
|
+
case 'start':
|
|
16
|
+
return 'left';
|
|
17
|
+
case 'start-top':
|
|
18
|
+
return 'left-start';
|
|
19
|
+
case 'start-bottom':
|
|
20
|
+
return 'left-end';
|
|
21
|
+
default:
|
|
22
|
+
return gardenPlacement;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function getRtlPopperPlacement(gardenPlacement) {
|
|
26
|
+
const popperPlacement = getPopperPlacement(gardenPlacement);
|
|
27
|
+
switch (popperPlacement) {
|
|
28
|
+
case 'left':
|
|
29
|
+
return 'right';
|
|
30
|
+
case 'left-start':
|
|
31
|
+
return 'right-start';
|
|
32
|
+
case 'left-end':
|
|
33
|
+
return 'right-end';
|
|
34
|
+
case 'top-start':
|
|
35
|
+
return 'top-end';
|
|
36
|
+
case 'top-end':
|
|
37
|
+
return 'top-start';
|
|
38
|
+
case 'right':
|
|
39
|
+
return 'left';
|
|
40
|
+
case 'right-start':
|
|
41
|
+
return 'left-start';
|
|
42
|
+
case 'right-end':
|
|
43
|
+
return 'left-end';
|
|
44
|
+
case 'bottom-start':
|
|
45
|
+
return 'bottom-end';
|
|
46
|
+
case 'bottom-end':
|
|
47
|
+
return 'bottom-start';
|
|
48
|
+
default:
|
|
49
|
+
return popperPlacement;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function getArrowPosition(popperPlacement) {
|
|
53
|
+
const arrowPositionMappings = {
|
|
54
|
+
auto: 'top',
|
|
55
|
+
top: 'bottom',
|
|
56
|
+
'top-start': 'bottom-left',
|
|
57
|
+
'top-end': 'bottom-right',
|
|
58
|
+
right: 'left',
|
|
59
|
+
'right-start': 'left-top',
|
|
60
|
+
'right-end': 'left-bottom',
|
|
61
|
+
bottom: 'top',
|
|
62
|
+
'bottom-start': 'top-left',
|
|
63
|
+
'bottom-end': 'top-right',
|
|
64
|
+
left: 'right',
|
|
65
|
+
'left-start': 'right-top',
|
|
66
|
+
'left-end': 'right-bottom'
|
|
67
|
+
};
|
|
68
|
+
return popperPlacement ? arrowPositionMappings[popperPlacement] : 'top';
|
|
69
|
+
}
|
|
70
|
+
function getMenuPosition(popperPlacement) {
|
|
71
|
+
if (popperPlacement === 'auto') {
|
|
72
|
+
return 'bottom';
|
|
73
|
+
}
|
|
74
|
+
return popperPlacement ? popperPlacement.split('-')[0] : 'bottom';
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { getArrowPosition, getMenuPosition, getPopperPlacement, getRtlPopperPlacement };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const DropdownContext = React__default.createContext(undefined);
|
|
10
|
+
const useDropdownContext = () => {
|
|
11
|
+
const dropdownContext = useContext(DropdownContext);
|
|
12
|
+
if (!dropdownContext) {
|
|
13
|
+
throw new Error('This component must be rendered within a `Dropdown` component.');
|
|
14
|
+
}
|
|
15
|
+
return dropdownContext;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { DropdownContext, useDropdownContext as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const FieldContext = React__default.createContext(undefined);
|
|
10
|
+
const useFieldContext = () => {
|
|
11
|
+
const fieldContext = useContext(FieldContext);
|
|
12
|
+
if (!fieldContext) {
|
|
13
|
+
throw new Error('This component must be rendered within a `Field` component.');
|
|
14
|
+
}
|
|
15
|
+
return fieldContext;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { FieldContext, useFieldContext as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const ItemContext = React__default.createContext(undefined);
|
|
10
|
+
const useItemContext = () => {
|
|
11
|
+
const context = useContext(ItemContext);
|
|
12
|
+
if (!context) {
|
|
13
|
+
throw new Error('This component must be rendered within an `Item` component.');
|
|
14
|
+
}
|
|
15
|
+
return context;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { ItemContext, useItemContext as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React__default, { useContext } from 'react';
|
|
8
|
+
|
|
9
|
+
const MenuContext = React__default.createContext(undefined);
|
|
10
|
+
const useMenuContext = () => {
|
|
11
|
+
const menuContext = useContext(MenuContext);
|
|
12
|
+
if (!menuContext) {
|
|
13
|
+
throw new Error('This component must be rendered within a `Menu` component.');
|
|
14
|
+
}
|
|
15
|
+
return menuContext;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { MenuContext, useMenuContext as default };
|