@apptegy/nuxt-navigation 0.1.125 → 0.2.0-alpha.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.
- package/dist/module.json +1 -1
- package/dist/runtime/components/Nav/Avatar.vue +64 -8
- package/dist/runtime/components/Nav/Avatar.vue.d.ts +4 -0
- package/dist/runtime/components/Nav/Header.vue +234 -153
- package/dist/runtime/components/Nav/Header.vue.d.ts +1 -17
- package/dist/runtime/components/Nav/HelpArticles.vue +107 -16
- package/dist/runtime/components/Nav/NotificationItem.vue +81 -150
- package/dist/runtime/components/Nav/NotificationItem.vue.d.ts +2 -2
- package/dist/runtime/components/Nav/NotificationsPanel.vue.d.ts +9 -9
- package/dist/runtime/components/Nav/OrgSelect.vue +152 -29
- package/dist/runtime/components/Nav/Sidebar.vue +386 -109
- package/dist/runtime/components/Nav/Sidebar.vue.d.ts +5 -5
- package/dist/runtime/components/Nav/SidebarItem.vue +86 -24
- package/dist/runtime/components/Nav/SidebarSection.vue +131 -20
- package/dist/runtime/components/Nav/SidebarSection.vue.d.ts +4 -2
- package/dist/runtime/components/Nav/UserDropdown.vue +145 -46
- package/dist/runtime/types/index.d.ts +1 -1
- package/dist/runtime/types/notifications.d.ts +1 -19
- package/dist/runtime/utils/constants.d.ts +49 -0
- package/dist/runtime/utils/constants.js +53 -0
- package/dist/runtime/utils/notification-api.d.ts +0 -10
- package/dist/runtime/utils/notification-api.js +1 -42
- package/locale/en.json +0 -1
- package/package.json +16 -15
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { useDropdown, useNuxtApp, useAppConfig, computed, ref, watch, onBeforeUpdate } from "#imports";
|
|
3
3
|
import { vOnClickOutside } from "@vueuse/components";
|
|
4
|
-
const { $t } = useNuxtApp();
|
|
4
|
+
const { $t, $ld } = useNuxtApp();
|
|
5
5
|
const appConfig = useAppConfig();
|
|
6
6
|
const zIndex = computed(() => appConfig?.navigation?.zIndex || 100);
|
|
7
7
|
const emit = defineEmits(["update:model-value"]);
|
|
@@ -13,12 +13,18 @@ const props = defineProps({
|
|
|
13
13
|
modelValue: { type: Number, required: true }
|
|
14
14
|
});
|
|
15
15
|
const localSelectedOrgId = ref(props.modelValue);
|
|
16
|
-
watch(
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
watch(
|
|
17
|
+
() => props.modelValue,
|
|
18
|
+
(newValue) => {
|
|
19
|
+
localSelectedOrgId.value = newValue;
|
|
20
|
+
}
|
|
21
|
+
);
|
|
19
22
|
const selectedOrg = computed(() => {
|
|
20
23
|
return props.orgs.find(({ id }) => id == localSelectedOrgId.value);
|
|
21
24
|
});
|
|
25
|
+
const isBeaconNavEnabled = computed(() => {
|
|
26
|
+
return Boolean($ld?.flags?.beaconNavEnabled);
|
|
27
|
+
});
|
|
22
28
|
const {
|
|
23
29
|
active,
|
|
24
30
|
searchQuery,
|
|
@@ -77,8 +83,14 @@ function handleSelectedOrg($event, orgId) {
|
|
|
77
83
|
</script>
|
|
78
84
|
|
|
79
85
|
<template>
|
|
80
|
-
<div
|
|
81
|
-
|
|
86
|
+
<div
|
|
87
|
+
class="org-selection"
|
|
88
|
+
:class="[isBeaconNavEnabled ? 'beacon' : 'classic']"
|
|
89
|
+
>
|
|
90
|
+
<label
|
|
91
|
+
id="org-dropdown-label"
|
|
92
|
+
class="sr-only"
|
|
93
|
+
>
|
|
82
94
|
{{ $t("navigation.orgDropdown") }}
|
|
83
95
|
</label>
|
|
84
96
|
<div
|
|
@@ -89,7 +101,7 @@ function handleSelectedOrg($event, orgId) {
|
|
|
89
101
|
aria-haspopup="listbox"
|
|
90
102
|
role="combobox"
|
|
91
103
|
class="dropdown-trigger"
|
|
92
|
-
>
|
|
104
|
+
>
|
|
93
105
|
<input
|
|
94
106
|
ref="inputRef"
|
|
95
107
|
type="text"
|
|
@@ -99,17 +111,29 @@ function handleSelectedOrg($event, orgId) {
|
|
|
99
111
|
@keydown="keydownActionsOnTrigger"
|
|
100
112
|
@click.prevent="toggleDropdown"
|
|
101
113
|
@input="handleDropdownSearch"
|
|
114
|
+
/>
|
|
115
|
+
<span
|
|
116
|
+
v-if="selectedOrg?.intranet"
|
|
117
|
+
class="badge selected"
|
|
102
118
|
>
|
|
103
|
-
<span v-if="selectedOrg?.intranet" class="badge selected">
|
|
104
119
|
<a-icon icon="16:lock-locked" />
|
|
105
120
|
{{ $t("navigation.orgBadge") }}
|
|
106
121
|
</span>
|
|
122
|
+
<Icon
|
|
123
|
+
v-if="isBeaconNavEnabled"
|
|
124
|
+
class="icon"
|
|
125
|
+
:name="active ? 'lucide:chevron-up' : 'lucide:chevron-down'"
|
|
126
|
+
@keydown="keydownActionsOnTrigger"
|
|
127
|
+
@click.prevent="toggleDropdown"
|
|
128
|
+
@input="handleDropdownSearch"
|
|
129
|
+
/>
|
|
107
130
|
<a-icon
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
131
|
+
v-else
|
|
132
|
+
:icon="active ? '16:carret-up' : '16:carret-down'"
|
|
133
|
+
@keydown="keydownActionsOnTrigger"
|
|
134
|
+
@click.prevent="toggleDropdown"
|
|
135
|
+
@input="handleDropdownSearch"
|
|
136
|
+
/>
|
|
113
137
|
</div>
|
|
114
138
|
<div
|
|
115
139
|
v-show="active"
|
|
@@ -135,7 +159,10 @@ function handleSelectedOrg($event, orgId) {
|
|
|
135
159
|
>
|
|
136
160
|
<span :class="{ pinned: option.pinned, 'item-flex': true }"
|
|
137
161
|
>{{ option.name }}
|
|
138
|
-
<span
|
|
162
|
+
<span
|
|
163
|
+
v-if="option.intranet"
|
|
164
|
+
class="badge selected"
|
|
165
|
+
>
|
|
139
166
|
<a-icon icon="16:lock-locked" />
|
|
140
167
|
{{ $t("navigation.orgBadge") }}
|
|
141
168
|
</span>
|
|
@@ -155,13 +182,13 @@ function handleSelectedOrg($event, orgId) {
|
|
|
155
182
|
z-index: v-bind(zIndex);
|
|
156
183
|
}
|
|
157
184
|
|
|
158
|
-
.org-selection {
|
|
185
|
+
.org-selection.classic {
|
|
159
186
|
border-radius: 4px 4px 0 0;
|
|
160
187
|
}
|
|
161
|
-
.org-selection:focus-within {
|
|
188
|
+
.org-selection.classic:focus-within {
|
|
162
189
|
outline: 2px var(--purple) solid;
|
|
163
190
|
}
|
|
164
|
-
.org-selection .dropdown-trigger {
|
|
191
|
+
.org-selection.classic .dropdown-trigger {
|
|
165
192
|
width: 300px;
|
|
166
193
|
padding: 0 8px;
|
|
167
194
|
display: flex;
|
|
@@ -173,7 +200,7 @@ function handleSelectedOrg($event, orgId) {
|
|
|
173
200
|
border-bottom: 1px solid var(--dscl-forms-underline, var(--grey-50));
|
|
174
201
|
background: var(--dscl-forms-bg, var(--grey-10));
|
|
175
202
|
}
|
|
176
|
-
.org-selection .dropdown-trigger .org-title {
|
|
203
|
+
.org-selection.classic .dropdown-trigger .org-title {
|
|
177
204
|
line-height: 16px;
|
|
178
205
|
width: 100%;
|
|
179
206
|
padding: 12px;
|
|
@@ -187,14 +214,110 @@ function handleSelectedOrg($event, orgId) {
|
|
|
187
214
|
white-space: nowrap;
|
|
188
215
|
cursor: pointer;
|
|
189
216
|
}
|
|
190
|
-
.org-selection .dropdown-trigger .org-title:focus-visible {
|
|
217
|
+
.org-selection.classic .dropdown-trigger .org-title:focus-visible {
|
|
218
|
+
outline: none;
|
|
219
|
+
}
|
|
220
|
+
.org-selection.classic .dropdown {
|
|
221
|
+
border-radius: 0 0 4px 4px;
|
|
222
|
+
box-shadow: 0px 6px 20px 0px rgba(0, 0, 0, 0.06);
|
|
223
|
+
}
|
|
224
|
+
.org-selection.classic .dropdown .org-option {
|
|
225
|
+
padding: 12px 12px 12px 36px;
|
|
226
|
+
min-height: 40px;
|
|
227
|
+
line-height: 16px;
|
|
228
|
+
text-decoration: none;
|
|
229
|
+
text-transform: none;
|
|
230
|
+
position: relative;
|
|
231
|
+
cursor: pointer;
|
|
232
|
+
}
|
|
233
|
+
.org-selection.classic .dropdown .org-option.selected {
|
|
234
|
+
background-image: url("../../assets/checkmark.svg");
|
|
235
|
+
background-repeat: no-repeat;
|
|
236
|
+
background-position: center left 15px;
|
|
237
|
+
color: var(--purple);
|
|
238
|
+
}
|
|
239
|
+
.org-selection.classic .dropdown .org-option.highlighted {
|
|
240
|
+
background-color: #f8f6fc;
|
|
241
|
+
}
|
|
242
|
+
.org-selection.classic .dropdown .org-option:focus-visible, .org-selection.classic .dropdown .org-option:hover {
|
|
243
|
+
background-color: #f8f6fc;
|
|
244
|
+
}
|
|
245
|
+
.org-selection.classic .custom-search {
|
|
246
|
+
margin: 8px 16px;
|
|
247
|
+
}
|
|
248
|
+
.org-selection.classic .item-flex {
|
|
249
|
+
display: flex;
|
|
250
|
+
gap: 8px;
|
|
251
|
+
align-items: center;
|
|
252
|
+
width: 100%;
|
|
253
|
+
justify-content: space-between;
|
|
254
|
+
}
|
|
255
|
+
.org-selection.classic .badge {
|
|
256
|
+
display: inline-flex;
|
|
257
|
+
align-items: center;
|
|
258
|
+
background-color: var(--purple-50);
|
|
259
|
+
padding: 2px 4px;
|
|
260
|
+
color: white;
|
|
261
|
+
border-radius: 2px;
|
|
262
|
+
text-transform: uppercase;
|
|
263
|
+
}
|
|
264
|
+
.org-selection.classic .badge svg {
|
|
265
|
+
margin-right: 4px;
|
|
266
|
+
}
|
|
267
|
+
.org-selection.classic .badge.selected {
|
|
268
|
+
background-color: var(--grey-50);
|
|
269
|
+
}
|
|
270
|
+
.org-selection.beacon {
|
|
271
|
+
border-radius: 8px;
|
|
272
|
+
font-weight: 400;
|
|
273
|
+
font-size: 14px;
|
|
274
|
+
line-height: 140%;
|
|
275
|
+
letter-spacing: 0.5px;
|
|
276
|
+
color: #757575;
|
|
277
|
+
}
|
|
278
|
+
.org-selection.beacon:focus-within {
|
|
279
|
+
outline: 2px var(--purple) solid;
|
|
280
|
+
}
|
|
281
|
+
.org-selection.beacon .dropdown-trigger {
|
|
282
|
+
width: 300px;
|
|
283
|
+
padding: 0 8px;
|
|
284
|
+
display: flex;
|
|
285
|
+
align-items: center;
|
|
286
|
+
gap: 8px;
|
|
287
|
+
justify-content: space-between;
|
|
288
|
+
border-radius: 8px;
|
|
289
|
+
border: 1px solid #adadad;
|
|
290
|
+
background: var(--dscl-forms-bg, #fff);
|
|
291
|
+
}
|
|
292
|
+
.org-selection.beacon .dropdown-trigger .org-title {
|
|
293
|
+
line-height: inherit;
|
|
294
|
+
font-weight: inherit;
|
|
295
|
+
font-size: inherit;
|
|
296
|
+
letter-spacing: inherit;
|
|
297
|
+
width: 100%;
|
|
298
|
+
touch-action: manipulation;
|
|
299
|
+
color: inherit;
|
|
300
|
+
height: 40px;
|
|
301
|
+
border: 0;
|
|
302
|
+
padding: 8px;
|
|
303
|
+
background: var(--dscl-forms-bg, #fff);
|
|
304
|
+
white-space: nowrap;
|
|
305
|
+
cursor: pointer;
|
|
306
|
+
}
|
|
307
|
+
.org-selection.beacon .dropdown-trigger .org-title:focus-visible {
|
|
191
308
|
outline: none;
|
|
192
309
|
}
|
|
193
|
-
.org-selection .dropdown {
|
|
310
|
+
.org-selection.beacon .dropdown-trigger .icon {
|
|
311
|
+
min-width: 16px;
|
|
312
|
+
min-height: 16px;
|
|
313
|
+
max-width: 16px;
|
|
314
|
+
max-height: 16px;
|
|
315
|
+
}
|
|
316
|
+
.org-selection.beacon .dropdown {
|
|
194
317
|
border-radius: 0 0 4px 4px;
|
|
195
318
|
box-shadow: 0px 6px 20px 0px rgba(0, 0, 0, 0.06);
|
|
196
319
|
}
|
|
197
|
-
.org-selection .dropdown .org-option {
|
|
320
|
+
.org-selection.beacon .dropdown .org-option {
|
|
198
321
|
padding: 12px 12px 12px 36px;
|
|
199
322
|
min-height: 40px;
|
|
200
323
|
line-height: 16px;
|
|
@@ -203,29 +326,29 @@ function handleSelectedOrg($event, orgId) {
|
|
|
203
326
|
position: relative;
|
|
204
327
|
cursor: pointer;
|
|
205
328
|
}
|
|
206
|
-
.org-selection .dropdown .org-option.selected {
|
|
329
|
+
.org-selection.beacon .dropdown .org-option.selected {
|
|
207
330
|
background-image: url("../../assets/checkmark.svg");
|
|
208
331
|
background-repeat: no-repeat;
|
|
209
332
|
background-position: center left 15px;
|
|
210
333
|
color: var(--purple);
|
|
211
334
|
}
|
|
212
|
-
.org-selection .dropdown .org-option.highlighted {
|
|
335
|
+
.org-selection.beacon .dropdown .org-option.highlighted {
|
|
213
336
|
background-color: #f8f6fc;
|
|
214
337
|
}
|
|
215
|
-
.org-selection .dropdown .org-option:focus-visible, .org-selection .dropdown .org-option:hover {
|
|
338
|
+
.org-selection.beacon .dropdown .org-option:focus-visible, .org-selection.beacon .dropdown .org-option:hover {
|
|
216
339
|
background-color: #f8f6fc;
|
|
217
340
|
}
|
|
218
|
-
.org-selection .custom-search {
|
|
341
|
+
.org-selection.beacon .custom-search {
|
|
219
342
|
margin: 8px 16px;
|
|
220
343
|
}
|
|
221
|
-
.org-selection .item-flex {
|
|
344
|
+
.org-selection.beacon .item-flex {
|
|
222
345
|
display: flex;
|
|
223
346
|
gap: 8px;
|
|
224
347
|
align-items: center;
|
|
225
348
|
width: 100%;
|
|
226
349
|
justify-content: space-between;
|
|
227
350
|
}
|
|
228
|
-
.org-selection .badge {
|
|
351
|
+
.org-selection.beacon .badge {
|
|
229
352
|
display: inline-flex;
|
|
230
353
|
align-items: center;
|
|
231
354
|
background-color: var(--purple-50);
|
|
@@ -234,10 +357,10 @@ function handleSelectedOrg($event, orgId) {
|
|
|
234
357
|
border-radius: 2px;
|
|
235
358
|
text-transform: uppercase;
|
|
236
359
|
}
|
|
237
|
-
.org-selection .badge svg {
|
|
360
|
+
.org-selection.beacon .badge svg {
|
|
238
361
|
margin-right: 4px;
|
|
239
362
|
}
|
|
240
|
-
.org-selection .badge.selected {
|
|
363
|
+
.org-selection.beacon .badge.selected {
|
|
241
364
|
background-color: var(--grey-50);
|
|
242
365
|
}
|
|
243
366
|
</style>
|