Skip to content

Commit 79014e1

Browse files
committed
šŸ› Prevent Popover to take up visible space when toggled off, and prevent selection of disabled items for List components
1 parent 5ec3df6 commit 79014e1

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

ā€Žsrc/components/List/List.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const wrapperClasses = [
6161
tabindex={item.href || item.disabled ? undefined : 0}
6262
data-value={item.value}
6363
data-name={item.name}
64-
data-disabled={item.disabled}
64+
data-disabled={item.disabled ? 'true' : undefined}
6565
data-selected={item.selected}
6666
>
6767
<ConditionalWrapper condition={!!item.href}>
@@ -99,7 +99,7 @@ const wrapperClasses = [
9999
const handleClick = (list: Element, items: Element[], event: Event) => {
100100
const target = event.target as HTMLElement
101101

102-
if (target.dataset.value) {
102+
if (target.dataset.value && !target.dataset.disabled) {
103103
dispatch('listOnSelect', {
104104
value: target.dataset.value,
105105
name: target.dataset.name,

ā€Žsrc/components/Popover/popover.module.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@include typography(primary);
1010
@include border-radius(md);
1111
@include size(w300px);
12+
@include position('t-100%');
1213

1314
transform: translateY(-5px);
1415
pointer-events: none;

ā€Žsrc/utils/popover.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,30 @@ export type PopoverPosition = 'top'
1414
| 'bottom-start'
1515
| 'bottom-end'
1616

17+
type Callback = {
18+
trigger: HTMLElement
19+
popover: HTMLElement
20+
position: PopoverPosition | undefined
21+
}
22+
1723
type Popover = {
1824
trigger: string
1925
popover: string
2026
position?: PopoverPosition
2127
offset?: number
2228
closeOnBlur?: boolean
29+
onOpen?: (args: Callback) => unknown
30+
onClose?: (args: Callback) => unknown
2331
}
2432

2533
export const popover = ({
2634
trigger,
2735
popover,
2836
position,
2937
offset = 10,
30-
closeOnBlur = true
38+
closeOnBlur = true,
39+
onOpen,
40+
onClose
3141
}: Popover) => {
3242
const triggerDOM = document.querySelector(trigger) as HTMLElement
3343
const popoverDOM = document.querySelector(popover) as HTMLElement
@@ -143,6 +153,12 @@ export const popover = ({
143153
popoverDOM.removeAttribute('data-show')
144154
}
145155
}, 300)
156+
157+
onOpen?.({
158+
trigger: triggerDOM,
159+
popover: popoverDOM,
160+
position
161+
})
146162
}
147163

148164
const handleClose = (event: MouseEvent) => {
@@ -153,6 +169,12 @@ export const popover = ({
153169

154170
if (hidePopover) {
155171
popoverDOM.dataset.show = ''
172+
173+
onClose?.({
174+
trigger: triggerDOM,
175+
popover: popoverDOM,
176+
position
177+
})
156178
}
157179

158180
setTimeout(() => {

0 commit comments

Comments
Ā (0)