@imaginario27/air-ui-ds 1.15.1 → 1.15.3
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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to this package are documented in this file.
|
|
|
5
5
|
Historical releases were reconstructed from git history (GitHub repository) and npm publish dates.
|
|
6
6
|
Future releases will include detailed entries generated with Changesets.
|
|
7
7
|
|
|
8
|
+
## 1.15.2 - 2026-07-02
|
|
9
|
+
|
|
10
|
+
Release type: patch.
|
|
11
|
+
Commits found in range: 1.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
1. close notifications popover on view-all and item click ([9c1c041](https://github.com/imaginario27/air-ui/commit/9c1c04193f63767785504892dc2e19c2efec07e2))
|
|
16
|
+
|
|
17
|
+
- Package: @imaginario27/air-ui-ds.
|
|
18
|
+
|
|
19
|
+
## 1.15.1 - 2026-07-01
|
|
20
|
+
|
|
21
|
+
Release type: patch.
|
|
22
|
+
Commits found in range: 1.
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
1. pass unit prop verbatim and add limit prop to NotificationsPopover ([3fe78ba](https://github.com/imaginario27/air-ui/commit/3fe78ba2f4b2d42a16205e08b9669bddc2eabdeb))
|
|
27
|
+
|
|
28
|
+
- Package: @imaginario27/air-ui-ds.
|
|
29
|
+
|
|
8
30
|
## 1.15.0 - 2026-06-30
|
|
9
31
|
|
|
10
32
|
Release type: minor.
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
props.disabled ? 'opacity-50 hover:cursor-not-allowed hover:bg-transparent' : 'hover:cursor-pointer'
|
|
16
16
|
]"
|
|
17
17
|
:disabled="props.disabled"
|
|
18
|
+
:aria-label="ariaLabel"
|
|
18
19
|
@click="emitClick"
|
|
19
20
|
>
|
|
20
21
|
<slot />
|
|
@@ -33,6 +34,10 @@ const props = defineProps({
|
|
|
33
34
|
type: Boolean as PropType<boolean>,
|
|
34
35
|
default: false,
|
|
35
36
|
},
|
|
37
|
+
ariaLabel: {
|
|
38
|
+
type: String as PropType<string>,
|
|
39
|
+
default: 'Navigation button',
|
|
40
|
+
},
|
|
36
41
|
})
|
|
37
42
|
|
|
38
43
|
// Emits
|
|
@@ -41,9 +41,11 @@
|
|
|
41
41
|
{{ title }}
|
|
42
42
|
</span>
|
|
43
43
|
|
|
44
|
-
<
|
|
44
|
+
<div v-if="$slots.description" class="max-w-[800px]">
|
|
45
|
+
<slot name="description" />
|
|
46
|
+
</div>
|
|
45
47
|
|
|
46
|
-
<p v-if="!$slots.description" class="text-sm text-text-default">
|
|
48
|
+
<p v-if="!$slots.description" class="text-sm text-text-default max-w-[800px]">
|
|
47
49
|
{{ description }}
|
|
48
50
|
</p>
|
|
49
51
|
</div>
|
|
@@ -53,8 +55,9 @@
|
|
|
53
55
|
<Icon
|
|
54
56
|
:name="timeAgoIcon"
|
|
55
57
|
:size="IconSize.XS"
|
|
58
|
+
iconClass="text-icon-neutral-subtle"
|
|
56
59
|
/>
|
|
57
|
-
<span class="text-xs text-text-neutral-subtle">
|
|
60
|
+
<span class="text-xs text-text-neutral-subtle whitespace-nowrap select-none">
|
|
58
61
|
{{ timeAgo }}
|
|
59
62
|
</span>
|
|
60
63
|
</div>
|
|
@@ -62,8 +65,9 @@
|
|
|
62
65
|
<Icon
|
|
63
66
|
:name="authorIcon"
|
|
64
67
|
:size="IconSize.XS"
|
|
68
|
+
iconClass="text-icon-neutral-subtle"
|
|
65
69
|
/>
|
|
66
|
-
<span class="text-xs text-text-neutral-subtle">
|
|
70
|
+
<span class="text-xs text-text-neutral-subtle whitespace-nowrap select-none">
|
|
67
71
|
{{ author }}
|
|
68
72
|
</span>
|
|
69
73
|
</div>
|
|
@@ -152,11 +156,12 @@ const props = defineProps({
|
|
|
152
156
|
},
|
|
153
157
|
})
|
|
154
158
|
|
|
155
|
-
const emit = defineEmits(['update:modelValue', 'remove'])
|
|
159
|
+
const emit = defineEmits(['update:modelValue', 'remove', 'itemClick'])
|
|
156
160
|
|
|
157
|
-
|
|
161
|
+
const onItemClick = () => {
|
|
158
162
|
if (!props.modelValue) {
|
|
159
163
|
emit('update:modelValue', true)
|
|
160
164
|
}
|
|
165
|
+
emit('itemClick')
|
|
161
166
|
}
|
|
162
167
|
</script>
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
:trigger
|
|
6
6
|
:popoverClass="['px-0 py-3', popoverClass]"
|
|
7
7
|
>
|
|
8
|
-
<template #content>
|
|
8
|
+
<template #content="{ onClose }">
|
|
9
9
|
<div
|
|
10
|
-
v-if="isLoading && !hasError"
|
|
10
|
+
v-if="isLoading && !hasError"
|
|
11
11
|
class="w-full flex justify-center py-3"
|
|
12
12
|
>
|
|
13
13
|
<Loading
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
:text="viewAllText"
|
|
53
53
|
:to="viewAllLink"
|
|
54
54
|
textClass="text-text-default text-sm! hover:text-text-primary-brand-hover font-normal"
|
|
55
|
+
@click="onViewAllClick($event, onClose)"
|
|
55
56
|
/>
|
|
56
57
|
</div>
|
|
57
58
|
|
|
@@ -92,6 +93,7 @@
|
|
|
92
93
|
:removeAriaLabel="listRemoveItemAriaLabel"
|
|
93
94
|
@update:model-value="onReadStatusChange(notification.id, $event)"
|
|
94
95
|
@remove="onRemoveNotification(notification.id)"
|
|
96
|
+
@itemClick="onClose"
|
|
95
97
|
/>
|
|
96
98
|
</template>
|
|
97
99
|
|
|
@@ -309,6 +311,11 @@ const filteredList = computed(() => {
|
|
|
309
311
|
})
|
|
310
312
|
|
|
311
313
|
// Handlers
|
|
314
|
+
const onViewAllClick = (event: MouseEvent, onClose: () => void) => {
|
|
315
|
+
if (!props.viewAllLink) event.preventDefault()
|
|
316
|
+
onClose()
|
|
317
|
+
}
|
|
318
|
+
|
|
312
319
|
const onRemoveNotification = (id: string) => {
|
|
313
320
|
internalList.value = internalList.value.filter(notification => notification.id !== id)
|
|
314
321
|
emit('remove', { id })
|
|
@@ -53,9 +53,10 @@
|
|
|
53
53
|
]"
|
|
54
54
|
>
|
|
55
55
|
<!-- Previous Button -->
|
|
56
|
-
<PaginationButton
|
|
56
|
+
<PaginationButton
|
|
57
57
|
:styleType
|
|
58
|
-
:disabled="modelValue === 1"
|
|
58
|
+
:disabled="modelValue === 1"
|
|
59
|
+
:ariaLabel="ariaLabelPrevious"
|
|
59
60
|
@click="goToPreviousPage"
|
|
60
61
|
>
|
|
61
62
|
<Icon
|
|
@@ -69,6 +70,8 @@
|
|
|
69
70
|
v-for="page in visiblePages"
|
|
70
71
|
:key="page"
|
|
71
72
|
:styleType
|
|
73
|
+
:ariaLabel="pageAriaLabel(page)"
|
|
74
|
+
:aria-current="page === modelValue ? 'page' : undefined"
|
|
72
75
|
:class="[
|
|
73
76
|
styleType === ButtonPaginationStyle.BUTTON && 'border border-border-default',
|
|
74
77
|
page === modelValue ? [
|
|
@@ -111,9 +114,10 @@
|
|
|
111
114
|
</PaginationButton>
|
|
112
115
|
|
|
113
116
|
<!-- Next Button -->
|
|
114
|
-
<PaginationButton
|
|
117
|
+
<PaginationButton
|
|
115
118
|
:styleType
|
|
116
119
|
:disabled="modelValue === totalPages"
|
|
120
|
+
:ariaLabel="ariaLabelNext"
|
|
117
121
|
@click="goToNextPage"
|
|
118
122
|
>
|
|
119
123
|
<Icon
|
|
@@ -168,6 +172,18 @@ const props = defineProps({
|
|
|
168
172
|
type: Number as PropType<number>,
|
|
169
173
|
default: 1024,
|
|
170
174
|
},
|
|
175
|
+
ariaLabelPrevious: {
|
|
176
|
+
type: String as PropType<string>,
|
|
177
|
+
default: 'Previous page',
|
|
178
|
+
},
|
|
179
|
+
ariaLabelNext: {
|
|
180
|
+
type: String as PropType<string>,
|
|
181
|
+
default: 'Next page',
|
|
182
|
+
},
|
|
183
|
+
ariaLabelPage: {
|
|
184
|
+
type: String as PropType<string>,
|
|
185
|
+
default: 'Page {page}',
|
|
186
|
+
},
|
|
171
187
|
})
|
|
172
188
|
|
|
173
189
|
// Composables
|
|
@@ -262,6 +278,11 @@ const handlePageClick = (page: string | number) => {
|
|
|
262
278
|
emit("update:modelValue", page)
|
|
263
279
|
}
|
|
264
280
|
|
|
281
|
+
const pageAriaLabel = (page: string | number) => {
|
|
282
|
+
if (page === '...') return undefined
|
|
283
|
+
return props.ariaLabelPage.replace('{page}', page.toString())
|
|
284
|
+
}
|
|
285
|
+
|
|
265
286
|
// Watchers
|
|
266
287
|
watch(itemsPerPage, (newVal) => {
|
|
267
288
|
emit('update:modelValue', 1) // Reset to page 1 when rows per page changes
|