@ngbase/adk 0.1.6 → 0.1.8

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 (70) hide show
  1. package/breadcrumb/breadcrumb-separator.d.ts +1 -5
  2. package/breadcrumb/breadcrumb.d.ts +1 -0
  3. package/breadcrumb/breadcrumbs.d.ts +3 -1
  4. package/breadcrumb/public-api.d.ts +1 -1
  5. package/fesm2022/ngbase-adk-breadcrumb.mjs +32 -34
  6. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/ngbase-adk-tabs.mjs +2 -1
  8. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  9. package/package.json +13 -13
  10. package/schematics/components/files/accordion/accordion-llm.md.template +35 -0
  11. package/schematics/components/files/alert/alert-llm.md.template +34 -0
  12. package/schematics/components/files/autocomplete/autocomplete-llm.md.template +76 -0
  13. package/schematics/components/files/avatar/avatar-llm.md.template +37 -0
  14. package/schematics/components/files/avatar/avatar.ts.template +5 -2
  15. package/schematics/components/files/badge/badge-llm.md.template +21 -0
  16. package/schematics/components/files/badge/badge.ts.template +8 -3
  17. package/schematics/components/files/breadcrumb/breadcrumb-llm.md.template +26 -0
  18. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +9 -18
  19. package/schematics/components/files/button/button-llm.md.template +22 -0
  20. package/schematics/components/files/card/card-llm.md.template +16 -0
  21. package/schematics/components/files/carousel/carousel-llm.md.template +38 -0
  22. package/schematics/components/files/checkbox/checkbox-llm.md.template +27 -0
  23. package/schematics/components/files/checkbox/focus-style.directive.ts.template +9 -6
  24. package/schematics/components/files/checkbox/index.ts.template +1 -1
  25. package/schematics/components/files/chip/chip-llm.md.template +29 -0
  26. package/schematics/components/files/color-picker/color-picker-llm.md.template +27 -0
  27. package/schematics/components/files/datepicker/datepicker-llm.md.template +43 -0
  28. package/schematics/components/files/dialog/dialog-llm.md.template +69 -0
  29. package/schematics/components/files/drawer/drawer-llm.md.template +54 -0
  30. package/schematics/components/files/form-field/form-field-llm.md.template +56 -0
  31. package/schematics/components/files/form-field/form-field.ts.template +2 -2
  32. package/schematics/components/files/form-field/input-style.directive.ts.template +2 -3
  33. package/schematics/components/files/hover-card/hover-card-llm.md.template +26 -0
  34. package/schematics/components/files/icon/icon-llm.md.template +19 -0
  35. package/schematics/components/files/inline-edit/inline-edit-llm.md.template +22 -0
  36. package/schematics/components/files/list/list-llm.md.template +23 -0
  37. package/schematics/components/files/list/list.ts.template +2 -1
  38. package/schematics/components/files/mask/mask-llm.md.template +19 -0
  39. package/schematics/components/files/menu/context-menu-llm.md.template +28 -0
  40. package/schematics/components/files/menu/menu-llm.md.template +37 -0
  41. package/schematics/components/files/otp/otp-llm.md.template +21 -0
  42. package/schematics/components/files/pagination/pagination-llm.md.template +29 -0
  43. package/schematics/components/files/pagination/pagination.ts.template +11 -12
  44. package/schematics/components/files/popover/popover-llm.md.template +59 -0
  45. package/schematics/components/files/progress/progress-llm.md.template +19 -0
  46. package/schematics/components/files/radio/radio-llm.md.template +36 -0
  47. package/schematics/components/files/resizable/resizable-llm.md.template +31 -0
  48. package/schematics/components/files/select/option.ts.template +2 -2
  49. package/schematics/components/files/select/select-llm.md.template +87 -0
  50. package/schematics/components/files/selectable/selectable-llm.md.template +31 -0
  51. package/schematics/components/files/selectable/selectable.ts.template +4 -3
  52. package/schematics/components/files/sheet/sheet-llm.md.template +54 -0
  53. package/schematics/components/files/sidenav/sidenav-llm.md.template +37 -0
  54. package/schematics/components/files/skeleton/skeleton-llm.md.template +22 -0
  55. package/schematics/components/files/slider/slider-llm.md.template +35 -0
  56. package/schematics/components/files/sonner/sonner-llm.md.template +34 -0
  57. package/schematics/components/files/spinner/spinner-llm.md.template +29 -0
  58. package/schematics/components/files/stepper/stepper-llm.md.template +32 -0
  59. package/schematics/components/files/switch/switch-llm.md.template +23 -0
  60. package/schematics/components/files/table/table-llm.md.template +31 -0
  61. package/schematics/components/files/tabs/tab.ts.template +1 -1
  62. package/schematics/components/files/tabs/tabs-llm.md.template +48 -0
  63. package/schematics/components/files/theme/index.ts.template +1 -1
  64. package/schematics/components/files/theme/{theme-button.component.ts.template → theme-button.ts.template} +2 -1
  65. package/schematics/components/files/theme/theme-llm.md.template +23 -0
  66. package/schematics/components/files/theme/theme.service.ts.template +1 -3
  67. package/schematics/components/files/toggle/toggle-llm.md.template +19 -0
  68. package/schematics/components/files/toggle-group/toggle-group-llm.md.template +32 -0
  69. package/schematics/components/files/tooltip/tooltip-llm.md.template +37 -0
  70. package/schematics/components/schema.json +2 -0
@@ -1,10 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
- export declare class NgbBreadcrumbSeparatorAria {
3
- readonly dir: import("@ngbase/adk/bidi").Directionality;
4
- static ɵfac: i0.ɵɵFactoryDeclaration<NgbBreadcrumbSeparatorAria, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBreadcrumbSeparatorAria, "[ngbBreadcrumbSeparatorAria]", never, {}, {}, never, never, true, never>;
6
- }
7
2
  export declare class NgbBreadcrumbSeparator {
3
+ readonly dir: import("@ngbase/adk/bidi").Directionality;
8
4
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbBreadcrumbSeparator, never>;
9
5
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBreadcrumbSeparator, "[ngbBreadcrumbsSeparator]", never, {}, {}, never, never, true, never>;
10
6
  }
@@ -2,6 +2,7 @@ import * as i0 from "@angular/core";
2
2
  export declare class NgbBreadcrumb {
3
3
  private breadcrumbs;
4
4
  readonly active: import("@angular/core").Signal<boolean>;
5
+ constructor();
5
6
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbBreadcrumb, never>;
6
7
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBreadcrumb, "[ngbBreadcrumb]", never, {}, {}, never, never, true, never>;
7
8
  }
@@ -1,7 +1,9 @@
1
+ import { TemplateRef } from '@angular/core';
1
2
  import { NgbBreadcrumb } from './breadcrumb';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class NgbBreadcrumbs {
4
5
  readonly items: import("@angular/core").Signal<readonly NgbBreadcrumb[]>;
6
+ readonly separator: import("@angular/core").Signal<TemplateRef<any> | undefined>;
5
7
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbBreadcrumbs, never>;
6
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBreadcrumbs, "[ngbBreadcrumbs]", never, {}, {}, ["items"], never, true, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBreadcrumbs, "[ngbBreadcrumbs]", never, {}, {}, ["items", "separator"], never, true, never>;
7
9
  }
@@ -1,4 +1,4 @@
1
1
  export { NgbBreadcrumbs } from './breadcrumbs';
2
2
  export { NgbBreadcrumb, aliasBreadcrumb } from './breadcrumb';
3
3
  export { NgbBreadcrumbLink } from './breadcrumb-link';
4
- export { NgbBreadcrumbSeparatorAria, NgbBreadcrumbSeparator } from './breadcrumb-separator';
4
+ export { NgbBreadcrumbSeparator } from './breadcrumb-separator';
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, computed, Directive, contentChildren } from '@angular/core';
2
+ import { inject, computed, ViewContainerRef, effect, Directive, contentChildren, contentChild, TemplateRef } from '@angular/core';
3
3
  import { injectDirectionality } from '@ngbase/adk/bidi';
4
4
 
5
5
  class NgbBreadcrumb {
@@ -9,6 +9,14 @@ class NgbBreadcrumb {
9
9
  const items = this.breadcrumbs.items();
10
10
  return items.indexOf(this) === items.length - 1;
11
11
  });
12
+ const vcRef = inject(ViewContainerRef);
13
+ effect(cleanup => {
14
+ const separator = this.breadcrumbs.separator();
15
+ if (separator && !this.active()) {
16
+ vcRef.createEmbeddedView(separator);
17
+ cleanup(() => vcRef.clear());
18
+ }
19
+ });
12
20
  }
13
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
22
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbBreadcrumb, isStandalone: true, selector: "[ngbBreadcrumb]", host: { attributes: { "role": "link" }, properties: { "attr.aria-current": "active() ? 'page' : null", "attr.aria-disabled": "active()" } }, ngImport: i0 }); }
@@ -23,17 +31,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
23
31
  role: 'link',
24
32
  },
25
33
  }]
26
- }] });
34
+ }], ctorParameters: () => [] });
27
35
  function aliasBreadcrumb(breadcrumb) {
28
36
  return { provide: NgbBreadcrumb, useExisting: breadcrumb };
29
37
  }
30
38
 
39
+ class NgbBreadcrumbSeparator {
40
+ constructor() {
41
+ this.dir = injectDirectionality();
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
44
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbBreadcrumbSeparator, isStandalone: true, selector: "[ngbBreadcrumbsSeparator]", host: { attributes: { "tabindex": "-1", "aria-hidden": "true", "role": "presentation" } }, ngImport: i0 }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbSeparator, decorators: [{
47
+ type: Directive,
48
+ args: [{
49
+ selector: '[ngbBreadcrumbsSeparator]',
50
+ host: {
51
+ tabindex: '-1',
52
+ 'aria-hidden': 'true',
53
+ role: 'presentation',
54
+ },
55
+ }]
56
+ }] });
57
+
31
58
  class NgbBreadcrumbs {
32
59
  constructor() {
33
60
  this.items = contentChildren(NgbBreadcrumb);
61
+ this.separator = contentChild(NgbBreadcrumbSeparator, { read: TemplateRef });
34
62
  }
35
63
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbBreadcrumbs, isStandalone: true, selector: "[ngbBreadcrumbs]", host: { attributes: { "aria-label": "breadcrumb" } }, queries: [{ propertyName: "items", predicate: NgbBreadcrumb, isSignal: true }], ngImport: i0 }); }
64
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbBreadcrumbs, isStandalone: true, selector: "[ngbBreadcrumbs]", host: { attributes: { "aria-label": "breadcrumb" } }, queries: [{ propertyName: "items", predicate: NgbBreadcrumb, isSignal: true }, { propertyName: "separator", first: true, predicate: NgbBreadcrumbSeparator, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0 }); }
37
65
  }
38
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbs, decorators: [{
39
67
  type: Directive,
@@ -65,39 +93,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
65
93
  }]
66
94
  }] });
67
95
 
68
- class NgbBreadcrumbSeparatorAria {
69
- constructor() {
70
- this.dir = injectDirectionality();
71
- }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbSeparatorAria, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbBreadcrumbSeparatorAria, isStandalone: true, selector: "[ngbBreadcrumbSeparatorAria]", host: { attributes: { "tabindex": "-1", "aria-hidden": "true", "role": "presentation" }, properties: { "style.transform": "dir.isRtl() ? \"rotate(180deg)\" : \"\"" } }, ngImport: i0 }); }
74
- }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbSeparatorAria, decorators: [{
76
- type: Directive,
77
- args: [{
78
- selector: '[ngbBreadcrumbSeparatorAria]',
79
- host: {
80
- tabindex: '-1',
81
- 'aria-hidden': 'true',
82
- role: 'presentation',
83
- '[style.transform]': 'dir.isRtl() ? "rotate(180deg)" : ""',
84
- },
85
- }]
86
- }] });
87
- class NgbBreadcrumbSeparator {
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
89
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbBreadcrumbSeparator, isStandalone: true, selector: "[ngbBreadcrumbsSeparator]", ngImport: i0 }); }
90
- }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBreadcrumbSeparator, decorators: [{
92
- type: Directive,
93
- args: [{
94
- selector: '[ngbBreadcrumbsSeparator]',
95
- }]
96
- }] });
97
-
98
96
  /**
99
97
  * Generated bundle index. Do not edit.
100
98
  */
101
99
 
102
- export { NgbBreadcrumb, NgbBreadcrumbLink, NgbBreadcrumbSeparator, NgbBreadcrumbSeparatorAria, NgbBreadcrumbs, aliasBreadcrumb };
100
+ export { NgbBreadcrumb, NgbBreadcrumbLink, NgbBreadcrumbSeparator, NgbBreadcrumbs, aliasBreadcrumb };
103
101
  //# sourceMappingURL=ngbase-adk-breadcrumb.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-breadcrumb.mjs","sources":["../../../projects/adk/breadcrumb/breadcrumb.ts","../../../projects/adk/breadcrumb/breadcrumbs.ts","../../../projects/adk/breadcrumb/breadcrumb-link.ts","../../../projects/adk/breadcrumb/breadcrumb-separator.ts","../../../projects/adk/breadcrumb/ngbase-adk-breadcrumb.ts"],"sourcesContent":["import { computed, Directive, inject } from '@angular/core';\nimport { NgbBreadcrumbs } from './breadcrumbs';\n\n@Directive({\n selector: '[ngbBreadcrumb]',\n host: {\n '[attr.aria-current]': \"active() ? 'page' : null\",\n '[attr.aria-disabled]': 'active()',\n role: 'link',\n },\n})\nexport class NgbBreadcrumb {\n private breadcrumbs = inject(NgbBreadcrumbs);\n readonly active = computed(() => {\n const items = this.breadcrumbs.items();\n return items.indexOf(this) === items.length - 1;\n });\n}\n\nexport function aliasBreadcrumb(breadcrumb: typeof NgbBreadcrumb) {\n return { provide: NgbBreadcrumb, useExisting: breadcrumb };\n}\n","import { contentChildren, Directive } from '@angular/core';\nimport { NgbBreadcrumb } from './breadcrumb';\n\n@Directive({\n selector: '[ngbBreadcrumbs]',\n host: {\n 'aria-label': 'breadcrumb',\n },\n})\nexport class NgbBreadcrumbs {\n readonly items = contentChildren(NgbBreadcrumb);\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbBreadcrumb } from './public-api';\n\n@Directive({\n selector: '[ngbBreadcrumbLink]',\n host: {\n '[tabIndex]': 'breadcrumb.active() ? -1 : 0',\n '[attr.aria-current]': \"breadcrumb.active() ? 'page' : null\",\n '[attr.aria-disabled]': 'breadcrumb.active() || null',\n role: 'link',\n },\n})\nexport class NgbBreadcrumbLink {\n readonly breadcrumb = inject(NgbBreadcrumb);\n}\n","import { Directive } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\n\n@Directive({\n selector: '[ngbBreadcrumbSeparatorAria]',\n host: {\n tabindex: '-1',\n 'aria-hidden': 'true',\n role: 'presentation',\n '[style.transform]': 'dir.isRtl() ? \"rotate(180deg)\" : \"\"',\n },\n})\nexport class NgbBreadcrumbSeparatorAria {\n readonly dir = injectDirectionality();\n}\n\n@Directive({\n selector: '[ngbBreadcrumbsSeparator]',\n})\nexport class NgbBreadcrumbSeparator {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-breadcrumb.mjs","sources":["../../../projects/adk/breadcrumb/breadcrumb.ts","../../../projects/adk/breadcrumb/breadcrumb-separator.ts","../../../projects/adk/breadcrumb/breadcrumbs.ts","../../../projects/adk/breadcrumb/breadcrumb-link.ts","../../../projects/adk/breadcrumb/ngbase-adk-breadcrumb.ts"],"sourcesContent":["import { computed, Directive, effect, inject, ViewContainerRef } from '@angular/core';\nimport { NgbBreadcrumbs } from './breadcrumbs';\n\n@Directive({\n selector: '[ngbBreadcrumb]',\n host: {\n '[attr.aria-current]': \"active() ? 'page' : null\",\n '[attr.aria-disabled]': 'active()',\n role: 'link',\n },\n})\nexport class NgbBreadcrumb {\n private breadcrumbs = inject(NgbBreadcrumbs);\n readonly active = computed(() => {\n const items = this.breadcrumbs.items();\n return items.indexOf(this) === items.length - 1;\n });\n\n constructor() {\n const vcRef = inject(ViewContainerRef);\n effect(cleanup => {\n const separator = this.breadcrumbs.separator();\n if (separator && !this.active()) {\n vcRef.createEmbeddedView(separator);\n cleanup(() => vcRef.clear());\n }\n });\n }\n}\n\nexport function aliasBreadcrumb(breadcrumb: typeof NgbBreadcrumb) {\n return { provide: NgbBreadcrumb, useExisting: breadcrumb };\n}\n","import { Directive } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\n\n@Directive({\n selector: '[ngbBreadcrumbsSeparator]',\n host: {\n tabindex: '-1',\n 'aria-hidden': 'true',\n role: 'presentation',\n },\n})\nexport class NgbBreadcrumbSeparator {\n readonly dir = injectDirectionality();\n}\n","import { contentChild, contentChildren, Directive, TemplateRef } from '@angular/core';\nimport { NgbBreadcrumb } from './breadcrumb';\nimport { NgbBreadcrumbSeparator } from './breadcrumb-separator';\n\n@Directive({\n selector: '[ngbBreadcrumbs]',\n host: {\n 'aria-label': 'breadcrumb',\n },\n})\nexport class NgbBreadcrumbs {\n readonly items = contentChildren(NgbBreadcrumb);\n readonly separator = contentChild(NgbBreadcrumbSeparator, { read: TemplateRef });\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbBreadcrumb } from './public-api';\n\n@Directive({\n selector: '[ngbBreadcrumbLink]',\n host: {\n '[tabIndex]': 'breadcrumb.active() ? -1 : 0',\n '[attr.aria-current]': \"breadcrumb.active() ? 'page' : null\",\n '[attr.aria-disabled]': 'breadcrumb.active() || null',\n role: 'link',\n },\n})\nexport class NgbBreadcrumbLink {\n readonly breadcrumb = inject(NgbBreadcrumb);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ class TabButton {
97
97
  this.accessibleItem._ayId.set(this.tabGroup.ayId);
98
98
  }
99
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TabButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
100
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: TabButton, isStandalone: true, selector: "button[ngbTabButton]", inputs: { ngbTabButton: { classPropertyName: "ngbTabButton", publicName: "ngbTabButton", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "type": "button", "role": "tab" }, listeners: { "click": "!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())" }, properties: { "attr.id": "ngbTabButton().id" } }, hostDirectives: [{ directive: i1.AccessibleItem }], ngImport: i0, template: `
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: TabButton, isStandalone: true, selector: "button[ngbTabButton]", inputs: { ngbTabButton: { classPropertyName: "ngbTabButton", publicName: "ngbTabButton", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "type": "button", "role": "tab" }, listeners: { "click": "!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())" }, properties: { "attr.id": "ngbTabButton().id", "attr.data-ch": "!!ngbTabButton().header()" } }, hostDirectives: [{ directive: i1.AccessibleItem }], ngImport: i0, template: `
101
101
  @if (ngbTabButton().header(); as template) {
102
102
  <ng-container *ngTemplateOutlet="template" />
103
103
  } @else {
@@ -124,6 +124,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
124
124
  role: 'tab',
125
125
  '[attr.id]': 'ngbTabButton().id',
126
126
  '(click)': '!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())',
127
+ '[attr.data-ch]': `!!ngbTabButton().header()`,
127
128
  },
128
129
  }]
129
130
  }], ctorParameters: () => [] });
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-tabs.mjs","sources":["../../../projects/adk/tabs/tab.ts","../../../projects/adk/tabs/tab-group.ts","../../../projects/adk/tabs/public-api.ts","../../../projects/adk/tabs/ngbase-adk-tabs.ts"],"sourcesContent":["import {\n Directive,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n input,\n signal,\n} from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbTabHeader]',\n})\nexport class NgbTabHeader {}\n\n@Directive({\n selector: '[ngbTabLazy]',\n})\nexport class NgbTabLazy {}\n\n@Directive({\n selector: 'ngb-tab',\n exportAs: 'ngbTab',\n host: {\n role: 'tabpanel',\n '[tabindex]': 'active() ? 0 : -1',\n '[attr.aria-hidden]': '!active()',\n '[attr.aria-labelledby]': 'id',\n },\n})\nexport class NgbTab {\n // Dependencies\n readonly header = contentChild(NgbTabHeader, { read: TemplateRef });\n readonly lazy = contentChild(NgbTabLazy, { read: TemplateRef });\n\n // Inputs\n readonly label = input('Tab');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly mode = input<'hidden' | 'lazy'>();\n readonly value = input<string | number>();\n\n readonly id = uniqueId();\n readonly index = signal(0);\n readonly tabId = computed(() => this.value() ?? this.index());\n\n // State\n readonly active = signal(false);\n\n private activated = false;\n readonly activeMode = computed(() => {\n this.activated ||= this.active();\n return this.mode() ? this.activated : this.active();\n });\n readonly lazyTemplate = computed(() => this.active() && this.lazy());\n}\n\nexport function aliasTab(tab: typeof NgbTab) {\n return { provide: NgbTab, useExisting: tab };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbTab } from './tab';\n\nexport interface NgbTabChangeEvent {\n tab: NgbTab;\n index: number;\n}\n\n@Directive({\n selector: '[ngbTabButtonsGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n role: 'tablist',\n style: 'scrollbar-width: none',\n },\n})\nexport class TabButtonsGroup {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleGroup = inject(AccessibleGroup);\n\n constructor() {\n this.accessibleGroup.ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Component({\n selector: 'button[ngbTabButton]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [AccessibleItem],\n imports: [NgTemplateOutlet],\n template: `\n @if (ngbTabButton().header(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else {\n {{ ngbTabButton().label() }}\n }\n `,\n host: {\n type: 'button',\n role: 'tab',\n '[attr.id]': 'ngbTabButton().id',\n '(click)': '!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())',\n },\n})\nexport class TabButton {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleItem = inject(AccessibleItem);\n\n readonly ngbTabButton = input.required<NgbTab>();\n\n constructor() {\n this.accessibleItem._selected = computed(\n () => this.ngbTabButton().tabId() === this.tabGroup.selectedIndex(),\n );\n this.accessibleItem._disabled = computed(() => this.ngbTabButton().disabled());\n this.accessibleItem._ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Directive({\n selector: 'button[ngbTabScroll]',\n host: {\n type: 'button',\n tabindex: '-1',\n style: '{display: none}',\n '(click)': 'tabGroup.scroll(ngbTabScroll())',\n },\n})\nexport class TabScroll {\n readonly ngbTabScroll = input.required<'left' | 'right'>();\n readonly tabGroup = inject(NgbTabs);\n}\n\n@Directive({\n selector: 'ngb-tabs',\n exportAs: 'ngbTabs',\n})\nexport class NgbTabs<T extends NgbTab = NgbTab> {\n readonly tabList = viewChild.required<TabButtonsGroup, ElementRef<HTMLElement>>(TabButtonsGroup, {\n read: ElementRef,\n });\n readonly tabListContainer = viewChild.required<ElementRef<HTMLElement>>('tabListContainer');\n readonly tabButtons = viewChildren<TabButton, ElementRef<HTMLElement>>(TabButton, {\n read: ElementRef,\n });\n // readonly leftScroll = viewChild<ElementRef<HTMLElement>>('leftScroll');\n // readonly rightScroll = viewChild<ElementRef<HTMLElement>>('rightScroll');\n readonly scrollButtons = viewChildren<TabScroll, ElementRef<HTMLElement>>(TabScroll, {\n read: ElementRef,\n });\n readonly tabs = contentChildren<T>(NgbTab as any);\n\n readonly selectedIndex = model<any>(0);\n readonly selectedTabChange = output<NgbTabChangeEvent>();\n\n private selectedId?: number;\n private readonly tabMap = new Map<number, string>();\n readonly ayId = uniqueId();\n\n constructor() {\n effect(cleanup => {\n const tabList = this.tabList().nativeElement;\n const tabListContainer = this.tabListContainer().nativeElement;\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n this.updateScrollDisplay(tabList);\n });\n observer.observe(tabListContainer);\n cleanup(() => observer.disconnect());\n }\n });\n\n effect(() => {\n const tabs = this.tabs();\n tabs.forEach((tab, index) => tab.index.set(index));\n });\n\n effect(() => {\n const tabs = this.tabs();\n let activeIndex = this.selectedIndex();\n if (activeIndex === undefined || activeIndex === null) {\n this.setActive(tabs[0]);\n return;\n } else if (activeIndex >= tabs.length) {\n // if the index is out of bounds, set the last tab as active\n this.setActive(tabs[tabs.length - 1]);\n return;\n }\n\n if (this.selectedId !== undefined && activeIndex === this.selectedId) {\n const id = this.tabMap.get(this.selectedId);\n const tab = tabs.find(tab => tab.id === id);\n if (tab && activeIndex !== tab.index()) {\n this.setActive(tab);\n this.selectedId = undefined;\n return;\n }\n }\n\n // make sure the index is not a disabled tab\n // if (tabs[activeIndex]?.disabled()) {\n // const nextIndex = tabs.findIndex((tab, index) => !tab.disabled() && index > activeIndex);\n // activeIndex = nextIndex === -1 ? tabs.length - 1 : nextIndex;\n // this.selectedIndex.set(activeIndex);\n // this.selectedId = activeIndex;\n // return;\n // }\n\n // tabMap is used to keep track of the tab headers\n this.tabMap.clear();\n let activeTab: NgbTab;\n tabs.forEach((tab, index) => {\n tab.active.set(activeIndex === tab.tabId());\n if (activeIndex === tab.tabId()) {\n activeTab = tab;\n }\n this.tabMap.set(index, tab.id);\n });\n\n this.selectedId = activeIndex;\n\n // scroll to the active tab\n this.scrollToActive(activeTab!.index());\n });\n\n afterNextRender(() => {\n const el = this.tabList().nativeElement;\n this.updateScrollDisplay(el);\n el.addEventListener('scroll', () => {\n requestAnimationFrame(() => {\n this.updateScrollDisplay(el);\n });\n });\n });\n }\n\n private updateScrollDisplay(el: HTMLElement) {\n const leftScroll = this.scrollButtons()[0]!.nativeElement;\n const rightScroll = this.scrollButtons()[1]!.nativeElement;\n leftScroll.style.display = el.scrollLeft > 0 ? 'grid' : 'none';\n rightScroll.style.display = el.scrollLeft + el.clientWidth < el.scrollWidth ? 'grid' : 'none';\n }\n\n scroll(direction: 'left' | 'right') {\n const tabList = this.tabList()!.nativeElement;\n const el = this.tabList()!.nativeElement;\n const scroll = el.clientWidth * 0.8;\n const isLeft = direction === 'left';\n tabList.scrollTo({\n left: tabList.scrollLeft + (isLeft ? -scroll : scroll),\n behavior: 'smooth',\n });\n }\n\n setActive(tab: NgbTab) {\n // if the tab is not found, return\n if (!tab) return;\n\n this.selectedIndex.set(tab.tabId());\n this.scrollToActive(tab.index());\n this.selectedTabChange.emit({ tab, index: tab.index() });\n }\n\n private scrollToActive(index: number) {\n const tabList = this.tabList().nativeElement;\n const tabs = this.tabButtons().slice(0, index + 1);\n // ssr does not support getBoundingClientRect\n const totalWidth = tabs.reduce((a, c) => {\n const width = c.nativeElement.getBoundingClientRect?.().width || 0;\n return a + width;\n }, 0);\n\n const { width } = tabList.getBoundingClientRect?.() || { width: 0 };\n const scrollLeft = tabList.scrollLeft;\n const lastTab = tabs[tabs.length - 1]?.nativeElement;\n const lastTabWidth = lastTab?.getBoundingClientRect?.().width || 0;\n const withoutLastTabWidth = totalWidth - lastTabWidth;\n\n const isLeftSide = scrollLeft + width / 2 > withoutLastTabWidth + lastTabWidth / 2;\n const left = isLeftSide ? totalWidth - lastTabWidth : totalWidth - width;\n\n if (withoutLastTabWidth < scrollLeft || totalWidth > scrollLeft + width) {\n tabList.scrollTo({ left, behavior: 'smooth' });\n }\n }\n}\n\nexport function aliasTabs<T extends NgbTab>(tab: typeof NgbTabs<T>) {\n return {\n provide: NgbTabs,\n useExisting: tab,\n };\n}\n","/*\n * Public API Surface of tab\n */\n\nexport * from './tab';\nexport * from './tab-group';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-tabs.mjs","sources":["../../../projects/adk/tabs/tab.ts","../../../projects/adk/tabs/tab-group.ts","../../../projects/adk/tabs/public-api.ts","../../../projects/adk/tabs/ngbase-adk-tabs.ts"],"sourcesContent":["import {\n Directive,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n input,\n signal,\n} from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbTabHeader]',\n})\nexport class NgbTabHeader {}\n\n@Directive({\n selector: '[ngbTabLazy]',\n})\nexport class NgbTabLazy {}\n\n@Directive({\n selector: 'ngb-tab',\n exportAs: 'ngbTab',\n host: {\n role: 'tabpanel',\n '[tabindex]': 'active() ? 0 : -1',\n '[attr.aria-hidden]': '!active()',\n '[attr.aria-labelledby]': 'id',\n },\n})\nexport class NgbTab {\n // Dependencies\n readonly header = contentChild(NgbTabHeader, { read: TemplateRef });\n readonly lazy = contentChild(NgbTabLazy, { read: TemplateRef });\n\n // Inputs\n readonly label = input('Tab');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly mode = input<'hidden' | 'lazy'>();\n readonly value = input<string | number>();\n\n readonly id = uniqueId();\n readonly index = signal(0);\n readonly tabId = computed(() => this.value() ?? this.index());\n\n // State\n readonly active = signal(false);\n\n private activated = false;\n readonly activeMode = computed(() => {\n this.activated ||= this.active();\n return this.mode() ? this.activated : this.active();\n });\n readonly lazyTemplate = computed(() => this.active() && this.lazy());\n}\n\nexport function aliasTab(tab: typeof NgbTab) {\n return { provide: NgbTab, useExisting: tab };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbTab } from './tab';\n\nexport interface NgbTabChangeEvent {\n tab: NgbTab;\n index: number;\n}\n\n@Directive({\n selector: '[ngbTabButtonsGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n role: 'tablist',\n style: 'scrollbar-width: none',\n },\n})\nexport class TabButtonsGroup {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleGroup = inject(AccessibleGroup);\n\n constructor() {\n this.accessibleGroup.ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Component({\n selector: 'button[ngbTabButton]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [AccessibleItem],\n imports: [NgTemplateOutlet],\n template: `\n @if (ngbTabButton().header(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else {\n {{ ngbTabButton().label() }}\n }\n `,\n host: {\n type: 'button',\n role: 'tab',\n '[attr.id]': 'ngbTabButton().id',\n '(click)': '!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())',\n '[attr.data-ch]': `!!ngbTabButton().header()`,\n },\n})\nexport class TabButton {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleItem = inject(AccessibleItem);\n\n readonly ngbTabButton = input.required<NgbTab>();\n\n constructor() {\n this.accessibleItem._selected = computed(\n () => this.ngbTabButton().tabId() === this.tabGroup.selectedIndex(),\n );\n this.accessibleItem._disabled = computed(() => this.ngbTabButton().disabled());\n this.accessibleItem._ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Directive({\n selector: 'button[ngbTabScroll]',\n host: {\n type: 'button',\n tabindex: '-1',\n style: '{display: none}',\n '(click)': 'tabGroup.scroll(ngbTabScroll())',\n },\n})\nexport class TabScroll {\n readonly ngbTabScroll = input.required<'left' | 'right'>();\n readonly tabGroup = inject(NgbTabs);\n}\n\n@Directive({\n selector: 'ngb-tabs',\n exportAs: 'ngbTabs',\n})\nexport class NgbTabs<T extends NgbTab = NgbTab> {\n readonly tabList = viewChild.required<TabButtonsGroup, ElementRef<HTMLElement>>(TabButtonsGroup, {\n read: ElementRef,\n });\n readonly tabListContainer = viewChild.required<ElementRef<HTMLElement>>('tabListContainer');\n readonly tabButtons = viewChildren<TabButton, ElementRef<HTMLElement>>(TabButton, {\n read: ElementRef,\n });\n // readonly leftScroll = viewChild<ElementRef<HTMLElement>>('leftScroll');\n // readonly rightScroll = viewChild<ElementRef<HTMLElement>>('rightScroll');\n readonly scrollButtons = viewChildren<TabScroll, ElementRef<HTMLElement>>(TabScroll, {\n read: ElementRef,\n });\n readonly tabs = contentChildren<T>(NgbTab as any);\n\n readonly selectedIndex = model<any>(0);\n readonly selectedTabChange = output<NgbTabChangeEvent>();\n\n private selectedId?: number;\n private readonly tabMap = new Map<number, string>();\n readonly ayId = uniqueId();\n\n constructor() {\n effect(cleanup => {\n const tabList = this.tabList().nativeElement;\n const tabListContainer = this.tabListContainer().nativeElement;\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n this.updateScrollDisplay(tabList);\n });\n observer.observe(tabListContainer);\n cleanup(() => observer.disconnect());\n }\n });\n\n effect(() => {\n const tabs = this.tabs();\n tabs.forEach((tab, index) => tab.index.set(index));\n });\n\n effect(() => {\n const tabs = this.tabs();\n let activeIndex = this.selectedIndex();\n if (activeIndex === undefined || activeIndex === null) {\n this.setActive(tabs[0]);\n return;\n } else if (activeIndex >= tabs.length) {\n // if the index is out of bounds, set the last tab as active\n this.setActive(tabs[tabs.length - 1]);\n return;\n }\n\n if (this.selectedId !== undefined && activeIndex === this.selectedId) {\n const id = this.tabMap.get(this.selectedId);\n const tab = tabs.find(tab => tab.id === id);\n if (tab && activeIndex !== tab.index()) {\n this.setActive(tab);\n this.selectedId = undefined;\n return;\n }\n }\n\n // make sure the index is not a disabled tab\n // if (tabs[activeIndex]?.disabled()) {\n // const nextIndex = tabs.findIndex((tab, index) => !tab.disabled() && index > activeIndex);\n // activeIndex = nextIndex === -1 ? tabs.length - 1 : nextIndex;\n // this.selectedIndex.set(activeIndex);\n // this.selectedId = activeIndex;\n // return;\n // }\n\n // tabMap is used to keep track of the tab headers\n this.tabMap.clear();\n let activeTab: NgbTab;\n tabs.forEach((tab, index) => {\n tab.active.set(activeIndex === tab.tabId());\n if (activeIndex === tab.tabId()) {\n activeTab = tab;\n }\n this.tabMap.set(index, tab.id);\n });\n\n this.selectedId = activeIndex;\n\n // scroll to the active tab\n this.scrollToActive(activeTab!.index());\n });\n\n afterNextRender(() => {\n const el = this.tabList().nativeElement;\n this.updateScrollDisplay(el);\n el.addEventListener('scroll', () => {\n requestAnimationFrame(() => {\n this.updateScrollDisplay(el);\n });\n });\n });\n }\n\n private updateScrollDisplay(el: HTMLElement) {\n const leftScroll = this.scrollButtons()[0]!.nativeElement;\n const rightScroll = this.scrollButtons()[1]!.nativeElement;\n leftScroll.style.display = el.scrollLeft > 0 ? 'grid' : 'none';\n rightScroll.style.display = el.scrollLeft + el.clientWidth < el.scrollWidth ? 'grid' : 'none';\n }\n\n scroll(direction: 'left' | 'right') {\n const tabList = this.tabList()!.nativeElement;\n const el = this.tabList()!.nativeElement;\n const scroll = el.clientWidth * 0.8;\n const isLeft = direction === 'left';\n tabList.scrollTo({\n left: tabList.scrollLeft + (isLeft ? -scroll : scroll),\n behavior: 'smooth',\n });\n }\n\n setActive(tab: NgbTab) {\n // if the tab is not found, return\n if (!tab) return;\n\n this.selectedIndex.set(tab.tabId());\n this.scrollToActive(tab.index());\n this.selectedTabChange.emit({ tab, index: tab.index() });\n }\n\n private scrollToActive(index: number) {\n const tabList = this.tabList().nativeElement;\n const tabs = this.tabButtons().slice(0, index + 1);\n // ssr does not support getBoundingClientRect\n const totalWidth = tabs.reduce((a, c) => {\n const width = c.nativeElement.getBoundingClientRect?.().width || 0;\n return a + width;\n }, 0);\n\n const { width } = tabList.getBoundingClientRect?.() || { width: 0 };\n const scrollLeft = tabList.scrollLeft;\n const lastTab = tabs[tabs.length - 1]?.nativeElement;\n const lastTabWidth = lastTab?.getBoundingClientRect?.().width || 0;\n const withoutLastTabWidth = totalWidth - lastTabWidth;\n\n const isLeftSide = scrollLeft + width / 2 > withoutLastTabWidth + lastTabWidth / 2;\n const left = isLeftSide ? totalWidth - lastTabWidth : totalWidth - width;\n\n if (withoutLastTabWidth < scrollLeft || totalWidth > scrollLeft + width) {\n tabList.scrollTo({ left, behavior: 'smooth' });\n }\n }\n}\n\nexport function aliasTabs<T extends NgbTab>(tab: typeof NgbTabs<T>) {\n return {\n provide: NgbTabs,\n useExisting: tab,\n };\n}\n","/*\n * Public API Surface of tab\n */\n\nexport * from './tab';\nexport * from './tab-group';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngbase/adk",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ng-base/ngbase.git"
@@ -44,10 +44,6 @@
44
44
  "types": "./avatar/index.d.ts",
45
45
  "default": "./fesm2022/ngbase-adk-avatar.mjs"
46
46
  },
47
- "./bidi": {
48
- "types": "./bidi/index.d.ts",
49
- "default": "./fesm2022/ngbase-adk-bidi.mjs"
50
- },
51
47
  "./autocomplete": {
52
48
  "types": "./autocomplete/index.d.ts",
53
49
  "default": "./fesm2022/ngbase-adk-autocomplete.mjs"
@@ -60,6 +56,10 @@
60
56
  "types": "./cache/index.d.ts",
61
57
  "default": "./fesm2022/ngbase-adk-cache.mjs"
62
58
  },
59
+ "./bidi": {
60
+ "types": "./bidi/index.d.ts",
61
+ "default": "./fesm2022/ngbase-adk-bidi.mjs"
62
+ },
63
63
  "./carousel": {
64
64
  "types": "./carousel/index.d.ts",
65
65
  "default": "./fesm2022/ngbase-adk-carousel.mjs"
@@ -96,6 +96,10 @@
96
96
  "types": "./dialog/index.d.ts",
97
97
  "default": "./fesm2022/ngbase-adk-dialog.mjs"
98
98
  },
99
+ "./drag": {
100
+ "types": "./drag/index.d.ts",
101
+ "default": "./fesm2022/ngbase-adk-drag.mjs"
102
+ },
99
103
  "./form-field": {
100
104
  "types": "./form-field/index.d.ts",
101
105
  "default": "./fesm2022/ngbase-adk-form-field.mjs"
@@ -104,10 +108,6 @@
104
108
  "types": "./hover-card/index.d.ts",
105
109
  "default": "./fesm2022/ngbase-adk-hover-card.mjs"
106
110
  },
107
- "./drag": {
108
- "types": "./drag/index.d.ts",
109
- "default": "./fesm2022/ngbase-adk-drag.mjs"
110
- },
111
111
  "./icon": {
112
112
  "types": "./icon/index.d.ts",
113
113
  "default": "./fesm2022/ngbase-adk-icon.mjs"
@@ -220,14 +220,14 @@
220
220
  "types": "./test/index.d.ts",
221
221
  "default": "./fesm2022/ngbase-adk-test.mjs"
222
222
  },
223
- "./toggle-group": {
224
- "types": "./toggle-group/index.d.ts",
225
- "default": "./fesm2022/ngbase-adk-toggle-group.mjs"
226
- },
227
223
  "./toggle": {
228
224
  "types": "./toggle/index.d.ts",
229
225
  "default": "./fesm2022/ngbase-adk-toggle.mjs"
230
226
  },
227
+ "./toggle-group": {
228
+ "types": "./toggle-group/index.d.ts",
229
+ "default": "./fesm2022/ngbase-adk-toggle-group.mjs"
230
+ },
231
231
  "./tooltip": {
232
232
  "types": "./tooltip/index.d.ts",
233
233
  "default": "./fesm2022/ngbase-adk-tooltip.mjs"
@@ -0,0 +1,35 @@
1
+ # MEE Accordion
2
+
3
+ ```typescript
4
+ import { Accordion, AccordionGroup, AccordionHeader } from '@/ui/accordion';
5
+ ```
6
+
7
+ ## Components
8
+
9
+ ### `<<%= name %>-accordion-group>`
10
+
11
+ - **Input:** `[multiple]`: boolean = false - Allow multiple open items
12
+
13
+ ### `<<%= name %>-accordion>`
14
+
15
+ - **Inputs:**
16
+ - `[expanded]`: boolean = false - Item expanded state (2way)
17
+ - `[disabled]`: boolean = false - Disable interaction
18
+ - **Output:** `(expandedChange)`: EventEmitter<boolean> - On state change
19
+ - **Method:** `toggle()` - Toggle expanded state
20
+ - **Export:** `#accordion="<%= name %>Accordion"` - Template reference
21
+
22
+ ### `[<%= name %>AccordionHeader]`
23
+
24
+ - Directive for header element
25
+
26
+ ## Examples
27
+
28
+ ```html
29
+ <<%= name %>-accordion-group>
30
+ <<%= name %>-accordion>
31
+ <div <%= name %>AccordionHeader>Title</div>
32
+ <p>Content</p>
33
+ </<%= name %>-accordion>
34
+ </<%= name %>-accordion-group>
35
+ ```
@@ -0,0 +1,34 @@
1
+ # MEE Alert
2
+
3
+ ```typescript
4
+ import { alertPortal } from '@/ui/alert';
5
+ ```
6
+
7
+ ## Usage
8
+
9
+ ```ts
10
+ const alert = alertPortal();
11
+ alert.open({
12
+ title: 'Alert',
13
+ description: 'This is an alert',
14
+ actions: [
15
+ {
16
+ text: 'Cancel',
17
+ type: 'secondary', // ButtonVariant
18
+ handler: close => close(),
19
+ },
20
+ {
21
+ text: 'OK',
22
+ type: 'primary', // ButtonVariant
23
+ handler: close => {
24
+ okHandler();
25
+ close();
26
+ },
27
+ },
28
+ ],
29
+ });
30
+
31
+ function okHandler() {
32
+ console.log('OK');
33
+ }
34
+ ```
@@ -0,0 +1,76 @@
1
+ # MEE Autocomplete
2
+
3
+ ```typescript
4
+ import { FormField, Label } from '@/ui/form-field';
5
+ import { Autocomplete, AutocompleteInput } from '@/ui/autocomplete';
6
+ import { Option } from '@/ui/select';
7
+ ```
8
+
9
+ ## Components
10
+
11
+ ### `<<%= name %>-autocomplete>`
12
+
13
+ - **Inputs:**
14
+
15
+ - `value`: any[] | any - Selected value (2way)
16
+ - `disabled`: boolean = false - Disable the autocomplete (2way)
17
+ - `multiple`: boolean = false - Allow multiple selection
18
+ - `noAutoClose`: boolean = false - Prevent auto close
19
+ - `options`: any[] - Options
20
+ - `placeholder`: string = ' ' - Placeholder text
21
+ - `size`: 'target' | 'free' = 'free' - Size of the autocomplete
22
+ - `filterFn`: (option: any) => boolean = (option: any) => true - Filter function
23
+ - `queryFn`: (query: string, option: any) => boolean = (query: string, option: any) => true - Query function
24
+ - `filterOptions`: FilterOptions<any> - Filter options
25
+
26
+ - **Outputs:**
27
+
28
+ - `opened`: boolean - Open state
29
+ - `closed`: boolean - Close state
30
+
31
+ - **Methods:**
32
+
33
+ - `open()`: void - Open the autocomplete
34
+ - `close()`: void - Close the autocomplete
35
+
36
+ - **Export:** `#autocomplete="<%= name %>Autocomplete"` - Template reference
37
+
38
+ ### `[<%= name %>AutocompleteInput]`
39
+
40
+ - **Inputs:**
41
+
42
+ - `isChip`: boolean = false - Use chip style
43
+ - `placeholder`: string = ' ' - Placeholder text
44
+ - `value`: string = '' - Value (2way)
45
+
46
+ - **Outputs:**
47
+
48
+ - `ngbAutocompleteInput: <%= name %>AutocompleteInput` - Autocomplete input event (2way)
49
+
50
+ - **Export:** `#autocompleteInput="<%= name %>AutocompleteInput"` - Template reference
51
+
52
+ ### `<<%= name %>-option>`
53
+
54
+ - **Inputs:**
55
+
56
+ - `value`: any - Option value
57
+
58
+ - **Export:** `#option="<%= name %>Option"` - Template reference
59
+
60
+ ## Usage
61
+
62
+ ```html
63
+ <<%= name %>-form-field class="w-72 md:w-96">
64
+ <label <%= name %>Label>Autocomplete</label>
65
+ <<%= name %>-autocomplete [(ngModel)]="selectValue2.value" class="w-72 md:w-96">
66
+ <input
67
+ placeholder="Search options"
68
+ [(ngModel)]="selectValue2.optionsFilter.search"
69
+ <%= name %>AutocompleteInput
70
+ />
71
+ @for (item of selectValue2.optionsFilter.filteredList(); track item) {
72
+ <<%= name %>-option [value]="item">{{ item }}</<%= name %>-option>
73
+ }
74
+ </<%= name %>-autocomplete>
75
+ </<%= name %>-form-field>
76
+ ```
@@ -0,0 +1,37 @@
1
+ # MEE Avatar
2
+
3
+ ```typescript
4
+ import { Avatar, AvatarGroup } from '@/ui/avatar';
5
+ ```
6
+
7
+ ## Components
8
+
9
+ ### `<<%= name %>-avatar-group>`
10
+
11
+ - **Inputs:**
12
+
13
+ - `reverse`: boolean = false - Reverse the avatar group
14
+ - `left`: boolean = false - Left the avatar group
15
+
16
+ - **Export:** `#avatarGroup="<%= name %>AvatarGroup"` - Template reference
17
+
18
+ ### `<<%= name %>-avatar>, [<%= name %>Avatar]`
19
+
20
+ - **Inputs:**
21
+
22
+ - `src`: string = '' - Avatar image source
23
+ - `name`: string = '' - Avatar name
24
+ - `text`: string = '' - Avatar text
25
+ - `size`: 'sm' | 'md' | 'lg' = 'md' - Avatar size
26
+
27
+ - **Export:** `#avatar="<%= name %>Avatar"` - Template reference
28
+
29
+ ## Usage
30
+
31
+ ```html
32
+ <<%= name %>-avatar name="John Doe" src="https://x.me/0.jpg" />
33
+ <<%= name %>-avatar-group>
34
+ <<%= name %>-avatar src="https://x.me/0.jpg" size="lg" />
35
+ <button <%= name %>Avatar src="https://x.me/1.jpg" size="lg" />
36
+ </<%= name %>-avatar-group>
37
+ ```
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
2
  import { NgbAvatar, NgbAvatarGroup, aliasAvatar } from '@ngbase/adk/avatar';
3
3
 
4
4
  @Component({
@@ -26,6 +26,9 @@ export class AvatarGroup {}
26
26
  host: {
27
27
  class:
28
28
  'inline-flex aspect-square rounded-full overflow-hidden border-2 border-muted relative bg-background text-muted-foreground items-center justify-center',
29
+ '[class]': `size() === 'sm' ? 'h-6 w-6' : size() === 'md' ? 'h-8 w-8' : size() === 'lg' ? 'h-10 w-10' : ''`,
29
30
  },
30
31
  })
31
- export class Avatar extends NgbAvatar {}
32
+ export class Avatar extends NgbAvatar {
33
+ readonly size = input<'sm' | 'md' | 'lg'>('md');
34
+ }
@@ -0,0 +1,21 @@
1
+ # MEE Badge
2
+
3
+ ```typescript
4
+ import { Badge } from '@/ui/badge';
5
+ ```
6
+
7
+ ## Components
8
+
9
+ ### `<<%= name %>-badge>, [<%= name %>Badge]`
10
+
11
+ - **Inputs:**
12
+
13
+ - `variant`: 'default' | 'secondary' | 'outline' | 'destructive' = 'default' - Badge variant
14
+
15
+ - **Export:** `<%= name %>Badge`
16
+
17
+ ## Usage
18
+
19
+ ```html
20
+ <<%= name %>-badge>Badge</<%= name %>-badge> <button <%= name %>Badge variant="secondary">Badge</button>
21
+ ```
@@ -5,10 +5,15 @@ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
5
5
  changeDetection: ChangeDetectionStrategy.OnPush,
6
6
  template: `<ng-content />`,
7
7
  host: {
8
- class: 'inline-block rounded-full px-2 py-1 text-xs font-semibold',
9
- '[class]': `variant() === 'success' ? 'bg-green-100 text-green-700' : variant() === 'warning' ? 'bg-yellow-100 text-yellow-700' : variant() === 'danger' ? 'bg-red-100 text-red-700' : 'bg-muted'`,
8
+ class: 'inline-flex items-center gap-1 rounded-md border px-2.5 py-0.5 text-xs font-semibold',
9
+ '[class]': `variant() === 'default'
10
+ ? 'bg-primary text-primary-foreground hover:bg-primary/80 border-transparent'
11
+ : variant() === 'secondary' ? 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent'
12
+ : variant() === 'outline' ? 'text-foreground border-input bg-background hover:bg-accent border-border'
13
+ : variant() === 'destructive' ? 'bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent'
14
+ : 'bg-muted border-transparent'`,
10
15
  },
11
16
  })
12
17
  export class Badge {
13
- readonly variant = input<'info' | 'success' | 'warning' | 'danger'>('info');
18
+ readonly variant = input<'default' | 'secondary' | 'outline' | 'destructive'>('default');
14
19
  }