@@ -31,6 +31,10 @@ import {
31
31
CNavbarNav ,
32
32
CNavbarText ,
33
33
CNavbarToggler ,
34
+ COffcanvas ,
35
+ COffcanvasBody ,
36
+ COffcanvasHeader ,
37
+ COffcanvasTitle ,
34
38
} from ' @coreui/react/src/index'
35
39
36
40
import CoreUISignetImg from ' ./../assets/images/brand/coreui-signet.svg'
@@ -1332,6 +1336,234 @@ return (
1332
1336
)
1333
1337
```
1334
1338
1339
+ ### Offcanvas
1340
+
1341
+ Transform your expanding and collapsing navbar into an offcanvas drawer with the offcanvas plugin. We extend both the offcanvas default styles and use our ` .navbar-expand-* ` classes to create a dynamic and flexible navigation sidebar.
1342
+
1343
+ In the example below, to create an offcanvas navbar that is always collapsed across all breakpoints, omit the ` .navbar-expand-* ` class entirely.
1344
+
1345
+ export const OffcanvasExample = () => {
1346
+ const [visible, setVisible] = useState (false )
1347
+ return (
1348
+ <CNavbar colorScheme = " light" className = " bg-light" >
1349
+ <CContainer fluid >
1350
+ <CNavbarToggler
1351
+ aria-controls = " offcanvasNavbar"
1352
+ aria-label = " Toggle navigation"
1353
+ onClick = { () => setVisible (! visible )}
1354
+ />
1355
+ <COffcanvas id = " offcanvasNavbar" placement = " end" portal = { false } visible = { visible } onHide = { () => setVisible (false )} >
1356
+ <COffcanvasHeader >
1357
+ <COffcanvasTitle >Offcanvas</COffcanvasTitle >
1358
+ <CCloseButton className = " text-reset" onClick = { () => setVisible (false )} />
1359
+ </COffcanvasHeader >
1360
+ <COffcanvasBody >
1361
+ <CNavbarNav >
1362
+ <CNavItem >
1363
+ <CNavLink href = " #" active >
1364
+ Home
1365
+ </CNavLink >
1366
+ </CNavItem >
1367
+ <CNavItem >
1368
+ <CNavLink href = " #" >Link</CNavLink >
1369
+ </CNavItem >
1370
+ <CDropdown variant = " nav-item" popper = { false } >
1371
+ <CDropdownToggle color = " secondary" >Dropdown button</CDropdownToggle >
1372
+ <CDropdownMenu >
1373
+ <CDropdownItem href = " #" >Action</CDropdownItem >
1374
+ <CDropdownItem href = " #" >Another action</CDropdownItem >
1375
+ <CDropdownDivider />
1376
+ <CDropdownItem href = " #" >Something else here</CDropdownItem >
1377
+ </CDropdownMenu >
1378
+ </CDropdown >
1379
+ <CNavItem >
1380
+ <CNavLink href = " #" disabled >
1381
+ Disabled
1382
+ </CNavLink >
1383
+ </CNavItem >
1384
+ </CNavbarNav >
1385
+ <CForm className = " d-flex" >
1386
+ <CFormInput type = " search" className = " me-2" placeholder = " Search" />
1387
+ <CButton type = " submit" color = " success" variant = " outline" >
1388
+ Search
1389
+ </CButton >
1390
+ </CForm >
1391
+ </COffcanvasBody >
1392
+ </COffcanvas >
1393
+ </CContainer >
1394
+ </CNavbar >
1395
+ )
1396
+ }
1397
+
1398
+ <Example >
1399
+ <OffcanvasExample />
1400
+ </Example >
1401
+
1402
+ ``` jsx
1403
+ const [visible , setVisible ] = useState (false )
1404
+ return (
1405
+ < CNavbar colorScheme= " light" className= " bg-light" >
1406
+ < CContainer fluid>
1407
+ < CNavbarToggler
1408
+ aria- controls= " offcanvasNavbar"
1409
+ aria- label= " Toggle navigation"
1410
+ onClick= {() => setVisible (! visible)}
1411
+ / >
1412
+ < COffcanvas id= " offcanvasNavbar" placement= " end" portal= {false } visible= {visible} onHide= {() => setVisible (false )}>
1413
+ < COffcanvasHeader>
1414
+ < COffcanvasTitle> Offcanvas< / COffcanvasTitle>
1415
+ < CCloseButton className= " text-reset" onClick= {() => setVisible (false )} / >
1416
+ < / COffcanvasHeader>
1417
+ < COffcanvasBody>
1418
+ < CNavbarNav>
1419
+ < CNavItem>
1420
+ < CNavLink href= " #" active>
1421
+ Home
1422
+ < / CNavLink>
1423
+ < / CNavItem>
1424
+ < CNavItem>
1425
+ < CNavLink href= " #" > Link< / CNavLink>
1426
+ < / CNavItem>
1427
+ < CDropdown variant= " nav-item" popper= {false }>
1428
+ < CDropdownToggle color= " secondary" > Dropdown button< / CDropdownToggle>
1429
+ < CDropdownMenu>
1430
+ < CDropdownItem href= " #" > Action< / CDropdownItem>
1431
+ < CDropdownItem href= " #" > Another action< / CDropdownItem>
1432
+ < CDropdownDivider / >
1433
+ < CDropdownItem href= " #" > Something else here< / CDropdownItem>
1434
+ < / CDropdownMenu>
1435
+ < / CDropdown>
1436
+ < CNavItem>
1437
+ < CNavLink href= " #" disabled>
1438
+ Disabled
1439
+ < / CNavLink>
1440
+ < / CNavItem>
1441
+ < / CNavbarNav>
1442
+ < CForm className= " d-flex" >
1443
+ < CFormInput type= " search" className= " me-2" placeholder= " Search" / >
1444
+ < CButton type= " submit" color= " success" variant= " outline" >
1445
+ Search
1446
+ < / CButton>
1447
+ < / CForm>
1448
+ < / COffcanvasBody>
1449
+ < / COffcanvas>
1450
+ < / CContainer>
1451
+ < / CNavbar>
1452
+ )
1453
+ ```
1454
+
1455
+ To create an offcanvas navbar that expands into a normal navbar at a specific breakpoint like ` xxl ` , use ` expand="xxl" ` property.
1456
+
1457
+ export const OffcanvasExample2 = () => {
1458
+ const [visible, setVisible] = useState (false )
1459
+ return (
1460
+ <CNavbar colorScheme = " light" className = " bg-light" expand = " xxl" >
1461
+ <CContainer fluid >
1462
+ <CNavbarToggler
1463
+ aria-controls = " offcanvasNavbar2"
1464
+ aria-label = " Toggle navigation"
1465
+ onClick = { () => setVisible (! visible )}
1466
+ />
1467
+ <COffcanvas id = " offcanvasNavbar2" placement = " end" portal = { false } visible = { visible } onHide = { () => setVisible (false )} >
1468
+ <COffcanvasHeader >
1469
+ <COffcanvasTitle >Offcanvas</COffcanvasTitle >
1470
+ <CCloseButton className = " text-reset" onClick = { () => setVisible (false )} />
1471
+ </COffcanvasHeader >
1472
+ <COffcanvasBody >
1473
+ <CNavbarNav >
1474
+ <CNavItem >
1475
+ <CNavLink href = " #" active >
1476
+ Home
1477
+ </CNavLink >
1478
+ </CNavItem >
1479
+ <CNavItem >
1480
+ <CNavLink href = " #" >Link</CNavLink >
1481
+ </CNavItem >
1482
+ <CDropdown variant = " nav-item" popper = { false } >
1483
+ <CDropdownToggle color = " secondary" >Dropdown button</CDropdownToggle >
1484
+ <CDropdownMenu >
1485
+ <CDropdownItem href = " #" >Action</CDropdownItem >
1486
+ <CDropdownItem href = " #" >Another action</CDropdownItem >
1487
+ <CDropdownDivider />
1488
+ <CDropdownItem href = " #" >Something else here</CDropdownItem >
1489
+ </CDropdownMenu >
1490
+ </CDropdown >
1491
+ <CNavItem >
1492
+ <CNavLink href = " #" disabled >
1493
+ Disabled
1494
+ </CNavLink >
1495
+ </CNavItem >
1496
+ </CNavbarNav >
1497
+ <CForm className = " d-flex" >
1498
+ <CFormInput type = " search" className = " me-2" placeholder = " Search" />
1499
+ <CButton type = " submit" color = " success" variant = " outline" >
1500
+ Search
1501
+ </CButton >
1502
+ </CForm >
1503
+ </COffcanvasBody >
1504
+ </COffcanvas >
1505
+ </CContainer >
1506
+ </CNavbar >
1507
+ )
1508
+ }
1509
+
1510
+ <Example >
1511
+ <OffcanvasExample2 />
1512
+ </Example >
1513
+
1514
+ ``` jsx
1515
+ const [visible , setVisible ] = useState (false )
1516
+ return (
1517
+ < CNavbar colorScheme= " light" className= " bg-light" expand= " xxl" >
1518
+ < CContainer fluid>
1519
+ < CNavbarToggler
1520
+ aria- controls= " offcanvasNavbar2"
1521
+ aria- label= " Toggle navigation"
1522
+ onClick= {() => setVisible (! visible)}
1523
+ / >
1524
+ < COffcanvas id= " offcanvasNavbar2" placement= " end" portal= {false } visible= {visible} onHide= {() => setVisible (false )}>
1525
+ < COffcanvasHeader>
1526
+ < COffcanvasTitle> Offcanvas< / COffcanvasTitle>
1527
+ < CCloseButton className= " text-reset" onClick= {() => setVisible (false )} / >
1528
+ < / COffcanvasHeader>
1529
+ < COffcanvasBody>
1530
+ < CNavbarNav>
1531
+ < CNavItem>
1532
+ < CNavLink href= " #" active>
1533
+ Home
1534
+ < / CNavLink>
1535
+ < / CNavItem>
1536
+ < CNavItem>
1537
+ < CNavLink href= " #" > Link< / CNavLink>
1538
+ < / CNavItem>
1539
+ < CDropdown variant= " nav-item" popper= {false }>
1540
+ < CDropdownToggle color= " secondary" > Dropdown button< / CDropdownToggle>
1541
+ < CDropdownMenu>
1542
+ < CDropdownItem href= " #" > Action< / CDropdownItem>
1543
+ < CDropdownItem href= " #" > Another action< / CDropdownItem>
1544
+ < CDropdownDivider / >
1545
+ < CDropdownItem href= " #" > Something else here< / CDropdownItem>
1546
+ < / CDropdownMenu>
1547
+ < / CDropdown>
1548
+ < CNavItem>
1549
+ < CNavLink href= " #" disabled>
1550
+ Disabled
1551
+ < / CNavLink>
1552
+ < / CNavItem>
1553
+ < / CNavbarNav>
1554
+ < CForm className= " d-flex" >
1555
+ < CFormInput type= " search" className= " me-2" placeholder= " Search" / >
1556
+ < CButton type= " submit" color= " success" variant= " outline" >
1557
+ Search
1558
+ < / CButton>
1559
+ < / CForm>
1560
+ < / COffcanvasBody>
1561
+ < / COffcanvas>
1562
+ < / CContainer>
1563
+ < / CNavbar>
1564
+ )
1565
+ ```
1566
+
1335
1567
## API
1336
1568
1337
1569
### CNavbar
0 commit comments