Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(pro:layout): suppor all slots of IxMenu #738

Merged
merged 2 commits into from
Jan 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/components/icon/style/index.less
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
min-height: 1em;
line-height: 1em;
color: inherit;
transition: transform @transition-duration-base @ease-out;

> svg {
width: 1em;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

exports[`Menu render work 1`] = `
"<ul class=\\"ix-menu ix-menu-light ix-menu-vertical\\">
<li class=\\"ix-menu-item\\"><span class=\\"ix-menu-item-icon\\"><i class=\\"ix-icon ix-icon-home\\" role=\\"img\\" aria-label=\\"home\\"></i></span><span class=\\"ix-menu-item-content\\"><a>Item 1</a></span></li>
<li class=\\"ix-menu-item\\"><span class=\\"ix-menu-item-icon\\"><i class=\\"ix-icon ix-icon-mail\\" role=\\"img\\" aria-label=\\"mail\\"></i></span><span class=\\"ix-menu-item-content\\">Item 2</span></li>
<li class=\\"ix-menu-item ix-menu-item-disabled\\"><span class=\\"ix-menu-item-icon\\"><i class=\\"ix-icon ix-icon-appstore\\" role=\\"img\\" aria-label=\\"appstore\\"></i></span><span class=\\"ix-menu-item-content\\">Item 3</span></li>
<li class=\\"ix-menu-item\\"><i class=\\"ix-icon ix-icon-home\\" role=\\"img\\" aria-label=\\"home\\"></i><span><a>Item 1</a></span></li>
<li class=\\"ix-menu-item\\"><i class=\\"ix-icon ix-icon-mail\\" role=\\"img\\" aria-label=\\"mail\\"></i><span>Item 2</span></li>
<li class=\\"ix-menu-item ix-menu-item-disabled\\"><i class=\\"ix-icon ix-icon-appstore\\" role=\\"img\\" aria-label=\\"appstore\\"></i><span>Item 3</span></li>
<li class=\\"ix-menu-divider\\"></li>
<li class=\\"ix-menu-sub ix-menu-sub-vertical\\">
<div class=\\"ix-menu-sub-title\\"><span class=\\"ix-menu-sub-title-icon\\"><i class=\\"ix-icon ix-icon-setting\\" role=\\"img\\" aria-label=\\"setting\\"></i></span><span class=\\"ix-menu-sub-title-content\\">Sub Menu 1</span><span class=\\"ix-menu-sub-title-suffix\\"><i class=\\"ix-icon ix-icon-right\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"right\\"></i></span></div>
<div class=\\"ix-menu-sub-label\\"><i class=\\"ix-icon ix-icon-setting\\" role=\\"img\\" aria-label=\\"setting\\"></i><span>Sub Menu 1</span><span class=\\"ix-menu-sub-label-suffix\\"><i class=\\"ix-icon ix-icon-right\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"right\\"></i></span></div>
<!---->
</li>
<li class=\\"ix-menu-sub ix-menu-sub-disabled ix-menu-sub-vertical\\">
<div class=\\"ix-menu-sub-title\\"><span class=\\"ix-menu-sub-title-icon\\"><i class=\\"ix-icon ix-icon-github\\" role=\\"img\\" aria-label=\\"github\\"></i></span><span class=\\"ix-menu-sub-title-content\\">Menu Sub 4</span><span class=\\"ix-menu-sub-title-suffix\\"><i class=\\"ix-icon ix-icon-right\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"right\\"></i></span></div>
<div class=\\"ix-menu-sub-label\\"><i class=\\"ix-icon ix-icon-github\\" role=\\"img\\" aria-label=\\"github\\"></i><span>Menu Sub 4</span><span class=\\"ix-menu-sub-label-suffix\\"><i class=\\"ix-icon ix-icon-right\\" style=\\"transform: rotate(0deg);\\" role=\\"img\\" aria-label=\\"right\\"></i></span></div>
<!---->
</li>
</ul>"
Expand Down
2 changes: 1 addition & 1 deletion packages/components/menu/__tests__/menu.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ describe('Menu', () => {
expect(subs[3].classes()).toContain('ix-menu-sub-expanded')

await wrapper.setProps({ expandedKeys: [] })
await subs[0].find('.ix-menu-sub-title').trigger('click')
await subs[0].find('.ix-menu-sub-label').trigger('click')
await wait(105)

expect(onUpdateExpandedKeys).toBeCalledWith(['sub1'])
Expand Down
2 changes: 1 addition & 1 deletion packages/components/menu/src/Menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import { type VKey, callEmit } from '@idux/cdk/utils'
import { useGlobalConfig } from '@idux/components/config'
import { ɵDropdownToken } from '@idux/components/dropdown'

import { coverChildren } from './children/Utils'
import { useDataSource } from './composables/useDataSource'
import { useExpanded } from './composables/useExpanded'
import { useSelected } from './composables/useSelected'
import { coverChildren } from './contents/Utils'
import { menuToken } from './token'
import { menuProps } from './types'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ const MenuDivider: FunctionalComponent<HTMLAttributes> = () => {
const { mergedPrefixCls } = inject(menuToken)!
return <li class={`${mergedPrefixCls.value}-divider`}></li>
}
MenuDivider.displayName = 'MenuDivider'

export default MenuDivider
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { menuItemProps } from '../types'
import { coverIcon } from './Utils'

export default defineComponent({
name: 'MenuItem',
props: menuItemProps,
setup(props) {
const key = useKey()
Expand Down Expand Up @@ -76,11 +77,10 @@ export default defineComponent({
const iconNode = coverIcon(iconSlot, slotProps!, icon)
const labelNode = labelSlot ? labelSlot(slotProps!) : label

const prefixCls = `${mergedPrefixCls.value}-item`
return (
<li class={classes.value} style={style.value} {...additional} onClick={disabled ? undefined : onClick}>
{iconNode && <span class={`${prefixCls}-icon`}>{iconNode}</span>}
<span class={`${prefixCls}-content`}>{labelNode}</span>
{iconNode}
<span>{labelNode}</span>
</li>
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { menuItemGroupProps } from '../types'
import { coverChildren, coverIcon } from './Utils'

export default defineComponent({
name: 'MenuItemGroup',
props: menuItemGroupProps,
setup(props) {
const key = useKey()
Expand All @@ -31,9 +32,7 @@ export default defineComponent({

const level = menuSubContext ? menuSubContext.level + 1 : 1
const paddingLeft = usePaddingLeft(mode, indent, level, !!menuItemGroupContext)
const titleStyle = computed(() => {
return { paddingLeft: paddingLeft.value }
})
const labelStyle = computed(() => ({ paddingLeft: paddingLeft.value }))

const onClick = (evt: Event) => {
evt.stopPropagation()
Expand All @@ -60,9 +59,9 @@ export default defineComponent({
const prefixCls = `${mergedPrefixCls.value}-item-group`
return (
<li class={prefixCls} {...additional} onClick={onClick}>
<div class={`${prefixCls}-title`} style={titleStyle.value}>
{iconNode && <span class={`${prefixCls}-title-icon`}>{iconNode}</span>}
{<span class={`${prefixCls}-title-content`}> {labelNode}</span>}
<div class={`${prefixCls}-label`} style={labelStyle.value}>
{iconNode}
<span>{labelNode}</span>
</div>
<ul class={`${prefixCls}-content`}>{coverChildren(children)}</ul>
</li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { menuSubToken, menuToken } from '../../token'
import { coverChildren } from '../Utils'

export default defineComponent({
name: 'MenuSubInlineContent',
setup() {
const { mergedPrefixCls } = inject(menuToken)!
const { props, isExpanded } = inject(menuSubToken)!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { menuSubToken, menuToken } from '../../token'
import { coverIcon } from '../Utils'

export default defineComponent({
name: 'MenuSubLabel',
setup() {
const { slots: menuSlots, config, mergedPrefixCls } = inject(menuToken)!
const { props, isExpanded, isSelected, changeExpanded, handleMouseEvent, mode, paddingLeft } = inject(menuSubToken)!
Expand Down Expand Up @@ -70,11 +71,11 @@ export default defineComponent({
const labelNode = labelSlot ? labelSlot(slotProps!) : label
const suffixNode = coverIcon(suffixSlot, slotProps!, suffix.value, rotate.value)

const prefixCls = `${mergedPrefixCls.value}-sub-title`
const prefixCls = `${mergedPrefixCls.value}-sub-label`
return (
<div class={prefixCls} style={style.value} {...events.value}>
{iconNode && <span class={`${prefixCls}-icon`}>{iconNode}</span>}
<span class={`${prefixCls}-content`}>{labelNode}</span>
{iconNode}
<span>{labelNode}</span>
{suffixNode && <span class={`${prefixCls}-suffix`}>{suffixNode}</span>}
</div>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,13 @@ import { usePaddingLeft } from '../../composables/usePaddingLeft'
import { type MenuSubContext, menuItemGroupToken, menuSubToken, menuToken } from '../../token'
import { type MenuData, type MenuMode, type MenuSubProps, menuSubProps } from '../../types'
import InlineContent from './InlineContent'
import Label from './Label'
import OverlayContent from './OverlayContent'
import Title from './Title'

const defaultDelay: [number, number] = [0, 100]

export default defineComponent({
name: 'MenuSub',
props: menuSubProps,
setup(props) {
const common = useGlobalConfig('common')
Expand Down Expand Up @@ -113,9 +114,9 @@ export default defineComponent({
const { additional, disabled } = props.data
let children: VNodeTypes
if (mode.value === 'inline') {
children = [<Title></Title>, <InlineContent></InlineContent>]
children = [<Label></Label>, <InlineContent></InlineContent>]
} else {
const trigger = () => <Title></Title>
const trigger = () => <Label></Label>
const content = () => <OverlayContent></OverlayContent>
children = (
<ɵOverlay
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { menuSubToken, menuToken } from '../../token'
import { coverChildren } from '../Utils'

export default defineComponent({
name: 'MenuSubOverlayContent',
setup() {
const { mergedPrefixCls, theme } = inject(menuToken)!
const { props, handleMouseEvent } = inject(menuSubToken)!
Expand Down
20 changes: 10 additions & 10 deletions packages/components/menu/style/collapsed.less
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
.@{menu-prefix} {

&-collapsed {
.@{menu-prefix}-item-icon,
.@{menu-prefix}-sub-title-icon {
margin: 0;
.@{menu-prefix}-item,
.@{menu-prefix}-item-group-label,
.@{menu-prefix}-sub-label {
font-size: @menu-collapsed-font-size;

+ span {
.@{icon-prefix} + span {
display: none;
}
}

.@{menu-prefix}-sub-title-suffix {
display: none;
.@{menu-prefix}-item-group-label {
padding: 0 8px;
}

.@{menu-prefix}-item-group-title {
padding: 0 8px;
.@{menu-prefix}-sub-label-suffix {
display: none;
}
}

&-vertical&-collapsed,
&-inline&-collapsed {
.@{menu-prefix}-item,
.@{menu-prefix}-sub > .@{menu-prefix}-sub-title,
.@{menu-prefix}-sub > .@{menu-prefix}-sub-label,
.@{menu-prefix}-item-group .@{menu-prefix}-item,
.@{menu-prefix}-item-group .@{menu-prefix}-sub-title {
.@{menu-prefix}-item-group .@{menu-prefix}-sub-label {
padding: 0 ~'calc(50% - @{menu-collapsed-font-size} / 2)';
}
}
Expand Down
14 changes: 8 additions & 6 deletions packages/components/menu/style/dark.less
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
color: @menu-dark-color;
}

.@{menu-prefix}-item-group-title {
.@{menu-prefix}-item-group-label {
color: @menu-dark-color;
}

.@{menu-prefix}-item:not(.@{menu-prefix}-item-disabled),
.@{menu-prefix}-sub:not(.@{menu-prefix}-sub-disabled) > .@{menu-prefix}-sub-title {
.@{menu-prefix}-sub:not(.@{menu-prefix}-sub-disabled) > .@{menu-prefix}-sub-label {

&:hover,
&:active {
Expand All @@ -27,18 +27,20 @@
}

.@{menu-prefix}-item.@{menu-prefix}-item-selected,
.@{menu-prefix}-sub-selected > .@{menu-prefix}-sub-title {
.@{menu-prefix}-sub-selected > .@{menu-prefix}-sub-label {

a {
color: @menu-highlight-color;
}
}

.@{menu-prefix}-item-disabled,
.@{menu-prefix}-item-disabled a,
.@{menu-prefix}-sub-disabled > .@{menu-prefix}-sub-title,
.@{menu-prefix}-sub-disabled > .@{menu-prefix}-sub-title a {
.@{menu-prefix}-sub-disabled > .@{menu-prefix}-sub-label {
color: @menu-dark-disabled-color;

a {
color: @menu-dark-disabled-color;
}
}
}

Expand Down
16 changes: 8 additions & 8 deletions packages/components/menu/style/index.less
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
}

.@{menu-prefix}-item,
.@{menu-prefix}-sub-title {
.@{menu-prefix}-sub-label {
margin: @menu-item-margin;
}

Expand Down Expand Up @@ -59,7 +59,7 @@
&-horizontal {
.@{menu-prefix}-sub-expanded {
color: @menu-highlight-color;
.@{menu-prefix}-sub-title a {
.@{menu-prefix}-sub-label a {
color: @menu-highlight-color;
}
}
Expand All @@ -75,7 +75,7 @@
}

.@{menu-prefix}-item,
.@{menu-prefix}-sub-title {
.@{menu-prefix}-sub-label {
margin: 0 @menu-item-padding-left;
padding: @menu-item-horizontal-padding;
border-bottom: @menu-item-border-bottom-width @menu-border-style transparent;
Expand All @@ -94,18 +94,18 @@

.@{menu-prefix}-item:hover,
.@{menu-prefix}-item-selected,
.@{menu-prefix}-sub-title:hover,
.@{menu-prefix}-sub-expanded .@{menu-prefix}-sub-title,
.@{menu-prefix}-sub-selected .@{menu-prefix}-sub-title {
.@{menu-prefix}-sub-label:hover,
.@{menu-prefix}-sub-expanded .@{menu-prefix}-sub-label,
.@{menu-prefix}-sub-selected .@{menu-prefix}-sub-label {
border-color: @menu-highlight-color;
}

.@{menu-prefix}-item-disabled,
.@{menu-prefix}-sub-disabled .@{menu-prefix}-sub-title {
.@{menu-prefix}-sub-disabled .@{menu-prefix}-sub-label {
border-color: transparent !important;
}

.@{menu-prefix}-sub-title-suffix {
.@{menu-prefix}-sub-label-suffix {
display: none;
}

Expand Down
24 changes: 12 additions & 12 deletions packages/components/menu/style/menu.less
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
}

&-item,
&-sub-title {
&-sub-label {
cursor: pointer;
transition: background @transition-duration-base, color @transition-duration-base;

Expand All @@ -36,41 +36,41 @@
background-color: @menu-highlight-bg-color;
}

&-icon {
margin-right: @menu-item-icon-margin-right;
.@{icon-prefix} + span {
margin-left: @menu-item-icon-margin-right;
}
}

&-item-group {

&-title {
&-label {
color: @menu-item-group-text-color;
font-size: @menu-font-size;

&-icon {
margin-right: @menu-item-icon-margin-right;
.@{icon-prefix} + span {
margin-left: @menu-item-icon-margin-right;
}
}

& > &-content {
.@{menu-prefix}-item,
.@{menu-prefix}-sub-title {
.@{menu-prefix}-sub-label {
padding-left: @menu-item-group-content-padding-left;
}
}
}

&-sub {

&-title-suffix {
&-label-suffix {
position: absolute;
right: @menu-sub-suffix-icon-right;
}
}

&-item,
&-item-group-title,
&-sub-title {
&-item-group-label,
&-sub-label {
position: relative;
height: @menu-item-height;
line-height: @menu-item-height;
Expand All @@ -80,7 +80,7 @@
}

&-item&-item-selected,
&-sub-selected > &-sub-title {
&-sub-selected > &-sub-label {
color: @menu-highlight-color;

a {
Expand All @@ -89,7 +89,7 @@
}

&-item&-item-disabled,
&-sub-disabled > &-sub-title {
&-sub-disabled > &-sub-label {
color: @menu-disabled-color;
background-color: @menu-disabled-bg-color;
cursor: not-allowed;
Expand Down
2 changes: 1 addition & 1 deletion packages/components/style/core/reset.less
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ select::-ms-expand {
}

select::-ms-value {
color: currentColor; /* Internet Explorer 11+ */
color: currentcolor; /* Internet Explorer 11+ */
}

legend {
Expand Down
Loading