Skip to content

Commit 549edd6

Browse files
committed
chore(ui-top-nav-bar): add DeepPartial theme
1 parent 59b0b80 commit 549edd6

File tree

3 files changed

+91
-61
lines changed

3 files changed

+91
-61
lines changed

packages/ui-top-nav-bar/src/CanvasTopNav/index.tsx

Lines changed: 73 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ import { TopNavBarItem } from '../TopNavBar/TopNavBarItem'
3737
import { CanvasTopNavProps } from './props'
3838
import generateComponentTheme from './theme'
3939
import TopNavBarContext from '../TopNavBar/TopNavBarContext'
40+
import {
41+
DeepPartial,
42+
DrilldownTheme,
43+
OptionsItemTheme,
44+
TopNavBarItemTheme
45+
} from '@instructure/shared-types'
4046

4147
/**
4248
---
@@ -88,6 +94,7 @@ const CanvasTopNav = ({
8894
<Drilldown.Page
8995
key={item.id}
9096
id={item.id} //TODO renderbackbuttonlabel
97+
renderBackButtonLabel={item?.backButtonLabel}
9198
renderBeforeChildren={item.renderBeforeMobileMenuItems}
9299
renderAfterChildren={item.renderAfterMobileMenuItems}
93100
>
@@ -142,10 +149,10 @@ const CanvasTopNav = ({
142149
theme={{
143150
componentOverrides: {
144151
'Options.Item': {
145-
...styles.optionsOverride
152+
...(styles.optionsOverride as DeepPartial<OptionsItemTheme>)
146153
},
147154
Drilldown: {
148-
...styles.drilldownOverride
155+
...(styles.drilldownOverride as DeepPartial<DrilldownTheme>)
149156
}
150157
}
151158
}}
@@ -188,67 +195,75 @@ const CanvasTopNav = ({
188195
</div>
189196
)}
190197
{lti && (
191-
<InstUISettingsProvider
192-
theme={{
193-
componentOverrides: {
194-
'TopNavBar.Item': {
195-
...styles.topNavBarItemOverride
198+
<div css={styles.menuItems}>
199+
<InstUISettingsProvider
200+
theme={{
201+
componentOverrides: {
202+
'TopNavBar.Item': {
203+
...(styles.topNavBarItemOverride as DeepPartial<TopNavBarItemTheme>)
204+
}
196205
}
197-
}
198-
}}
199-
>
200-
<TopNavBarContext.Provider
201-
value={{
202-
layout: 'desktop',
203-
inverseColor: true
204206
}}
205207
>
206-
<TopNavBarMenuItems
207-
renderHiddenItemsMenuTriggerLabel={() => ''}
208-
currentPageId={currentPageId}
208+
<TopNavBarContext.Provider
209+
value={{
210+
layout: 'desktop',
211+
inverseColor: true
212+
}}
209213
>
210-
{menuItems?.map((item: any) => (
211-
<TopNavBarItem key={item.id} id={item.id}>
212-
{item.title}
213-
</TopNavBarItem>
214-
))}
215-
<TopNavBarItem
216-
id="submenu"
217-
renderSubmenu={
218-
<Drilldown rootPageId="root">
219-
<Drilldown.Page id="root">
220-
<Drilldown.Option
221-
id="rootOption1"
222-
subPageId="secondPage"
223-
>
224-
Link One
225-
</Drilldown.Option>
226-
<Drilldown.Option id="rootOption2" href="/#TopNavBar">
227-
Link Two
228-
</Drilldown.Option>
229-
<Drilldown.Option id="rootOption3" href="/#TopNavBar">
230-
Link Three
231-
</Drilldown.Option>
232-
</Drilldown.Page>
233-
<Drilldown.Page id="secondPage">
234-
<Drilldown.Option id="secondPageOption1">
235-
Level 2 Option One
236-
</Drilldown.Option>
237-
<Drilldown.Option
238-
id="secondPageOption2"
239-
href="/#TopNavBar"
240-
>
241-
Level 2 Option Two
242-
</Drilldown.Option>
243-
</Drilldown.Page>
244-
</Drilldown>
245-
}
214+
<TopNavBarMenuItems
215+
renderHiddenItemsMenuTriggerLabel={() => ''}
216+
currentPageId={currentPageId}
246217
>
247-
Submenu
248-
</TopNavBarItem>
249-
</TopNavBarMenuItems>
250-
</TopNavBarContext.Provider>
251-
</InstUISettingsProvider>
218+
{menuItems?.map((item: any) => (
219+
<TopNavBarItem key={item.id} id={item.id}>
220+
{item.title}
221+
</TopNavBarItem>
222+
))}
223+
<TopNavBarItem
224+
id="submenu"
225+
renderSubmenu={
226+
<Drilldown rootPageId="root">
227+
<Drilldown.Page id="root">
228+
<Drilldown.Option
229+
id="rootOption1"
230+
subPageId="secondPage"
231+
>
232+
Link One
233+
</Drilldown.Option>
234+
<Drilldown.Option
235+
id="rootOption2"
236+
href="/#TopNavBar"
237+
>
238+
Link Two
239+
</Drilldown.Option>
240+
<Drilldown.Option
241+
id="rootOption3"
242+
href="/#TopNavBar"
243+
>
244+
Link Three
245+
</Drilldown.Option>
246+
</Drilldown.Page>
247+
<Drilldown.Page id="secondPage">
248+
<Drilldown.Option id="secondPageOption1">
249+
Level 2 Option One
250+
</Drilldown.Option>
251+
<Drilldown.Option
252+
id="secondPageOption2"
253+
href="/#TopNavBar"
254+
>
255+
Level 2 Option Two
256+
</Drilldown.Option>
257+
</Drilldown.Page>
258+
</Drilldown>
259+
}
260+
>
261+
Submenu
262+
</TopNavBarItem>
263+
</TopNavBarMenuItems>
264+
</TopNavBarContext.Provider>
265+
</InstUISettingsProvider>
266+
</div>
252267
)}
253268
</DesktopTopNav.Start>
254269
<DesktopTopNav.End>

packages/ui-top-nav-bar/src/CanvasTopNav/props.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
*/
2424

2525
import type { PropsWithChildren, ReactNode } from 'react'
26+
import { ComponentStyle } from '@instructure/emotion'
2627

2728
type CanvasTopNavOwnProps = {
2829
lti?: boolean
@@ -42,6 +43,15 @@ type CanvasTopNavOwnProps = {
4243
currentPageId?: string
4344
}
4445

46+
type CanvasTopNavStyle = ComponentStyle<
47+
| 'optionsOverride'
48+
| 'drilldownOverride'
49+
| 'optionContainer'
50+
| 'topNavBarItemOverride'
51+
| 'ltiIcon'
52+
| 'menuItems'
53+
>
54+
4555
type CanvasTopNavProps = CanvasTopNavOwnProps & PropsWithChildren
4656

47-
export type { CanvasTopNavProps, CanvasTopNavOwnProps }
57+
export type { CanvasTopNavProps, CanvasTopNavOwnProps, CanvasTopNavStyle }

packages/ui-top-nav-bar/src/CanvasTopNav/styles.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
* SOFTWARE.
2323
*/
24-
import type { CanvasTopNavProps } from './props'
24+
import type { CanvasTopNavProps, CanvasTopNavStyle } from './props'
2525
import { CanvasTopNavTheme } from '@instructure/shared-types'
2626

2727
const generateStyle = (
2828
componentTheme: CanvasTopNavTheme,
2929
params: CanvasTopNavProps
30-
) => {
30+
): CanvasTopNavStyle => {
3131
const { lti } = params
3232

3333
return {
@@ -63,6 +63,11 @@ const generateStyle = (
6363
ltiIcon: {
6464
label: 'canvasTopNavLtiIcon',
6565
fontSize: '38px'
66+
},
67+
menuItems: {
68+
label: 'canvasTopNavMenuitems',
69+
display: 'flex',
70+
height: '50px'
6671
}
6772
}
6873
}

0 commit comments

Comments
 (0)