项目需要将kibana dashboard作为iframe嵌入,需要隐藏红框中内容,防止用户跳转出dashboard(如图),kibana dashboard提供的share功能,会同时移除左侧边栏(红框)及上方搜索框(蓝框)。
查了下目前没有支持的属性,还是需要修改源码,重新打包。
修改源码
以kibana 7.7.1为例,通过inspect element找到导航栏对应元素EuiNavDrawer
src/core/public/chrome/ui/header/nav_drawer.tsx
给EuiNavDrawer添加属性style={{ display: ‘none’ }}
<EuiNavDrawer
style={{ display: 'none' }}
ref={ref}
data-test-subj="navDrawer"
isLocked={isLocked}
onIsLockedUpdate={onIsLockedUpdate}
aria-label={i18n.translate('core.ui.primaryNav.screenReaderLabel', {
defaultMessage: 'Primary',
})}
>
{RecentLinks({
recentlyAccessedItems,
navLinks: chromeNavLinks,
basePath,
})}
<EuiHorizontalRule margin="none" />
<EuiNavDrawerGroup
data-test-subj="navDrawerAppsMenu"
listItems={navLinks}
aria-label={i18n.translate('core.ui.primaryNavList.screenReaderLabel', {
defaultMessage: 'Primary navigation links',
})}
/>
</EuiNavDrawer>
修改后效果如下
直接修改编译后的包也是可以的,对应的是src/core/public/chrome/ui/header/nav_drawer.js
同样也是给navDrawerRenderer添加style={{ display: ‘none’ }}
function navDrawerRenderer(_ref, ref) {
var isLocked = _ref.isLocked,
onIsLockedUpdate = _ref.onIsLockedUpdate,
navLinks = _ref.navLinks,
chromeNavLinks = _ref.chromeNavLinks,
recentlyAccessedItems = _ref.recentlyAccessedItems,
basePath = _ref.basePath;
return _react.default.createElement(_eui.EuiNavDrawer, {
style: {
display: 'none'
},
ref: ref,
"data-test-subj": "navDrawer",
isLocked: isLocked,
onIsLockedUpdate: onIsLockedUpdate,
"aria-label": _i18n.i18n.translate('core.ui.primaryNav.screenReaderLabel', {
defaultMessage: 'Primary'
})
}, (0, _recent_links.RecentLinks)({
recentlyAccessedItems: recentlyAccessedItems,
navLinks: chromeNavLinks,
basePath: basePath
}), _react.default.createElement(_eui.EuiHorizontalRule, {
margin: "none"
}), _react.default.createElement(_eui.EuiNavDrawerGroup, {
"data-test-subj": "navDrawerAppsMenu",
listItems: navLinks,
"aria-label": _i18n.i18n.translate('core.ui.primaryNavList.screenReaderLabel', {
defaultMessage: 'Primary navigation links'
})
}));
}
查代码的过程中还找到了kibana 一些plugin的位置
src/legacy/core_plugins/kibana/index.js
可以通过注释掉links数组中的部分内容,可以将dashboard等plugin从导航栏中移除