@moneyforward/mfui-components 3.14.1 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/DateTimeSelection/DatePicker/DatePicker.js +7 -2
- package/dist/src/DateTimeSelection/shared/BasePicker/YearSelector/YearSelector.js +19 -5
- package/dist/src/DateTimeSelection/shared/CalendarLocale/DisplayJapaneseCalendarContext.d.ts +6 -0
- package/dist/src/DateTimeSelection/shared/CalendarLocale/DisplayJapaneseCalendarContext.js +10 -0
- package/dist/src/DateTimeSelection/shared/YearSelector/YearSelector.js +17 -4
- package/dist/src/DateTimeSelection/shared/utilities/japaneseCalendar.d.ts +28 -0
- package/dist/src/DateTimeSelection/shared/utilities/japaneseCalendar.js +55 -0
- package/dist/src/FormFooter/FormFooter.types.d.ts +2 -1
- package/dist/src/MultipleSelectBox/MultipleSelectBox.d.ts +1 -1
- package/dist/src/MultipleSelectBox/MultipleSelectBox.js +16 -5
- package/dist/src/MultipleSelectBox/MultipleSelectBox.types.d.ts +60 -1
- package/dist/src/MultipleSelectBox/MultipleSelectBoxTrigger/MultipleSelectBoxTrigger.js +1 -1
- package/dist/src/MultipleSelectBox/hooks/useApplyControls.d.ts +1 -0
- package/dist/src/MultipleSelectBox/hooks/useApplyControls.js +16 -0
- package/dist/src/MultipleSelectBox/hooks/useCreateOption.d.ts +23 -0
- package/dist/src/MultipleSelectBox/hooks/useCreateOption.js +53 -0
- package/dist/src/MultipleSelectBox/index.d.ts +1 -1
- package/dist/src/SidePane/SidePane.d.ts +3 -0
- package/dist/src/SidePane/SidePane.js +4 -2
- package/dist/src/SidePane/SidePane.types.d.ts +14 -0
- package/dist/src/SubNavigation/SubNavigation.d.ts +1 -1
- package/dist/src/SubNavigation/SubNavigation.js +17 -15
- package/dist/src/SubNavigation/SubNavigation.types.d.ts +58 -0
- package/dist/src/SubNavigation/index.d.ts +1 -1
- package/dist/src/Tag/Tag.types.d.ts +17 -1
- package/dist/styled-system/recipes/form-footer-slot-recipe.d.ts +1 -1
- package/dist/styled-system/recipes/form-footer-slot-recipe.js +2 -1
- package/dist/styled-system/recipes/multiple-select-box-slot-recipe.d.ts +1 -1
- package/dist/styled-system/recipes/multiple-select-box-slot-recipe.js +12 -0
- package/dist/styled-system/recipes/side-pane-slot-recipe.d.ts +1 -1
- package/dist/styled-system/recipes/side-pane-slot-recipe.js +8 -0
- package/dist/styled-system/recipes/sub-navigation-slot-recipe.d.ts +1 -1
- package/dist/styled-system/recipes/sub-navigation-slot-recipe.js +4 -0
- package/dist/styles.css +82 -17
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { DisclosureBasicCollapsed, Lock } from '@moneyforward/mfui-icons-react';
|
|
3
3
|
import { cx } from '../../styled-system/css';
|
|
4
4
|
import { subNavigationSlotRecipe } from '../../styled-system/recipes';
|
|
@@ -7,10 +7,10 @@ import { Typography } from '../Typography';
|
|
|
7
7
|
/**
|
|
8
8
|
* This component is for the navigation links under the main navigation.
|
|
9
9
|
*/
|
|
10
|
-
export function SubNavigation({ orientation = 'vertical', navigationItems, customLinkComponent, className, }) {
|
|
10
|
+
export function SubNavigation({ orientation = 'vertical', navigationItems, customLinkComponent, renderNavigationLabel, headerSlot, className, }) {
|
|
11
11
|
const hasLabelIcon = navigationItems.some(({ labelIcon }) => !!labelIcon);
|
|
12
12
|
const classes = subNavigationSlotRecipe({ orientation, hasLabelIcon });
|
|
13
|
-
return (
|
|
13
|
+
return (_jsxs("nav", { className: cx(classes.root, 'mfui-SubNavigation__root', className), children: [headerSlot ? (_jsx("div", { className: cx(classes.subNavigationHeader, 'mfui-SubNavigation__subNavigationHeader'), children: headerSlot })) : null, _jsx("ul", { className: cx(classes.list, 'mfui-SubNavigation__list'), children: navigationItems.map((navigationItem, index) => (_jsx("li", { className: cx(classes.listItem, 'mfui-SubNavigation__listItem'), children: renderNavigationItem(navigationItem, customLinkComponent, classes, 0, renderNavigationLabel) }, index))) })] }));
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Render a navigation item based on the following conditions:
|
|
@@ -28,25 +28,27 @@ export function SubNavigation({ orientation = 'vertical', navigationItems, custo
|
|
|
28
28
|
*
|
|
29
29
|
* @param nestLevel - The nest level of the navigation item.
|
|
30
30
|
*
|
|
31
|
+
* @param renderNavigationLabel - Custom render function for each navigation item's label.
|
|
32
|
+
*
|
|
31
33
|
* @returns The rendered navigation item.
|
|
32
34
|
*/
|
|
33
|
-
const renderNavigationItem = (navigationItem, customLinkComponent, classes, nestLevel) => {
|
|
35
|
+
const renderNavigationItem = (navigationItem, customLinkComponent, classes, nestLevel, renderNavigationLabel) => {
|
|
34
36
|
const { label, href, labelIcon, statusSlot, locked, lockIconProps, children } = navigationItem;
|
|
35
37
|
if (children === undefined) {
|
|
36
|
-
return (_jsx(NavigationLink, { navigationItem: navigationItem, customLinkComponent: customLinkComponent, classes: classes }));
|
|
38
|
+
return (_jsx(NavigationLink, { navigationItem: navigationItem, customLinkComponent: customLinkComponent, classes: classes, renderNavigationLabel: renderNavigationLabel }));
|
|
37
39
|
}
|
|
38
40
|
if (href) {
|
|
39
41
|
// The the parent item will be rendered as a link with separated disclosure icon button.
|
|
40
|
-
return (_jsxs(_Fragment, { children: [_jsx(NavigationLink, { navigationItem: navigationItem, customLinkComponent: customLinkComponent, classes: classes }), _jsx(NestedNavigationList, { summarySlot: _jsx("div", { "data-mfui-content": "sub-navigation-disclosure-icon", className: cx(classes.disclosureIcon, 'mfui-SubNavigation__disclosureIcon'), children: _jsx(DisclosureBasicCollapsed, { "aria-label": label }) }), nestedNavigationItems: children, customLinkComponent: customLinkComponent, classes: classes, nestLevel: nestLevel + 1 })] }));
|
|
42
|
+
return (_jsxs(_Fragment, { children: [_jsx(NavigationLink, { navigationItem: navigationItem, customLinkComponent: customLinkComponent, classes: classes, renderNavigationLabel: renderNavigationLabel }), _jsx(NestedNavigationList, { summarySlot: _jsx("div", { "data-mfui-content": "sub-navigation-disclosure-icon", className: cx(classes.disclosureIcon, 'mfui-SubNavigation__disclosureIcon'), children: _jsx(DisclosureBasicCollapsed, { "aria-label": label }) }), nestedNavigationItems: children, customLinkComponent: customLinkComponent, classes: classes, nestLevel: nestLevel + 1, renderNavigationLabel: renderNavigationLabel })] }));
|
|
41
43
|
}
|
|
42
44
|
// The the parent item will be rendered as a disclosure button with an icon.
|
|
43
|
-
return (_jsx(NestedNavigationList, { summarySlot: _jsxs(_Fragment, { children: [_jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes }), _jsx("div", { "data-mfui-content": "sub-navigation-disclosure-icon", className: cx(classes.disclosureIcon, 'mfui-SubNavigation__disclosureIcon'), children: _jsx(DisclosureBasicCollapsed, { "aria-label": "" }) })] }), nestedNavigationItems: children, customLinkComponent: customLinkComponent, classes: classes, nestLevel: nestLevel + 1 }));
|
|
45
|
+
return (_jsx(NestedNavigationList, { summarySlot: _jsxs(_Fragment, { children: [_jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes, renderNavigationLabel }), _jsx("div", { "data-mfui-content": "sub-navigation-disclosure-icon", className: cx(classes.disclosureIcon, 'mfui-SubNavigation__disclosureIcon'), children: _jsx(DisclosureBasicCollapsed, { "aria-label": "" }) })] }), nestedNavigationItems: children, customLinkComponent: customLinkComponent, classes: classes, nestLevel: nestLevel + 1, renderNavigationLabel: renderNavigationLabel }));
|
|
44
46
|
};
|
|
45
47
|
/**
|
|
46
48
|
* This is a group of a text label, an optional icon, and a status.
|
|
47
49
|
* This is used for all navigation links and parent items for disclosure buttons in SubNavigation.
|
|
48
50
|
*/
|
|
49
|
-
function NavigationLabelGroup({ label, labelIcon, locked, lockIconProps, statusSlot, classes, }) {
|
|
51
|
+
function NavigationLabelGroup({ label, labelIcon, locked, lockIconProps, statusSlot, classes, renderNavigationLabel, }) {
|
|
50
52
|
// If locked=true, display <Lock /> icon in preference to any other status of the statusSlot option.
|
|
51
53
|
const renderStatus = () => {
|
|
52
54
|
if (locked) {
|
|
@@ -57,31 +59,31 @@ function NavigationLabelGroup({ label, labelIcon, locked, lockIconProps, statusS
|
|
|
57
59
|
}
|
|
58
60
|
return null;
|
|
59
61
|
};
|
|
60
|
-
return (_jsxs(_Fragment, { children: [labelIcon ? _jsx("div", { className: cx(classes.labelIcon, 'mfui-SubNavigation__labelIcon'), children: labelIcon }) : null, _jsx(Typography, { variant: "strongControlLabel", className: cx(classes.label, 'mfui-SubNavigation__label'), children: label }), renderStatus()] }));
|
|
62
|
+
return (_jsxs(_Fragment, { children: [labelIcon ? _jsx("div", { className: cx(classes.labelIcon, 'mfui-SubNavigation__labelIcon'), children: labelIcon }) : null, renderNavigationLabel ? (renderNavigationLabel(label)) : (_jsx(Typography, { variant: "strongControlLabel", className: cx(classes.label, 'mfui-SubNavigation__label'), children: label })), renderStatus()] }));
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* This is a link that has NavigationLabelGroup.
|
|
64
66
|
* This is used for all navigation links in SubNavigation.
|
|
65
67
|
*/
|
|
66
|
-
function NavigationLink({ navigationItem, customLinkComponent, classes, }) {
|
|
68
|
+
function NavigationLink({ navigationItem, customLinkComponent, classes, renderNavigationLabel, }) {
|
|
67
69
|
const { label, href, isCurrent, isExternal, labelIcon, statusSlot, locked, lockIconProps } = navigationItem;
|
|
68
70
|
if (navigationItem.children === undefined && navigationItem.onClick) {
|
|
69
71
|
const { onClick } = navigationItem;
|
|
70
72
|
return (_jsx(FocusIndicator, { children: _jsx("button", { type: "button", className: cx(classes.link, 'mfui-SubNavigation__link'), "aria-current": isCurrent ? 'page' : undefined, onClick: () => {
|
|
71
73
|
onClick(navigationItem.href);
|
|
72
|
-
}, children: _jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes }) }) }));
|
|
74
|
+
}, children: _jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes, renderNavigationLabel }) }) }));
|
|
73
75
|
}
|
|
74
76
|
if (customLinkComponent && !isExternal) {
|
|
75
77
|
const Tag = customLinkComponent;
|
|
76
|
-
return (_jsx(FocusIndicator, { children: _jsx(Tag, { href: href, className: cx(classes.link, 'mfui-SubNavigation__link'), "aria-current": isCurrent ? 'page' : undefined, children: _jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes }) }) }));
|
|
78
|
+
return (_jsx(FocusIndicator, { children: _jsx(Tag, { href: href, className: cx(classes.link, 'mfui-SubNavigation__link'), "aria-current": isCurrent ? 'page' : undefined, children: _jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes, renderNavigationLabel }) }) }));
|
|
77
79
|
}
|
|
78
|
-
return (_jsx(FocusIndicator, { children: _jsx("a", { href: href, target: isExternal ? '_blank' : undefined, className: cx(classes.link, 'mfui-SubNavigation__link'), "aria-current": isCurrent ? 'page' : undefined, rel: "noreferrer", children: _jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes }) }) }));
|
|
80
|
+
return (_jsx(FocusIndicator, { children: _jsx("a", { href: href, target: isExternal ? '_blank' : undefined, className: cx(classes.link, 'mfui-SubNavigation__link'), "aria-current": isCurrent ? 'page' : undefined, rel: "noreferrer", children: _jsx(NavigationLabelGroup, { label, labelIcon, locked, lockIconProps, statusSlot, classes, renderNavigationLabel }) }) }));
|
|
79
81
|
}
|
|
80
82
|
/**
|
|
81
83
|
* This is a details element that contains a list of nested navigation links.
|
|
82
84
|
*/
|
|
83
|
-
function NestedNavigationList({ summarySlot, nestedNavigationItems, customLinkComponent, classes, nestLevel, }) {
|
|
85
|
+
function NestedNavigationList({ summarySlot, nestedNavigationItems, customLinkComponent, classes, nestLevel, renderNavigationLabel, }) {
|
|
84
86
|
// Check whether all descendants have isCurrent=true by calling itself recursively.
|
|
85
87
|
const isCurrentPathInChildren = (children) => children?.some(({ isCurrent, children }) => isCurrent || (children && isCurrentPathInChildren(children))) || false;
|
|
86
|
-
return (_jsxs("details", { open: isCurrentPathInChildren(nestedNavigationItems), className: cx(classes.details, 'mfui-SubNavigation__details'), children: [_jsx(FocusIndicator, { children: _jsx("summary", { className: cx(classes.summary, 'mfui-SubNavigation__summary'), children: summarySlot }) }), _jsx("ul", { className: cx(classes.list, 'mfui-SubNavigation__list'), children: nestedNavigationItems.map((nestedNavigationItem, index) => (_jsx("li", { className: cx(classes.nestedListItem, 'mfui-SubNavigation__nestedListItem'), "data-mfui-nest-level": nestLevel, children: nestedNavigationItem.children === undefined ? (_jsx(NavigationLink, { navigationItem: nestedNavigationItem, customLinkComponent: customLinkComponent, classes: classes })) : (renderNavigationItem(nestedNavigationItem, customLinkComponent, classes, nestLevel + 1)) }, index))) })] }));
|
|
88
|
+
return (_jsxs("details", { open: isCurrentPathInChildren(nestedNavigationItems), className: cx(classes.details, 'mfui-SubNavigation__details'), children: [_jsx(FocusIndicator, { children: _jsx("summary", { className: cx(classes.summary, 'mfui-SubNavigation__summary'), children: summarySlot }) }), _jsx("ul", { className: cx(classes.list, 'mfui-SubNavigation__list'), children: nestedNavigationItems.map((nestedNavigationItem, index) => (_jsx("li", { className: cx(classes.nestedListItem, 'mfui-SubNavigation__nestedListItem'), "data-mfui-nest-level": nestLevel, children: nestedNavigationItem.children === undefined ? (_jsx(NavigationLink, { navigationItem: nestedNavigationItem, customLinkComponent: customLinkComponent, classes: classes, renderNavigationLabel: renderNavigationLabel })) : (renderNavigationItem(nestedNavigationItem, customLinkComponent, classes, nestLevel + 1, renderNavigationLabel)) }, index))) })] }));
|
|
87
89
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode, type ElementType, type ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
export type SubNavigationRenderLabelFunction = (label: string) => ReactNode;
|
|
2
3
|
export type SubNavigationProps = VerticalSubNavigationProps | HorizontalSubNavigationProps;
|
|
3
4
|
type VerticalSubNavigationProps = BaseSubNavigationProps & {
|
|
4
5
|
/**
|
|
@@ -47,6 +48,63 @@ type BaseSubNavigationProps = {
|
|
|
47
48
|
* e.g. next/link
|
|
48
49
|
*/
|
|
49
50
|
customLinkComponent?: ElementType;
|
|
51
|
+
/**
|
|
52
|
+
* Custom render function for each navigation item's label.
|
|
53
|
+
* Receives the item's raw `label` string and returns a ReactNode rendered inside
|
|
54
|
+
* the default `<Typography variant="strongControlLabel">` wrapper.
|
|
55
|
+
* When omitted, the label string is rendered directly (default behavior).
|
|
56
|
+
*
|
|
57
|
+
* Use this to truncate long labels or otherwise customize how labels are displayed
|
|
58
|
+
* without losing the built-in semantic markup.
|
|
59
|
+
*
|
|
60
|
+
* To show a tooltip on both hover and focus, wrap the entire link with a `Tooltip`
|
|
61
|
+
* via `customLinkComponent` instead — placing a `Tooltip` inside `renderNavigationLabel`
|
|
62
|
+
* only works for hover because the tooltip trigger ends up inside the focusable `<a>`,
|
|
63
|
+
* and focus events do not propagate inward to child elements.
|
|
64
|
+
*
|
|
65
|
+
* @param label - The label string of the navigation item.
|
|
66
|
+
*
|
|
67
|
+
* @returns ReactNode - Custom content rendered inside the label wrapper.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```tsx
|
|
71
|
+
* // Truncate labels that exceed 2 lines
|
|
72
|
+
* <SubNavigation
|
|
73
|
+
* navigationItems={items}
|
|
74
|
+
* renderNavigationLabel={(label) => (
|
|
75
|
+
* <span
|
|
76
|
+
* style={{
|
|
77
|
+
* display: '-webkit-box',
|
|
78
|
+
* WebkitLineClamp: 2,
|
|
79
|
+
* WebkitBoxOrient: 'vertical',
|
|
80
|
+
* overflow: 'hidden',
|
|
81
|
+
* }}
|
|
82
|
+
* >
|
|
83
|
+
* {label}
|
|
84
|
+
* </span>
|
|
85
|
+
* )}
|
|
86
|
+
* />
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
renderNavigationLabel?: SubNavigationRenderLabelFunction;
|
|
90
|
+
/**
|
|
91
|
+
* Content displayed above the navigation list, rendered inside a padded wrapper.
|
|
92
|
+
* Use this to add a feature shortcut, promotional content, or other header-level
|
|
93
|
+
* UI at the top of the navigation.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```tsx
|
|
97
|
+
* <SubNavigation
|
|
98
|
+
* navigationItems={items}
|
|
99
|
+
* headerSlot={
|
|
100
|
+
* <Button priority="primary" href="/upgrade">
|
|
101
|
+
* Upgrade plan
|
|
102
|
+
* </Button>
|
|
103
|
+
* }
|
|
104
|
+
* />
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
headerSlot?: ReactNode;
|
|
50
108
|
/**
|
|
51
109
|
* For overriding styles if you need.
|
|
52
110
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { SubNavigation } from './SubNavigation';
|
|
2
|
-
export type { SubNavigationProps } from './SubNavigation.types';
|
|
2
|
+
export type { SubNavigationProps, SubNavigationRenderLabelFunction } from './SubNavigation.types';
|
|
@@ -54,7 +54,23 @@ export type TagProps = {
|
|
|
54
54
|
*/
|
|
55
55
|
onClick?: undefined;
|
|
56
56
|
/**
|
|
57
|
-
* This
|
|
57
|
+
* Optional flag to disable the close button. This option is only available when "onClose" is provided.
|
|
58
|
+
*
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
disabled?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* The handler to close the tag. When this prop is provided, the close button will be shown.
|
|
64
|
+
* Required in this variant to allow the disabled prop.
|
|
65
|
+
*/
|
|
66
|
+
onClose: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
67
|
+
} | {
|
|
68
|
+
/**
|
|
69
|
+
* Optional click event handler. If provided, the Tag will be rendered as a button element.
|
|
70
|
+
*/
|
|
71
|
+
onClick?: undefined;
|
|
72
|
+
/**
|
|
73
|
+
* This prop is not available when neither "onClick" nor "onClose" is provided.
|
|
58
74
|
*
|
|
59
75
|
* @default false
|
|
60
76
|
*/
|
|
@@ -3,7 +3,7 @@ import type { ConditionalValue } from '../types/index';
|
|
|
3
3
|
import type { DistributiveOmit, Pretty } from '../types/system-types';
|
|
4
4
|
|
|
5
5
|
interface FormFooterSlotRecipeVariant {
|
|
6
|
-
position: "stacking" | "fixed"
|
|
6
|
+
position: "stacking" | "fixed" | "sticky"
|
|
7
7
|
sectionPosition: "center" | "fill"
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -10,7 +10,7 @@ type MultipleSelectBoxSlotRecipeVariantMap = {
|
|
|
10
10
|
[key in keyof MultipleSelectBoxSlotRecipeVariant]: Array<MultipleSelectBoxSlotRecipeVariant[key]>
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
type MultipleSelectBoxSlotRecipeSlot = "popover" | "menuHeader" | "optionPanel" | "listBox" | "listItem" | "skeletonItem" | "emptyMessage" | "menuFooter" | "scrollWrapper" | "infiniteScrollError" | "infiniteScrollErrorMessage" | "infiniteScrollErrorButton" | "infiniteScrollErrorIcon" | "infiniteScrollLoading"
|
|
13
|
+
type MultipleSelectBoxSlotRecipeSlot = "popover" | "menuHeader" | "optionPanel" | "listBox" | "listItem" | "skeletonItem" | "emptyMessage" | "menuFooter" | "scrollWrapper" | "infiniteScrollError" | "infiniteScrollErrorMessage" | "infiniteScrollErrorButton" | "infiniteScrollErrorIcon" | "infiniteScrollLoading" | "createOptionArea" | "createOptionButton" | "createOptionErrorMessage"
|
|
14
14
|
|
|
15
15
|
export type MultipleSelectBoxSlotRecipeVariantProps = {
|
|
16
16
|
[key in keyof MultipleSelectBoxSlotRecipeVariant]?: ConditionalValue<MultipleSelectBoxSlotRecipeVariant[key]> | undefined
|
|
@@ -58,6 +58,18 @@ const multipleSelectBoxSlotRecipeSlotNames = [
|
|
|
58
58
|
[
|
|
59
59
|
"infiniteScrollLoading",
|
|
60
60
|
"MultipleSelectBox__infiniteScrollLoading"
|
|
61
|
+
],
|
|
62
|
+
[
|
|
63
|
+
"createOptionArea",
|
|
64
|
+
"MultipleSelectBox__createOptionArea"
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
"createOptionButton",
|
|
68
|
+
"MultipleSelectBox__createOptionButton"
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
"createOptionErrorMessage",
|
|
72
|
+
"MultipleSelectBox__createOptionErrorMessage"
|
|
61
73
|
]
|
|
62
74
|
];
|
|
63
75
|
const multipleSelectBoxSlotRecipeSlotFns = /* @__PURE__ */ multipleSelectBoxSlotRecipeSlotNames.map(([slotName, slotKey]) => [slotName, createRecipe(slotKey, multipleSelectBoxSlotRecipeDefaultVariants, getSlotCompoundVariant(multipleSelectBoxSlotRecipeCompoundVariants, slotName))]);
|
|
@@ -11,7 +11,7 @@ type SidePaneSlotRecipeVariantMap = {
|
|
|
11
11
|
[key in keyof SidePaneSlotRecipeVariant]: Array<SidePaneSlotRecipeVariant[key]>
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
type SidePaneSlotRecipeSlot = "root" | "backdrop" | "inside" | "header" | "title" | "actionSlotWrapper" | "actionSlot" | "closeButtonWrapper" | "content"
|
|
14
|
+
type SidePaneSlotRecipeSlot = "root" | "backdrop" | "inside" | "header" | "title" | "actionSlotWrapper" | "actionSlot" | "closeButtonWrapper" | "content" | "contentBody" | "footer"
|
|
15
15
|
|
|
16
16
|
export type SidePaneSlotRecipeVariantProps = {
|
|
17
17
|
[key in keyof SidePaneSlotRecipeVariant]?: ConditionalValue<SidePaneSlotRecipeVariant[key]> | undefined
|
|
@@ -38,6 +38,14 @@ const sidePaneSlotRecipeSlotNames = [
|
|
|
38
38
|
[
|
|
39
39
|
"content",
|
|
40
40
|
"SidePane__content"
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"contentBody",
|
|
44
|
+
"SidePane__contentBody"
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
"footer",
|
|
48
|
+
"SidePane__footer"
|
|
41
49
|
]
|
|
42
50
|
];
|
|
43
51
|
const sidePaneSlotRecipeSlotFns = /* @__PURE__ */ sidePaneSlotRecipeSlotNames.map(([slotName, slotKey]) => [slotName, createRecipe(slotKey, sidePaneSlotRecipeDefaultVariants, getSlotCompoundVariant(sidePaneSlotRecipeCompoundVariants, slotName))]);
|
|
@@ -11,7 +11,7 @@ type SubNavigationSlotRecipeVariantMap = {
|
|
|
11
11
|
[key in keyof SubNavigationSlotRecipeVariant]: Array<SubNavigationSlotRecipeVariant[key]>
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
type SubNavigationSlotRecipeSlot = "root" | "list" | "listItem" | "link" | "labelIcon" | "label" | "statusSlot" | "details" | "summary" | "disclosureIcon" | "nestedListItem"
|
|
14
|
+
type SubNavigationSlotRecipeSlot = "root" | "subNavigationHeader" | "list" | "listItem" | "link" | "labelIcon" | "label" | "statusSlot" | "details" | "summary" | "disclosureIcon" | "nestedListItem"
|
|
15
15
|
|
|
16
16
|
export type SubNavigationSlotRecipeVariantProps = {
|
|
17
17
|
[key in keyof SubNavigationSlotRecipeVariant]?: ConditionalValue<SubNavigationSlotRecipeVariant[key]> | undefined
|
package/dist/styles.css
CHANGED
|
@@ -2366,16 +2366,25 @@
|
|
|
2366
2366
|
.mfui-hERVbP {
|
|
2367
2367
|
flex: 1 1 0%;
|
|
2368
2368
|
overflow: auto;
|
|
2369
|
-
padding-inline: var(--mfui-spacing-mfui\.size\.padding\.main-content\.horizontal\.comfort);
|
|
2370
2369
|
flex-shrink: 0;
|
|
2371
|
-
|
|
2372
|
-
|
|
2370
|
+
display: flex;
|
|
2371
|
+
flex-direction: column;
|
|
2373
2372
|
font-family: var(--mfui-fonts-mfui\.typography\.font-family\.body);
|
|
2374
2373
|
font-weight: var(--mfui-font-weights-mfui\.typography\.font-weight\.body);
|
|
2375
2374
|
font-size: var(--mfui-font-sizes-mfui\.typography\.font-size\.body);
|
|
2376
2375
|
line-height: var(--mfui-line-heights-mfui\.typography\.line-height\.body);
|
|
2377
2376
|
}
|
|
2378
2377
|
|
|
2378
|
+
.mfui-jVWTKD {
|
|
2379
|
+
padding-inline: var(--mfui-spacing-mfui\.size\.padding\.main-content\.horizontal\.comfort);
|
|
2380
|
+
padding-block-start: var(--mfui-spacing-mfui\.size\.padding\.main-content\.top\.comfort);
|
|
2381
|
+
padding-block-end: var(--mfui-spacing-mfui\.size\.padding\.main-content\.bottom\.comfort);
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2384
|
+
.mfui-iAowQz {
|
|
2385
|
+
flex-shrink: 0;
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2379
2388
|
.mfui-lbCmDn {
|
|
2380
2389
|
border-style: solid;
|
|
2381
2390
|
border-color: var(--mfui-colors-mfui\.color\.neutral\.border\.none);
|
|
@@ -2964,6 +2973,13 @@
|
|
|
2964
2973
|
background-color: var(--mfui-colors-mfui\.color\.base\.background\.none);
|
|
2965
2974
|
}
|
|
2966
2975
|
|
|
2976
|
+
.mfui-XFuwI {
|
|
2977
|
+
padding-block: var(--mfui-spacing-mfui\.size\.padding\.control-container\.vertical\.comfort);
|
|
2978
|
+
padding-inline: var(--mfui-spacing-mfui\.size\.padding\.sub-navigation\.horizontal\.comfort);
|
|
2979
|
+
display: flex;
|
|
2980
|
+
flex-direction: column;
|
|
2981
|
+
}
|
|
2982
|
+
|
|
2967
2983
|
.mfui-erQjxT {
|
|
2968
2984
|
list-style: none;
|
|
2969
2985
|
}
|
|
@@ -3348,6 +3364,56 @@
|
|
|
3348
3364
|
height: 16px;
|
|
3349
3365
|
}
|
|
3350
3366
|
|
|
3367
|
+
.mfui-bTuopm {
|
|
3368
|
+
gap: 4px;
|
|
3369
|
+
padding-inline: 0px;
|
|
3370
|
+
flex-direction: column;
|
|
3371
|
+
padding-top: calc(var(--mfui-spacing-mfui\.size\.padding\.container\.vertical\.comfort) - 1px);
|
|
3372
|
+
padding-bottom: var(--mfui-spacing-mfui\.size\.padding\.container\.vertical\.comfort);
|
|
3373
|
+
border-top-width: var(--mfui-border-widths-mfui\.size\.border\.base\.width\.comfort);
|
|
3374
|
+
border-top-color: var(--mfui-colors-mfui\.color\.neutral\.sub-border\.none);
|
|
3375
|
+
border-top-style: solid;
|
|
3376
|
+
}
|
|
3377
|
+
|
|
3378
|
+
.mfui-bTuopm,.mfui-fBfmXL {
|
|
3379
|
+
display: flex;
|
|
3380
|
+
background-color: var(--mfui-colors-mfui\.color\.base\.background\.none);
|
|
3381
|
+
}
|
|
3382
|
+
|
|
3383
|
+
.mfui-fBfmXL {
|
|
3384
|
+
border: none;
|
|
3385
|
+
gap: var(--mfui-spacing-mfui\.size\.spacing\.icon-and-text\.horizontal\.comfort);
|
|
3386
|
+
padding-block: 4px;
|
|
3387
|
+
padding-inline: var(--mfui-spacing-mfui\.size\.padding\.control\.horizontal\.comfort);
|
|
3388
|
+
align-items: flex-start;
|
|
3389
|
+
cursor: pointer;
|
|
3390
|
+
width: 100%;
|
|
3391
|
+
min-height: var(--mfui-sizes-mfui\.size\.dimension\.control-component\.height\.comfort);
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
.mfui-fBfmXL > svg {
|
|
3395
|
+
margin-block: 3px;
|
|
3396
|
+
flex-shrink: 0;
|
|
3397
|
+
color: var(--mfui-colors-mfui\.color\.neutral\.content\.none);
|
|
3398
|
+
width: var(--mfui-sizes-mfui\.size\.dimension\.icon\.square\.comfort);
|
|
3399
|
+
height: var(--mfui-sizes-mfui\.size\.dimension\.icon\.square\.comfort);
|
|
3400
|
+
}
|
|
3401
|
+
|
|
3402
|
+
.mfui-fBfmXL:is(:disabled, [disabled], [data-disabled], [aria-disabled=true]) {
|
|
3403
|
+
cursor: not-allowed;
|
|
3404
|
+
opacity: 0.5;
|
|
3405
|
+
}
|
|
3406
|
+
|
|
3407
|
+
.mfui-fBfmXL:is(:hover, [data-hover]) {
|
|
3408
|
+
color: var(--mfui-colors-mfui\.color\.base\.content\.hovered);
|
|
3409
|
+
background-color: var(--mfui-colors-mfui\.color\.base\.background\.hovered);
|
|
3410
|
+
cursor: pointer;
|
|
3411
|
+
}
|
|
3412
|
+
|
|
3413
|
+
.mfui-kQVryS {
|
|
3414
|
+
padding-inline: var(--mfui-spacing-mfui\.size\.padding\.control\.horizontal\.comfort);
|
|
3415
|
+
}
|
|
3416
|
+
|
|
3351
3417
|
.mfui-frSlYl {
|
|
3352
3418
|
border: 1px solid;
|
|
3353
3419
|
gap: var(--mfui-spacing-mfui\.size\.spacing\.inline\.horizontal\.comfort);
|
|
@@ -5097,8 +5163,10 @@ li:last-child > .mfui-cXGJls {
|
|
|
5097
5163
|
.mfui-iEbmF {
|
|
5098
5164
|
padding-inline: var(--mfui-spacing-mfui\.size\.padding\.main-content\.horizontal\.comfort);
|
|
5099
5165
|
display: flex;
|
|
5100
|
-
flex-direction:
|
|
5166
|
+
flex-direction: row;
|
|
5167
|
+
flex-wrap: wrap;
|
|
5101
5168
|
align-items: flex-start;
|
|
5169
|
+
column-gap: var(--mfui-spacing-mfui\.size\.spacing\.paragraph\.horizontal\.comfort);
|
|
5102
5170
|
}
|
|
5103
5171
|
|
|
5104
5172
|
.mfui-fpqRil {
|
|
@@ -5107,10 +5175,9 @@ li:last-child > .mfui-cXGJls {
|
|
|
5107
5175
|
}
|
|
5108
5176
|
|
|
5109
5177
|
.mfui-fpqRil,.mfui-eTbFbc {
|
|
5110
|
-
flex:
|
|
5178
|
+
flex: 1 0 auto;
|
|
5111
5179
|
display: flex;
|
|
5112
5180
|
align-items: center;
|
|
5113
|
-
width: 100%;
|
|
5114
5181
|
height: var(--mfui-sizes-mfui\.size\.dimension\.control-container\.height\.comfort);
|
|
5115
5182
|
}
|
|
5116
5183
|
|
|
@@ -5127,15 +5194,6 @@ li:last-child > .mfui-cXGJls {
|
|
|
5127
5194
|
}
|
|
5128
5195
|
.mfui-jDhUBB,.mfui-ggXIiJ,.mfui-clKroC {
|
|
5129
5196
|
display: none;
|
|
5130
|
-
}
|
|
5131
|
-
.mfui-iEbmF {
|
|
5132
|
-
gap: var(--mfui-spacing-mfui\.size\.spacing\.paragraph\.horizontal\.comfort);
|
|
5133
|
-
flex-direction: row;
|
|
5134
|
-
}
|
|
5135
|
-
.mfui-fpqRil,.mfui-eTbFbc {
|
|
5136
|
-
flex: 1 0 0;
|
|
5137
|
-
width: auto;
|
|
5138
|
-
min-width: 0;
|
|
5139
5197
|
}
|
|
5140
5198
|
}
|
|
5141
5199
|
|
|
@@ -7074,16 +7132,23 @@ li:last-child > .mfui-cXGJls {
|
|
|
7074
7132
|
|
|
7075
7133
|
.mfui-jAKHYi {
|
|
7076
7134
|
position: fixed;
|
|
7135
|
+
left: 0;
|
|
7136
|
+
right: 0;
|
|
7137
|
+
}
|
|
7138
|
+
|
|
7139
|
+
.mfui-jAKHYi,.mfui-erGtCj {
|
|
7077
7140
|
z-index: 1;
|
|
7078
7141
|
background-color: var(--mfui-colors-mfui\.color\.base\.background\.none);
|
|
7079
7142
|
bottom: 0;
|
|
7080
|
-
left: 0;
|
|
7081
|
-
right: 0;
|
|
7082
7143
|
border-top-width: var(--mfui-border-widths-mfui\.size\.border\.fixed-cell\.horizontal\.comfort);
|
|
7083
7144
|
border-top-style: solid;
|
|
7084
7145
|
border-top-color: var(--mfui-colors-mfui\.color\.neutral\.sub-border\.none);
|
|
7085
7146
|
}
|
|
7086
7147
|
|
|
7148
|
+
.mfui-erGtCj {
|
|
7149
|
+
position: sticky;
|
|
7150
|
+
}
|
|
7151
|
+
|
|
7087
7152
|
.mfui-hhFgaB {
|
|
7088
7153
|
max-width: var(--mfui-sizes-mfui\.layout\.area\.horizontal\.fixed);
|
|
7089
7154
|
width: 100%;
|