@ngbase/adk 0.1.0 → 0.1.2

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.
Files changed (244) hide show
  1. package/README.md +1 -1
  2. package/accordion/accordion-item.d.ts +4 -0
  3. package/accordion/public-api.d.ts +1 -1
  4. package/autocomplete/autocomplete.d.ts +2 -2
  5. package/avatar/avatar.d.ts +1 -1
  6. package/breadcrumb/breadcrumb.d.ts +2 -3
  7. package/breadcrumb/public-api.d.ts +1 -1
  8. package/carousel/carousel.d.ts +1 -1
  9. package/chip/chip.d.ts +2 -2
  10. package/datepicker/calendar.d.ts +3 -3
  11. package/datepicker/datepicker.d.ts +2 -2
  12. package/datepicker/time.d.ts +2 -2
  13. package/dialog/dialog.d.ts +1 -1
  14. package/fesm2022/ngbase-adk-accordion.mjs +4 -1
  15. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  16. package/fesm2022/ngbase-adk-autocomplete.mjs +7 -36
  17. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  18. package/fesm2022/ngbase-adk-avatar.mjs +2 -2
  19. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  20. package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
  21. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  22. package/fesm2022/ngbase-adk-carousel.mjs +2 -2
  23. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  24. package/fesm2022/ngbase-adk-chip.mjs +4 -2
  25. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  26. package/fesm2022/ngbase-adk-datepicker.mjs +114 -328
  27. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  28. package/fesm2022/ngbase-adk-dialog.mjs +18 -19
  29. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  30. package/fesm2022/ngbase-adk-form-field.mjs +2 -156
  31. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  32. package/fesm2022/ngbase-adk-menu.mjs +15 -30
  33. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  34. package/fesm2022/ngbase-adk-otp.mjs +164 -0
  35. package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
  36. package/fesm2022/ngbase-adk-pagination.mjs +8 -65
  37. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  38. package/fesm2022/ngbase-adk-popover.mjs +423 -548
  39. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  40. package/fesm2022/ngbase-adk-portal.mjs +0 -1
  41. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-radio.mjs +2 -16
  43. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-resizable.mjs +10 -43
  45. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-select.mjs +67 -173
  47. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  48. package/fesm2022/ngbase-adk-sheet.mjs +95 -0
  49. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
  50. package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
  51. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  52. package/fesm2022/ngbase-adk-slider.mjs +9 -23
  53. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  54. package/fesm2022/ngbase-adk-sonner.mjs +13 -63
  55. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  56. package/fesm2022/ngbase-adk-stepper.mjs +16 -114
  57. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  58. package/fesm2022/ngbase-adk-switch.mjs +2 -2
  59. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  60. package/fesm2022/ngbase-adk-table.mjs +10 -30
  61. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  62. package/fesm2022/ngbase-adk-tabs.mjs +14 -94
  63. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  64. package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
  65. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  66. package/fesm2022/ngbase-adk-tour.mjs +1 -1
  67. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  68. package/fesm2022/ngbase-adk-tree.mjs +11 -43
  69. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  70. package/form-field/public-api.d.ts +0 -1
  71. package/menu/menu-trigger.d.ts +2 -2
  72. package/menu/menu.d.ts +6 -6
  73. package/otp/index.d.ts +5 -0
  74. package/{form-field → otp}/otp.d.ts +1 -1
  75. package/otp/public-api.d.ts +1 -0
  76. package/package.json +22 -13
  77. package/pagination/pagination.d.ts +5 -1
  78. package/popover/popover-arrow.ng.d.ts +34 -0
  79. package/popover/popover.d.ts +12 -3
  80. package/popover/popover.service.d.ts +5 -4
  81. package/popover/public-api.d.ts +1 -0
  82. package/popover/utils.d.ts +32 -48
  83. package/portal/dialog-ref.d.ts +0 -1
  84. package/resizable/resizable-group.d.ts +2 -2
  85. package/resizable/resizable.d.ts +2 -2
  86. package/schematics/collection.json +15 -0
  87. package/schematics/components/files/accordion/accordion.ts.template +53 -0
  88. package/schematics/components/files/accordion/index.ts.template +5 -0
  89. package/schematics/components/files/alert/alert.ts.template +62 -0
  90. package/schematics/components/files/alert/index.ts.template +1 -0
  91. package/schematics/components/files/autocomplete/autocomplete.ts.template +44 -0
  92. package/schematics/components/files/autocomplete/index.ts.template +5 -0
  93. package/schematics/components/files/avatar/avatar.ts.template +31 -0
  94. package/schematics/components/files/avatar/index.ts.template +1 -0
  95. package/schematics/components/files/badge/badge.ts.template +11 -0
  96. package/schematics/components/files/badge/index.ts.template +1 -0
  97. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +49 -0
  98. package/schematics/components/files/breadcrumb/index.ts.template +1 -0
  99. package/schematics/components/files/button/button.ts.template +29 -0
  100. package/schematics/components/files/button/index.ts.template +5 -0
  101. package/schematics/components/files/card/card.ts.template +11 -0
  102. package/schematics/components/files/card/index.ts.template +5 -0
  103. package/schematics/components/files/carousel/carousel.ts.template +44 -0
  104. package/schematics/components/files/carousel/index.ts.template +1 -0
  105. package/schematics/components/files/checkbox/checkbox.ts.template +46 -0
  106. package/schematics/components/files/checkbox/focus-style.directive.ts.template +12 -0
  107. package/schematics/components/files/checkbox/index.ts.template +6 -0
  108. package/schematics/components/files/chip/chip.ts.template +36 -0
  109. package/schematics/components/files/chip/index.ts.template +1 -0
  110. package/schematics/components/files/color-picker/color-picker.ts.template +104 -0
  111. package/schematics/components/files/color-picker/index.ts.template +5 -0
  112. package/schematics/components/files/command/command.ts.template +82 -0
  113. package/schematics/components/files/command/index.ts.template +1 -0
  114. package/schematics/components/files/datepicker/calendar.ts.template +117 -0
  115. package/schematics/components/files/datepicker/datepicker.ts.template +58 -0
  116. package/schematics/components/files/datepicker/index.ts.template +2 -0
  117. package/schematics/components/files/datepicker/time.ts.template +54 -0
  118. package/schematics/components/files/dialog/dialog.ts.template +89 -0
  119. package/schematics/components/files/dialog/index.ts.template +5 -0
  120. package/schematics/components/files/drawer/drawer.ts.template +104 -0
  121. package/schematics/components/files/drawer/index.ts.template +5 -0
  122. package/schematics/components/files/form-field/form-field.ts.template +111 -0
  123. package/schematics/components/files/form-field/index.ts.template +6 -0
  124. package/schematics/components/files/form-field/input-style.directive.ts.template +11 -0
  125. package/schematics/components/files/hover-card/hover-card.ts.template +13 -0
  126. package/schematics/components/files/hover-card/index.ts.template +5 -0
  127. package/schematics/components/files/icon/icon.ts.template +16 -0
  128. package/schematics/components/files/icon/index.ts.template +1 -0
  129. package/schematics/components/files/inline-edit/index.ts.template +1 -0
  130. package/schematics/components/files/inline-edit/inline-edit.ts.template +24 -0
  131. package/schematics/components/files/keys/index.ts.template +5 -0
  132. package/schematics/components/files/keys/key.ts.template +35 -0
  133. package/schematics/components/files/list/index.ts.template +5 -0
  134. package/schematics/components/files/list/list.ts.template +28 -0
  135. package/schematics/components/files/mask/index.ts.template +1 -0
  136. package/schematics/components/files/mask/mask.ts.template +8 -0
  137. package/schematics/components/files/menu/context-menu.ts.template +14 -0
  138. package/schematics/components/files/menu/index.ts.template +8 -0
  139. package/schematics/components/files/menu/mention.ts.template +14 -0
  140. package/schematics/components/files/menu/menu.ts.template +37 -0
  141. package/schematics/components/files/menu/navigation-menu.ts.template +8 -0
  142. package/schematics/components/files/otp/index.ts.template +5 -0
  143. package/schematics/components/files/otp/otp.ts.template +37 -0
  144. package/schematics/components/files/pagination/index.ts.template +1 -0
  145. package/schematics/components/files/pagination/pagination.ts.template +71 -0
  146. package/schematics/components/files/picasa/index.ts.template +1 -0
  147. package/schematics/components/files/picasa/picasa-base.component.ts.template +80 -0
  148. package/schematics/components/files/picasa/picasa.component.ts.template +57 -0
  149. package/schematics/components/files/picasa/picasa.directive.ts.template +41 -0
  150. package/schematics/components/files/picasa/picase.service.ts.template +24 -0
  151. package/schematics/components/files/popover/index.ts.template +1 -0
  152. package/schematics/components/files/popover/popover.ts.template +64 -0
  153. package/schematics/components/files/progress/index.ts.template +5 -0
  154. package/schematics/components/files/progress/progress.ts.template +14 -0
  155. package/schematics/components/files/radio/index.ts.template +5 -0
  156. package/schematics/components/files/radio/radio.ts.template +35 -0
  157. package/schematics/components/files/resizable/index.ts.template +5 -0
  158. package/schematics/components/files/resizable/resizable.ts.template +56 -0
  159. package/schematics/components/files/scroll-area/index.ts.template +1 -0
  160. package/schematics/components/files/scroll-area/scroll-area.ts.template +40 -0
  161. package/schematics/components/files/select/index.ts.template +8 -0
  162. package/schematics/components/files/select/list-selection.ts.template +15 -0
  163. package/schematics/components/files/select/option.ts.template +35 -0
  164. package/schematics/components/files/select/select-input.ts.template +21 -0
  165. package/schematics/components/files/select/select.ts.template +96 -0
  166. package/schematics/components/files/selectable/index.ts.template +1 -0
  167. package/schematics/components/files/selectable/selectable.ts.template +34 -0
  168. package/schematics/components/files/separator/index.ts.template +5 -0
  169. package/schematics/components/files/separator/separator.ts.template +19 -0
  170. package/schematics/components/files/sheet/index.ts.template +5 -0
  171. package/schematics/components/files/sheet/sheet.ts.template +69 -0
  172. package/schematics/components/files/sidenav/index.ts.template +1 -0
  173. package/schematics/components/files/sidenav/sidenav.ts.template +48 -0
  174. package/schematics/components/files/skeleton/index.ts.template +1 -0
  175. package/schematics/components/files/skeleton/skeleton.ts.template +15 -0
  176. package/schematics/components/files/slider/index.ts.template +5 -0
  177. package/schematics/components/files/slider/slider.ts.template +35 -0
  178. package/schematics/components/files/sonner/index.ts.template +5 -0
  179. package/schematics/components/files/sonner/sonner.ts.template +59 -0
  180. package/schematics/components/files/spinner/index.ts.template +1 -0
  181. package/schematics/components/files/spinner/spinner.ts.template +79 -0
  182. package/schematics/components/files/stepper/index.ts.template +1 -0
  183. package/schematics/components/files/stepper/stepper.ts.template +88 -0
  184. package/schematics/components/files/switch/index.ts.template +5 -0
  185. package/schematics/components/files/switch/switch.ts.template +29 -0
  186. package/schematics/components/files/table/body-cell.ts.template +19 -0
  187. package/schematics/components/files/table/body-row.ts.template +21 -0
  188. package/schematics/components/files/table/column.ts.template +8 -0
  189. package/schematics/components/files/table/head-cell.ts.template +19 -0
  190. package/schematics/components/files/table/head-row.ts.template +27 -0
  191. package/schematics/components/files/table/index.ts.template +26 -0
  192. package/schematics/components/files/table/table.ts.template +20 -0
  193. package/schematics/components/files/tabs/index.ts.template +5 -0
  194. package/schematics/components/files/tabs/tab.ts.template +92 -0
  195. package/schematics/components/files/theme/index.ts.template +2 -0
  196. package/schematics/components/files/theme/theme-button.component.ts.template +26 -0
  197. package/schematics/components/files/theme/theme.service.ts.template +33 -0
  198. package/schematics/components/files/toggle/index.ts.template +5 -0
  199. package/schematics/components/files/toggle/toggle.ts.template +13 -0
  200. package/schematics/components/files/toggle-group/index.ts.template +5 -0
  201. package/schematics/components/files/toggle-group/toggle-group.ts.template +25 -0
  202. package/schematics/components/files/tooltip/index.ts.template +5 -0
  203. package/schematics/components/files/tooltip/tooltip.ts.template +45 -0
  204. package/schematics/components/files/tour/index.ts.template +1 -0
  205. package/schematics/components/files/tour/tour.ts.template +19 -0
  206. package/schematics/components/files/tree/index.ts.template +1 -0
  207. package/schematics/components/files/tree/tree.ts.template +66 -0
  208. package/schematics/components/index.d.ts +3 -0
  209. package/schematics/components/index.js +17 -0
  210. package/schematics/components/index.js.map +1 -0
  211. package/schematics/components/index.ts +29 -0
  212. package/schematics/components/schema.d.ts +6 -0
  213. package/schematics/components/schema.js +3 -0
  214. package/schematics/components/schema.js.map +1 -0
  215. package/schematics/components/schema.json +145 -0
  216. package/schematics/components/schema.ts +6 -0
  217. package/select/option-group.d.ts +3 -3
  218. package/select/select.d.ts +2 -2
  219. package/sheet/index.d.ts +5 -0
  220. package/sheet/public-api.d.ts +2 -0
  221. package/sheet/sheet.d.ts +26 -0
  222. package/sheet/sheet.service.d.ts +13 -0
  223. package/sidenav/public-api.d.ts +1 -1
  224. package/sidenav/sidenav.d.ts +1 -1
  225. package/slider/public-api.d.ts +1 -1
  226. package/slider/slider.d.ts +5 -5
  227. package/sonner/sonner.d.ts +2 -1
  228. package/stepper/animation.d.ts +1 -1
  229. package/stepper/step.d.ts +1 -1
  230. package/stepper/stepper.d.ts +2 -2
  231. package/switch/switch.d.ts +1 -1
  232. package/table/body-row.d.ts +3 -3
  233. package/table/head-row.d.ts +3 -3
  234. package/table/table.d.ts +1 -1
  235. package/tabs/tab-group.d.ts +4 -4
  236. package/tabs/tab.d.ts +2 -2
  237. package/tooltip/public-api.d.ts +1 -1
  238. package/tooltip/tooltip.d.ts +5 -1
  239. package/tooltip/tooltip.directive.d.ts +1 -1
  240. package/tooltip/tooltip.service.d.ts +4 -2
  241. package/tour/tour.service.d.ts +3 -4
  242. package/tree/public-api.d.ts +2 -2
  243. package/tree/tree-node.d.ts +2 -2
  244. package/tree/tree.d.ts +2 -2
@@ -1,10 +1,24 @@
1
- import { PopoverOptions, PopoverPosition } from './popover.service';
1
+ export interface PopoverUtilConfig {
2
+ offset?: number;
3
+ sideOffset?: number;
4
+ smoothScroll?: boolean;
5
+ position?: Position | OverlayPosition;
6
+ client?: {
7
+ x: number;
8
+ y: number;
9
+ w: number;
10
+ h: number;
11
+ } | null;
12
+ target: HTMLElement;
13
+ el?: HTMLElement;
14
+ }
2
15
  export interface Rect {
3
16
  top: number;
4
17
  left: number;
5
18
  width: number;
6
19
  height: number;
7
20
  }
21
+ export type OverlayPosition = 'top' | 'bottom' | 'left' | 'right' | 'rs' | 're' | 'ls' | 'le' | 'tl' | 'tr' | 'bl' | 'br';
8
22
  export declare enum Position {
9
23
  Top = "top",
10
24
  Bottom = "bottom",
@@ -13,44 +27,15 @@ export declare enum Position {
13
27
  TopLeft = "tl",
14
28
  TopRight = "tr",
15
29
  BottomLeft = "bl",
16
- BottomRight = "br"
17
- }
18
- export interface ConfigObj {
19
- top: number;
20
- left: number;
21
- width: number;
22
- height: number;
23
- elWidth: number;
24
- elHeight: number;
25
- offset: number;
26
- priority: PopoverPosition;
27
- position: PopoverPosition;
28
- windowWidth: number;
29
- windowHeight: number;
30
- scrollWidth: number;
31
- }
32
- export interface OverflowData {
33
- top: boolean;
34
- bottom: boolean;
35
- left: boolean;
36
- right: boolean;
37
- leftSide: boolean;
38
- rightSide: boolean;
39
- any: boolean;
40
- preferredHorizontal: 'left' | 'right' | undefined;
41
- preferredVertical: 'top' | 'bottom' | undefined;
42
- overflowAmount: {
43
- top: number;
44
- bottom: number;
45
- left: number;
46
- right: number;
47
- leftSide: number;
48
- rightSide: number;
49
- };
30
+ BottomRight = "br",
31
+ RightStart = "rs",
32
+ RightEnd = "re",
33
+ LeftStart = "ls",
34
+ LeftEnd = "le"
50
35
  }
51
36
  export interface PositionResult {
52
- top: number;
53
- left: number;
37
+ top?: number;
38
+ left?: number;
54
39
  bottom?: number;
55
40
  right?: number;
56
41
  position: Position;
@@ -61,25 +46,24 @@ export declare class PopoverPositioner {
61
46
  private config;
62
47
  private windowDimensions;
63
48
  private scrollWidth;
64
- private overflow;
65
- private elRect;
66
49
  private offset;
67
- constructor(config: PopoverOptions, windowDimensions: {
50
+ private sideOffset;
51
+ private elementRect;
52
+ constructor(config: PopoverUtilConfig, windowDimensions: {
68
53
  width: number;
69
54
  height: number;
70
- }, scrollWidth: number);
55
+ }, scrollWidth?: number);
71
56
  calculatePosition(): PositionResult;
72
57
  private getTargetRect;
73
58
  private getElementRect;
74
- private getInitialPosition;
75
- private getCoordinatesForPosition;
76
- private adjustForOverflow;
77
- private checkOverflow;
78
- getAlternativePosition(position: Position, overflow: OverflowData): Position;
59
+ private findBestPosition;
60
+ private getAvailableSpace;
61
+ private positionOverflows;
62
+ private getOverflowAmount;
63
+ private getPositionWithLeastOverflow;
79
64
  private finalizePosition;
80
- private getOverallOffset;
81
65
  }
82
- export declare function tooltipPosition(config: PopoverOptions, windowDimensions?: {
66
+ export declare function tooltipPosition(config: PopoverUtilConfig, windowDimensions?: {
83
67
  width: number;
84
68
  height: number;
85
69
  }, scrollWidth?: number): PositionResult;
@@ -54,7 +54,6 @@ export declare class DialogOptions<T = any> {
54
54
  maxHeight?: string;
55
55
  classNames?: string[];
56
56
  header?: boolean;
57
- overrideLowerDialog?: boolean;
58
57
  disableClose?: boolean | undefined;
59
58
  ayId?: string;
60
59
  focusTrap?: boolean | undefined;
@@ -14,9 +14,9 @@ export declare class NgbResizableGroup {
14
14
  start(): void;
15
15
  end(): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbResizableGroup, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<NgbResizableGroup, "[ngbResizableGroup]", ["ngbResizableGroup"], { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, {}, ["panels"], ["[ngbResizable]"], true, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbResizableGroup, "[ngbResizableGroup]", ["ngbResizableGroup"], { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; }, {}, ["panels"], never, true, never>;
18
18
  }
19
- export declare function provideResizableGroup(resizableGroup: typeof NgbResizableGroup): {
19
+ export declare function aliasResizableGroup(resizableGroup: typeof NgbResizableGroup): {
20
20
  provide: typeof NgbResizableGroup;
21
21
  useExisting: typeof NgbResizableGroup;
22
22
  };
@@ -42,9 +42,9 @@ export declare class NgbResizable {
42
42
  private updateFlex;
43
43
  updateElementSize(str: string): void;
44
44
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbResizable, never>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<NgbResizable, "[ngbResizable]", ["ngbResizable"], { "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
45
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbResizable, "[ngbResizable]", ["ngbResizable"], { "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
46
46
  }
47
- export declare function provideResizable(resizable: typeof NgbResizable): {
47
+ export declare function aliasResizable(resizable: typeof NgbResizable): {
48
48
  provide: typeof NgbResizable;
49
49
  useExisting: typeof NgbResizable;
50
50
  };
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "ng-add": {
5
+ "description": "Add my library to the project.",
6
+ "factory": "./ng-add/index#ngAdd",
7
+ "schema": "./ng-add/schema.json"
8
+ },
9
+ "ui": {
10
+ "description": "Add an component to the project.",
11
+ "factory": "./components/index#myGenerator",
12
+ "schema": "./components/schema.json"
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
+ import {
3
+ aliasAccordion,
4
+ NgbAccordion,
5
+ NgbAccordionContent,
6
+ NgbAccordionGroup,
7
+ NgbAccordionHeader,
8
+ slideAnimation,
9
+ } from '@ngbase/adk/accordion';
10
+
11
+ @Component({
12
+ selector: '<%= name %>-accordion-group',
13
+ changeDetection: ChangeDetectionStrategy.OnPush,
14
+ hostDirectives: [{ directive: NgbAccordionGroup, inputs: ['multiple'] }],
15
+ template: `<ng-content />`,
16
+ host: {
17
+ class: 'block rounded-lg border bg-foreground',
18
+ },
19
+ })
20
+ export class AccordionGroup {}
21
+
22
+ @Component({
23
+ selector: '<%= name %>-accordion',
24
+ exportAs: '<%= name %>Accordion',
25
+ changeDetection: ChangeDetectionStrategy.OnPush,
26
+ providers: [aliasAccordion(Accordion)],
27
+ imports: [NgbAccordionContent],
28
+ template: `
29
+ <ng-content select="[<%= name %>AccordionHeader]" />
30
+ @if (expanded()) {
31
+ <div ngbAccordionContent [@slide] class="overflow-hidden">
32
+ <div class="px-3 pb-4 text-muted">
33
+ <ng-content />
34
+ </div>
35
+ </div>
36
+ }
37
+ `,
38
+ host: {
39
+ class: 'block will-change-auto [&:not(:last-child)]:border-b',
40
+ },
41
+ animations: [slideAnimation],
42
+ })
43
+ export class Accordion extends NgbAccordion {}
44
+
45
+ @Directive({
46
+ selector: '[<%= name %>AccordionHeader]',
47
+ hostDirectives: [NgbAccordionHeader],
48
+ host: {
49
+ class:
50
+ 'flex items-center w-full py-3 px-3 aria-disabled:cursor-not-allowed aria-disabled:opacity-50',
51
+ },
52
+ })
53
+ export class AccordionHeader {}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of accordion
3
+ */
4
+
5
+ export * from './accordion';
@@ -0,0 +1,62 @@
1
+ import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
2
+ import { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';
3
+ import { Button, ButtonVariant } from '<%= basepath %>/button';
4
+ import { dialogPortal } from '<%= basepath %>/dialog';
5
+
6
+ export interface AlertOptions {
7
+ title?: string;
8
+ description?: string;
9
+ actions?: {
10
+ text: string;
11
+ type?: ButtonVariant;
12
+ handler: (fn: VoidFunction) => any;
13
+ }[];
14
+ }
15
+
16
+ export function alertPortal() {
17
+ const base = dialogPortal();
18
+
19
+ function open<T>(opt: AlertOptions, comp?: DialogInput<T>) {
20
+ const options: DialogOptions = {
21
+ ...new DialogOptions(),
22
+ data: opt,
23
+ title: opt.title,
24
+ width: '32rem',
25
+ maxWidth: '95vw',
26
+ disableClose: true,
27
+ header: true,
28
+ focusTrap: true,
29
+ };
30
+
31
+ const diaRef = base.open(comp || Alert, options);
32
+
33
+ return diaRef;
34
+ }
35
+
36
+ function closeAll() {
37
+ base.closeAll();
38
+ }
39
+ return { open, closeAll };
40
+ }
41
+
42
+ @Component({
43
+ selector: '<%= name %>-alert',
44
+ changeDetection: ChangeDetectionStrategy.OnPush,
45
+ imports: [Button],
46
+ template: `
47
+ <h4 class="mb-2 text-base font-bold">{{ data?.title }}</h4>
48
+ <p class="text-muted-foreground pb-3">{{ data?.description }}</p>
49
+ <div class="flex justify-end gap-4 pt-1">
50
+ @for (action of data?.actions; track action) {
51
+ <button [<%= name %>Button]="action.type || 'primary'" (click)="action.handler(diaRef.close)">
52
+ {{ action.text }}
53
+ </button>
54
+ }
55
+ </div>
56
+ `,
57
+ })
58
+ export class Alert {
59
+ diaRef = inject<DialogRef<AlertOptions>>(DialogRef);
60
+
61
+ data = this.diaRef.options?.data;
62
+ }
@@ -0,0 +1 @@
1
+ export * from './alert';
@@ -0,0 +1,44 @@
1
+ import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
+ import { NgbAutocomplete, NgbAutocompleteInput, aliasAutocomplete } from '@ngbase/adk/autocomplete';
3
+ import { NgbSelectOptionGroup } from '@ngbase/adk/select';
4
+
5
+ @Component({
6
+ selector: '<%= name %>-autocomplete',
7
+ changeDetection: ChangeDetectionStrategy.OnPush,
8
+ providers: [aliasAutocomplete(Autocomplete)],
9
+ imports: [NgbSelectOptionGroup],
10
+ template: `
11
+ <ul #container class="readonly !flex w-full flex-wrap gap-2" (click)="prevent($event)">
12
+ <ng-content select="<%= name %>-chip, <%= name %>-chip-group" />
13
+
14
+ <li class="flex min-w-8 flex-1 items-center" (click)="open()">
15
+ <ng-content select="input" />
16
+ </li>
17
+ </ul>
18
+ <ng-template #optionsTemplate>
19
+ <div #optionsGroup ngbSelectOptionGroup class="p-1">
20
+ <ng-content />
21
+ </div>
22
+ </ng-template>
23
+ `,
24
+ host: {
25
+ class: 'inline-flex',
26
+ },
27
+ })
28
+ export class Autocomplete<T> extends NgbAutocomplete<T> {}
29
+
30
+ @Directive({
31
+ selector: '[<%= name %>AutocompleteInput]',
32
+ exportAs: '<%= name %>AutocompleteInput',
33
+ hostDirectives: [
34
+ {
35
+ directive: NgbAutocompleteInput,
36
+ inputs: ['options', 'filterFn'],
37
+ outputs: ['ngbAutocompleteInput: <%= name %>AutocompleteInput'],
38
+ },
39
+ ],
40
+ host: {
41
+ class: 'w-full bg-transparent shadow-none outline-none',
42
+ },
43
+ })
44
+ export class AutocompleteInput<T> {}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of autocomplete
3
+ */
4
+
5
+ export * from './autocomplete';
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { NgbAvatar, NgbAvatarGroup, aliasAvatar } from '@ngbase/adk/avatar';
3
+
4
+ @Component({
5
+ selector: '<%= name %>-avatar-group',
6
+ changeDetection: ChangeDetectionStrategy.OnPush,
7
+ hostDirectives: [{ directive: NgbAvatarGroup, inputs: ['reverse', 'left'] }],
8
+ template: `<ng-content select="<%= name %>-avatar,[<%= name %>Avatar]" />`,
9
+ host: {
10
+ class: 'flex flex-row',
11
+ },
12
+ })
13
+ export class AvatarGroup {}
14
+
15
+ @Component({
16
+ selector: '<%= name %>-avatar, [<%= name %>Avatar]',
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ providers: [aliasAvatar(Avatar)],
19
+ template: `
20
+ @if (src(); as img) {
21
+ <img [src]="img" alt="avatar" class="h-full max-h-full max-w-full" />
22
+ } @else {
23
+ <ng-content>{{ nameChar() }}</ng-content>
24
+ }
25
+ `,
26
+ host: {
27
+ class:
28
+ 'inline-flex aspect-square rounded-full overflow-hidden border-2 border-foreground relative bg-background text-muted items-center justify-center',
29
+ },
30
+ })
31
+ export class Avatar extends NgbAvatar {}
@@ -0,0 +1 @@
1
+ export * from './avatar';
@@ -0,0 +1,11 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: '<%= name %>-badge, [<%= name %>Badge]',
5
+ changeDetection: ChangeDetectionStrategy.OnPush,
6
+ template: `<ng-content />`,
7
+ host: {
8
+ class: 'inline-block bg-muted-background rounded-full px-2 py-1 text-xs font-semibold',
9
+ },
10
+ })
11
+ export class Badge {}
@@ -0,0 +1 @@
1
+ export * from './badge';
@@ -0,0 +1,49 @@
1
+ import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
+ import { Icon } from '<%= basepath %>/icon';
3
+ import { provideIcons } from '@ng-icons/core';
4
+ import { lucideChevronRight } from '@ng-icons/lucide';
5
+ import {
6
+ aliasBreadcrumb,
7
+ NgbBreadcrumb,
8
+ NgbBreadcrumbLink,
9
+ NgbBreadcrumbs,
10
+ NgbBreadcrumbSeparator,
11
+ NgbBreadcrumbSeparatorAria,
12
+ } from '@ngbase/adk/breadcrumb';
13
+
14
+ @Component({
15
+ selector: '<%= name %>-breadcrumbs',
16
+ changeDetection: ChangeDetectionStrategy.OnPush,
17
+ hostDirectives: [NgbBreadcrumbs],
18
+ template: `<ng-content />`,
19
+ host: {
20
+ class: 'flex items-center gap-2',
21
+ },
22
+ })
23
+ export class Breadcrumbs {}
24
+
25
+ @Component({
26
+ selector: '<%= name %>-breadcrumb',
27
+ changeDetection: ChangeDetectionStrategy.OnPush,
28
+ providers: [aliasBreadcrumb(Breadcrumb)],
29
+ viewProviders: [provideIcons({ lucideChevronRight })],
30
+ imports: [Icon, NgbBreadcrumbLink, NgbBreadcrumbSeparatorAria],
31
+ template: `
32
+ <a class='hover:text-primary aria-[current="page"]:text-primary' ngbBreadcrumbLink>
33
+ <ng-content />
34
+ </a>
35
+ @if (!active()) {
36
+ <<%= name %>-icon ngbBreadcrumbSeparatorAria name="lucideChevronRight" class="text-muted" />
37
+ }
38
+ `,
39
+ host: {
40
+ class: 'flex items-center gap-2 text-muted',
41
+ },
42
+ })
43
+ export class Breadcrumb extends NgbBreadcrumb {}
44
+
45
+ @Directive({
46
+ selector: '[<%= name %>BreadcrumbsSeparator]',
47
+ hostDirectives: [NgbBreadcrumbSeparator],
48
+ })
49
+ export class BreadcrumbsSeparator {}
@@ -0,0 +1 @@
1
+ export { Breadcrumbs, BreadcrumbsSeparator, Breadcrumb } from './breadcrumb';
@@ -0,0 +1,29 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import { ɵFocusStyle as FocusStyle } from '<%= basepath %>/checkbox';
3
+
4
+ export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'outline' | 'icon';
5
+
6
+ @Component({
7
+ selector: '[<%= name %>Button]',
8
+ changeDetection: ChangeDetectionStrategy.OnPush,
9
+ hostDirectives: [FocusStyle],
10
+ template: `<ng-content />`,
11
+ host: {
12
+ type: 'button',
13
+ class:
14
+ 'inline-flex items-center justify-center rounded-lg px-4 py-2 border disabled:text-muted disabled:cursor-not-allowed',
15
+ '[class]': `variant() === 'primary'
16
+ ? 'bg-primary text-foreground disabled:bg-background disabled:border-background border-primary'
17
+ : variant() === 'secondary'
18
+ ? 'bg-muted-background disabled:bg-muted-background border-muted-background'
19
+ : variant() === 'ghost' || variant() === 'icon'
20
+ ? '[&:not(:disabled)]:hover:bg-muted-background [&:not(:disabled)]:active:bg-muted-background/50 border-transparent'
21
+ : ' text-primary [&:not(:disabled)]:hover:bg-background [&:not(:disabled)]:active:bg-background/50'`,
22
+ },
23
+ })
24
+ export class Button {
25
+ variant = input('primary', {
26
+ alias: '<%= name %>Button',
27
+ transform: (value: ButtonVariant | '') => value || 'primary',
28
+ });
29
+ }
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of button
3
+ */
4
+
5
+ export * from './button';
@@ -0,0 +1,11 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: '<%= name %>-card, [<%= name %>Card]',
5
+ changeDetection: ChangeDetectionStrategy.OnPush,
6
+ template: `<ng-content />`,
7
+ host: {
8
+ class: 'block rounded-lg border bg-foreground p-4',
9
+ },
10
+ })
11
+ export class Card {}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of card
3
+ */
4
+
5
+ export * from './card';
@@ -0,0 +1,44 @@
1
+ import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
+ import {
3
+ NgbCarousel,
4
+ NgbCarouselButton,
5
+ NgbCarouselContainer,
6
+ NgbCarouselItem,
7
+ NgbCarouselSubContainer,
8
+ aliasCarousel,
9
+ } from '@ngbase/adk/carousel';
10
+
11
+ @Component({
12
+ selector: '<%= name %>-carousel',
13
+ changeDetection: ChangeDetectionStrategy.OnPush,
14
+ providers: [aliasCarousel(Carousel)],
15
+ imports: [NgbCarouselContainer, NgbCarouselSubContainer],
16
+ template: `
17
+ <div class="touch-none overflow-hidden" ngbCarouselContainer>
18
+ <div ngbCarouselSubContainer class="relative -ml-4 flex">
19
+ <ng-content select="[<%= name %>CarouselItem]" />
20
+ </div>
21
+ </div>
22
+ <div>
23
+ <ng-content />
24
+ </div>
25
+ `,
26
+ host: {
27
+ class: 'flex flex-col gap-4 relative',
28
+ },
29
+ })
30
+ export class Carousel extends NgbCarousel {}
31
+
32
+ @Directive({
33
+ selector: '[<%= name %>CarouselItem]',
34
+ hostDirectives: [NgbCarouselItem],
35
+ })
36
+ export class CarouselItem {}
37
+
38
+ @Directive({
39
+ selector: '[<%= name %>CarouselButton]',
40
+ hostDirectives: [
41
+ { directive: NgbCarouselButton, inputs: ['ngbCarouselButton: <%= name %>CarouselButton'] },
42
+ ],
43
+ })
44
+ export class CarouselButton {}
@@ -0,0 +1 @@
1
+ export * from './carousel';
@@ -0,0 +1,46 @@
1
+ import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { FocusStyle } from './focus-style.directive';
4
+ import { CheckboxButton, NgbCheckbox } from '@ngbase/adk/checkbox';
5
+
6
+ @Component({
7
+ selector: '<%= name %>-checkbox',
8
+ changeDetection: ChangeDetectionStrategy.OnPush,
9
+ hostDirectives: [
10
+ {
11
+ directive: NgbCheckbox,
12
+ inputs: ['disabled', 'checked', 'indeterminate'],
13
+ outputs: ['checkedChange', 'change'],
14
+ },
15
+ ],
16
+ imports: [FormsModule, FocusStyle, CheckboxButton],
17
+ template: `
18
+ <button
19
+ <%= name %>FocusStyle
20
+ ngbCheckboxButton
21
+ class="custom-checkbox relative flex h-4 w-4 flex-none items-center justify-center rounded border border-primary transition-colors"
22
+ [class]="checkbox.disabled() ? '!border-muted bg-muted' : path() ? 'bg-primary' : ''"
23
+ >
24
+ @if (path(); as d) {
25
+ <svg class="h-full w-full text-foreground" viewBox="0 0 24 24" aria-hidden="true">
26
+ <path [attr.d]="d" stroke="currentColor" stroke-width="2" fill="none" />
27
+ </svg>
28
+ }
29
+ </button>
30
+ <ng-content />
31
+ `,
32
+ host: {
33
+ class: 'inline-flex items-center gap-2 py-1 disabled:opacity-60 disabled:cursor-not-allowed',
34
+ },
35
+ })
36
+ export class Checkbox {
37
+ readonly checkbox = inject(NgbCheckbox);
38
+
39
+ readonly path = computed(() =>
40
+ this.checkbox.indeterminate()
41
+ ? 'M6 12L18 12'
42
+ : this.checkbox.checked()
43
+ ? 'M20 6L9 17L4 12'
44
+ : '',
45
+ );
46
+ }
@@ -0,0 +1,12 @@
1
+ import { booleanAttribute, Directive, input } from '@angular/core';
2
+
3
+ @Directive({
4
+ selector: '[<%= name %>FocusStyle]',
5
+ host: {
6
+ class: 'outline-none',
7
+ '[class]': `!unfocus() ? 'focus-visible:ring-2 focus:ring-2 focus:ring-offset-2 ring-primary focus-visible:ring-offset-2 ring-offset-background data-[focus]:ring-2 data-[focus]:ring-offset-2 data-[focus]:ring-offset-background data-[focus]:ring-primary' : ''`,
8
+ },
9
+ })
10
+ export class FocusStyle {
11
+ unfocus = input(false, { transform: booleanAttribute });
12
+ }
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of checkbox
3
+ */
4
+
5
+ export * from './checkbox';
6
+ export { FocusStyle as ɵFocusStyle } from './focus-style.directive';
@@ -0,0 +1,36 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { NgbChip, NgbChipGroup, NgbChipRemove, aliasChip } from '@ngbase/adk/chip';
3
+ import { Button } from '<%= basepath %>/button';
4
+ import { Icon } from '<%= basepath %>/icon';
5
+ import { provideIcons } from '@ng-icons/core';
6
+ import { lucideX } from '@ng-icons/lucide';
7
+
8
+ @Component({
9
+ selector: '<%= name %>-chip-group',
10
+ hostDirectives: [NgbChipGroup],
11
+ template: `<ng-content />`,
12
+ })
13
+ export class ChipGroup<T> {}
14
+
15
+ @Component({
16
+ selector: '<%= name %>-chip, [<%= name %>Chip]',
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ providers: [aliasChip(Chip)],
19
+ viewProviders: [provideIcons({ lucideX })],
20
+ imports: [Button, Icon, NgbChipRemove],
21
+ template: `<ng-content />
22
+ @if (removable()) {
23
+ <button
24
+ <%= name %>Button="ghost"
25
+ ngbChipRemove
26
+ class="small -my-2 data-[dir=ltr]:-mr-4 data-[dir=rtl]:-ml-4"
27
+ >
28
+ <<%= name %>-icon name="lucideX" />
29
+ </button>
30
+ }`,
31
+ host: {
32
+ class:
33
+ 'inline-flex items-center bg-muted-background rounded-lg px-2 py-1 text-xs font-medium',
34
+ },
35
+ })
36
+ export class Chip<T = any> extends NgbChip<T> {}
@@ -0,0 +1 @@
1
+ export * from './chip';