@fluentui/react-accordion 9.0.0-nightly.d730088d7f.0 → 9.0.0-rc.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/CHANGELOG.json +812 -29
- package/CHANGELOG.md +292 -105
- package/Spec.md +36 -4
- package/dist/{react-accordion.d.ts → index.d.ts} +109 -103
- package/{lib → dist}/tsdoc-metadata.json +0 -0
- package/lib/Accordion.js.map +1 -1
- package/lib/AccordionHeader.js.map +1 -1
- package/lib/AccordionItem.js.map +1 -1
- package/lib/AccordionPanel.js.map +1 -1
- package/lib/components/Accordion/Accordion.js +10 -8
- package/lib/components/Accordion/Accordion.js.map +1 -1
- package/lib/components/Accordion/Accordion.types.js.map +1 -1
- package/lib/components/Accordion/AccordionContext.js +4 -3
- package/lib/components/Accordion/AccordionContext.js.map +1 -1
- package/lib/components/Accordion/index.js +1 -0
- package/lib/components/Accordion/index.js.map +1 -1
- package/lib/components/Accordion/renderAccordion.js +7 -7
- package/lib/components/Accordion/renderAccordion.js.map +1 -1
- package/lib/components/Accordion/useAccordion.js +44 -64
- package/lib/components/Accordion/useAccordion.js.map +1 -1
- package/lib/components/Accordion/useAccordionContextValues.js +13 -11
- package/lib/components/Accordion/useAccordionContextValues.js.map +1 -1
- package/lib/components/Accordion/useAccordionStyles.js +14 -0
- package/lib/components/Accordion/useAccordionStyles.js.map +1 -0
- package/lib/components/AccordionHeader/AccordionHeader.js +11 -10
- package/lib/components/AccordionHeader/AccordionHeader.js.map +1 -1
- package/lib/components/AccordionHeader/AccordionHeader.types.js.map +1 -1
- package/lib/components/AccordionHeader/AccordionHeaderContext.js +2 -4
- package/lib/components/AccordionHeader/AccordionHeaderContext.js.map +1 -1
- package/lib/components/AccordionHeader/index.js +0 -1
- package/lib/components/AccordionHeader/index.js.map +1 -1
- package/lib/components/AccordionHeader/renderAccordionHeader.js +11 -8
- package/lib/components/AccordionHeader/renderAccordionHeader.js.map +1 -1
- package/lib/components/AccordionHeader/useAccordionHeader.js +53 -48
- package/lib/components/AccordionHeader/useAccordionHeader.js.map +1 -1
- package/lib/components/AccordionHeader/useAccordionHeaderContextValues.js +14 -14
- package/lib/components/AccordionHeader/useAccordionHeaderContextValues.js.map +1 -1
- package/lib/components/AccordionHeader/useAccordionHeaderStyles.js +55 -40
- package/lib/components/AccordionHeader/useAccordionHeaderStyles.js.map +1 -1
- package/lib/components/AccordionItem/AccordionItem.js +10 -8
- package/lib/components/AccordionItem/AccordionItem.js.map +1 -1
- package/lib/components/AccordionItem/AccordionItem.types.js.map +1 -1
- package/lib/components/AccordionItem/AccordionItemContext.js +4 -5
- package/lib/components/AccordionItem/AccordionItemContext.js.map +1 -1
- package/lib/components/AccordionItem/index.js +1 -0
- package/lib/components/AccordionItem/index.js.map +1 -1
- package/lib/components/AccordionItem/renderAccordionItem.js +7 -8
- package/lib/components/AccordionItem/renderAccordionItem.js.map +1 -1
- package/lib/components/AccordionItem/useAccordionItem.js +19 -34
- package/lib/components/AccordionItem/useAccordionItem.js.map +1 -1
- package/lib/components/AccordionItem/useAccordionItemContextValues.js +12 -12
- package/lib/components/AccordionItem/useAccordionItemContextValues.js.map +1 -1
- package/lib/components/AccordionItem/useAccordionItemStyles.js +14 -0
- package/lib/components/AccordionItem/useAccordionItemStyles.js.map +1 -0
- package/lib/components/AccordionPanel/AccordionPanel.js +8 -8
- package/lib/components/AccordionPanel/AccordionPanel.js.map +1 -1
- package/lib/components/AccordionPanel/AccordionPanel.types.js.map +1 -1
- package/lib/components/AccordionPanel/index.js.map +1 -1
- package/lib/components/AccordionPanel/renderAccordionPanel.js +7 -8
- package/lib/components/AccordionPanel/renderAccordionPanel.js.map +1 -1
- package/lib/components/AccordionPanel/useAccordionPanel.js +23 -14
- package/lib/components/AccordionPanel/useAccordionPanel.js.map +1 -1
- package/lib/components/AccordionPanel/useAccordionPanelStyles.js +13 -5
- package/lib/components/AccordionPanel/useAccordionPanelStyles.js.map +1 -1
- package/lib/index.js +8 -4
- package/lib/index.js.map +1 -1
- package/lib-commonjs/Accordion.js +1 -1
- package/lib-commonjs/Accordion.js.map +1 -1
- package/lib-commonjs/AccordionHeader.js +1 -1
- package/lib-commonjs/AccordionHeader.js.map +1 -1
- package/lib-commonjs/AccordionItem.js +1 -1
- package/lib-commonjs/AccordionItem.js.map +1 -1
- package/lib-commonjs/AccordionPanel.js +1 -1
- package/lib-commonjs/AccordionPanel.js.map +1 -1
- package/lib-commonjs/components/Accordion/Accordion.js +12 -9
- package/lib-commonjs/components/Accordion/Accordion.js.map +1 -1
- package/lib-commonjs/components/Accordion/Accordion.types.js.map +1 -1
- package/lib-commonjs/components/Accordion/AccordionContext.js +4 -3
- package/lib-commonjs/components/Accordion/AccordionContext.js.map +1 -1
- package/lib-commonjs/components/Accordion/index.js +3 -1
- package/lib-commonjs/components/Accordion/index.js.map +1 -1
- package/lib-commonjs/components/Accordion/renderAccordion.js +12 -13
- package/lib-commonjs/components/Accordion/renderAccordion.js.map +1 -1
- package/lib-commonjs/components/Accordion/useAccordion.js +49 -69
- package/lib-commonjs/components/Accordion/useAccordion.js.map +1 -1
- package/lib-commonjs/components/Accordion/useAccordionContextValues.js +15 -13
- package/lib-commonjs/components/Accordion/useAccordionContextValues.js.map +1 -1
- package/lib-commonjs/components/Accordion/useAccordionStyles.js +25 -0
- package/lib-commonjs/components/Accordion/useAccordionStyles.js.map +1 -0
- package/lib-commonjs/components/AccordionHeader/AccordionHeader.js +12 -11
- package/lib-commonjs/components/AccordionHeader/AccordionHeader.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/AccordionHeader.types.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/AccordionHeaderContext.js +2 -4
- package/lib-commonjs/components/AccordionHeader/AccordionHeaderContext.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/index.js +1 -3
- package/lib-commonjs/components/AccordionHeader/index.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/renderAccordionHeader.js +16 -15
- package/lib-commonjs/components/AccordionHeader/renderAccordionHeader.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/useAccordionHeader.js +60 -54
- package/lib-commonjs/components/AccordionHeader/useAccordionHeader.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/useAccordionHeaderContextValues.js +17 -17
- package/lib-commonjs/components/AccordionHeader/useAccordionHeaderContextValues.js.map +1 -1
- package/lib-commonjs/components/AccordionHeader/useAccordionHeaderStyles.js +60 -43
- package/lib-commonjs/components/AccordionHeader/useAccordionHeaderStyles.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/AccordionItem.js +12 -9
- package/lib-commonjs/components/AccordionItem/AccordionItem.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/AccordionItem.types.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/AccordionItemContext.js +6 -7
- package/lib-commonjs/components/AccordionItem/AccordionItemContext.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/index.js +3 -1
- package/lib-commonjs/components/AccordionItem/index.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/renderAccordionItem.js +12 -15
- package/lib-commonjs/components/AccordionItem/renderAccordionItem.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/useAccordionItem.js +26 -43
- package/lib-commonjs/components/AccordionItem/useAccordionItem.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/useAccordionItemContextValues.js +15 -15
- package/lib-commonjs/components/AccordionItem/useAccordionItemContextValues.js.map +1 -1
- package/lib-commonjs/components/AccordionItem/useAccordionItemStyles.js +25 -0
- package/lib-commonjs/components/AccordionItem/useAccordionItemStyles.js.map +1 -0
- package/lib-commonjs/components/AccordionPanel/AccordionPanel.js +9 -9
- package/lib-commonjs/components/AccordionPanel/AccordionPanel.js.map +1 -1
- package/lib-commonjs/components/AccordionPanel/AccordionPanel.types.js.map +1 -1
- package/lib-commonjs/components/AccordionPanel/index.js +1 -1
- package/lib-commonjs/components/AccordionPanel/index.js.map +1 -1
- package/lib-commonjs/components/AccordionPanel/renderAccordionPanel.js +11 -14
- package/lib-commonjs/components/AccordionPanel/renderAccordionPanel.js.map +1 -1
- package/lib-commonjs/components/AccordionPanel/useAccordionPanel.js +27 -16
- package/lib-commonjs/components/AccordionPanel/useAccordionPanel.js.map +1 -1
- package/lib-commonjs/components/AccordionPanel/useAccordionPanelStyles.js +16 -8
- package/lib-commonjs/components/AccordionPanel/useAccordionPanelStyles.js.map +1 -1
- package/lib-commonjs/index.js +192 -5
- package/lib-commonjs/index.js.map +1 -1
- package/package.json +27 -31
- package/lib/Accordion.d.ts +0 -1
- package/lib/AccordionHeader.d.ts +0 -1
- package/lib/AccordionItem.d.ts +0 -1
- package/lib/AccordionPanel.d.ts +0 -1
- package/lib/common/isConformant.d.ts +0 -4
- package/lib/common/isConformant.js +0 -12
- package/lib/common/isConformant.js.map +0 -1
- package/lib/components/Accordion/Accordion.d.ts +0 -6
- package/lib/components/Accordion/Accordion.types.d.ts +0 -52
- package/lib/components/Accordion/AccordionContext.d.ts +0 -3
- package/lib/components/Accordion/index.d.ts +0 -6
- package/lib/components/Accordion/renderAccordion.d.ts +0 -5
- package/lib/components/Accordion/useAccordion.d.ts +0 -9
- package/lib/components/Accordion/useAccordionContextValues.d.ts +0 -2
- package/lib/components/AccordionHeader/AccordionHeader.d.ts +0 -6
- package/lib/components/AccordionHeader/AccordionHeader.types.d.ts +0 -47
- package/lib/components/AccordionHeader/AccordionHeaderContext.d.ts +0 -4
- package/lib/components/AccordionHeader/AccordionHeaderExpandIcon.d.ts +0 -3
- package/lib/components/AccordionHeader/AccordionHeaderExpandIcon.js +0 -42
- package/lib/components/AccordionHeader/AccordionHeaderExpandIcon.js.map +0 -1
- package/lib/components/AccordionHeader/index.d.ts +0 -7
- package/lib/components/AccordionHeader/renderAccordionHeader.d.ts +0 -5
- package/lib/components/AccordionHeader/useAccordionHeader.d.ts +0 -12
- package/lib/components/AccordionHeader/useAccordionHeaderContextValues.d.ts +0 -2
- package/lib/components/AccordionHeader/useAccordionHeaderStyles.d.ts +0 -3
- package/lib/components/AccordionItem/AccordionItem.d.ts +0 -6
- package/lib/components/AccordionItem/AccordionItem.types.d.ts +0 -25
- package/lib/components/AccordionItem/AccordionItemContext.d.ts +0 -4
- package/lib/components/AccordionItem/index.d.ts +0 -6
- package/lib/components/AccordionItem/renderAccordionItem.d.ts +0 -5
- package/lib/components/AccordionItem/useAccordionItem.d.ts +0 -12
- package/lib/components/AccordionItem/useAccordionItemContextValues.d.ts +0 -2
- package/lib/components/AccordionPanel/AccordionPanel.d.ts +0 -6
- package/lib/components/AccordionPanel/AccordionPanel.types.d.ts +0 -11
- package/lib/components/AccordionPanel/index.d.ts +0 -5
- package/lib/components/AccordionPanel/renderAccordionPanel.d.ts +0 -5
- package/lib/components/AccordionPanel/useAccordionPanel.d.ts +0 -12
- package/lib/components/AccordionPanel/useAccordionPanelStyles.d.ts +0 -3
- package/lib/index.d.ts +0 -4
- package/lib-commonjs/Accordion.d.ts +0 -1
- package/lib-commonjs/AccordionHeader.d.ts +0 -1
- package/lib-commonjs/AccordionItem.d.ts +0 -1
- package/lib-commonjs/AccordionPanel.d.ts +0 -1
- package/lib-commonjs/common/isConformant.d.ts +0 -4
- package/lib-commonjs/common/isConformant.js +0 -23
- package/lib-commonjs/common/isConformant.js.map +0 -1
- package/lib-commonjs/components/Accordion/Accordion.d.ts +0 -6
- package/lib-commonjs/components/Accordion/Accordion.types.d.ts +0 -52
- package/lib-commonjs/components/Accordion/AccordionContext.d.ts +0 -3
- package/lib-commonjs/components/Accordion/index.d.ts +0 -6
- package/lib-commonjs/components/Accordion/renderAccordion.d.ts +0 -5
- package/lib-commonjs/components/Accordion/useAccordion.d.ts +0 -9
- package/lib-commonjs/components/Accordion/useAccordionContextValues.d.ts +0 -2
- package/lib-commonjs/components/AccordionHeader/AccordionHeader.d.ts +0 -6
- package/lib-commonjs/components/AccordionHeader/AccordionHeader.types.d.ts +0 -47
- package/lib-commonjs/components/AccordionHeader/AccordionHeaderContext.d.ts +0 -4
- package/lib-commonjs/components/AccordionHeader/AccordionHeaderExpandIcon.d.ts +0 -3
- package/lib-commonjs/components/AccordionHeader/AccordionHeaderExpandIcon.js +0 -52
- package/lib-commonjs/components/AccordionHeader/AccordionHeaderExpandIcon.js.map +0 -1
- package/lib-commonjs/components/AccordionHeader/index.d.ts +0 -7
- package/lib-commonjs/components/AccordionHeader/renderAccordionHeader.d.ts +0 -5
- package/lib-commonjs/components/AccordionHeader/useAccordionHeader.d.ts +0 -12
- package/lib-commonjs/components/AccordionHeader/useAccordionHeaderContextValues.d.ts +0 -2
- package/lib-commonjs/components/AccordionHeader/useAccordionHeaderStyles.d.ts +0 -3
- package/lib-commonjs/components/AccordionItem/AccordionItem.d.ts +0 -6
- package/lib-commonjs/components/AccordionItem/AccordionItem.types.d.ts +0 -25
- package/lib-commonjs/components/AccordionItem/AccordionItemContext.d.ts +0 -4
- package/lib-commonjs/components/AccordionItem/index.d.ts +0 -6
- package/lib-commonjs/components/AccordionItem/renderAccordionItem.d.ts +0 -5
- package/lib-commonjs/components/AccordionItem/useAccordionItem.d.ts +0 -12
- package/lib-commonjs/components/AccordionItem/useAccordionItemContextValues.d.ts +0 -2
- package/lib-commonjs/components/AccordionPanel/AccordionPanel.d.ts +0 -6
- package/lib-commonjs/components/AccordionPanel/AccordionPanel.types.d.ts +0 -11
- package/lib-commonjs/components/AccordionPanel/index.d.ts +0 -5
- package/lib-commonjs/components/AccordionPanel/renderAccordionPanel.d.ts +0 -5
- package/lib-commonjs/components/AccordionPanel/useAccordionPanel.d.ts +0 -12
- package/lib-commonjs/components/AccordionPanel/useAccordionPanelStyles.d.ts +0 -3
- package/lib-commonjs/index.d.ts +0 -4
|
@@ -1,69 +1,59 @@
|
|
|
1
|
-
import { __assign, __spreadArrays } from "tslib";
|
|
2
1
|
import * as React from 'react';
|
|
3
2
|
import { getNativeElementProps, useControllableState, useEventCallback } from '@fluentui/react-utilities';
|
|
4
|
-
|
|
3
|
+
import { useArrowNavigationGroup } from '@fluentui/react-tabster';
|
|
5
4
|
/**
|
|
6
5
|
* Returns the props and state required to render the component
|
|
7
6
|
* @param props - Accordion properties
|
|
8
7
|
* @param ref - reference to root HTMLElement of Accordion
|
|
9
8
|
*/
|
|
10
9
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
defaultState: function () {
|
|
27
|
-
return initializeUncontrolledOpenItems({
|
|
28
|
-
collapsible: collapsible,
|
|
29
|
-
defaultOpenItems: defaultOpenItems,
|
|
30
|
-
multiple: multiple
|
|
31
|
-
});
|
|
32
|
-
},
|
|
10
|
+
export const useAccordion_unstable = (props, ref) => {
|
|
11
|
+
const {
|
|
12
|
+
openItems: controlledOpenItems,
|
|
13
|
+
defaultOpenItems,
|
|
14
|
+
multiple = false,
|
|
15
|
+
collapsible = false,
|
|
16
|
+
onToggle,
|
|
17
|
+
navigation
|
|
18
|
+
} = props;
|
|
19
|
+
const [openItems, setOpenItems] = useControllableState({
|
|
20
|
+
state: React.useMemo(() => normalizeValues(controlledOpenItems), [controlledOpenItems]),
|
|
21
|
+
defaultState: () => initializeUncontrolledOpenItems({
|
|
22
|
+
defaultOpenItems,
|
|
23
|
+
multiple
|
|
24
|
+
}),
|
|
33
25
|
initialState: []
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
});
|
|
27
|
+
const arrowNavigationProps = useArrowNavigationGroup({
|
|
28
|
+
circular: navigation === 'circular',
|
|
29
|
+
tabbable: true
|
|
30
|
+
});
|
|
31
|
+
const requestToggle = useEventCallback((event, data) => {
|
|
39
32
|
onToggle === null || onToggle === void 0 ? void 0 : onToggle(event, data);
|
|
40
|
-
setOpenItems(
|
|
41
|
-
return updateOpenItems(data.value, previousOpenItems, {
|
|
42
|
-
collapsible: collapsible,
|
|
43
|
-
multiple: multiple
|
|
44
|
-
});
|
|
45
|
-
});
|
|
33
|
+
setOpenItems(previousOpenItems => updateOpenItems(data.value, previousOpenItems, multiple, collapsible));
|
|
46
34
|
});
|
|
47
35
|
return {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
36
|
+
collapsible,
|
|
37
|
+
navigation,
|
|
38
|
+
openItems,
|
|
39
|
+
requestToggle,
|
|
40
|
+
components: {
|
|
41
|
+
root: 'div'
|
|
42
|
+
},
|
|
43
|
+
root: getNativeElementProps('div', { ...props,
|
|
44
|
+
...(navigation ? arrowNavigationProps : {}),
|
|
45
|
+
ref
|
|
46
|
+
})
|
|
56
47
|
};
|
|
57
48
|
};
|
|
58
49
|
/**
|
|
59
50
|
* Initial value for the uncontrolled case of the list of open indexes
|
|
60
51
|
*/
|
|
61
52
|
|
|
62
|
-
function initializeUncontrolledOpenItems(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
function initializeUncontrolledOpenItems({
|
|
54
|
+
defaultOpenItems,
|
|
55
|
+
multiple
|
|
56
|
+
}) {
|
|
67
57
|
if (defaultOpenItems !== undefined) {
|
|
68
58
|
if (Array.isArray(defaultOpenItems)) {
|
|
69
59
|
return multiple ? defaultOpenItems : [defaultOpenItems[0]];
|
|
@@ -71,36 +61,26 @@ function initializeUncontrolledOpenItems(_a) {
|
|
|
71
61
|
|
|
72
62
|
return [defaultOpenItems];
|
|
73
63
|
}
|
|
74
|
-
/**
|
|
75
|
-
* TODO: since the dropping of descendants API due to performance issues,
|
|
76
|
-
* the default behavior of Accordion has been compromised and [0] makes no sense
|
|
77
|
-
* indexes are not used anymore to ensure the position of the element which should be opened by default
|
|
78
|
-
*/
|
|
79
64
|
|
|
80
|
-
|
|
81
|
-
return collapsible ? [] : [0];
|
|
65
|
+
return [];
|
|
82
66
|
}
|
|
83
67
|
/**
|
|
84
68
|
* Updates the list of open indexes based on an index that changes
|
|
85
69
|
* @param value - the index that will change
|
|
86
70
|
* @param previousOpenItems - list of current open indexes
|
|
87
|
-
* @param
|
|
71
|
+
* @param multiple - if Accordion support multiple Panels opened at the same time
|
|
72
|
+
* @param collapsible - if Accordion support multiple Panels closed at the same time
|
|
88
73
|
*/
|
|
89
74
|
|
|
90
75
|
|
|
91
|
-
function updateOpenItems(value, previousOpenItems,
|
|
92
|
-
var multiple = _a.multiple,
|
|
93
|
-
collapsible = _a.collapsible;
|
|
94
|
-
|
|
76
|
+
function updateOpenItems(value, previousOpenItems, multiple, collapsible) {
|
|
95
77
|
if (multiple) {
|
|
96
78
|
if (previousOpenItems.includes(value)) {
|
|
97
79
|
if (previousOpenItems.length > 1 || collapsible) {
|
|
98
|
-
return previousOpenItems.filter(
|
|
99
|
-
return i !== value;
|
|
100
|
-
});
|
|
80
|
+
return previousOpenItems.filter(i => i !== value);
|
|
101
81
|
}
|
|
102
82
|
} else {
|
|
103
|
-
return
|
|
83
|
+
return [...previousOpenItems, value].sort();
|
|
104
84
|
}
|
|
105
85
|
} else {
|
|
106
86
|
return previousOpenItems[0] === value && collapsible ? [] : [value];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/Accordion/useAccordion.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport type { AccordionProps, AccordionState, AccordionToggleData, AccordionToggleEvent } from './Accordion.types';\nimport type { AccordionItemValue } from '../AccordionItem/AccordionItem.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n\n/**\n * Returns the props and state required to render the component\n * @param props - Accordion properties\n * @param ref - reference to root HTMLElement of Accordion\n */\nexport const useAccordion_unstable = (props: AccordionProps, ref: React.Ref<HTMLElement>): AccordionState => {\n const {\n openItems: controlledOpenItems,\n defaultOpenItems,\n multiple = false,\n collapsible = false,\n onToggle,\n navigation,\n } = props;\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => normalizeValues(controlledOpenItems), [controlledOpenItems]),\n defaultState: () => initializeUncontrolledOpenItems({ defaultOpenItems, multiple }),\n initialState: [],\n });\n\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: navigation === 'circular',\n tabbable: true,\n });\n\n const requestToggle = useEventCallback((event: AccordionToggleEvent, data: AccordionToggleData) => {\n onToggle?.(event, data);\n setOpenItems(previousOpenItems => updateOpenItems(data.value, previousOpenItems, multiple, collapsible));\n });\n\n return {\n collapsible,\n navigation,\n openItems,\n requestToggle,\n components: {\n root: 'div',\n },\n root: getNativeElementProps('div', {\n ...props,\n ...(navigation ? arrowNavigationProps : {}),\n ref,\n }),\n };\n};\n\n/**\n * Initial value for the uncontrolled case of the list of open indexes\n */\nfunction initializeUncontrolledOpenItems({\n defaultOpenItems,\n multiple,\n}: Pick<AccordionProps, 'defaultOpenItems' | 'multiple'>): AccordionItemValue[] {\n if (defaultOpenItems !== undefined) {\n if (Array.isArray(defaultOpenItems)) {\n return multiple ? defaultOpenItems : [defaultOpenItems[0]];\n }\n return [defaultOpenItems];\n }\n return [];\n}\n\n/**\n * Updates the list of open indexes based on an index that changes\n * @param value - the index that will change\n * @param previousOpenItems - list of current open indexes\n * @param multiple - if Accordion support multiple Panels opened at the same time\n * @param collapsible - if Accordion support multiple Panels closed at the same time\n */\nfunction updateOpenItems(\n value: AccordionItemValue,\n previousOpenItems: AccordionItemValue[],\n multiple: boolean,\n collapsible: boolean,\n) {\n if (multiple) {\n if (previousOpenItems.includes(value)) {\n if (previousOpenItems.length > 1 || collapsible) {\n return previousOpenItems.filter(i => i !== value);\n }\n } else {\n return [...previousOpenItems, value].sort();\n }\n } else {\n return previousOpenItems[0] === value && collapsible ? [] : [value];\n }\n return previousOpenItems;\n}\n\n/**\n * Normalizes Accordion index into an array of indexes\n */\nfunction normalizeValues(index?: AccordionItemValue | AccordionItemValue[]): AccordionItemValue[] | undefined {\n if (index === undefined) {\n return undefined;\n }\n return Array.isArray(index) ? index : [index];\n}\n"],"sourceRoot":"../src/"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
export function
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export function useAccordionContextValues_unstable(state) {
|
|
2
|
+
const {
|
|
3
|
+
navigation,
|
|
4
|
+
openItems,
|
|
5
|
+
requestToggle,
|
|
6
|
+
collapsible
|
|
7
|
+
} = state; // This context is created with "@fluentui/react-context-selector", these is no sense to memoize it
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
openItems
|
|
10
|
-
requestToggle
|
|
11
|
-
collapsible
|
|
9
|
+
const accordion = {
|
|
10
|
+
navigation,
|
|
11
|
+
openItems,
|
|
12
|
+
requestToggle,
|
|
13
|
+
collapsible
|
|
12
14
|
};
|
|
13
15
|
return {
|
|
14
|
-
accordion
|
|
16
|
+
accordion
|
|
15
17
|
};
|
|
16
18
|
}
|
|
17
19
|
//# sourceMappingURL=useAccordionContextValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/Accordion/useAccordionContextValues.ts"],"names":[],"mappings":"AAEA,OAAM,SAAU,kCAAV,CAA6C,KAA7C,EAAkE;AACtE,QAAM;AAAE,IAAA,UAAF;AAAc,IAAA,SAAd;AAAyB,IAAA,aAAzB;AAAwC,IAAA;AAAxC,MAAwD,KAA9D,CADsE,CAGtE;;AACA,QAAM,SAAS,GAA0B;AACvC,IAAA,UADuC;AAEvC,IAAA,SAFuC;AAGvC,IAAA,aAHuC;AAIvC,IAAA;AAJuC,GAAzC;AAOA,SAAO;AAAE,IAAA;AAAF,GAAP;AACD","sourcesContent":["import type { AccordionContextValue, AccordionContextValues, AccordionState } from './Accordion.types';\n\nexport function useAccordionContextValues_unstable(state: AccordionState): AccordionContextValues {\n const { navigation, openItems, requestToggle, collapsible } = state;\n\n // This context is created with \"@fluentui/react-context-selector\", these is no sense to memoize it\n const accordion: AccordionContextValue = {\n navigation,\n openItems,\n requestToggle,\n collapsible,\n };\n\n return { accordion };\n}\n"],"sourceRoot":"../src/"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { mergeClasses } from '@griffel/react';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use `accordionClassNames.root` instead.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const accordionClassName = 'fui-Accordion';
|
|
7
|
+
export const accordionClassNames = {
|
|
8
|
+
root: 'fui-Accordion'
|
|
9
|
+
};
|
|
10
|
+
export const useAccordionStyles_unstable = state => {
|
|
11
|
+
state.root.className = mergeClasses(accordionClassNames.root, state.root.className);
|
|
12
|
+
return state;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=useAccordionStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["components/Accordion/useAccordionStyles.ts"],"names":[],"mappings":"AACA,SAAS,YAAT,QAA6B,gBAA7B;AAGA;;AAEG;;AACH,OAAO,MAAM,kBAAkB,GAAG,eAA3B;AACP,OAAO,MAAM,mBAAmB,GAAmC;AACjE,EAAA,IAAI,EAAE;AAD2D,CAA5D;AAIP,OAAO,MAAM,2BAA2B,GAAI,KAAD,IAA0B;AACnE,EAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,YAAY,CAAC,mBAAmB,CAAC,IAArB,EAA2B,KAAK,CAAC,IAAN,CAAW,SAAtC,CAAnC;AAEA,SAAO,KAAP;AACD,CAJM","sourcesContent":["import type { SlotClassNames } from '@fluentui/react-utilities';\nimport { mergeClasses } from '@griffel/react';\nimport type { AccordionSlots, AccordionState } from './Accordion.types';\n\n/**\n * @deprecated Use `accordionClassNames.root` instead.\n */\nexport const accordionClassName = 'fui-Accordion';\nexport const accordionClassNames: SlotClassNames<AccordionSlots> = {\n root: 'fui-Accordion',\n};\n\nexport const useAccordionStyles_unstable = (state: AccordionState) => {\n state.root.className = mergeClasses(accordionClassNames.root, state.root.className);\n\n return state;\n};\n"],"sourceRoot":"../src/"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { useAccordionHeader_unstable } from './useAccordionHeader';
|
|
3
|
+
import { renderAccordionHeader_unstable } from './renderAccordionHeader';
|
|
4
|
+
import { useAccordionHeaderStyles_unstable } from './useAccordionHeaderStyles';
|
|
5
|
+
import { useAccordionHeaderContextValues_unstable } from './useAccordionHeaderContextValues';
|
|
6
6
|
/**
|
|
7
|
-
* Define a styled AccordionHeader, using the `
|
|
7
|
+
* Define a styled AccordionHeader, using the `useAccordionHeader_unstable` and `useAccordionHeaderStyles_unstable`
|
|
8
|
+
* hooks.
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return
|
|
11
|
+
export const AccordionHeader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
12
|
+
const state = useAccordionHeader_unstable(props, ref);
|
|
13
|
+
const contextValues = useAccordionHeaderContextValues_unstable(state);
|
|
14
|
+
useAccordionHeaderStyles_unstable(state);
|
|
15
|
+
return renderAccordionHeader_unstable(state, contextValues);
|
|
15
16
|
});
|
|
16
17
|
AccordionHeader.displayName = 'AccordionHeader';
|
|
17
18
|
//# sourceMappingURL=AccordionHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/AccordionHeader/AccordionHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,2BAAT,QAA4C,sBAA5C;AACA,SAAS,8BAAT,QAA+C,yBAA/C;AACA,SAAS,iCAAT,QAAkD,4BAAlD;AACA,SAAS,wCAAT,QAAyD,mCAAzD;AAIA;;;AAGG;;AACH,OAAO,MAAM,eAAe,gBAA8C,KAAK,CAAC,UAAN,CAAiB,CAAC,KAAD,EAAQ,GAAR,KAAe;AACxG,QAAM,KAAK,GAAG,2BAA2B,CAAC,KAAD,EAAQ,GAAR,CAAzC;AACA,QAAM,aAAa,GAAG,wCAAwC,CAAC,KAAD,CAA9D;AAEA,EAAA,iCAAiC,CAAC,KAAD,CAAjC;AAEA,SAAO,8BAA8B,CAAC,KAAD,EAAQ,aAAR,CAArC;AACD,CAPyE,CAAnE;AASP,eAAe,CAAC,WAAhB,GAA8B,iBAA9B","sourcesContent":["import * as React from 'react';\nimport { useAccordionHeader_unstable } from './useAccordionHeader';\nimport { renderAccordionHeader_unstable } from './renderAccordionHeader';\nimport { useAccordionHeaderStyles_unstable } from './useAccordionHeaderStyles';\nimport { useAccordionHeaderContextValues_unstable } from './useAccordionHeaderContextValues';\nimport type { AccordionHeaderProps } from './AccordionHeader.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\n\n/**\n * Define a styled AccordionHeader, using the `useAccordionHeader_unstable` and `useAccordionHeaderStyles_unstable`\n * hooks.\n */\nexport const AccordionHeader: ForwardRefComponent<AccordionHeaderProps> = React.forwardRef((props, ref) => {\n const state = useAccordionHeader_unstable(props, ref);\n const contextValues = useAccordionHeaderContextValues_unstable(state);\n\n useAccordionHeaderStyles_unstable(state);\n\n return renderAccordionHeader_unstable(state, contextValues);\n});\n\nAccordionHeader.displayName = 'AccordionHeader';\n"],"sourceRoot":"../src/"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionHeader.types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"AccordionHeader.types.js","sourceRoot":"../src/","sources":["components/AccordionHeader/AccordionHeader.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport type { ARIAButtonSlotProps } from '@fluentui/react-aria';\n\nexport type AccordionHeaderSize = 'small' | 'medium' | 'large' | 'extra-large';\nexport type AccordionHeaderExpandIconPosition = 'start' | 'end';\n\nexport type AccordionHeaderContextValue = Required<Pick<AccordionHeaderProps, 'expandIconPosition' | 'size'>> & {\n disabled: boolean;\n open: boolean;\n};\n\nexport type AccordionHeaderContextValues = {\n accordionHeader: AccordionHeaderContextValue;\n};\n\nexport type AccordionHeaderSlots = {\n /**\n * The element wrapping the button. By default this is a div, but can be a heading.\n */\n root: Slot<'div', 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>;\n /**\n * The component to be used as button in heading\n */\n button: NonNullable<Slot<ARIAButtonSlotProps>>;\n /**\n * Expand icon slot rendered before (or after) children content in heading\n */\n expandIcon: Slot<'span'>;\n /**\n * Expand icon slot rendered before (or after) children content in heading\n */\n icon?: Slot<'div'>;\n};\n\nexport type AccordionHeaderProps = ComponentProps<Partial<AccordionHeaderSlots>> & {\n /**\n * The position of the expand icon slot in heading\n */\n expandIconPosition?: AccordionHeaderExpandIconPosition;\n\n /**\n * Indicates if the AccordionHeader should be rendered inline\n */\n inline?: boolean;\n\n /**\n * Size of spacing in the heading\n */\n size?: AccordionHeaderSize;\n};\n\nexport type AccordionHeaderState = ComponentState<AccordionHeaderSlots> &\n Required<Pick<AccordionHeaderProps, 'inline'>> &\n AccordionHeaderContextValue;\n"]}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export
|
|
2
|
+
export const AccordionHeaderContext = /*#__PURE__*/React.createContext({
|
|
3
3
|
open: false,
|
|
4
4
|
disabled: false,
|
|
5
5
|
size: 'medium',
|
|
6
6
|
expandIconPosition: 'start'
|
|
7
7
|
});
|
|
8
|
-
export
|
|
9
|
-
return React.useContext(AccordionHeaderContext);
|
|
10
|
-
};
|
|
8
|
+
export const useAccordionHeaderContext = () => React.useContext(AccordionHeaderContext);
|
|
11
9
|
//# sourceMappingURL=AccordionHeaderContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/AccordionHeader/AccordionHeaderContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAGA,OAAO,MAAM,sBAAsB,gBAAG,KAAK,CAAC,aAAN,CAAiD;AACrF,EAAA,IAAI,EAAE,KAD+E;AAErF,EAAA,QAAQ,EAAE,KAF2E;AAGrF,EAAA,IAAI,EAAE,QAH+E;AAIrF,EAAA,kBAAkB,EAAE;AAJiE,CAAjD,CAA/B;AAOP,OAAO,MAAM,yBAAyB,GAAG,MAAM,KAAK,CAAC,UAAN,CAAiB,sBAAjB,CAAxC","sourcesContent":["import * as React from 'react';\nimport type { AccordionHeaderContextValue } from './AccordionHeader.types';\n\nexport const AccordionHeaderContext = React.createContext<AccordionHeaderContextValue>({\n open: false,\n disabled: false,\n size: 'medium',\n expandIconPosition: 'start',\n});\n\nexport const useAccordionHeaderContext = () => React.useContext(AccordionHeaderContext);\n"],"sourceRoot":"../src/"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../src/","sources":["components/AccordionHeader/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC","sourcesContent":["export * from './AccordionHeader';\nexport * from './AccordionHeader.types';\nexport * from './renderAccordionHeader';\nexport * from './useAccordionHeader';\nexport * from './useAccordionHeaderContextValues';\nexport * from './useAccordionHeaderStyles';\n"]}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
2
1
|
import * as React from 'react';
|
|
3
2
|
import { getSlots } from '@fluentui/react-utilities';
|
|
4
|
-
import { accordionHeaderShorthandProps } from './useAccordionHeader';
|
|
5
3
|
import { AccordionHeaderContext } from './AccordionHeaderContext';
|
|
6
4
|
/**
|
|
7
5
|
* Function that renders the final JSX of the component
|
|
8
6
|
*/
|
|
9
7
|
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
export const renderAccordionHeader_unstable = (state, contextValues) => {
|
|
9
|
+
const {
|
|
10
|
+
slots,
|
|
11
|
+
slotProps
|
|
12
|
+
} = getSlots(state);
|
|
15
13
|
return /*#__PURE__*/React.createElement(AccordionHeaderContext.Provider, {
|
|
16
14
|
value: contextValues.accordionHeader
|
|
17
|
-
}, /*#__PURE__*/React.createElement(slots.root,
|
|
15
|
+
}, /*#__PURE__*/React.createElement(slots.root, { ...slotProps.root
|
|
16
|
+
}, /*#__PURE__*/React.createElement(slots.button, { ...slotProps.button
|
|
17
|
+
}, state.expandIconPosition === 'start' && /*#__PURE__*/React.createElement(slots.expandIcon, { ...slotProps.expandIcon
|
|
18
|
+
}), slots.icon && /*#__PURE__*/React.createElement(slots.icon, { ...slotProps.icon
|
|
19
|
+
}), slotProps.root.children, state.expandIconPosition === 'end' && /*#__PURE__*/React.createElement(slots.expandIcon, { ...slotProps.expandIcon
|
|
20
|
+
}))));
|
|
18
21
|
};
|
|
19
22
|
//# sourceMappingURL=renderAccordionHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/AccordionHeader/renderAccordionHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,QAAT,QAAyB,2BAAzB;AACA,SAAS,sBAAT,QAAuC,0BAAvC;AAGA;;AAEG;;AACH,OAAO,MAAM,8BAA8B,GAAG,CAC5C,KAD4C,EAE5C,aAF4C,KAG1C;AACF,QAAM;AAAE,IAAA,KAAF;AAAS,IAAA;AAAT,MAAuB,QAAQ,CAAuB,KAAvB,CAArC;AAEA,sBACE,KAAA,CAAA,aAAA,CAAC,sBAAsB,CAAC,QAAxB,EAAgC;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAhC,eACE,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,EAAA,GAAK,SAAS,CAAC;AAAf,GAAX,eACE,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,MAAP,EAAa,EAAA,GAAK,SAAS,CAAC;AAAf,GAAb,EACG,KAAK,CAAC,kBAAN,KAA6B,OAA7B,iBAAwC,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,UAAP,EAAiB,EAAA,GAAK,SAAS,CAAC;AAAf,GAAjB,CAD3C,EAEG,KAAK,CAAC,IAAN,iBAAc,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,EAAA,GAAK,SAAS,CAAC;AAAf,GAAX,CAFjB,EAGG,SAAS,CAAC,IAAV,CAAe,QAHlB,EAIG,KAAK,CAAC,kBAAN,KAA6B,KAA7B,iBAAsC,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,UAAP,EAAiB,EAAA,GAAK,SAAS,CAAC;AAAf,GAAjB,CAJzC,CADF,CADF,CADF;AAYD,CAlBM","sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport { AccordionHeaderContext } from './AccordionHeaderContext';\nimport type { AccordionHeaderState, AccordionHeaderSlots, AccordionHeaderContextValues } from './AccordionHeader.types';\n\n/**\n * Function that renders the final JSX of the component\n */\nexport const renderAccordionHeader_unstable = (\n state: AccordionHeaderState,\n contextValues: AccordionHeaderContextValues,\n) => {\n const { slots, slotProps } = getSlots<AccordionHeaderSlots>(state);\n\n return (\n <AccordionHeaderContext.Provider value={contextValues.accordionHeader}>\n <slots.root {...slotProps.root}>\n <slots.button {...slotProps.button}>\n {state.expandIconPosition === 'start' && <slots.expandIcon {...slotProps.expandIcon} />}\n {slots.icon && <slots.icon {...slotProps.icon} />}\n {slotProps.root.children}\n {state.expandIconPosition === 'end' && <slots.expandIcon {...slotProps.expandIcon} />}\n </slots.button>\n </slots.root>\n </AccordionHeaderContext.Provider>\n );\n};\n"],"sourceRoot":"../src/"}
|
|
@@ -1,80 +1,88 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { getNativeElementProps, resolveShorthand, useEventCallback } from '@fluentui/react-utilities';
|
|
3
|
-
import {
|
|
4
|
-
import { AccordionHeaderExpandIcon } from './AccordionHeaderExpandIcon';
|
|
3
|
+
import { useAccordionItemContext_unstable } from '../AccordionItem/index';
|
|
5
4
|
import { useARIAButton } from '@fluentui/react-aria';
|
|
6
5
|
import { useContextSelector } from '@fluentui/react-context-selector';
|
|
7
6
|
import { AccordionContext } from '../Accordion/AccordionContext';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
export var accordionHeaderShorthandProps = ['root', 'icon', 'button', 'children', 'expandIcon'];
|
|
7
|
+
import { ChevronRightRegular } from '@fluentui/react-icons';
|
|
8
|
+
import { useFluent } from '@fluentui/react-shared-contexts';
|
|
13
9
|
/**
|
|
14
10
|
* Returns the props and state required to render the component
|
|
15
11
|
* @param props - AccordionHeader properties
|
|
16
12
|
* @param ref - reference to root HTMLElement of AccordionHeader
|
|
17
13
|
*/
|
|
18
14
|
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
open = _d.open;
|
|
15
|
+
export const useAccordionHeader_unstable = (props, ref) => {
|
|
16
|
+
const {
|
|
17
|
+
as,
|
|
18
|
+
icon,
|
|
19
|
+
button,
|
|
20
|
+
expandIcon,
|
|
21
|
+
inline = false,
|
|
22
|
+
size = 'medium',
|
|
23
|
+
expandIconPosition = 'start'
|
|
24
|
+
} = props;
|
|
25
|
+
const {
|
|
26
|
+
onHeaderClick: onAccordionHeaderClick,
|
|
27
|
+
disabled,
|
|
28
|
+
open
|
|
29
|
+
} = useAccordionItemContext_unstable();
|
|
35
30
|
/**
|
|
36
31
|
* force disabled state on button if accordion isn't collapsible
|
|
37
32
|
* and this is the only item opened
|
|
38
33
|
*/
|
|
39
34
|
|
|
35
|
+
const disabledFocusable = useContextSelector(AccordionContext, ctx => !ctx.collapsible && ctx.openItems.length === 1 && open);
|
|
36
|
+
const {
|
|
37
|
+
dir
|
|
38
|
+
} = useFluent(); // Calculate how to rotate the expand icon [>] (ChevronRightRegular)
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
let expandIconRotation;
|
|
41
|
+
|
|
42
|
+
if (expandIconPosition === 'end') {
|
|
43
|
+
// If expand icon is at the end, the chevron points up [^] when open, and down [v] when closed
|
|
44
|
+
expandIconRotation = open ? -90 : 90;
|
|
45
|
+
} else {
|
|
46
|
+
// Otherwise, the chevron points down [v] when open, and right [>] (or left [<] in RTL) when closed
|
|
47
|
+
expandIconRotation = open ? 90 : dir !== 'rtl' ? 0 : 180;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const buttonShorthand = useARIAButton(button, {
|
|
45
51
|
required: true,
|
|
46
52
|
defaultProps: {
|
|
47
|
-
disabled
|
|
48
|
-
disabledFocusable
|
|
53
|
+
disabled,
|
|
54
|
+
disabledFocusable,
|
|
49
55
|
'aria-expanded': open
|
|
50
56
|
}
|
|
51
57
|
});
|
|
52
58
|
return {
|
|
53
|
-
disabled
|
|
54
|
-
open
|
|
55
|
-
size
|
|
56
|
-
inline
|
|
57
|
-
expandIconPosition
|
|
59
|
+
disabled,
|
|
60
|
+
open,
|
|
61
|
+
size,
|
|
62
|
+
inline,
|
|
63
|
+
expandIconPosition,
|
|
58
64
|
components: {
|
|
59
65
|
root: 'div',
|
|
60
66
|
button: 'button',
|
|
61
|
-
expandIcon:
|
|
62
|
-
icon: 'div'
|
|
63
|
-
children: 'div'
|
|
67
|
+
expandIcon: 'span',
|
|
68
|
+
icon: 'div'
|
|
64
69
|
},
|
|
65
|
-
root: getNativeElementProps('div',
|
|
66
|
-
ref
|
|
67
|
-
|
|
68
|
-
}
|
|
70
|
+
root: getNativeElementProps(as || 'div', {
|
|
71
|
+
ref,
|
|
72
|
+
...props
|
|
73
|
+
}),
|
|
69
74
|
icon: resolveShorthand(icon),
|
|
70
75
|
expandIcon: resolveShorthand(expandIcon, {
|
|
71
76
|
required: true,
|
|
72
77
|
defaultProps: {
|
|
78
|
+
children: /*#__PURE__*/React.createElement(ChevronRightRegular, {
|
|
79
|
+
transform: `rotate(${expandIconRotation})`
|
|
80
|
+
}),
|
|
73
81
|
'aria-hidden': true
|
|
74
82
|
}
|
|
75
83
|
}),
|
|
76
|
-
button:
|
|
77
|
-
onClick: useEventCallback(
|
|
84
|
+
button: { ...buttonShorthand,
|
|
85
|
+
onClick: useEventCallback(ev => {
|
|
78
86
|
var _a;
|
|
79
87
|
|
|
80
88
|
(_a = buttonShorthand.onClick) === null || _a === void 0 ? void 0 : _a.call(buttonShorthand, ev);
|
|
@@ -83,10 +91,7 @@ export var useAccordionHeader = function (props, ref) {
|
|
|
83
91
|
onAccordionHeaderClick(ev);
|
|
84
92
|
}
|
|
85
93
|
})
|
|
86
|
-
}
|
|
87
|
-
children: resolveShorthand(children, {
|
|
88
|
-
required: true
|
|
89
|
-
})
|
|
94
|
+
}
|
|
90
95
|
};
|
|
91
96
|
};
|
|
92
97
|
//# sourceMappingURL=useAccordionHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/AccordionHeader/useAccordionHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, resolveShorthand, useEventCallback } from '@fluentui/react-utilities';\nimport { useAccordionItemContext_unstable } from '../AccordionItem/index';\nimport { useARIAButton } from '@fluentui/react-aria';\nimport type { AccordionHeaderProps, AccordionHeaderState } from './AccordionHeader.types';\nimport { useContextSelector } from '@fluentui/react-context-selector';\nimport { AccordionContext } from '../Accordion/AccordionContext';\nimport { ChevronRightRegular } from '@fluentui/react-icons';\nimport { useFluent } from '@fluentui/react-shared-contexts';\n\n/**\n * Returns the props and state required to render the component\n * @param props - AccordionHeader properties\n * @param ref - reference to root HTMLElement of AccordionHeader\n */\nexport const useAccordionHeader_unstable = (\n props: AccordionHeaderProps,\n ref: React.Ref<HTMLElement>,\n): AccordionHeaderState => {\n const { as, icon, button, expandIcon, inline = false, size = 'medium', expandIconPosition = 'start' } = props;\n const { onHeaderClick: onAccordionHeaderClick, disabled, open } = useAccordionItemContext_unstable();\n\n /**\n * force disabled state on button if accordion isn't collapsible\n * and this is the only item opened\n */\n const disabledFocusable = useContextSelector(\n AccordionContext,\n ctx => !ctx.collapsible && ctx.openItems.length === 1 && open,\n );\n\n const { dir } = useFluent();\n\n // Calculate how to rotate the expand icon [>] (ChevronRightRegular)\n let expandIconRotation: 0 | 90 | -90 | 180;\n if (expandIconPosition === 'end') {\n // If expand icon is at the end, the chevron points up [^] when open, and down [v] when closed\n expandIconRotation = open ? -90 : 90;\n } else {\n // Otherwise, the chevron points down [v] when open, and right [>] (or left [<] in RTL) when closed\n expandIconRotation = open ? 90 : dir !== 'rtl' ? 0 : 180;\n }\n\n const buttonShorthand = useARIAButton(button, {\n required: true,\n defaultProps: {\n disabled,\n disabledFocusable,\n 'aria-expanded': open,\n },\n });\n\n return {\n disabled,\n open,\n size,\n inline,\n expandIconPosition,\n components: {\n root: 'div',\n button: 'button',\n expandIcon: 'span',\n icon: 'div',\n },\n root: getNativeElementProps(as || 'div', {\n ref,\n ...props,\n }),\n icon: resolveShorthand(icon),\n expandIcon: resolveShorthand(expandIcon, {\n required: true,\n defaultProps: {\n children: <ChevronRightRegular transform={`rotate(${expandIconRotation})`} />,\n 'aria-hidden': true,\n },\n }),\n button: {\n ...buttonShorthand,\n onClick: useEventCallback(\n (ev: React.MouseEvent<HTMLButtonElement & HTMLDivElement & HTMLSpanElement & HTMLAnchorElement>) => {\n buttonShorthand.onClick?.(ev);\n if (!ev.defaultPrevented) {\n onAccordionHeaderClick(ev);\n }\n },\n ),\n },\n };\n};\n"],"sourceRoot":"../src/"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export function
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}, [disabled, expandIconPosition, open, size]);
|
|
2
|
+
export function useAccordionHeaderContextValues_unstable(state) {
|
|
3
|
+
const {
|
|
4
|
+
disabled,
|
|
5
|
+
expandIconPosition,
|
|
6
|
+
open,
|
|
7
|
+
size
|
|
8
|
+
} = state;
|
|
9
|
+
const accordionHeader = React.useMemo(() => ({
|
|
10
|
+
disabled,
|
|
11
|
+
expandIconPosition,
|
|
12
|
+
open,
|
|
13
|
+
size
|
|
14
|
+
}), [disabled, expandIconPosition, open, size]);
|
|
15
15
|
return {
|
|
16
|
-
accordionHeader
|
|
16
|
+
accordionHeader
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=useAccordionHeaderContextValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["components/AccordionHeader/useAccordionHeaderContextValues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAOA,OAAM,SAAU,wCAAV,CAAmD,KAAnD,EAA8E;AAClF,QAAM;AAAE,IAAA,QAAF;AAAY,IAAA,kBAAZ;AAAgC,IAAA,IAAhC;AAAsC,IAAA;AAAtC,MAA+C,KAArD;AAEA,QAAM,eAAe,GAAG,KAAK,CAAC,OAAN,CACtB,OAAO;AACL,IAAA,QADK;AAEL,IAAA,kBAFK;AAGL,IAAA,IAHK;AAIL,IAAA;AAJK,GAAP,CADsB,EAOtB,CAAC,QAAD,EAAW,kBAAX,EAA+B,IAA/B,EAAqC,IAArC,CAPsB,CAAxB;AAUA,SAAO;AAAE,IAAA;AAAF,GAAP;AACD","sourcesContent":["import * as React from 'react';\nimport type {\n AccordionHeaderContextValue,\n AccordionHeaderState,\n AccordionHeaderContextValues,\n} from './AccordionHeader.types';\n\nexport function useAccordionHeaderContextValues_unstable(state: AccordionHeaderState): AccordionHeaderContextValues {\n const { disabled, expandIconPosition, open, size } = state;\n\n const accordionHeader = React.useMemo<AccordionHeaderContextValue>(\n () => ({\n disabled,\n expandIconPosition,\n open,\n size,\n }),\n [disabled, expandIconPosition, open, size],\n );\n\n return { accordionHeader };\n}\n"],"sourceRoot":"../src/"}
|