An easy, declarative way to render a floating box with arbitrary content anchored to an element.
This library | Angular |
---|---|
3.x.x | 19.x.x |
2.x.x | 19.x.x |
1.x.x | 16 - 18 |
npm
npm i -S @lazycuh/angular-anchored-floating-box
pnpm
pnpm i -S @lazycuh/angular-anchored-floating-box
yarn
yarn add @lazycuh/angular-anchored-floating-box
These are the symbols that are available from this package
Name | Type | Description |
---|---|---|
lcTriggerFloatingBoxFor |
AnchoredFloatingBox |
Required input that accepts a template reference variable to a AnchoredFloatingBox component that specifies the content of the floating box, the floating box is anchored to the HTMLElement to which this input is applied. |
Name | Type | Description |
---|---|---|
class |
string |
Optional CSS class attribute to add. |
theme |
light | dark |
Optional theme. Default is light . |
Name | Type | Description |
---|---|---|
closed |
() => void |
Called after the floating is closed. |
beforeOpened |
() => void |
Called before the floating is opened. |
opened |
() => void |
Called after the floating is opened. |
AnchoredFloatingBox.setDefaultTheme(theme)
: Set the default theme that will be used for all future floating boxes. Use this method if you want to set the theme once instead of each time you render the floating box.
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'lc-test',
// Import the directive and the component to use it
imports: [TriggerFloatingBoxForDirective, AnchoredFloatingBox],
template: `
<button
id="click-me"
[lcTriggerFloatingBoxFor]="floatingBoxTemplateRefVar"
type="button">
Click me
</button>
<lc-anchored-floating-box
#floatingBoxTemplateRefVar
class="test-example"
theme="dark">
Hello Angular!!!</span>
</ng-template>
`
})
class MyComponent {}
It will also reposition itself if it overflows the top or bottom edge of the viewport like so.
Below is a screenshot of a personal app of mine at https://memecomposer.com that uses this component. Clicking on the brush icon button popped open an anchored floating box, then clicking "Text appearance" button inside of it opened another anchored floating box that is independent of the previous one and any others.