|
141 | 141 | @mixin navdrawer($theme) { |
142 | 142 | @include css-vars($theme); |
143 | 143 |
|
144 | | - $drawer-item-margin: rem(8px); |
145 | | - $drawer-item-min-h: auto; |
146 | | - $drawer-item-max-h: rem(48px); |
147 | | - $drawer-item-min-w: rem(32px); |
148 | | - |
149 | 144 | $variant: map.get($theme, '_meta', 'variant'); |
| 145 | + $drawer-icon-size: rem(24px); |
| 146 | + |
| 147 | + $aside-padding: map.get(( |
| 148 | + material: rem(8px), |
| 149 | + fluent: 0, |
| 150 | + bootstrap: rem(16px), |
| 151 | + indigo-design: rem(8px), |
| 152 | + ), $variant); |
| 153 | + |
| 154 | + $item-padding: map.get(( |
| 155 | + material: rem(12px) rem(8px), |
| 156 | + fluent: rem(10px) rem(8px), |
| 157 | + bootstrap: rem(8px) rem(16px), |
| 158 | + indigo-design: rem(8px) rem(16px), |
| 159 | + ), $variant); |
| 160 | + |
| 161 | + $item-gap: map.get(( |
| 162 | + material: rem(32px), |
| 163 | + fluent: rem(8px), |
| 164 | + bootstrap: rem(8px), |
| 165 | + indigo-design: rem(16px), |
| 166 | + ), $variant); |
150 | 167 |
|
151 | | - $drawer-width: rem(240px); |
152 | | - $drawer-mini-width: map.get(( |
153 | | - material: rem(68px), |
154 | | - fluent: rem(68px), |
155 | | - bootstrap: rem(68px), |
156 | | - indigo-design: rem(48px) |
| 168 | + $item-min-height: map.get(( |
| 169 | + material: rem(48px), |
| 170 | + fluent: rem(44px), |
| 171 | + bootstrap: rem(40px), |
| 172 | + indigo-design: rem(32px), |
| 173 | + ), $variant); |
| 174 | + |
| 175 | + $item-mini-size: map.get(( |
| 176 | + material: rem(56px), |
| 177 | + fluent: rem(40px), |
| 178 | + bootstrap: rem(88px), |
| 179 | + indigo-design: rem(48px), |
157 | 180 | ), $variant); |
158 | 181 |
|
159 | 182 | %navdrawer-display { |
| 183 | + --igx-nav-drawer-size: #{rem(240px)}; |
| 184 | + --igx-nav-drawer-size--mini: #{$item-mini-size}; |
| 185 | + |
| 186 | + flex-basis: 0; |
160 | 187 | transition: flex-basis; |
161 | 188 | transition-duration: .3s; |
162 | 189 | transition-timing-function: $out-quad; |
163 | 190 | flex-shrink: 0; |
164 | | - flex-basis: $drawer-width; |
| 191 | + } |
165 | 192 |
|
166 | | - &:has(.igx-nav-drawer__aside--mini) { |
167 | | - flex-basis: $drawer-mini-width; |
168 | | - } |
| 193 | + %navdrawer-display-pinned { |
| 194 | + flex-basis: var(--igx-nav-drawer-size); |
| 195 | + } |
| 196 | + |
| 197 | + %navdrawer-display-mini-pinned { |
| 198 | + flex-basis: var(--igx-mini-nav-drawer-size, #{$item-mini-size}); |
169 | 199 | } |
170 | 200 |
|
171 | 201 | %aside { |
|
176 | 206 | background: var-get($theme, 'background'); |
177 | 207 | top: 0; |
178 | 208 | bottom: 0; |
| 209 | + width: var(--igx-nav-drawer-size); |
179 | 210 | inset-inline-start: 0; |
180 | 211 | z-index: 999; |
181 | | - transition: width, transform; |
182 | | - transition-timing-function: $out-quad, $out-quad; |
| 212 | + transition: width, padding, transform; |
| 213 | + transition-timing-function: $in-out-quad, $in-out-quad; |
183 | 214 | box-shadow: var-get($theme, 'shadow'); |
184 | | - border-inline-end: rem(1px) solid var-get($theme, 'border-color'); |
185 | | - border-radius: var-get($theme, 'border-radius'); |
| 215 | + padding: $aside-padding; |
186 | 216 |
|
187 | | - @if $variant == 'indigo-design' { |
188 | | - transition: padding, width, transform; |
189 | | - padding: rem(8px); |
| 217 | + @if $variant != 'fluent' { |
| 218 | + border-inline-end: rem(1px) solid var-get($theme, 'border-color'); |
| 219 | + } @else { |
| 220 | + border: rem(1px) solid var-get($theme, 'border-color'); |
190 | 221 | } |
| 222 | + |
| 223 | + border-radius: var-get($theme, 'border-radius'); |
191 | 224 | } |
192 | 225 |
|
193 | 226 | %aside-panning { |
|
197 | 230 |
|
198 | 231 | %aside--pinned { |
199 | 232 | position: relative; |
200 | | - max-width: 100%; |
201 | 233 | box-shadow: none; |
202 | 234 | z-index: 0; |
203 | 235 | } |
|
216 | 248 | width: 0; |
217 | 249 | overflow: hidden; |
218 | 250 | border: none; |
| 251 | + padding: 0; |
219 | 252 | } |
220 | 253 |
|
221 | 254 | %aside--collapsed { |
|
226 | 259 | } |
227 | 260 |
|
228 | 261 | box-shadow: none; |
229 | | - |
230 | | - @if $variant == 'indigo-design' { |
231 | | - padding: 0; |
232 | | - } |
233 | 262 | } |
234 | 263 |
|
235 | 264 | %aside--right { |
236 | 265 | inset-inline-start: auto; |
237 | 266 | inset-inline-end: 0; |
238 | 267 | border-inline-end: none; |
239 | | - border-inline-start: rem(1px) solid var-get($theme, 'border-color'); |
| 268 | + |
| 269 | + @if $variant != 'fluent' { |
| 270 | + border-inline-start: rem(1px) solid var-get($theme, 'border-color'); |
| 271 | + } |
240 | 272 | } |
241 | 273 |
|
242 | 274 | %aside--mini { |
243 | | - width: $drawer-mini-width; |
244 | 275 | transition-duration: .2s, .2s; |
| 276 | + width: var(--igx-nav-drawer-size--mini); |
245 | 277 |
|
246 | 278 | %item { |
247 | 279 | justify-content: center; |
248 | 280 |
|
| 281 | + @if $variant == 'indigo-design' { |
| 282 | + //max-width: rem(32px); |
| 283 | + // important is needed to override the typography margins |
| 284 | + margin: rem(14px) auto !important; |
| 285 | + } |
| 286 | + |
249 | 287 | igx-icon { |
250 | 288 | margin-inline-start: 0; |
251 | 289 | } |
252 | 290 | } |
253 | 291 | } |
254 | 292 |
|
255 | 293 | %aside--normal { |
256 | | - width: $drawer-width; |
257 | 294 | transition-duration: .3s, .3s; |
| 295 | + width: var(--igx-nav-drawer-size); |
258 | 296 | } |
259 | 297 |
|
260 | 298 | %overlay { |
|
295 | 333 | align-items: center; |
296 | 334 | flex-flow: row nowrap; |
297 | 335 | color: var-get($theme, 'item-text-color'); |
298 | | - max-height: $drawer-item-max-h; |
299 | | - min-width: $drawer-item-min-w; |
| 336 | + max-height: $item-min-height; |
| 337 | + gap: $item-gap; |
| 338 | + padding: $item-padding; |
| 339 | + |
| 340 | + @if $variant == 'indigo-design' { |
| 341 | + margin-block-end: rem(4px) !important; |
| 342 | + } |
| 343 | + |
300 | 344 | cursor: pointer; |
301 | 345 | user-select: none; |
302 | 346 | outline: transparent; |
303 | 347 | white-space: nowrap; |
304 | | - border-radius: var-get($theme, 'item-border-radius'); |
| 348 | + |
| 349 | + // For material the radius is on the after element |
| 350 | + @if $variant != 'material' { |
| 351 | + border-radius: var-get($theme, 'item-border-radius'); |
| 352 | + } |
| 353 | + |
305 | 354 | text-decoration: none; |
306 | | - width: calc(100% - #{$drawer-item-margin * 2}); |
307 | 355 | border: none; |
308 | 356 | justify-content: flex-start; |
309 | 357 |
|
310 | | - @if $variant != 'indigo-design' { |
311 | | - // important is needed to override the typography margins |
312 | | - margin: $drawer-item-margin !important; |
313 | | - padding: rem(12px) rem(8px); |
314 | | - gap: rem(32px); |
315 | | - } @else { |
316 | | - // important is needed to override the typography margins |
317 | | - margin: 0 !important; |
318 | | - margin-block-end: rem(4px) !important; |
319 | | - padding: rem(8px) rem(16px); |
320 | | - gap: rem(16px); |
321 | | - width: 100%; |
322 | | - } |
323 | | - |
324 | 358 | igx-icon { |
325 | 359 | --component-size: 3; |
| 360 | + |
326 | 361 | color: var-get($theme, 'item-icon-color'); |
| 362 | + @if $variant == 'indigo-design' { |
| 363 | + margin-inline-start: rem(4px); |
| 364 | + } |
| 365 | + } |
327 | 366 |
|
| 367 | + span { |
328 | 368 | @if $variant == 'indigo-design' { |
329 | | - --component-size: 2; |
| 369 | + padding-inline-start: rem(8px); |
330 | 370 | } |
331 | 371 | } |
332 | 372 |
|
|
337 | 377 | } |
338 | 378 |
|
339 | 379 | &%igx-button--fab { |
340 | | - min-height: $drawer-item-min-h; |
| 380 | + min-height: auto; |
341 | 381 | } |
342 | 382 |
|
343 | 383 | &%igx-icon-button-display { |
344 | 384 | height: auto; |
345 | 385 | transition: none; |
346 | 386 | } |
347 | 387 |
|
| 388 | + @if $variant == 'material' { |
| 389 | + &::after { |
| 390 | + content: ''; |
| 391 | + position: absolute; |
| 392 | + width: 100%; |
| 393 | + inset-block-start: rem(4px); |
| 394 | + inset-inline-start: 0; |
| 395 | + height: calc(100% - #{rem(8px)}); |
| 396 | + border-radius: var-get($theme, 'item-border-radius'); |
| 397 | + z-index: -1; |
| 398 | + } |
| 399 | + } |
| 400 | + |
348 | 401 | &:hover, |
349 | 402 | &:focus { |
350 | | - background: var-get($theme, 'item-hover-background'); |
| 403 | + @if $variant == 'material' { |
| 404 | + &::after { |
| 405 | + background: var-get($theme, 'item-hover-background'); |
| 406 | + } |
| 407 | + } @else { |
| 408 | + background: var-get($theme, 'item-hover-background'); |
| 409 | + } |
| 410 | + |
351 | 411 | color: var-get($theme, 'item-hover-text-color'); |
352 | 412 | box-shadow: none; |
353 | 413 |
|
|
360 | 420 | %item--active { |
361 | 421 | // should be app primary color |
362 | 422 | color: var-get($theme, 'item-active-text-color'); |
363 | | - background: var-get($theme, 'item-active-background'); |
| 423 | + |
| 424 | + @if $variant == 'material' { |
| 425 | + &::after { |
| 426 | + background: var-get($theme, 'item-active-background'); |
| 427 | + } |
| 428 | + } @else { |
| 429 | + background: var-get($theme, 'item-active-background'); |
| 430 | + } |
| 431 | + |
364 | 432 |
|
365 | 433 | igx-icon { |
366 | 434 | color: var-get($theme, 'item-active-icon-color'); |
|
369 | 437 | &:focus, |
370 | 438 | &:hover { |
371 | 439 | color: var-get($theme, 'item-active-text-color'); |
372 | | - background: var-get($theme, 'item-active-background'); |
| 440 | + |
| 441 | + @if $variant == 'material' { |
| 442 | + &::after { |
| 443 | + background: var-get($theme, 'item-active-background'); |
| 444 | + } |
| 445 | + } @else { |
| 446 | + background: var-get($theme, 'item-active-background'); |
| 447 | + } |
373 | 448 |
|
374 | 449 | igx-icon { |
375 | 450 | color: var-get($theme, 'item-active-icon-color'); |
|
384 | 459 | box-shadow: none; |
385 | 460 |
|
386 | 461 | igx-icon { |
| 462 | + width: var(--igx-icon-size, #{$drawer-icon-size}); |
| 463 | + height: var(--igx-icon-size, #{$drawer-icon-size}); |
| 464 | + font-size: var(--igx-icon-size, #{$drawer-icon-size}); |
387 | 465 | margin: 0; |
388 | 466 | } |
389 | 467 |
|
|
396 | 474 | } |
397 | 475 |
|
398 | 476 | %item--header { |
399 | | - display: block; |
400 | | - padding: rem(12px) rem(16px); |
| 477 | + display: flex; |
| 478 | + align-items: center; |
| 479 | + padding: $item-padding; |
| 480 | + min-height: $item-min-height; |
401 | 481 | white-space: nowrap; |
402 | 482 | color: var-get($theme, 'item-header-text-color'); |
403 | 483 |
|
404 | 484 | @if $variant == 'indigo-design' { |
405 | | - padding-block: rem(8px); |
| 485 | + margin-block-end: rem(4px) !important; |
406 | 486 | } |
407 | 487 | } |
408 | 488 |
|
|
0 commit comments