@egose/shadcn-theme-ng-tw 0.0.28 → 0.2.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/README.md +130 -13
- package/accordion/README.md +376 -34
- package/accordion/fesm2022/accordion.mjs +20 -20
- package/alert/README.md +343 -34
- package/alert/fesm2022/alert.mjs +18 -18
- package/alert-dialog/README.md +471 -5
- package/alert-dialog/fesm2022/alert-dialog.mjs +48 -48
- package/alert-dialog/types/alert-dialog.d.ts +1 -1
- package/aspect-ratio/README.md +272 -5
- package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
- package/autocomplete/README.md +473 -34
- package/autocomplete/fesm2022/autocomplete.mjs +54 -54
- package/autocomplete/types/autocomplete.d.ts +1 -1
- package/avatar/README.md +357 -5
- package/avatar/fesm2022/avatar.mjs +32 -32
- package/badge/README.md +289 -34
- package/badge/fesm2022/badge.mjs +4 -4
- package/basic-alert/README.md +324 -34
- package/basic-alert/fesm2022/basic-alert.mjs +4 -4
- package/basic-alert/types/basic-alert.d.ts +1 -1
- package/breadcrumb/README.md +406 -5
- package/breadcrumb/fesm2022/breadcrumb.mjs +34 -34
- package/button/README.md +453 -34
- package/button/fesm2022/button.mjs +96 -118
- package/button/types/button.d.ts +7 -10
- package/button-group/README.md +318 -5
- package/button-group/fesm2022/button-group.mjs +20 -20
- package/calendar/README.md +328 -34
- package/calendar/fesm2022/calendar.mjs +154 -154
- package/card/README.md +331 -5
- package/card/fesm2022/card.mjs +33 -33
- package/carousel/README.md +333 -5
- package/carousel/fesm2022/carousel.mjs +47 -44
- package/carousel/types/carousel.d.ts +1 -1
- package/checkbox/README.md +291 -34
- package/checkbox/fesm2022/checkbox.mjs +22 -20
- package/checkbox/types/checkbox.d.ts +5 -4
- package/collapsible/README.md +332 -5
- package/collapsible/fesm2022/collapsible.mjs +15 -15
- package/combobox/README.md +507 -5
- package/combobox/fesm2022/combobox.mjs +95 -92
- package/combobox/types/combobox.d.ts +1 -1
- package/command/README.md +435 -5
- package/command/fesm2022/command.mjs +56 -56
- package/confirmation-dialog/README.md +272 -34
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +13 -12
- package/confirmation-dialog/types/confirmation-dialog.d.ts +9 -5
- package/context-menu/README.md +366 -5
- package/context-menu/fesm2022/context-menu.mjs +9 -9
- package/date-picker/README.md +436 -34
- package/date-picker/fesm2022/date-picker.mjs +79 -68
- package/date-picker/types/date-picker.d.ts +8 -4
- package/dialog/README.md +419 -34
- package/dialog/fesm2022/dialog.mjs +48 -48
- package/drawer/README.md +395 -5
- package/drawer/fesm2022/drawer.mjs +45 -45
- package/dropdown-menu/README.md +417 -5
- package/dropdown-menu/fesm2022/dropdown-menu.mjs +85 -73
- package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
- package/empty/README.md +329 -5
- package/empty/fesm2022/empty.mjs +31 -31
- package/field/README.md +385 -5
- package/field/fesm2022/field.mjs +59 -59
- package/field/types/field.d.ts +1 -1
- package/form-checkbox/README.md +283 -34
- package/form-checkbox/fesm2022/form-checkbox.mjs +37 -19
- package/form-checkbox/types/form-checkbox.d.ts +7 -1
- package/form-date-picker/README.md +293 -34
- package/form-date-picker/fesm2022/form-date-picker.mjs +59 -24
- package/form-date-picker/types/form-date-picker.d.ts +7 -1
- package/form-field/README.md +327 -34
- package/form-field/fesm2022/form-field.mjs +30 -16
- package/form-field/types/form-field.d.ts +28 -20
- package/form-field-simple/README.md +311 -34
- package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
- package/form-searchable-multiselect/README.md +332 -34
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +41 -21
- package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +8 -2
- package/form-select/README.md +321 -34
- package/form-select/fesm2022/form-select.mjs +62 -29
- package/form-select/types/form-select.d.ts +7 -1
- package/form-text-input/README.md +342 -34
- package/form-text-input/fesm2022/form-text-input.mjs +43 -55
- package/form-text-input/types/form-text-input.d.ts +9 -12
- package/form-textarea/README.md +318 -34
- package/form-textarea/fesm2022/form-textarea.mjs +42 -23
- package/form-textarea/types/form-textarea.d.ts +8 -1
- package/hover-card/README.md +256 -5
- package/hover-card/fesm2022/hover-card.mjs +19 -19
- package/icon/README.md +210 -34
- package/icon/fesm2022/icon.mjs +8 -8
- package/input/README.md +240 -34
- package/input/fesm2022/input.mjs +17 -12
- package/input/types/input.d.ts +2 -1
- package/input-group/README.md +335 -5
- package/input-group/fesm2022/input-group.mjs +37 -37
- package/input-group/types/input-group.d.ts +3 -3
- package/input-otp/README.md +375 -5
- package/input-otp/fesm2022/input-otp.mjs +27 -27
- package/item/README.md +385 -5
- package/item/fesm2022/item.mjs +54 -54
- package/kbd/README.md +291 -5
- package/kbd/fesm2022/kbd.mjs +13 -13
- package/label/README.md +243 -34
- package/label/fesm2022/label.mjs +9 -9
- package/label/types/label.d.ts +1 -1
- package/layout-simple/README.md +174 -44
- package/layout-simple/fesm2022/layout-simple.mjs +917 -398
- package/layout-simple/types/layout-simple.d.ts +180 -129
- package/menu/README.md +418 -0
- package/menu/fesm2022/menu.mjs +461 -0
- package/menu/package.json +24 -0
- package/menu/types/menu.d.ts +137 -0
- package/menubar/README.md +343 -5
- package/menubar/fesm2022/menubar.mjs +13 -13
- package/native-select/README.md +323 -5
- package/native-select/fesm2022/native-select.mjs +19 -19
- package/navigation-menu/README.md +369 -5
- package/navigation-menu/fesm2022/navigation-menu.mjs +37 -37
- package/package.json +183 -154
- package/pagination/README.md +388 -5
- package/pagination/fesm2022/pagination.mjs +63 -63
- package/popover/README.md +302 -34
- package/popover/fesm2022/popover.mjs +30 -30
- package/progress/README.md +311 -5
- package/progress/fesm2022/progress.mjs +13 -13
- package/radio-group/README.md +335 -34
- package/radio-group/fesm2022/radio-group.mjs +26 -19
- package/resizable/README.md +269 -5
- package/resizable/fesm2022/resizable.mjs +19 -19
- package/scroll-area/README.md +233 -5
- package/scroll-area/fesm2022/scroll-area.mjs +9 -9
- package/searchable-multiselect/README.md +294 -34
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +63 -16
- package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
- package/select/README.md +408 -34
- package/select/fesm2022/select.mjs +80 -72
- package/select/types/select.d.ts +3 -1
- package/separator/README.md +193 -34
- package/separator/fesm2022/separator.mjs +9 -9
- package/separator/types/separator.d.ts +1 -1
- package/sheet/README.md +282 -34
- package/sheet/fesm2022/sheet.mjs +30 -30
- package/sidebar/README.md +457 -5
- package/sidebar/fesm2022/sidebar.mjs +136 -134
- package/sidebar/types/sidebar.d.ts +3 -3
- package/skeleton/README.md +217 -5
- package/skeleton/fesm2022/skeleton.mjs +9 -9
- package/slider/README.md +273 -5
- package/slider/fesm2022/slider.mjs +29 -25
- package/sonner/README.md +317 -34
- package/sonner/fesm2022/sonner.mjs +9 -9
- package/spinner/README.md +255 -34
- package/spinner/fesm2022/spinner.mjs +8 -8
- package/switch/README.md +281 -34
- package/switch/fesm2022/switch.mjs +12 -14
- package/table/README.md +423 -5
- package/table/fesm2022/table.mjs +41 -41
- package/tabs/README.md +382 -34
- package/tabs/fesm2022/tabs.mjs +48 -38
- package/textarea/README.md +282 -5
- package/textarea/fesm2022/textarea.mjs +9 -9
- package/toggle/README.md +270 -5
- package/toggle/fesm2022/toggle.mjs +14 -14
- package/toggle-group/README.md +340 -5
- package/toggle-group/fesm2022/toggle-group.mjs +13 -13
- package/toggle-group/types/toggle-group.d.ts +13 -7
- package/tooltip/README.md +240 -34
- package/tooltip/fesm2022/tooltip.mjs +14 -14
- package/typography/README.md +271 -5
- package/typography/fesm2022/typography.mjs +53 -53
- package/typography/types/typography.d.ts +12 -12
- package/utils/README.md +274 -34
- package/utils/fesm2022/utils.mjs +68 -44
- package/accordion/fesm2022/accordion.mjs.map +0 -1
- package/alert/fesm2022/alert.mjs.map +0 -1
- package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
- package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
- package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
- package/avatar/fesm2022/avatar.mjs.map +0 -1
- package/badge/fesm2022/badge.mjs.map +0 -1
- package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
- package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
- package/button/fesm2022/button.mjs.map +0 -1
- package/button-group/fesm2022/button-group.mjs.map +0 -1
- package/calendar/fesm2022/calendar.mjs.map +0 -1
- package/card/fesm2022/card.mjs.map +0 -1
- package/carousel/fesm2022/carousel.mjs.map +0 -1
- package/checkbox/fesm2022/checkbox.mjs.map +0 -1
- package/collapsible/fesm2022/collapsible.mjs.map +0 -1
- package/combobox/fesm2022/combobox.mjs.map +0 -1
- package/command/fesm2022/command.mjs.map +0 -1
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
- package/context-menu/fesm2022/context-menu.mjs.map +0 -1
- package/date-picker/fesm2022/date-picker.mjs.map +0 -1
- package/dialog/fesm2022/dialog.mjs.map +0 -1
- package/drawer/fesm2022/drawer.mjs.map +0 -1
- package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
- package/empty/fesm2022/empty.mjs.map +0 -1
- package/field/fesm2022/field.mjs.map +0 -1
- package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
- package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
- package/form-field/fesm2022/form-field.mjs.map +0 -1
- package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
- package/form-select/fesm2022/form-select.mjs.map +0 -1
- package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
- package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
- package/hover-card/fesm2022/hover-card.mjs.map +0 -1
- package/icon/fesm2022/icon.mjs.map +0 -1
- package/input/fesm2022/input.mjs.map +0 -1
- package/input-group/fesm2022/input-group.mjs.map +0 -1
- package/input-otp/fesm2022/input-otp.mjs.map +0 -1
- package/item/fesm2022/item.mjs.map +0 -1
- package/kbd/fesm2022/kbd.mjs.map +0 -1
- package/label/fesm2022/label.mjs.map +0 -1
- package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
- package/menubar/fesm2022/menubar.mjs.map +0 -1
- package/native-select/fesm2022/native-select.mjs.map +0 -1
- package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
- package/pagination/fesm2022/pagination.mjs.map +0 -1
- package/popover/fesm2022/popover.mjs.map +0 -1
- package/progress/fesm2022/progress.mjs.map +0 -1
- package/radio-group/fesm2022/radio-group.mjs.map +0 -1
- package/resizable/fesm2022/resizable.mjs.map +0 -1
- package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
- package/select/fesm2022/select.mjs.map +0 -1
- package/separator/fesm2022/separator.mjs.map +0 -1
- package/sheet/fesm2022/sheet.mjs.map +0 -1
- package/sidebar/fesm2022/sidebar.mjs.map +0 -1
- package/skeleton/fesm2022/skeleton.mjs.map +0 -1
- package/slider/fesm2022/slider.mjs.map +0 -1
- package/sonner/fesm2022/sonner.mjs.map +0 -1
- package/spinner/fesm2022/spinner.mjs.map +0 -1
- package/switch/fesm2022/switch.mjs.map +0 -1
- package/table/fesm2022/table.mjs.map +0 -1
- package/tabs/fesm2022/tabs.mjs.map +0 -1
- package/textarea/fesm2022/textarea.mjs.map +0 -1
- package/toggle/fesm2022/toggle.mjs.map +0 -1
- package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
- package/tooltip/fesm2022/tooltip.mjs.map +0 -1
- package/typography/fesm2022/typography.mjs.map +0 -1
- package/utils/fesm2022/utils.mjs.map +0 -1
package/popover/README.md
CHANGED
|
@@ -1,64 +1,332 @@
|
|
|
1
|
-
# Popover
|
|
1
|
+
# Popover (`@egose/shadcn-theme-ng/popover`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Floating panel anchored to a button (shadcn/ui `popover` equivalent). Thin shadcn styling directives over the spartan-ng `BrnPopover` brain family: a stateful `hlm-popover` root, a `button[hlmPopoverTrigger]` opener, portal/content pieces for the floating panel, and header/title/description typography helpers.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Ships as `@egose/shadcn-theme-ng/popover` and `@egose/shadcn-theme-ng-tw/popover` (tw: variant). See the [package README](../../README.md) for installation, peer dependencies, Tailwind setup, and testing. Do not publish this project directory independently.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Installation
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
# Plain Tailwind (no prefix):
|
|
11
|
+
npm install @egose/shadcn-theme-ng
|
|
12
|
+
|
|
13
|
+
# Or the tw:-prefixed variant:
|
|
14
|
+
npm install @egose/shadcn-theme-ng-tw
|
|
11
15
|
```
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
Peer dependencies are inherited from the package root (see [package README](../../README.md)). This subpath itself declares `@angular/common`, `@angular/core` as peers plus a `tslib` runtime dependency; at runtime it uses `@spartan-ng/brain/popover` and `@spartan-ng/brain/core`. No extra install step is needed beyond the package install above.
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
## Imports
|
|
20
|
+
|
|
21
|
+
Real exported symbols (from `src/public-api.ts`):
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import {
|
|
25
|
+
HlmPopover, // directive: [hlmPopover],hlm-popover
|
|
26
|
+
HlmPopoverTrigger, // directive: button[hlmPopoverTrigger],button[hlmPopoverTriggerFor]
|
|
27
|
+
HlmPopoverPortal, // directive: [hlmPopoverPortal]
|
|
28
|
+
HlmPopoverContent, // directive: [hlmPopoverContent],hlm-popover-content
|
|
29
|
+
HlmPopoverHeader, // directive: [hlmPopoverHeader],hlm-popover-header
|
|
30
|
+
HlmPopoverTitle, // directive: [hlmPopoverTitle]
|
|
31
|
+
HlmPopoverDescription, // directive: [hlmPopoverDescription]
|
|
32
|
+
HlmPopoverImports, // all seven above
|
|
33
|
+
HlmPopoverModule, // NgModule wrapping HlmPopoverImports
|
|
34
|
+
} from '@egose/shadcn-theme-ng/popover';
|
|
17
35
|
```
|
|
18
36
|
|
|
19
|
-
|
|
37
|
+
Standalone usage:
|
|
20
38
|
|
|
21
|
-
|
|
39
|
+
```ts
|
|
40
|
+
import { Component } from '@angular/core';
|
|
41
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
22
42
|
|
|
23
|
-
|
|
24
|
-
|
|
43
|
+
@Component({
|
|
44
|
+
selector: 'app-demo',
|
|
45
|
+
standalone: true,
|
|
46
|
+
imports: [...HlmPopoverImports],
|
|
47
|
+
template: `
|
|
48
|
+
<hlm-popover>
|
|
49
|
+
<button hlmPopoverTrigger type="button">Open</button>
|
|
50
|
+
<hlm-popover-content *hlmPopoverPortal>
|
|
51
|
+
<p>Hello</p>
|
|
52
|
+
</hlm-popover-content>
|
|
53
|
+
</hlm-popover>
|
|
54
|
+
`,
|
|
55
|
+
})
|
|
56
|
+
export class DemoComponent {}
|
|
25
57
|
```
|
|
26
58
|
|
|
27
|
-
|
|
59
|
+
NgModule usage:
|
|
28
60
|
|
|
29
|
-
|
|
61
|
+
```ts
|
|
62
|
+
import { NgModule } from '@angular/core';
|
|
63
|
+
import { HlmPopoverModule } from '@egose/shadcn-theme-ng/popover';
|
|
30
64
|
|
|
31
|
-
|
|
65
|
+
@NgModule({ imports: [HlmPopoverModule] })
|
|
66
|
+
export class DemoModule {}
|
|
67
|
+
```
|
|
32
68
|
|
|
33
|
-
|
|
69
|
+
For the `tw:` build, swap the specifier to `@egose/shadcn-theme-ng-tw/popover`. Symbol names are identical.
|
|
34
70
|
|
|
35
|
-
|
|
36
|
-
cd dist/popover
|
|
37
|
-
```
|
|
71
|
+
## Anatomy / Structure
|
|
38
72
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
73
|
+
```html
|
|
74
|
+
<hlm-popover>
|
|
75
|
+
<!-- opener (must be a <button>) -->
|
|
76
|
+
<button hlmPopoverTrigger type="button">Settings</button>
|
|
43
77
|
|
|
44
|
-
|
|
78
|
+
<!-- floating panel: content styling + portal projection -->
|
|
79
|
+
<hlm-popover-content *hlmPopoverPortal class="tw:w-80">
|
|
80
|
+
<div hlmPopoverHeader>
|
|
81
|
+
<h4 hlmPopoverTitle>Dimensions</h4>
|
|
82
|
+
<p hlmPopoverDescription>Set the size of the layer.</p>
|
|
83
|
+
</div>
|
|
84
|
+
<!-- panel body -->
|
|
85
|
+
</hlm-popover-content>
|
|
86
|
+
</hlm-popover>
|
|
87
|
+
```
|
|
45
88
|
|
|
46
|
-
|
|
89
|
+
The two-directive split on the panel is load-bearing: `hlmPopoverContent` paints the panel (fixed `w-72`, animations, `data-state` reflection), while `*hlmPopoverPortal` (a `BrnPopoverContent` host) projects it into the overlay at the anchored position. Always use them together as `hlm-popover-content *hlmPopoverPortal`.
|
|
47
90
|
|
|
48
|
-
|
|
49
|
-
|
|
91
|
+
| Class | Selector | Role |
|
|
92
|
+
| ----------------------- | -------------------------------------------------------- | ----------------------------------------------------- |
|
|
93
|
+
| `HlmPopover` | `[hlmPopover],hlm-popover` | Stateful root (`BrnPopover` host) |
|
|
94
|
+
| `HlmPopoverTrigger` | `button[hlmPopoverTrigger],button[hlmPopoverTriggerFor]` | Opener (`BrnPopoverTrigger` host; must be `<button>`) |
|
|
95
|
+
| `HlmPopoverPortal` | `[hlmPopoverPortal]` | Overlay projection (`BrnPopoverContent` host) |
|
|
96
|
+
| `HlmPopoverContent` | `[hlmPopoverContent],hlm-popover-content` | Panel styling + `data-state` mirror |
|
|
97
|
+
| `HlmPopoverHeader` | `[hlmPopoverHeader],hlm-popover-header` | Header stack (`flex flex-col gap-1 text-sm`) |
|
|
98
|
+
| `HlmPopoverTitle` | `[hlmPopoverTitle]` | Title (`font-medium`) |
|
|
99
|
+
| `HlmPopoverDescription` | `[hlmPopoverDescription]` | Subtitle (`text-muted-foreground`) |
|
|
100
|
+
|
|
101
|
+
## API reference
|
|
102
|
+
|
|
103
|
+
| Selector | Inputs (incl. host passthroughs) | Outputs | Notes |
|
|
104
|
+
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
105
|
+
| `[hlmPopover],hlm-popover` (`HlmPopover`) | `align`, `attachTo`, `autoFocus`, `closeOnOutsidePointerEvents`, `offsetX`, `sideOffset`, `state` (all via `BrnPopover`) | `stateChanged`, `closed` (via `BrnPopover`) | No shadcn inputs of its own; `data-slot="popover"` |
|
|
106
|
+
| `button[hlmPopoverTrigger]` (`HlmPopoverTrigger`) | `id`, `hlmPopoverTriggerFor` (→ `brnPopoverTriggerFor`), `type` (all via `BrnPopoverTrigger`) | — | `data-slot="popover-trigger"`. `hlmPopoverTriggerFor` targets an explicit popover when the trigger lives outside the root |
|
|
107
|
+
| `[hlmPopoverPortal]` (`HlmPopoverPortal`) | `context`, `class` (via `BrnPopoverContent`) | — | Structural directive (`*hlmPopoverPortal`); `class` merges onto the overlay panel |
|
|
108
|
+
| `[hlmPopoverContent]` (`HlmPopoverContent`) | — | — | Exposes `state` (brain state signal, default `signal('closed')`); mirrors it to `data-state` via `Renderer2` for the `data-open:`/`data-closed:` animations |
|
|
109
|
+
| `[hlmPopoverHeader]` / `[hlmPopoverTitle]` / `[hlmPopoverDescription]` | — | — | Typography only |
|
|
110
|
+
|
|
111
|
+
Panel styling (`HlmPopoverContent`): `bg-popover text-popover-foreground rounded-md p-4 text-sm shadow-md ring-1 ring-foreground/10 relative flex w-72 flex-col gap-4 outline-none` plus open/close zoom+fade animations keyed off `data-state`/`data-side`.
|
|
112
|
+
|
|
113
|
+
## Examples
|
|
114
|
+
|
|
115
|
+
### 1. Basic popover with header
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import { Component } from '@angular/core';
|
|
119
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
120
|
+
import { HlmButton } from '@egose/shadcn-theme-ng/button';
|
|
121
|
+
|
|
122
|
+
@Component({
|
|
123
|
+
selector: 'app-popover-basic',
|
|
124
|
+
standalone: true,
|
|
125
|
+
imports: [...HlmPopoverImports, HlmButton],
|
|
126
|
+
template: `
|
|
127
|
+
<hlm-popover>
|
|
128
|
+
<button hlmPopoverTrigger hlmButton variant="secondary" appearance="outline" type="button">Open settings</button>
|
|
129
|
+
<hlm-popover-content *hlmPopoverPortal>
|
|
130
|
+
<div hlmPopoverHeader>
|
|
131
|
+
<h4 hlmPopoverTitle>Dimensions</h4>
|
|
132
|
+
<p hlmPopoverDescription>Set the size of the layer.</p>
|
|
133
|
+
</div>
|
|
134
|
+
<div class="tw:grid tw:gap-2 tw:text-sm">
|
|
135
|
+
<label class="tw:grid tw:gap-1"
|
|
136
|
+
>Width <input class="tw:border tw:rounded tw:px-2 tw:py-1" value="100%"
|
|
137
|
+
/></label>
|
|
138
|
+
<label class="tw:grid tw:gap-1"
|
|
139
|
+
>Height <input class="tw:border tw:rounded tw:px-2 tw:py-1" value="24px"
|
|
140
|
+
/></label>
|
|
141
|
+
</div>
|
|
142
|
+
</hlm-popover-content>
|
|
143
|
+
</hlm-popover>
|
|
144
|
+
`,
|
|
145
|
+
})
|
|
146
|
+
export class PopoverBasicComponent {}
|
|
50
147
|
```
|
|
51
148
|
|
|
52
|
-
|
|
149
|
+
### 2. Placement, offsets, and state events
|
|
53
150
|
|
|
54
|
-
|
|
151
|
+
```ts
|
|
152
|
+
import { Component, signal } from '@angular/core';
|
|
153
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
55
154
|
|
|
56
|
-
|
|
57
|
-
|
|
155
|
+
@Component({
|
|
156
|
+
selector: 'app-popover-placement',
|
|
157
|
+
standalone: true,
|
|
158
|
+
imports: [...HlmPopoverImports],
|
|
159
|
+
template: `
|
|
160
|
+
<hlm-popover
|
|
161
|
+
align="start"
|
|
162
|
+
[sideOffset]="8"
|
|
163
|
+
[closeOnOutsidePointerEvents]="true"
|
|
164
|
+
(stateChanged)="open.set($event === 'open')"
|
|
165
|
+
(closed)="open.set(false)"
|
|
166
|
+
>
|
|
167
|
+
<button hlmPopoverTrigger type="button">Aligned start, offset 8</button>
|
|
168
|
+
<hlm-popover-content *hlmPopoverPortal>
|
|
169
|
+
<p class="tw:text-sm">Panel state: {{ open() ? 'open' : 'closed' }}.</p>
|
|
170
|
+
</hlm-popover-content>
|
|
171
|
+
</hlm-popover>
|
|
172
|
+
`,
|
|
173
|
+
})
|
|
174
|
+
export class PopoverPlacementComponent {
|
|
175
|
+
readonly open = signal(false);
|
|
176
|
+
}
|
|
58
177
|
```
|
|
59
178
|
|
|
60
|
-
|
|
179
|
+
`align`, `sideOffset`, `closeOnOutsidePointerEvents` are brain inputs on `HlmPopover`; `stateChanged`/`closed` are its outputs.
|
|
180
|
+
|
|
181
|
+
### 3. Form inside a popover (template-driven)
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
import { Component } from '@angular/core';
|
|
185
|
+
import { FormsModule } from '@angular/forms';
|
|
186
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
187
|
+
import { HlmInput } from '@egose/shadcn-theme-ng/input';
|
|
188
|
+
import { HlmLabelImports } from '@egose/shadcn-theme-ng/label';
|
|
189
|
+
|
|
190
|
+
@Component({
|
|
191
|
+
selector: 'app-popover-form',
|
|
192
|
+
standalone: true,
|
|
193
|
+
imports: [FormsModule, ...HlmPopoverImports, HlmInput, ...HlmLabelImports],
|
|
194
|
+
template: `
|
|
195
|
+
<hlm-popover>
|
|
196
|
+
<button hlmPopoverTrigger type="button">Invite member</button>
|
|
197
|
+
<hlm-popover-content *hlmPopoverPortal class="tw:w-80">
|
|
198
|
+
<div hlmPopoverHeader>
|
|
199
|
+
<h4 hlmPopoverTitle>Invite</h4>
|
|
200
|
+
<p hlmPopoverDescription>They receive an email invitation.</p>
|
|
201
|
+
</div>
|
|
202
|
+
<div class="tw:grid tw:gap-1.5">
|
|
203
|
+
<label hlmLabel for="invite-email">Email</label>
|
|
204
|
+
<input hlmInput id="invite-email" [(ngModel)]="email" type="email" placeholder="ada@example.com" />
|
|
205
|
+
<button type="button" (click)="invite()">Send invite</button>
|
|
206
|
+
</div>
|
|
207
|
+
</hlm-popover-content>
|
|
208
|
+
</hlm-popover>
|
|
209
|
+
`,
|
|
210
|
+
})
|
|
211
|
+
export class PopoverFormComponent {
|
|
212
|
+
email = '';
|
|
213
|
+
|
|
214
|
+
invite(): void {
|
|
215
|
+
console.log('invite', this.email);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 4. Custom panel width via portal `class`
|
|
221
|
+
|
|
222
|
+
The portal's `class` input lands on the overlay host; the content directive keeps its own `w-72` unless you override it on the element as well.
|
|
223
|
+
|
|
224
|
+
```ts
|
|
225
|
+
import { Component } from '@angular/core';
|
|
226
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
227
|
+
|
|
228
|
+
@Component({
|
|
229
|
+
selector: 'app-popover-wide',
|
|
230
|
+
standalone: true,
|
|
231
|
+
imports: [...HlmPopoverImports],
|
|
232
|
+
template: `
|
|
233
|
+
<hlm-popover>
|
|
234
|
+
<button hlmPopoverTrigger type="button">Wide panel</button>
|
|
235
|
+
<hlm-popover-content *hlmPopoverPortal class="tw:w-96">
|
|
236
|
+
<div hlmPopoverHeader>
|
|
237
|
+
<h4 hlmPopoverTitle>Preview</h4>
|
|
238
|
+
<p hlmPopoverDescription>A wider panel for rich content.</p>
|
|
239
|
+
</div>
|
|
240
|
+
<div class="tw:grid tw:grid-cols-2 tw:gap-2 tw:text-sm">
|
|
241
|
+
<div class="tw:rounded tw:bg-muted tw:p-2">Column A</div>
|
|
242
|
+
<div class="tw:rounded tw:bg-muted tw:p-2">Column B</div>
|
|
243
|
+
</div>
|
|
244
|
+
</hlm-popover-content>
|
|
245
|
+
</hlm-popover>
|
|
246
|
+
`,
|
|
247
|
+
})
|
|
248
|
+
export class PopoverWideComponent {}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### 5. External trigger (`hlmPopoverTriggerFor`)
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
import { Component } from '@angular/core';
|
|
255
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
256
|
+
|
|
257
|
+
@Component({
|
|
258
|
+
selector: 'app-popover-external',
|
|
259
|
+
standalone: true,
|
|
260
|
+
imports: [...HlmPopoverImports],
|
|
261
|
+
template: `
|
|
262
|
+
<hlm-popover #pop="hlmPopover">
|
|
263
|
+
<hlm-popover-content *hlmPopoverPortal>
|
|
264
|
+
<p class="tw:text-sm">Triggered from outside the root.</p>
|
|
265
|
+
</hlm-popover-content>
|
|
266
|
+
</hlm-popover>
|
|
267
|
+
|
|
268
|
+
<button hlmPopoverTriggerFor [hlmPopoverTriggerFor]="pop" type="button">Open from here</button>
|
|
269
|
+
`,
|
|
270
|
+
})
|
|
271
|
+
export class PopoverExternalComponent {}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
> The exact template-ref export name follows the brain `BrnPopover` directive (`#pop="…"`) — verify against your installed `@spartan-ng/brain` version if the alias differs.
|
|
275
|
+
|
|
276
|
+
### 6. Async content + loading state
|
|
277
|
+
|
|
278
|
+
```ts
|
|
279
|
+
import { Component, signal } from '@angular/core';
|
|
280
|
+
import { HlmPopoverImports } from '@egose/shadcn-theme-ng/popover';
|
|
281
|
+
|
|
282
|
+
@Component({
|
|
283
|
+
selector: 'app-popover-async',
|
|
284
|
+
standalone: true,
|
|
285
|
+
imports: [...HlmPopoverImports],
|
|
286
|
+
template: `
|
|
287
|
+
<hlm-popover (stateChanged)="onState($event)">
|
|
288
|
+
<button hlmPopoverTrigger type="button">Recent activity</button>
|
|
289
|
+
<hlm-popover-content *hlmPopoverPortal>
|
|
290
|
+
<div hlmPopoverHeader>
|
|
291
|
+
<h4 hlmPopoverTitle>Activity</h4>
|
|
292
|
+
<p hlmPopoverDescription>{{ loading() ? 'Loading…' : 'Last 3 events.' }}</p>
|
|
293
|
+
</div>
|
|
294
|
+
@for (e of events(); track e) {
|
|
295
|
+
<p class="tw:text-sm">{{ e }}</p>
|
|
296
|
+
} @empty {
|
|
297
|
+
<p class="tw:text-sm tw:text-muted-foreground">Nothing yet.</p>
|
|
298
|
+
}
|
|
299
|
+
</hlm-popover-content>
|
|
300
|
+
</hlm-popover>
|
|
301
|
+
`,
|
|
302
|
+
})
|
|
303
|
+
export class PopoverAsyncComponent {
|
|
304
|
+
readonly events = signal<string[]>([]);
|
|
305
|
+
readonly loading = signal(false);
|
|
306
|
+
|
|
307
|
+
async onState(state: string): Promise<void> {
|
|
308
|
+
if (state !== 'open' || this.events().length) return;
|
|
309
|
+
this.loading.set(true);
|
|
310
|
+
await new Promise((r) => setTimeout(r, 400));
|
|
311
|
+
this.events.set(['Deploy succeeded', 'Review requested', 'Comment added']);
|
|
312
|
+
this.loading.set(false);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## Accessibility notes
|
|
318
|
+
|
|
319
|
+
- Triggers must be `<button>` (both selector variants require it) with a text label; the brain layer wires `aria-expanded`, `aria-controls`, and focus return.
|
|
320
|
+
- Keep a heading (`hlmPopoverTitle`) as the first element when the panel conveys a topic — screen-reader users land inside the panel on open.
|
|
321
|
+
- `autoFocus` (brain input) controls initial focus; form panels should focus the first field, read-only panels should keep focus on the trigger side and let users tab in.
|
|
322
|
+
- `Escape`/outside-pointer close comes from the brain defaults (`closeOnOutsidePointerEvents` is configurable); don't trap focus manually.
|
|
323
|
+
|
|
324
|
+
## Theming / CSS variables
|
|
325
|
+
|
|
326
|
+
No theming inputs. The panel uses `bg-popover text-popover-foreground ring-foreground/10`; header/title/description use text tokens. Widen via portal `class` (example 4); state-driven animations read the mirrored `data-state`.
|
|
61
327
|
|
|
62
|
-
##
|
|
328
|
+
## Related subpaths
|
|
63
329
|
|
|
64
|
-
|
|
330
|
+
- `@egose/shadcn-theme-ng/tooltip` — hover hint vs this component's click-anchored panel.
|
|
331
|
+
- `@egose/shadcn-theme-ng/dropdown-menu`, `@egose/shadcn-theme-ng/select` — menu/select overlays built on the same brain overlay concepts.
|
|
332
|
+
- `@egose/shadcn-theme-ng/input`, `@egose/shadcn-theme-ng/label` — form controls commonly hosted inside popover panels.
|
|
@@ -6,10 +6,10 @@ import { injectExposesStateProvider } from '@spartan-ng/brain/core';
|
|
|
6
6
|
import { classes } from '@egose/shadcn-theme-ng-tw/utils';
|
|
7
7
|
|
|
8
8
|
class HlmPopover {
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
10
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopover, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopover, isStandalone: true, selector: "[hlmPopover],hlm-popover", host: { attributes: { "data-slot": "popover" } }, hostDirectives: [{ directive: i1.BrnPopover, inputs: ["align", "align", "attachTo", "attachTo", "autoFocus", "autoFocus", "closeOnOutsidePointerEvents", "closeOnOutsidePointerEvents", "offsetX", "offsetX", "sideOffset", "sideOffset", "state", "state"], outputs: ["stateChanged", "stateChanged", "closed", "closed"] }], ngImport: i0 });
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopover, decorators: [{
|
|
13
13
|
type: Directive,
|
|
14
14
|
args: [{
|
|
15
15
|
selector: '[hlmPopover],hlm-popover',
|
|
@@ -33,12 +33,12 @@ class HlmPopoverContent {
|
|
|
33
33
|
effect(() => {
|
|
34
34
|
this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state());
|
|
35
35
|
});
|
|
36
|
-
classes(() => 'bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 gap-4 rounded-md p-4 text-sm shadow-md ring-1 duration-100 relative flex w-72 flex-col outline-none');
|
|
36
|
+
classes(() => 'tw:bg-popover tw:text-popover-foreground tw:data-open:animate-in tw:data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 tw:data-closed:zoom-out-95 tw:data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 tw:ring-foreground/10 tw:gap-4 tw:rounded-md tw:p-4 tw:text-sm tw:shadow-md tw:ring-1 tw:duration-100 tw:relative tw:flex tw:w-72 tw:flex-col tw:outline-none');
|
|
37
37
|
}
|
|
38
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
39
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
39
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopoverContent, isStandalone: true, selector: "[hlmPopoverContent],hlm-popover-content", host: { attributes: { "data-slot": "popover-content" } }, ngImport: i0 });
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverContent, decorators: [{
|
|
42
42
|
type: Directive,
|
|
43
43
|
args: [{
|
|
44
44
|
selector: '[hlmPopoverContent],hlm-popover-content',
|
|
@@ -48,12 +48,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
48
48
|
|
|
49
49
|
class HlmPopoverDescription {
|
|
50
50
|
constructor() {
|
|
51
|
-
classes(() => 'text-muted-foreground');
|
|
51
|
+
classes(() => 'tw:text-muted-foreground');
|
|
52
52
|
}
|
|
53
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
54
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
54
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopoverDescription, isStandalone: true, selector: "[hlmPopoverDescription]", host: { attributes: { "data-slot": "popover-description" } }, ngImport: i0 });
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverDescription, decorators: [{
|
|
57
57
|
type: Directive,
|
|
58
58
|
args: [{
|
|
59
59
|
selector: '[hlmPopoverDescription]',
|
|
@@ -63,12 +63,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
63
63
|
|
|
64
64
|
class HlmPopoverHeader {
|
|
65
65
|
constructor() {
|
|
66
|
-
classes(() => 'flex flex-col gap-1 text-sm');
|
|
66
|
+
classes(() => 'tw:flex tw:flex-col tw:gap-1 tw:text-sm');
|
|
67
67
|
}
|
|
68
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
69
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopoverHeader, isStandalone: true, selector: "[hlmPopoverHeader],hlm-popover-header", host: { attributes: { "data-slot": "popover-header" } }, ngImport: i0 });
|
|
70
70
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverHeader, decorators: [{
|
|
72
72
|
type: Directive,
|
|
73
73
|
args: [{
|
|
74
74
|
selector: '[hlmPopoverHeader],hlm-popover-header',
|
|
@@ -77,10 +77,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
77
77
|
}], ctorParameters: () => [] });
|
|
78
78
|
|
|
79
79
|
class HlmPopoverPortal {
|
|
80
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
81
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
81
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopoverPortal, isStandalone: true, selector: "[hlmPopoverPortal]", hostDirectives: [{ directive: i1.BrnPopoverContent, inputs: ["context", "context", "class", "class"] }], ngImport: i0 });
|
|
82
82
|
}
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverPortal, decorators: [{
|
|
84
84
|
type: Directive,
|
|
85
85
|
args: [{
|
|
86
86
|
selector: '[hlmPopoverPortal]',
|
|
@@ -90,12 +90,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
90
90
|
|
|
91
91
|
class HlmPopoverTitle {
|
|
92
92
|
constructor() {
|
|
93
|
-
classes(() => 'font-medium');
|
|
93
|
+
classes(() => 'tw:font-medium');
|
|
94
94
|
}
|
|
95
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
96
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
95
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
96
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopoverTitle, isStandalone: true, selector: "[hlmPopoverTitle]", host: { attributes: { "data-slot": "popover-title" } }, ngImport: i0 });
|
|
97
97
|
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverTitle, decorators: [{
|
|
99
99
|
type: Directive,
|
|
100
100
|
args: [{
|
|
101
101
|
selector: '[hlmPopoverTitle]',
|
|
@@ -104,10 +104,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
104
104
|
}], ctorParameters: () => [] });
|
|
105
105
|
|
|
106
106
|
class HlmPopoverTrigger {
|
|
107
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
108
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
107
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
108
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmPopoverTrigger, isStandalone: true, selector: "button[hlmPopoverTrigger],button[hlmPopoverTriggerFor]", host: { attributes: { "data-slot": "popover-trigger" } }, hostDirectives: [{ directive: i1.BrnPopoverTrigger, inputs: ["id", "id", "brnPopoverTriggerFor", "hlmPopoverTriggerFor", "type", "type"] }], ngImport: i0 });
|
|
109
109
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverTrigger, decorators: [{
|
|
111
111
|
type: Directive,
|
|
112
112
|
args: [{
|
|
113
113
|
selector: 'button[hlmPopoverTrigger],button[hlmPopoverTriggerFor]',
|
|
@@ -131,8 +131,8 @@ const HlmPopoverImports = [
|
|
|
131
131
|
HlmPopoverTrigger,
|
|
132
132
|
];
|
|
133
133
|
class HlmPopoverModule {
|
|
134
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
135
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.
|
|
134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
135
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverModule, imports: [HlmPopover,
|
|
136
136
|
HlmPopoverContent,
|
|
137
137
|
HlmPopoverDescription,
|
|
138
138
|
HlmPopoverHeader,
|
|
@@ -145,9 +145,9 @@ class HlmPopoverModule {
|
|
|
145
145
|
HlmPopoverPortal,
|
|
146
146
|
HlmPopoverTitle,
|
|
147
147
|
HlmPopoverTrigger] });
|
|
148
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.
|
|
148
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverModule });
|
|
149
149
|
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmPopoverModule, decorators: [{
|
|
151
151
|
type: NgModule,
|
|
152
152
|
args: [{
|
|
153
153
|
imports: [...HlmPopoverImports],
|
|
@@ -160,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
160
160
|
*/
|
|
161
161
|
|
|
162
162
|
export { HlmPopover, HlmPopoverContent, HlmPopoverDescription, HlmPopoverHeader, HlmPopoverImports, HlmPopoverModule, HlmPopoverPortal, HlmPopoverTitle, HlmPopoverTrigger };
|
|
163
|
-
|
|
163
|
+
|