@mirweb/mir-web-components 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -113,9 +113,8 @@ defineProps({
113
113
  p {
114
114
  padding-bottom: 30px;
115
115
  }
116
-
117
116
  .card__link {
118
- margin-top: 30px;
117
+ margin-bottom: 30px;
119
118
  }
120
119
  }
121
120
 
@@ -1,5 +1,11 @@
1
1
  <template>
2
- <div class="header__wrapper">
2
+ <div
3
+ class="header__wrapper"
4
+ :class="{
5
+ 'header--hide-burger': !hasBurgerContent,
6
+ 'header--align-secondary-right': !hasBurgerContent,
7
+ }"
8
+ >
3
9
  <nav aria-label="Main navigation">
4
10
  <!-- Main nav -->
5
11
  <div class="nav-wrapper">
@@ -207,6 +213,7 @@
207
213
  </div>
208
214
  </div>
209
215
  <button
216
+ v-if="hasBurgerContent"
210
217
  class="mobile-burger-wrapper"
211
218
  aria-label="Toggle mobile menu"
212
219
  @click.prevent="toggleBurger"
@@ -223,7 +230,10 @@
223
230
  />
224
231
  </button>
225
232
  </div>
226
- <div v-show="burgerState" class="mobile-menu-content-wrapper">
233
+ <div
234
+ v-show="hasBurgerContent && burgerState"
235
+ class="mobile-menu-content-wrapper"
236
+ >
227
237
  <ul>
228
238
  <slot name="mobile-main-nav-items"></slot>
229
239
  </ul>
@@ -238,10 +248,11 @@
238
248
  </template>
239
249
 
240
250
  <script setup lang="ts">
241
- import { ref, onMounted, onUnmounted, watch } from "vue";
251
+ import { ref, computed, onMounted, onUnmounted, watch, useSlots } from "vue";
242
252
  import AtomLink from "../../atoms/link/link.vue";
243
253
 
244
254
  let clickEventListener: ((e: MouseEvent) => void) | null = null;
255
+ const slots = useSlots();
245
256
  const props = defineProps({
246
257
  burgerState: {
247
258
  type: Boolean,
@@ -290,6 +301,29 @@ const props = defineProps({
290
301
  },
291
302
  });
292
303
  let burgerState = ref(props.burgerState);
304
+
305
+ // Hide burger automatically when there's nothing to show in it (no nav links, no dropdown)
306
+ const hasBurgerContent = computed(() => {
307
+ const mainNav = slots["main-nav-items"]?.();
308
+ const mobileMainNav = slots["mobile-main-nav-items"]?.();
309
+ const hasNavItems =
310
+ (mainNav?.length ?? 0) > 0 || (mobileMainNav?.length ?? 0) > 0;
311
+
312
+ if (props.useDropdown) {
313
+ const dropTitle = slots["dropdown-title"]?.();
314
+ const dropLinks = slots["dropdown-links"]?.();
315
+ const mobileDropTitle = slots["mobile-dropdown-title"]?.();
316
+ const mobileDropLinks = slots["mobile-dropdown-links"]?.();
317
+ const hasDropdownItems =
318
+ (dropTitle?.length ?? 0) > 0 ||
319
+ (dropLinks?.length ?? 0) > 0 ||
320
+ (mobileDropTitle?.length ?? 0) > 0 ||
321
+ (mobileDropLinks?.length ?? 0) > 0;
322
+ return hasNavItems || hasDropdownItems;
323
+ }
324
+
325
+ return hasNavItems;
326
+ });
293
327
  let search = ref(props.search);
294
328
  let showDropDown = ref(props.showDropDown);
295
329
  let showPortalSwitcherDropDown = ref(props.showPortalSwitcherDropDown);
@@ -406,6 +440,10 @@ defineExpose({
406
440
  gap: 15px;
407
441
  }
408
442
 
443
+ .header--align-secondary-right .secondary-nav-items {
444
+ margin-left: auto;
445
+ }
446
+
409
447
  .main-nav-items a {
410
448
  font-size: $font-size-xsm;
411
449
  font-weight: 300;
@@ -750,6 +788,15 @@ defineExpose({
750
788
  .mobile-nav-wrapper.mirsaic-mobile-bg::before {
751
789
  opacity: 1;
752
790
  }
791
+
792
+ /* When burger has no content: logo left, portal right (no burger, no expandable menu) */
793
+ .header--hide-burger .mobile-logo-search-burger-wrapper {
794
+ grid-template-columns: 1fr 44px;
795
+ }
796
+
797
+ .header--hide-burger .mobile-menu-content-wrapper {
798
+ display: none;
799
+ }
753
800
  .mobile-nav-wrapper::before {
754
801
  @extend .mirsaic--dark !optional;
755
802
  background-size:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mirweb/mir-web-components",
3
3
  "private": false,
4
- "version": "2.10.0",
4
+ "version": "2.11.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"