@ojiepermana/angular-component 22.0.27
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 +82 -0
- package/accordion/README.md +193 -0
- package/alert/README.md +180 -0
- package/alert-dialog/README.md +239 -0
- package/aspect-ratio/README.md +112 -0
- package/avatar/README.md +176 -0
- package/badge/README.md +133 -0
- package/breadcrumb/README.md +216 -0
- package/button/README.md +139 -0
- package/button-group/README.md +208 -0
- package/calendar/README.md +135 -0
- package/card/README.md +220 -0
- package/carousel/README.md +276 -0
- package/checkbox/README.md +149 -0
- package/collapsible/README.md +195 -0
- package/combobox/README.md +198 -0
- package/command/README.md +275 -0
- package/composer/README.md +235 -0
- package/context-menu/README.md +267 -0
- package/date-picker/README.md +179 -0
- package/dialog/README.md +235 -0
- package/drawer/README.md +145 -0
- package/dropdown-menu/README.md +311 -0
- package/editor/README.md +136 -0
- package/empty/README.md +183 -0
- package/fesm2022/ojiepermana-angular-component-accordion.mjs +186 -0
- package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +276 -0
- package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-alert.mjs +99 -0
- package/fesm2022/ojiepermana-angular-component-alert.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +37 -0
- package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-avatar.mjs +139 -0
- package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-badge.mjs +50 -0
- package/fesm2022/ojiepermana-angular-component-badge.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +200 -0
- package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-button-group.mjs +103 -0
- package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-button.mjs +68 -0
- package/fesm2022/ojiepermana-angular-component-button.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-calendar.mjs +103 -0
- package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-card.mjs +152 -0
- package/fesm2022/ojiepermana-angular-component-card.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-carousel.mjs +334 -0
- package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs +165 -0
- package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs +121 -0
- package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-combobox.mjs +274 -0
- package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-command.mjs +297 -0
- package/fesm2022/ojiepermana-angular-component-command.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-composer.mjs +352 -0
- package/fesm2022/ojiepermana-angular-component-composer.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs +108 -0
- package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs +186 -0
- package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-dialog.mjs +283 -0
- package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-drawer.mjs +6 -0
- package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +494 -0
- package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-editor.mjs +680 -0
- package/fesm2022/ojiepermana-angular-component-editor.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-empty.mjs +145 -0
- package/fesm2022/ojiepermana-angular-component-empty.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-form.mjs +364 -0
- package/fesm2022/ojiepermana-angular-component-form.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs +275 -0
- package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-icon.mjs +86 -0
- package/fesm2022/ojiepermana-angular-component-icon.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-input-group.mjs +179 -0
- package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs +517 -0
- package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-input.mjs +45 -0
- package/fesm2022/ojiepermana-angular-component-input.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-item.mjs +264 -0
- package/fesm2022/ojiepermana-angular-component-item.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-kanban.mjs +314 -0
- package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-kbd.mjs +55 -0
- package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-label.mjs +33 -0
- package/fesm2022/ojiepermana-angular-component-label.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-menubar.mjs +311 -0
- package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-native-select.mjs +67 -0
- package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +408 -0
- package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-pagination.mjs +226 -0
- package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs +810 -0
- package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-popover.mjs +145 -0
- package/fesm2022/ojiepermana-angular-component-popover.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-progress.mjs +60 -0
- package/fesm2022/ojiepermana-angular-component-progress.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-radio.mjs +173 -0
- package/fesm2022/ojiepermana-angular-component-radio.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-resizable.mjs +478 -0
- package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +54 -0
- package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-select.mjs +297 -0
- package/fesm2022/ojiepermana-angular-component-select.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-separator.mjs +37 -0
- package/fesm2022/ojiepermana-angular-component-separator.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-sheet.mjs +297 -0
- package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs +31 -0
- package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-slider.mjs +423 -0
- package/fesm2022/ojiepermana-angular-component-slider.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-spinner.mjs +60 -0
- package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-switch.mjs +140 -0
- package/fesm2022/ojiepermana-angular-component-switch.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-table.mjs +155 -0
- package/fesm2022/ojiepermana-angular-component-table.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-tabs.mjs +271 -0
- package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-textarea.mjs +39 -0
- package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-timeline.mjs +237 -0
- package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-toast.mjs +161 -0
- package/fesm2022/ojiepermana-angular-component-toast.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +289 -0
- package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-toggle.mjs +82 -0
- package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs +410 -0
- package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component-utils.mjs +81 -0
- package/fesm2022/ojiepermana-angular-component-utils.mjs.map +1 -0
- package/fesm2022/ojiepermana-angular-component.mjs +11 -0
- package/fesm2022/ojiepermana-angular-component.mjs.map +1 -0
- package/form/README.md +210 -0
- package/hover-card/README.md +142 -0
- package/icon/README.md +25 -0
- package/input/README.md +159 -0
- package/input-group/README.md +237 -0
- package/input-otp/README.md +278 -0
- package/item/README.md +247 -0
- package/kanban/README.md +81 -0
- package/kbd/README.md +139 -0
- package/label/README.md +135 -0
- package/menubar/README.md +269 -0
- package/native-select/README.md +176 -0
- package/navigation-menu/README.md +160 -0
- package/package.json +291 -0
- package/pagination/README.md +144 -0
- package/pillbox/README.md +67 -0
- package/popover/README.md +43 -0
- package/progress/README.md +160 -0
- package/radio/README.md +209 -0
- package/resizable/README.md +168 -0
- package/scroll-area/README.md +143 -0
- package/select/README.md +174 -0
- package/separator/README.md +170 -0
- package/sheet/README.md +183 -0
- package/skeleton/README.md +158 -0
- package/slider/README.md +207 -0
- package/spinner/README.md +160 -0
- package/switch/README.md +166 -0
- package/table/README.md +291 -0
- package/tabs/README.md +214 -0
- package/textarea/README.md +153 -0
- package/timeline/README.md +94 -0
- package/toast/README.md +321 -0
- package/toggle/README.md +131 -0
- package/toggle-group/README.md +206 -0
- package/tooltip/README.md +207 -0
- package/types/ojiepermana-angular-component-accordion.d.ts +51 -0
- package/types/ojiepermana-angular-component-alert-dialog.d.ts +93 -0
- package/types/ojiepermana-angular-component-alert.d.ts +37 -0
- package/types/ojiepermana-angular-component-aspect-ratio.d.ts +12 -0
- package/types/ojiepermana-angular-component-avatar.d.ts +51 -0
- package/types/ojiepermana-angular-component-badge.d.ts +19 -0
- package/types/ojiepermana-angular-component-breadcrumb.d.ts +46 -0
- package/types/ojiepermana-angular-component-button-group.d.ts +26 -0
- package/types/ojiepermana-angular-component-button.d.ts +22 -0
- package/types/ojiepermana-angular-component-calendar.d.ts +39 -0
- package/types/ojiepermana-angular-component-card.d.ts +60 -0
- package/types/ojiepermana-angular-component-carousel.d.ts +86 -0
- package/types/ojiepermana-angular-component-checkbox.d.ts +42 -0
- package/types/ojiepermana-angular-component-collapsible.d.ts +42 -0
- package/types/ojiepermana-angular-component-combobox.d.ts +53 -0
- package/types/ojiepermana-angular-component-command.d.ts +102 -0
- package/types/ojiepermana-angular-component-composer.d.ts +90 -0
- package/types/ojiepermana-angular-component-context-menu.d.ts +36 -0
- package/types/ojiepermana-angular-component-date-picker.d.ts +48 -0
- package/types/ojiepermana-angular-component-dialog.d.ts +87 -0
- package/types/ojiepermana-angular-component-drawer.d.ts +1 -0
- package/types/ojiepermana-angular-component-dropdown-menu.d.ts +140 -0
- package/types/ojiepermana-angular-component-editor.d.ts +126 -0
- package/types/ojiepermana-angular-component-empty.d.ts +50 -0
- package/types/ojiepermana-angular-component-form.d.ts +140 -0
- package/types/ojiepermana-angular-component-hover-card.d.ts +75 -0
- package/types/ojiepermana-angular-component-icon.d.ts +31 -0
- package/types/ojiepermana-angular-component-input-group.d.ts +51 -0
- package/types/ojiepermana-angular-component-input-otp.d.ts +142 -0
- package/types/ojiepermana-angular-component-input.d.ts +16 -0
- package/types/ojiepermana-angular-component-item.d.ts +88 -0
- package/types/ojiepermana-angular-component-kanban.d.ts +70 -0
- package/types/ojiepermana-angular-component-kbd.d.ts +16 -0
- package/types/ojiepermana-angular-component-label.d.ts +11 -0
- package/types/ojiepermana-angular-component-menubar.d.ts +69 -0
- package/types/ojiepermana-angular-component-native-select.d.ts +26 -0
- package/types/ojiepermana-angular-component-navigation-menu.d.ts +98 -0
- package/types/ojiepermana-angular-component-pagination.d.ts +33 -0
- package/types/ojiepermana-angular-component-pillbox.d.ts +156 -0
- package/types/ojiepermana-angular-component-popover.d.ts +50 -0
- package/types/ojiepermana-angular-component-progress.d.ts +17 -0
- package/types/ojiepermana-angular-component-radio.d.ts +57 -0
- package/types/ojiepermana-angular-component-resizable.d.ts +99 -0
- package/types/ojiepermana-angular-component-scroll-area.d.ts +19 -0
- package/types/ojiepermana-angular-component-select.d.ts +56 -0
- package/types/ojiepermana-angular-component-separator.d.ts +14 -0
- package/types/ojiepermana-angular-component-sheet.d.ts +78 -0
- package/types/ojiepermana-angular-component-skeleton.d.ts +10 -0
- package/types/ojiepermana-angular-component-slider.d.ts +74 -0
- package/types/ojiepermana-angular-component-spinner.d.ts +13 -0
- package/types/ojiepermana-angular-component-switch.d.ts +44 -0
- package/types/ojiepermana-angular-component-table.d.ts +52 -0
- package/types/ojiepermana-angular-component-tabs.d.ts +92 -0
- package/types/ojiepermana-angular-component-textarea.d.ts +12 -0
- package/types/ojiepermana-angular-component-timeline.d.ts +63 -0
- package/types/ojiepermana-angular-component-toast.d.ts +51 -0
- package/types/ojiepermana-angular-component-toggle-group.d.ts +89 -0
- package/types/ojiepermana-angular-component-toggle.d.ts +25 -0
- package/types/ojiepermana-angular-component-tooltip.d.ts +101 -0
- package/types/ojiepermana-angular-component-utils.d.ts +30 -0
- package/types/ojiepermana-angular-component.d.ts +2 -0
package/package.json
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ojiepermana/angular-component",
|
|
3
|
+
"version": "22.0.27",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "git+https://github.com/edsis/angular.git"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/edsis/angular#readme",
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/edsis/angular/issues"
|
|
11
|
+
},
|
|
12
|
+
"peerDependencies": {
|
|
13
|
+
"@angular/cdk": ">=22.0.0",
|
|
14
|
+
"@angular/common": ">=22.0.0",
|
|
15
|
+
"@angular/core": ">=22.0.0",
|
|
16
|
+
"@angular/forms": ">=22.0.0",
|
|
17
|
+
"@angular/material": ">=22.0.0",
|
|
18
|
+
"@angular/platform-browser": ">=22.0.0",
|
|
19
|
+
"@angular/router": ">=22.0.0",
|
|
20
|
+
"rxjs": ">=7.8.0"
|
|
21
|
+
},
|
|
22
|
+
"peerDependenciesMeta": {
|
|
23
|
+
"@angular/material": {
|
|
24
|
+
"optional": true
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"class-variance-authority": "^0.7.1",
|
|
29
|
+
"clsx": "^2.1.1",
|
|
30
|
+
"embla-carousel": "^8.5.2",
|
|
31
|
+
"tailwind-merge": "^3.5.0",
|
|
32
|
+
"tslib": "^2.8.1"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public",
|
|
36
|
+
"registry": "https://registry.npmjs.org/"
|
|
37
|
+
},
|
|
38
|
+
"sideEffects": false,
|
|
39
|
+
"module": "fesm2022/ojiepermana-angular-component.mjs",
|
|
40
|
+
"typings": "types/ojiepermana-angular-component.d.ts",
|
|
41
|
+
"exports": {
|
|
42
|
+
"./package.json": {
|
|
43
|
+
"default": "./package.json"
|
|
44
|
+
},
|
|
45
|
+
".": {
|
|
46
|
+
"types": "./types/ojiepermana-angular-component.d.ts",
|
|
47
|
+
"default": "./fesm2022/ojiepermana-angular-component.mjs"
|
|
48
|
+
},
|
|
49
|
+
"./accordion": {
|
|
50
|
+
"types": "./types/ojiepermana-angular-component-accordion.d.ts",
|
|
51
|
+
"default": "./fesm2022/ojiepermana-angular-component-accordion.mjs"
|
|
52
|
+
},
|
|
53
|
+
"./alert": {
|
|
54
|
+
"types": "./types/ojiepermana-angular-component-alert.d.ts",
|
|
55
|
+
"default": "./fesm2022/ojiepermana-angular-component-alert.mjs"
|
|
56
|
+
},
|
|
57
|
+
"./alert-dialog": {
|
|
58
|
+
"types": "./types/ojiepermana-angular-component-alert-dialog.d.ts",
|
|
59
|
+
"default": "./fesm2022/ojiepermana-angular-component-alert-dialog.mjs"
|
|
60
|
+
},
|
|
61
|
+
"./aspect-ratio": {
|
|
62
|
+
"types": "./types/ojiepermana-angular-component-aspect-ratio.d.ts",
|
|
63
|
+
"default": "./fesm2022/ojiepermana-angular-component-aspect-ratio.mjs"
|
|
64
|
+
},
|
|
65
|
+
"./avatar": {
|
|
66
|
+
"types": "./types/ojiepermana-angular-component-avatar.d.ts",
|
|
67
|
+
"default": "./fesm2022/ojiepermana-angular-component-avatar.mjs"
|
|
68
|
+
},
|
|
69
|
+
"./badge": {
|
|
70
|
+
"types": "./types/ojiepermana-angular-component-badge.d.ts",
|
|
71
|
+
"default": "./fesm2022/ojiepermana-angular-component-badge.mjs"
|
|
72
|
+
},
|
|
73
|
+
"./breadcrumb": {
|
|
74
|
+
"types": "./types/ojiepermana-angular-component-breadcrumb.d.ts",
|
|
75
|
+
"default": "./fesm2022/ojiepermana-angular-component-breadcrumb.mjs"
|
|
76
|
+
},
|
|
77
|
+
"./button": {
|
|
78
|
+
"types": "./types/ojiepermana-angular-component-button.d.ts",
|
|
79
|
+
"default": "./fesm2022/ojiepermana-angular-component-button.mjs"
|
|
80
|
+
},
|
|
81
|
+
"./button-group": {
|
|
82
|
+
"types": "./types/ojiepermana-angular-component-button-group.d.ts",
|
|
83
|
+
"default": "./fesm2022/ojiepermana-angular-component-button-group.mjs"
|
|
84
|
+
},
|
|
85
|
+
"./calendar": {
|
|
86
|
+
"types": "./types/ojiepermana-angular-component-calendar.d.ts",
|
|
87
|
+
"default": "./fesm2022/ojiepermana-angular-component-calendar.mjs"
|
|
88
|
+
},
|
|
89
|
+
"./card": {
|
|
90
|
+
"types": "./types/ojiepermana-angular-component-card.d.ts",
|
|
91
|
+
"default": "./fesm2022/ojiepermana-angular-component-card.mjs"
|
|
92
|
+
},
|
|
93
|
+
"./carousel": {
|
|
94
|
+
"types": "./types/ojiepermana-angular-component-carousel.d.ts",
|
|
95
|
+
"default": "./fesm2022/ojiepermana-angular-component-carousel.mjs"
|
|
96
|
+
},
|
|
97
|
+
"./checkbox": {
|
|
98
|
+
"types": "./types/ojiepermana-angular-component-checkbox.d.ts",
|
|
99
|
+
"default": "./fesm2022/ojiepermana-angular-component-checkbox.mjs"
|
|
100
|
+
},
|
|
101
|
+
"./collapsible": {
|
|
102
|
+
"types": "./types/ojiepermana-angular-component-collapsible.d.ts",
|
|
103
|
+
"default": "./fesm2022/ojiepermana-angular-component-collapsible.mjs"
|
|
104
|
+
},
|
|
105
|
+
"./combobox": {
|
|
106
|
+
"types": "./types/ojiepermana-angular-component-combobox.d.ts",
|
|
107
|
+
"default": "./fesm2022/ojiepermana-angular-component-combobox.mjs"
|
|
108
|
+
},
|
|
109
|
+
"./command": {
|
|
110
|
+
"types": "./types/ojiepermana-angular-component-command.d.ts",
|
|
111
|
+
"default": "./fesm2022/ojiepermana-angular-component-command.mjs"
|
|
112
|
+
},
|
|
113
|
+
"./composer": {
|
|
114
|
+
"types": "./types/ojiepermana-angular-component-composer.d.ts",
|
|
115
|
+
"default": "./fesm2022/ojiepermana-angular-component-composer.mjs"
|
|
116
|
+
},
|
|
117
|
+
"./context-menu": {
|
|
118
|
+
"types": "./types/ojiepermana-angular-component-context-menu.d.ts",
|
|
119
|
+
"default": "./fesm2022/ojiepermana-angular-component-context-menu.mjs"
|
|
120
|
+
},
|
|
121
|
+
"./date-picker": {
|
|
122
|
+
"types": "./types/ojiepermana-angular-component-date-picker.d.ts",
|
|
123
|
+
"default": "./fesm2022/ojiepermana-angular-component-date-picker.mjs"
|
|
124
|
+
},
|
|
125
|
+
"./dialog": {
|
|
126
|
+
"types": "./types/ojiepermana-angular-component-dialog.d.ts",
|
|
127
|
+
"default": "./fesm2022/ojiepermana-angular-component-dialog.mjs"
|
|
128
|
+
},
|
|
129
|
+
"./drawer": {
|
|
130
|
+
"types": "./types/ojiepermana-angular-component-drawer.d.ts",
|
|
131
|
+
"default": "./fesm2022/ojiepermana-angular-component-drawer.mjs"
|
|
132
|
+
},
|
|
133
|
+
"./dropdown-menu": {
|
|
134
|
+
"types": "./types/ojiepermana-angular-component-dropdown-menu.d.ts",
|
|
135
|
+
"default": "./fesm2022/ojiepermana-angular-component-dropdown-menu.mjs"
|
|
136
|
+
},
|
|
137
|
+
"./editor": {
|
|
138
|
+
"types": "./types/ojiepermana-angular-component-editor.d.ts",
|
|
139
|
+
"default": "./fesm2022/ojiepermana-angular-component-editor.mjs"
|
|
140
|
+
},
|
|
141
|
+
"./empty": {
|
|
142
|
+
"types": "./types/ojiepermana-angular-component-empty.d.ts",
|
|
143
|
+
"default": "./fesm2022/ojiepermana-angular-component-empty.mjs"
|
|
144
|
+
},
|
|
145
|
+
"./form": {
|
|
146
|
+
"types": "./types/ojiepermana-angular-component-form.d.ts",
|
|
147
|
+
"default": "./fesm2022/ojiepermana-angular-component-form.mjs"
|
|
148
|
+
},
|
|
149
|
+
"./hover-card": {
|
|
150
|
+
"types": "./types/ojiepermana-angular-component-hover-card.d.ts",
|
|
151
|
+
"default": "./fesm2022/ojiepermana-angular-component-hover-card.mjs"
|
|
152
|
+
},
|
|
153
|
+
"./icon": {
|
|
154
|
+
"types": "./types/ojiepermana-angular-component-icon.d.ts",
|
|
155
|
+
"default": "./fesm2022/ojiepermana-angular-component-icon.mjs"
|
|
156
|
+
},
|
|
157
|
+
"./input": {
|
|
158
|
+
"types": "./types/ojiepermana-angular-component-input.d.ts",
|
|
159
|
+
"default": "./fesm2022/ojiepermana-angular-component-input.mjs"
|
|
160
|
+
},
|
|
161
|
+
"./input-group": {
|
|
162
|
+
"types": "./types/ojiepermana-angular-component-input-group.d.ts",
|
|
163
|
+
"default": "./fesm2022/ojiepermana-angular-component-input-group.mjs"
|
|
164
|
+
},
|
|
165
|
+
"./input-otp": {
|
|
166
|
+
"types": "./types/ojiepermana-angular-component-input-otp.d.ts",
|
|
167
|
+
"default": "./fesm2022/ojiepermana-angular-component-input-otp.mjs"
|
|
168
|
+
},
|
|
169
|
+
"./item": {
|
|
170
|
+
"types": "./types/ojiepermana-angular-component-item.d.ts",
|
|
171
|
+
"default": "./fesm2022/ojiepermana-angular-component-item.mjs"
|
|
172
|
+
},
|
|
173
|
+
"./kanban": {
|
|
174
|
+
"types": "./types/ojiepermana-angular-component-kanban.d.ts",
|
|
175
|
+
"default": "./fesm2022/ojiepermana-angular-component-kanban.mjs"
|
|
176
|
+
},
|
|
177
|
+
"./kbd": {
|
|
178
|
+
"types": "./types/ojiepermana-angular-component-kbd.d.ts",
|
|
179
|
+
"default": "./fesm2022/ojiepermana-angular-component-kbd.mjs"
|
|
180
|
+
},
|
|
181
|
+
"./label": {
|
|
182
|
+
"types": "./types/ojiepermana-angular-component-label.d.ts",
|
|
183
|
+
"default": "./fesm2022/ojiepermana-angular-component-label.mjs"
|
|
184
|
+
},
|
|
185
|
+
"./menubar": {
|
|
186
|
+
"types": "./types/ojiepermana-angular-component-menubar.d.ts",
|
|
187
|
+
"default": "./fesm2022/ojiepermana-angular-component-menubar.mjs"
|
|
188
|
+
},
|
|
189
|
+
"./native-select": {
|
|
190
|
+
"types": "./types/ojiepermana-angular-component-native-select.d.ts",
|
|
191
|
+
"default": "./fesm2022/ojiepermana-angular-component-native-select.mjs"
|
|
192
|
+
},
|
|
193
|
+
"./navigation-menu": {
|
|
194
|
+
"types": "./types/ojiepermana-angular-component-navigation-menu.d.ts",
|
|
195
|
+
"default": "./fesm2022/ojiepermana-angular-component-navigation-menu.mjs"
|
|
196
|
+
},
|
|
197
|
+
"./pagination": {
|
|
198
|
+
"types": "./types/ojiepermana-angular-component-pagination.d.ts",
|
|
199
|
+
"default": "./fesm2022/ojiepermana-angular-component-pagination.mjs"
|
|
200
|
+
},
|
|
201
|
+
"./pillbox": {
|
|
202
|
+
"types": "./types/ojiepermana-angular-component-pillbox.d.ts",
|
|
203
|
+
"default": "./fesm2022/ojiepermana-angular-component-pillbox.mjs"
|
|
204
|
+
},
|
|
205
|
+
"./popover": {
|
|
206
|
+
"types": "./types/ojiepermana-angular-component-popover.d.ts",
|
|
207
|
+
"default": "./fesm2022/ojiepermana-angular-component-popover.mjs"
|
|
208
|
+
},
|
|
209
|
+
"./progress": {
|
|
210
|
+
"types": "./types/ojiepermana-angular-component-progress.d.ts",
|
|
211
|
+
"default": "./fesm2022/ojiepermana-angular-component-progress.mjs"
|
|
212
|
+
},
|
|
213
|
+
"./radio": {
|
|
214
|
+
"types": "./types/ojiepermana-angular-component-radio.d.ts",
|
|
215
|
+
"default": "./fesm2022/ojiepermana-angular-component-radio.mjs"
|
|
216
|
+
},
|
|
217
|
+
"./resizable": {
|
|
218
|
+
"types": "./types/ojiepermana-angular-component-resizable.d.ts",
|
|
219
|
+
"default": "./fesm2022/ojiepermana-angular-component-resizable.mjs"
|
|
220
|
+
},
|
|
221
|
+
"./scroll-area": {
|
|
222
|
+
"types": "./types/ojiepermana-angular-component-scroll-area.d.ts",
|
|
223
|
+
"default": "./fesm2022/ojiepermana-angular-component-scroll-area.mjs"
|
|
224
|
+
},
|
|
225
|
+
"./select": {
|
|
226
|
+
"types": "./types/ojiepermana-angular-component-select.d.ts",
|
|
227
|
+
"default": "./fesm2022/ojiepermana-angular-component-select.mjs"
|
|
228
|
+
},
|
|
229
|
+
"./separator": {
|
|
230
|
+
"types": "./types/ojiepermana-angular-component-separator.d.ts",
|
|
231
|
+
"default": "./fesm2022/ojiepermana-angular-component-separator.mjs"
|
|
232
|
+
},
|
|
233
|
+
"./sheet": {
|
|
234
|
+
"types": "./types/ojiepermana-angular-component-sheet.d.ts",
|
|
235
|
+
"default": "./fesm2022/ojiepermana-angular-component-sheet.mjs"
|
|
236
|
+
},
|
|
237
|
+
"./skeleton": {
|
|
238
|
+
"types": "./types/ojiepermana-angular-component-skeleton.d.ts",
|
|
239
|
+
"default": "./fesm2022/ojiepermana-angular-component-skeleton.mjs"
|
|
240
|
+
},
|
|
241
|
+
"./slider": {
|
|
242
|
+
"types": "./types/ojiepermana-angular-component-slider.d.ts",
|
|
243
|
+
"default": "./fesm2022/ojiepermana-angular-component-slider.mjs"
|
|
244
|
+
},
|
|
245
|
+
"./spinner": {
|
|
246
|
+
"types": "./types/ojiepermana-angular-component-spinner.d.ts",
|
|
247
|
+
"default": "./fesm2022/ojiepermana-angular-component-spinner.mjs"
|
|
248
|
+
},
|
|
249
|
+
"./switch": {
|
|
250
|
+
"types": "./types/ojiepermana-angular-component-switch.d.ts",
|
|
251
|
+
"default": "./fesm2022/ojiepermana-angular-component-switch.mjs"
|
|
252
|
+
},
|
|
253
|
+
"./table": {
|
|
254
|
+
"types": "./types/ojiepermana-angular-component-table.d.ts",
|
|
255
|
+
"default": "./fesm2022/ojiepermana-angular-component-table.mjs"
|
|
256
|
+
},
|
|
257
|
+
"./tabs": {
|
|
258
|
+
"types": "./types/ojiepermana-angular-component-tabs.d.ts",
|
|
259
|
+
"default": "./fesm2022/ojiepermana-angular-component-tabs.mjs"
|
|
260
|
+
},
|
|
261
|
+
"./textarea": {
|
|
262
|
+
"types": "./types/ojiepermana-angular-component-textarea.d.ts",
|
|
263
|
+
"default": "./fesm2022/ojiepermana-angular-component-textarea.mjs"
|
|
264
|
+
},
|
|
265
|
+
"./timeline": {
|
|
266
|
+
"types": "./types/ojiepermana-angular-component-timeline.d.ts",
|
|
267
|
+
"default": "./fesm2022/ojiepermana-angular-component-timeline.mjs"
|
|
268
|
+
},
|
|
269
|
+
"./toast": {
|
|
270
|
+
"types": "./types/ojiepermana-angular-component-toast.d.ts",
|
|
271
|
+
"default": "./fesm2022/ojiepermana-angular-component-toast.mjs"
|
|
272
|
+
},
|
|
273
|
+
"./toggle": {
|
|
274
|
+
"types": "./types/ojiepermana-angular-component-toggle.d.ts",
|
|
275
|
+
"default": "./fesm2022/ojiepermana-angular-component-toggle.mjs"
|
|
276
|
+
},
|
|
277
|
+
"./toggle-group": {
|
|
278
|
+
"types": "./types/ojiepermana-angular-component-toggle-group.d.ts",
|
|
279
|
+
"default": "./fesm2022/ojiepermana-angular-component-toggle-group.mjs"
|
|
280
|
+
},
|
|
281
|
+
"./tooltip": {
|
|
282
|
+
"types": "./types/ojiepermana-angular-component-tooltip.d.ts",
|
|
283
|
+
"default": "./fesm2022/ojiepermana-angular-component-tooltip.mjs"
|
|
284
|
+
},
|
|
285
|
+
"./utils": {
|
|
286
|
+
"types": "./types/ojiepermana-angular-component-utils.d.ts",
|
|
287
|
+
"default": "./fesm2022/ojiepermana-angular-component-utils.mjs"
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
"type": "module"
|
|
291
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Pagination
|
|
2
|
+
|
|
3
|
+
Compact page navigation with previous and next controls, windowed page numbers, optional icon-only mode, and localized labels.
|
|
4
|
+
|
|
5
|
+
Use Pagination when a feature page needs to move through a paged API result, a dense table footer, or a navigable list of routes or guides.
|
|
6
|
+
|
|
7
|
+
## Import
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { PaginationComponent } from '@ojiepermana/angular-component/pagination';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Structure
|
|
14
|
+
|
|
15
|
+
The Angular package intentionally wraps the shadcn multi-part composition in a single standalone primitive.
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
Pagination
|
|
19
|
+
├── previous button
|
|
20
|
+
├── page buttons and ellipsis
|
|
21
|
+
└── next button
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Basic usage
|
|
25
|
+
|
|
26
|
+
Bind `[(page)]` to a signal and keep your collection, router state, or server request outside the primitive.
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<Pagination [(page)]="currentPage" [total]="totalPages" [siblingCount]="1" (pageChange)="load($event)" />
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Common patterns
|
|
33
|
+
|
|
34
|
+
### Navigation data
|
|
35
|
+
|
|
36
|
+
Keep the rendered collection in sync with the pager through `computed()`.
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
const navigationPage = signal(1);
|
|
40
|
+
const pageSize = 4;
|
|
41
|
+
|
|
42
|
+
const navigationItems = [
|
|
43
|
+
{ title: 'Introduction', route: '/docs/introduction' },
|
|
44
|
+
{ title: 'Accordion', route: '/ui/shadcn/accordion' },
|
|
45
|
+
{ title: 'Button', route: '/ui/shadcn/button' },
|
|
46
|
+
{ title: 'Input', route: '/ui/shadcn/input' },
|
|
47
|
+
// ...more items
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
const totalPages = Math.ceil(navigationItems.length / pageSize);
|
|
51
|
+
const visibleItems = computed(() => {
|
|
52
|
+
const start = (navigationPage() - 1) * pageSize;
|
|
53
|
+
return navigationItems.slice(start, start + pageSize);
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Icons only
|
|
58
|
+
|
|
59
|
+
Hide page numbers and visible labels when the pager sits next to a dense table or feed footer.
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<Pagination
|
|
63
|
+
[(page)]="compactPage"
|
|
64
|
+
[total]="9"
|
|
65
|
+
[showPageNumbers]="false"
|
|
66
|
+
previousText=""
|
|
67
|
+
nextText=""
|
|
68
|
+
class="mx-0 w-auto" />
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### RTL and translated labels
|
|
72
|
+
|
|
73
|
+
Translate the previous and next text and provide a page formatter when locale-specific numerals should appear.
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
const arabicDigits = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];
|
|
77
|
+
const toArabicNumerals = (page: number): string =>
|
|
78
|
+
page
|
|
79
|
+
.toString()
|
|
80
|
+
.split('')
|
|
81
|
+
.map((digit) => arabicDigits[Number(digit)] ?? digit)
|
|
82
|
+
.join('');
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<section dir="rtl" lang="ar" class="text-right">
|
|
87
|
+
<Pagination
|
|
88
|
+
[(page)]="rtlPage"
|
|
89
|
+
[total]="7"
|
|
90
|
+
previousText="السابق"
|
|
91
|
+
nextText="التالي"
|
|
92
|
+
previousAriaLabel="الانتقال إلى الصفحة السابقة"
|
|
93
|
+
nextAriaLabel="الانتقال إلى الصفحة التالية"
|
|
94
|
+
[formatPageLabel]="toArabicNumerals" />
|
|
95
|
+
</section>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## API reference
|
|
99
|
+
|
|
100
|
+
| Input | Type | Default | Description |
|
|
101
|
+
| ------------------- | -------------------------- | ------------------------- | ---------------------------------------------------------------------- |
|
|
102
|
+
| `page` (model) | `number` | `1` | Two-way bound current page. |
|
|
103
|
+
| `total` | `number` | `1` | Total number of pages available. |
|
|
104
|
+
| `siblingCount` | `number` | `1` | Page buttons shown on either side of the active page. |
|
|
105
|
+
| `showPageNumbers` | `boolean` | `true` | Hide numbered page buttons for compact previous and next only layouts. |
|
|
106
|
+
| `previousText` | `string` | `'Previous'` | Visible previous label. Set to an empty string for icon-only mode. |
|
|
107
|
+
| `nextText` | `string` | `'Next'` | Visible next label. Set to an empty string for icon-only mode. |
|
|
108
|
+
| `previousAriaLabel` | `string` | `'Go to previous page'` | Accessible name for the previous button. |
|
|
109
|
+
| `nextAriaLabel` | `string` | `'Go to next page'` | Accessible name for the next button. |
|
|
110
|
+
| `formatPageLabel` | `(page: number) => string` | `page => page.toString()` | Formats the rendered page label. |
|
|
111
|
+
| `class` | `string` | `''` | Extra container classes. |
|
|
112
|
+
|
|
113
|
+
| Output | Payload | Description |
|
|
114
|
+
| ------------ | -------- | ---------------------------------------------------- |
|
|
115
|
+
| `pageChange` | `number` | Emits the next page number after a user interaction. |
|
|
116
|
+
|
|
117
|
+
## Styling and theming
|
|
118
|
+
|
|
119
|
+
Pagination reuses `buttonVariants`, so the previous and next controls plus numbered page buttons inherit the same shape, focus ring, and theme tokens as the Button primitive.
|
|
120
|
+
|
|
121
|
+
Pass `class` to adjust width and alignment, for example `mx-0 w-auto` in a table footer or `justify-start` when the pager should align to the left edge of a card.
|
|
122
|
+
|
|
123
|
+
## Accessibility
|
|
124
|
+
|
|
125
|
+
- The root renders as `<nav role="navigation" aria-label="pagination">`.
|
|
126
|
+
- The active page is marked with `aria-current="page"`.
|
|
127
|
+
- Previous and next disable natively at the start and end of the available range.
|
|
128
|
+
- Ellipses are `aria-hidden="true"`.
|
|
129
|
+
- When visible text is removed for icon-only mode, keep meaningful aria labels on the previous and next buttons.
|
|
130
|
+
|
|
131
|
+
## Keyboard interactions
|
|
132
|
+
|
|
133
|
+
- Tab moves focus through the previous button, page buttons, and next button in DOM order.
|
|
134
|
+
- Enter and Space activate the focused button through native button semantics.
|
|
135
|
+
|
|
136
|
+
## Angular notes
|
|
137
|
+
|
|
138
|
+
- Keep the paged collection outside the component and derive the visible slice with `computed()`.
|
|
139
|
+
- Import `PaginationComponent` into the standalone feature component that renders the pager.
|
|
140
|
+
- `showPageNumbers`, `previousText`, `nextText`, and `formatPageLabel` are deliberate Angular-specific conveniences that cover the upstream icon-only and RTL guidance without exposing React-style child parts.
|
|
141
|
+
|
|
142
|
+
## Source parity
|
|
143
|
+
|
|
144
|
+
shadcn documents Pagination as several composable parts such as `PaginationLink`, `PaginationPrevious`, and `PaginationNext`. This Angular implementation intentionally collapses that structure into one primitive so route-driven and data-driven pagination can be wired quickly while still matching the upstream previous, next, ellipsis, compact, and RTL behavior.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Pillbox
|
|
2
|
+
|
|
3
|
+
Multi-value selection primitives inspired by Flux Pillbox and implemented with local shadcn-style Angular patterns.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import {
|
|
9
|
+
PillboxComponent,
|
|
10
|
+
PillboxOptionComponent,
|
|
11
|
+
PillboxOptionCreateComponent,
|
|
12
|
+
PillboxOptionEmptyComponent,
|
|
13
|
+
PillboxSelectedDirective,
|
|
14
|
+
} from '@ojiepermana/angular-component/pillbox';
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<Pillbox multiple placeholder="Choose tags..." [(ngModel)]="selectedTags">
|
|
21
|
+
<PillboxOption value="design">Design</PillboxOption>
|
|
22
|
+
<PillboxOption value="development">Development</PillboxOption>
|
|
23
|
+
<PillboxOption value="marketing">Marketing</PillboxOption>
|
|
24
|
+
</Pillbox>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Composition
|
|
28
|
+
|
|
29
|
+
- `Pillbox` owns the trigger, selected pills, search state, option filtering, and form control integration.
|
|
30
|
+
- `PillboxOption` projects the visible option content and stores the option value.
|
|
31
|
+
- `ng-template[PillboxSelected]` customizes the rendered selected pill content for an option.
|
|
32
|
+
- `PillboxOptionCreate` emits create requests when the search query is long enough and does not match an existing option.
|
|
33
|
+
- `PillboxOptionEmpty` customizes empty and loading messages.
|
|
34
|
+
|
|
35
|
+
## Inputs
|
|
36
|
+
|
|
37
|
+
### PillboxComponent
|
|
38
|
+
|
|
39
|
+
| Input | Type | Default | Description |
|
|
40
|
+
| ------------------- | ------------------------- | --------------------- | -------------------------------------------------------------------------- |
|
|
41
|
+
| `placeholder` | `string` | `'Choose options...'` | Text shown when nothing is selected. |
|
|
42
|
+
| `searchPlaceholder` | `string` | `'Search...'` | Placeholder for the dropdown search input. |
|
|
43
|
+
| `size` | `'default' \| 'sm'` | `'default'` | Trigger and pill density. |
|
|
44
|
+
| `variant` | `'default' \| 'combobox'` | `'default'` | Use `combobox` to place the search input directly in the trigger. |
|
|
45
|
+
| `multiple` | `boolean` | `false` | Emits an array of selected values when enabled. |
|
|
46
|
+
| `searchable` | `boolean` | `false` | Adds a search input to the dropdown for the default variant. |
|
|
47
|
+
| `filter` | `boolean` | `true` | Enables client-side filtering. Disable it for backend-driven option lists. |
|
|
48
|
+
| `clearable` | `boolean` | `true` | Shows a clear-all control when values are selected. |
|
|
49
|
+
| `disabled` | `boolean` | `false` | Prevents interaction. |
|
|
50
|
+
| `invalid` | `boolean` | `false` | Applies error styling and `aria-invalid`. |
|
|
51
|
+
| `loading` | `boolean` | `false` | Shows loading copy through the empty option when no options match. |
|
|
52
|
+
|
|
53
|
+
## Events
|
|
54
|
+
|
|
55
|
+
| Output | Payload | Description |
|
|
56
|
+
| -------------- | --------- | ------------------------------------------------------------------------- |
|
|
57
|
+
| `valueChange` | `unknown` | Emits the selected array for `multiple` mode or a single value otherwise. |
|
|
58
|
+
| `searchChange` | `string` | Emits whenever the search query changes. |
|
|
59
|
+
| `create` | `string` | Emits the current query from `PillboxOptionCreate`. |
|
|
60
|
+
| `openedChange` | `boolean` | Emits when the option list opens or closes. |
|
|
61
|
+
|
|
62
|
+
## Accessibility
|
|
63
|
+
|
|
64
|
+
- Use a visible label or `aria-label`/`aria-labelledby` on `Pillbox`.
|
|
65
|
+
- Use `multiple` when binding to an array of values.
|
|
66
|
+
- Provide readable option labels; set `label` or `selectedLabel` when custom option content is not textual.
|
|
67
|
+
- Keep create actions explicit and validate new values in the owning form or backend.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Popover
|
|
2
|
+
|
|
3
|
+
Anchored floating panel with CDK overlay. Click the trigger to toggle.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { PopoverTriggerDirective, PopoverContentDirective } from '@ojiepermana/angular-component/popover';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<button Button [PopoverTrigger]="content" side="bottom" align="start">Open</button>
|
|
15
|
+
|
|
16
|
+
<ng-template PopoverContent #content="PopoverContent">
|
|
17
|
+
<div class="w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md">Popover body</div>
|
|
18
|
+
</ng-template>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## API
|
|
22
|
+
|
|
23
|
+
### `PopoverTriggerDirective` (`[PopoverTrigger]`)
|
|
24
|
+
|
|
25
|
+
| Input | Type | Default |
|
|
26
|
+
| ---------------- | ---------------------------------------- | ---------- |
|
|
27
|
+
| `PopoverTrigger` | `PopoverContentDirective` | — |
|
|
28
|
+
| `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` |
|
|
29
|
+
| `align` | `'start' \| 'center' \| 'end'` | `'center'` |
|
|
30
|
+
| `disabled` | `boolean` | `false` |
|
|
31
|
+
|
|
32
|
+
Exposes `isOpen()` signal. Trigger automatically sets `aria-haspopup="dialog"`
|
|
33
|
+
and `aria-expanded` on the host.
|
|
34
|
+
|
|
35
|
+
### `PopoverContentDirective` (`ng-template[PopoverContent]`)
|
|
36
|
+
|
|
37
|
+
Marker directive that exposes the template via `exportAs="PopoverContent"`.
|
|
38
|
+
|
|
39
|
+
## Accessibility
|
|
40
|
+
|
|
41
|
+
- Close on `Escape`.
|
|
42
|
+
- Close on backdrop click.
|
|
43
|
+
- Trigger reflects state via `aria-expanded` and `aria-haspopup`.
|