feat: Android APP V1 - Experimental Alpha
This commit is contained in:
@@ -36,23 +36,34 @@
|
||||
}
|
||||
|
||||
@if (!compact() || modalOpen()) {
|
||||
<div class="absolute bottom-full right-0 z-20 mb-2 w-72 rounded-lg border border-border bg-card p-3 shadow-xl">
|
||||
<div class="mb-2 flex items-center justify-between gap-2">
|
||||
<p class="text-sm font-semibold text-foreground">Emoji</p>
|
||||
@if (compact()) {
|
||||
<button
|
||||
type="button"
|
||||
class="grid h-7 w-7 place-items-center rounded hover:bg-secondary"
|
||||
aria-label="Close emoji selector"
|
||||
(click)="closeModal()"
|
||||
>
|
||||
<ng-icon
|
||||
name="lucideX"
|
||||
class="h-4 w-4 text-muted-foreground"
|
||||
/>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
<div
|
||||
class="rounded-lg border border-border bg-card p-3 shadow-xl"
|
||||
[class.absolute]="!inline()"
|
||||
[class.bottom-full]="!inline()"
|
||||
[class.right-0]="!inline()"
|
||||
[class.z-20]="!inline()"
|
||||
[class.mb-2]="!inline()"
|
||||
[class.w-72]="!inline()"
|
||||
[class.w-full]="inline()"
|
||||
>
|
||||
@if (!inline()) {
|
||||
<div class="mb-2 flex items-center justify-between gap-2">
|
||||
<p class="text-sm font-semibold text-foreground">Emoji</p>
|
||||
@if (compact()) {
|
||||
<button
|
||||
type="button"
|
||||
class="grid h-7 w-7 place-items-center rounded hover:bg-secondary"
|
||||
aria-label="Close emoji selector"
|
||||
(click)="closeModal()"
|
||||
>
|
||||
<ng-icon
|
||||
name="lucideX"
|
||||
class="h-4 w-4 text-muted-foreground"
|
||||
/>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<label class="relative mb-3 block">
|
||||
<ng-icon
|
||||
|
||||
@@ -148,4 +148,10 @@ describe('CustomEmojiPickerComponent', () => {
|
||||
expect(component.searchQuery()).toBe('');
|
||||
});
|
||||
|
||||
it('defaults inline mode to false for floating popover embedding', () => {
|
||||
const component = createComponent(true);
|
||||
|
||||
expect(component.inline()).toBe(false);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -43,6 +43,8 @@ export class CustomEmojiPickerComponent {
|
||||
|
||||
readonly currentUserId = input<string | null>(null);
|
||||
readonly compact = input(true);
|
||||
/** Render the picker panel in normal document flow for bottom-sheet embedding. */
|
||||
readonly inline = input(false);
|
||||
|
||||
readonly emojiSelected = output<string>();
|
||||
readonly dismissed = output();
|
||||
|
||||
Reference in New Issue
Block a user