@ngbase/adk 0.1.2 → 0.1.4

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 (128) hide show
  1. package/a11y/accessibility-group.d.ts +2 -5
  2. package/accordion/accordion-item.d.ts +3 -1
  3. package/autocomplete/autocomplete-input.d.ts +2 -4
  4. package/autocomplete/autocomplete.d.ts +12 -3
  5. package/carousel/carousel.d.ts +2 -2
  6. package/checkbox/checkbox.d.ts +11 -3
  7. package/checkbox/public-api.d.ts +1 -1
  8. package/datepicker/datepicker-trigger.d.ts +22 -5
  9. package/datepicker/datepicker.d.ts +2 -1
  10. package/drag/drag.d.ts +1 -2
  11. package/fesm2022/ngbase-adk-a11y.mjs +29 -26
  12. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  13. package/fesm2022/ngbase-adk-accordion.mjs +12 -2
  14. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-autocomplete.mjs +18 -18
  16. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-carousel.mjs +5 -5
  18. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
  20. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-datepicker.mjs +76 -25
  22. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-dialog.mjs +3 -3
  24. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  25. package/fesm2022/ngbase-adk-drag.mjs +1 -2
  26. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  27. package/fesm2022/ngbase-adk-list.mjs +2 -2
  28. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  29. package/fesm2022/ngbase-adk-mask.mjs +5 -3
  30. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  31. package/fesm2022/ngbase-adk-menu.mjs +22 -7
  32. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  33. package/fesm2022/ngbase-adk-pagination.mjs +3 -3
  34. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  35. package/fesm2022/ngbase-adk-popover.mjs +25 -22
  36. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  37. package/fesm2022/ngbase-adk-portal.mjs +5 -9
  38. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  39. package/fesm2022/ngbase-adk-radio.mjs +6 -3
  40. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  41. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-select.mjs +21 -13
  43. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-slider.mjs +4 -1
  45. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-table.mjs +8 -6
  48. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  50. package/fesm2022/ngbase-adk-test.mjs +11 -1
  51. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  52. package/fesm2022/ngbase-adk-tour.mjs +2 -2
  53. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  54. package/fesm2022/ngbase-adk-utils.mjs +12 -9
  55. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  56. package/mask/mask.d.ts +1 -2
  57. package/menu/menu-trigger.d.ts +1 -1
  58. package/menu/menu.d.ts +8 -2
  59. package/package.json +8 -8
  60. package/pagination/pagination.d.ts +3 -3
  61. package/popover/base-popover.service.d.ts +1 -1
  62. package/popover/popover.d.ts +5 -4
  63. package/portal/portal-base.service.d.ts +3 -3
  64. package/portal/portal-close.directive.d.ts +3 -2
  65. package/radio/radio.d.ts +5 -1
  66. package/schematics/components/files/accordion/accordion.ts.template +2 -2
  67. package/schematics/components/files/alert/alert.ts.template +1 -1
  68. package/schematics/components/files/autocomplete/autocomplete.ts.template +1 -1
  69. package/schematics/components/files/avatar/avatar.ts.template +1 -1
  70. package/schematics/components/files/badge/badge.ts.template +1 -1
  71. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +6 -2
  72. package/schematics/components/files/button/button.ts.template +5 -5
  73. package/schematics/components/files/card/card.ts.template +1 -1
  74. package/schematics/components/files/checkbox/checkbox.ts.template +9 -19
  75. package/schematics/components/files/checkbox/focus-style.directive.ts.template +1 -1
  76. package/schematics/components/files/chip/chip.ts.template +4 -2
  77. package/schematics/components/files/color-picker/color-picker.ts.template +1 -1
  78. package/schematics/components/files/command/command.ts.template +1 -1
  79. package/schematics/components/files/datepicker/calendar.ts.template +10 -10
  80. package/schematics/components/files/datepicker/datepicker.ts.template +19 -18
  81. package/schematics/components/files/datepicker/time.ts.template +3 -3
  82. package/schematics/components/files/dialog/dialog.ts.template +1 -1
  83. package/schematics/components/files/drawer/drawer.ts.template +2 -2
  84. package/schematics/components/files/form-field/form-field.ts.template +8 -8
  85. package/schematics/components/files/form-field/input-style.directive.ts.template +1 -1
  86. package/schematics/components/files/keys/key.ts.template +1 -1
  87. package/schematics/components/files/list/list.ts.template +1 -1
  88. package/schematics/components/files/otp/otp.ts.template +1 -1
  89. package/schematics/components/files/pagination/pagination.ts.template +6 -2
  90. package/schematics/components/files/popover/popover.ts.template +2 -2
  91. package/schematics/components/files/progress/progress.ts.template +1 -1
  92. package/schematics/components/files/radio/radio.ts.template +7 -5
  93. package/schematics/components/files/resizable/resizable.ts.template +6 -3
  94. package/schematics/components/files/select/option.ts.template +2 -2
  95. package/schematics/components/files/select/select.ts.template +3 -3
  96. package/schematics/components/files/selectable/selectable.ts.template +5 -5
  97. package/schematics/components/files/sheet/sheet.ts.template +1 -1
  98. package/schematics/components/files/sidenav/sidenav.ts.template +1 -1
  99. package/schematics/components/files/skeleton/skeleton.ts.template +1 -1
  100. package/schematics/components/files/slider/slider.ts.template +3 -3
  101. package/schematics/components/files/sonner/sonner.ts.template +3 -3
  102. package/schematics/components/files/spinner/spinner.ts.template +1 -1
  103. package/schematics/components/files/stepper/stepper.ts.template +1 -1
  104. package/schematics/components/files/switch/switch.ts.template +2 -2
  105. package/schematics/components/files/table/index.ts.template +12 -11
  106. package/schematics/components/files/table/table.ts.template +107 -5
  107. package/schematics/components/files/tabs/tab.ts.template +4 -4
  108. package/schematics/components/files/toggle/toggle.ts.template +1 -1
  109. package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
  110. package/schematics/components/files/tooltip/tooltip.ts.template +1 -1
  111. package/schematics/components/index.js +32 -8
  112. package/schematics/components/index.js.map +1 -1
  113. package/schematics/components/index.ts +41 -11
  114. package/schematics/components/schema.d.ts +1 -1
  115. package/schematics/components/schema.json +2 -2
  116. package/schematics/components/schema.ts +1 -1
  117. package/select/option.d.ts +1 -1
  118. package/select/select-base.d.ts +8 -6
  119. package/select/select.d.ts +5 -2
  120. package/slider/slider.d.ts +1 -0
  121. package/table/table.d.ts +2 -2
  122. package/test/utils.d.ts +19 -3
  123. package/utils/utils.d.ts +5 -4
  124. package/schematics/components/files/table/body-cell.ts.template +0 -19
  125. package/schematics/components/files/table/body-row.ts.template +0 -21
  126. package/schematics/components/files/table/column.ts.template +0 -8
  127. package/schematics/components/files/table/head-cell.ts.template +0 -19
  128. package/schematics/components/files/table/head-row.ts.template +0 -27
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, model, input, booleanAttribute, Directive, contentChildren, signal, effect } from '@angular/core';
2
+ import { inject, model, input, booleanAttribute, output, Directive, contentChildren, signal, effect } from '@angular/core';
3
3
  import { uniqueId } from '@ngbase/adk/utils';
4
4
  import { trigger, state, style, transition, animate } from '@angular/animations';
5
5
 
@@ -10,18 +10,28 @@ class NgbAccordion {
10
10
  // Inputs
11
11
  this.expanded = model(false);
12
12
  this.disabled = input(false, { transform: booleanAttribute });
13
+ // Outputs
14
+ this.opened = output();
15
+ this.closed = output();
13
16
  // locals
14
17
  this.id = uniqueId();
15
18
  }
16
19
  toggle() {
17
20
  this.expanded.update(v => !v);
21
+ // TODO: this is not the correct way to emit the events
22
+ if (this.expanded()) {
23
+ this.opened.emit(true);
24
+ }
25
+ else {
26
+ this.closed.emit(true);
27
+ }
18
28
  if (this.accordionService.multiple()) {
19
29
  return;
20
30
  }
21
31
  this.accordionService.activeId.set(this.expanded() ? this.id : '');
22
32
  }
23
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbAccordion, isStandalone: true, selector: "[ngbAccordion]", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, exportAs: ["ngbAccordion"], ngImport: i0 }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbAccordion, isStandalone: true, selector: "[ngbAccordion]", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange", opened: "opened", closed: "closed" }, exportAs: ["ngbAccordion"], ngImport: i0 }); }
25
35
  }
26
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbAccordion, decorators: [{
27
37
  type: Directive,
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-accordion.mjs","sources":["../../../projects/adk/accordion/accordion-item.ts","../../../projects/adk/accordion/accordion-group.ts","../../../projects/adk/accordion/accordion-header.ts","../../../projects/adk/accordion/accordion-content.ts","../../../projects/adk/accordion/public-api.ts","../../../projects/adk/accordion/ngbase-adk-accordion.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, input, model } from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbAccordionGroup } from './accordion-group';\n\n@Directive({\n selector: '[ngbAccordion]',\n exportAs: 'ngbAccordion',\n})\nexport class NgbAccordion {\n // Dependencies\n private accordionService = inject(NgbAccordionGroup);\n\n // Inputs\n readonly expanded = model(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n\n // locals\n readonly id = uniqueId();\n\n toggle() {\n this.expanded.update(v => !v);\n if (this.accordionService.multiple()) {\n return;\n }\n this.accordionService.activeId.set(this.expanded() ? this.id : '');\n }\n}\n\nexport function aliasAccordion(accordion: typeof NgbAccordion) {\n return { provide: NgbAccordion, useExisting: accordion };\n}\n","import { booleanAttribute, contentChildren, Directive, effect, input, signal } from '@angular/core';\nimport { NgbAccordion } from './accordion-item';\n\n@Directive({\n selector: '[ngbAccordionGroup]',\n exportAs: 'ngbAccordionGroup',\n})\nexport class NgbAccordionGroup {\n readonly items = contentChildren(NgbAccordion);\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly activeId = signal('');\n\n constructor() {\n effect(() => {\n const items = this.items();\n const ids = this.activeId();\n const isMultiple = this.multiple();\n if (!isMultiple) {\n items.forEach(item => {\n item.expanded.set(ids.includes(item.id));\n });\n }\n });\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbAccordion } from './accordion-item';\n\n@Directive({\n selector: '[ngbAccordionHeader]',\n host: {\n '(click)': 'accordion.disabled() ? null : accordion.toggle()',\n '[tabindex]': 'accordion.disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'accordion.disabled()',\n '[attr.aria-expanded]': 'accordion.expanded()',\n '[attr.aria-controls]': 'accordion.id',\n '[id]': `'accordion-' + accordion.id`,\n },\n})\nexport class NgbAccordionHeader {\n accordion = inject(NgbAccordion);\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directive, inject } from '@angular/core';\nimport { NgbAccordion } from './accordion-item';\n\n@Directive({\n selector: '[ngbAccordionContent]',\n host: {\n role: 'region',\n '[id]': 'accordion.id',\n '[attr.aria-labelledby]': \"'accordion-' + accordion.id\",\n },\n})\nexport class NgbAccordionContent {\n readonly accordion = inject(NgbAccordion);\n}\n\nexport const slideAnimation = trigger('slide', [\n state('void', style({ height: '0', opacity: 0 })),\n state('*', style({ height: '*', opacity: 1 })),\n transition('void => *', animate('300ms ease')),\n transition('* => void', animate('300ms ease')),\n]);\n","/*\n * Public API Surface of accordion\n */\n\nexport { NgbAccordionGroup } from './accordion-group';\nexport { NgbAccordion, aliasAccordion } from './accordion-item';\nexport { NgbAccordionHeader } from './accordion-header';\nexport { NgbAccordionContent, slideAnimation } from './accordion-content';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAQa,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;;AAMU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;;QAGxD,IAAE,CAAA,EAAA,GAAG,QAAQ,EAAE;AASzB;IAPC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE;YACpC;;QAEF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;8GAhBzD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;AAqBK,SAAU,cAAc,CAAC,SAA8B,EAAA;IAC3D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE;AAC1D;;MCvBa,iBAAiB,CAAA;AAK5B,IAAA,WAAA,GAAA;AAJS,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC;QACrC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAG5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,iBAAC,CAAC;;AAEN,SAAC,CAAC;;8GAfO,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,kPACK,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FADlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;;MCQY,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AAYE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AACjC;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kDAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kDAAkD;AAC7D,wBAAA,YAAY,EAAE,+BAA+B;AAC7C,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,MAAM,EAAE,CAA6B,2BAAA,CAAA;AACtC,qBAAA;AACF,iBAAA;;;MCDY,mBAAmB,CAAA;AARhC,IAAA,WAAA,GAAA;AASW,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1C;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,wBAAwB,EAAE,6BAA6B;AACxD,qBAAA;AACF,iBAAA;;AAKY,MAAA,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE;AAC7C,IAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjD,IAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAA;;ACrBD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"ngbase-adk-accordion.mjs","sources":["../../../projects/adk/accordion/accordion-item.ts","../../../projects/adk/accordion/accordion-group.ts","../../../projects/adk/accordion/accordion-header.ts","../../../projects/adk/accordion/accordion-content.ts","../../../projects/adk/accordion/public-api.ts","../../../projects/adk/accordion/ngbase-adk-accordion.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, input, model, output } from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbAccordionGroup } from './accordion-group';\n\n@Directive({\n selector: '[ngbAccordion]',\n exportAs: 'ngbAccordion',\n})\nexport class NgbAccordion {\n // Dependencies\n private accordionService = inject(NgbAccordionGroup);\n\n // Inputs\n readonly expanded = model(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n\n // Outputs\n readonly opened = output<boolean>();\n readonly closed = output<boolean>();\n\n // locals\n readonly id = uniqueId();\n\n toggle() {\n this.expanded.update(v => !v);\n // TODO: this is not the correct way to emit the events\n if (this.expanded()) {\n this.opened.emit(true);\n } else {\n this.closed.emit(true);\n }\n if (this.accordionService.multiple()) {\n return;\n }\n this.accordionService.activeId.set(this.expanded() ? this.id : '');\n }\n}\n\nexport function aliasAccordion(accordion: typeof NgbAccordion) {\n return { provide: NgbAccordion, useExisting: accordion };\n}\n","import { booleanAttribute, contentChildren, Directive, effect, input, signal } from '@angular/core';\nimport { NgbAccordion } from './accordion-item';\n\n@Directive({\n selector: '[ngbAccordionGroup]',\n exportAs: 'ngbAccordionGroup',\n})\nexport class NgbAccordionGroup {\n readonly items = contentChildren(NgbAccordion);\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly activeId = signal('');\n\n constructor() {\n effect(() => {\n const items = this.items();\n const ids = this.activeId();\n const isMultiple = this.multiple();\n if (!isMultiple) {\n items.forEach(item => {\n item.expanded.set(ids.includes(item.id));\n });\n }\n });\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbAccordion } from './accordion-item';\n\n@Directive({\n selector: '[ngbAccordionHeader]',\n host: {\n '(click)': 'accordion.disabled() ? null : accordion.toggle()',\n '[tabindex]': 'accordion.disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'accordion.disabled()',\n '[attr.aria-expanded]': 'accordion.expanded()',\n '[attr.aria-controls]': 'accordion.id',\n '[id]': `'accordion-' + accordion.id`,\n },\n})\nexport class NgbAccordionHeader {\n accordion = inject(NgbAccordion);\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directive, inject } from '@angular/core';\nimport { NgbAccordion } from './accordion-item';\n\n@Directive({\n selector: '[ngbAccordionContent]',\n host: {\n role: 'region',\n '[id]': 'accordion.id',\n '[attr.aria-labelledby]': \"'accordion-' + accordion.id\",\n },\n})\nexport class NgbAccordionContent {\n readonly accordion = inject(NgbAccordion);\n}\n\nexport const slideAnimation = trigger('slide', [\n state('void', style({ height: '0', opacity: 0 })),\n state('*', style({ height: '*', opacity: 1 })),\n transition('void => *', animate('300ms ease')),\n transition('* => void', animate('300ms ease')),\n]);\n","/*\n * Public API Surface of accordion\n */\n\nexport { NgbAccordionGroup } from './accordion-group';\nexport { NgbAccordion, aliasAccordion } from './accordion-item';\nexport { NgbAccordionHeader } from './accordion-header';\nexport { NgbAccordionContent, slideAnimation } from './accordion-content';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAQa,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;;AAMU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;;QAGxD,IAAM,CAAA,MAAA,GAAG,MAAM,EAAW;QAC1B,IAAM,CAAA,MAAA,GAAG,MAAM,EAAW;;QAG1B,IAAE,CAAA,EAAA,GAAG,QAAQ,EAAE;AAezB;IAbC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;AAE7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;aACjB;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;AAExB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE;YACpC;;QAEF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;8GA1BzD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;AA+BK,SAAU,cAAc,CAAC,SAA8B,EAAA;IAC3D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE;AAC1D;;MCjCa,iBAAiB,CAAA;AAK5B,IAAA,WAAA,GAAA;AAJS,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC;QACrC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACxD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAG5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,iBAAC,CAAC;;AAEN,SAAC,CAAC;;8GAfO,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,kPACK,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FADlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;;MCQY,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AAYE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AACjC;8GAFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kDAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kDAAkD;AAC7D,wBAAA,YAAY,EAAE,+BAA+B;AAC7C,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,MAAM,EAAE,CAA6B,2BAAA,CAAA;AACtC,qBAAA;AACF,iBAAA;;;MCDY,mBAAmB,CAAA;AARhC,IAAA,WAAA,GAAA;AASW,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1C;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,wBAAwB,EAAE,6BAA6B;AACxD,qBAAA;AACF,iBAAA;;AAKY,MAAA,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE;AAC7C,IAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjD,IAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAA;;ACrBD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, output, input, computed, afterNextRender, Directive, contentChild, contentChildren, effect } from '@angular/core';
2
+ import { inject, ElementRef, input, booleanAttribute, output, effect, Directive, contentChild, contentChildren, computed } from '@angular/core';
3
3
  import { NgbChip } from '@ngbase/adk/chip';
4
4
  import { SelectBase } from '@ngbase/adk/select';
5
- import { provideValueAccessor } from '@ngbase/adk/utils';
5
+ import { filterFunction, provideValueAccessor } from '@ngbase/adk/utils';
6
6
  import * as i1 from '@ngbase/adk/form-field';
7
7
  import { InputBase } from '@ngbase/adk/form-field';
8
8
 
@@ -12,25 +12,20 @@ class NgbAutocompleteInput {
12
12
  this.autoComplete = inject(NgbAutocomplete);
13
13
  this.input = inject(InputBase);
14
14
  this.el = inject(ElementRef);
15
+ this.isChip = input(false, { transform: booleanAttribute });
15
16
  // Inputs
16
17
  this.ngbAutocompleteInput = output();
17
- this.options = input([]);
18
- this.filterFn = input();
19
- // State
20
- this.filteredOptions = computed(() => {
21
- const fn = this.filterFn();
22
- const options = this.options();
23
- const search = this.input.value();
24
- const values = search ? options.filter(v => fn(search, v, options)) : options;
25
- return values;
26
- });
27
- afterNextRender(() => {
28
- this.el.nativeElement.addEventListener('keydown', event => {
18
+ effect(cleanup => {
19
+ if (!this.isChip())
20
+ return;
21
+ const fn = (event) => {
29
22
  const value = event.target.value;
30
23
  if (event.key === 'Backspace' && value === '') {
31
24
  this.autoComplete.popValue();
32
25
  }
33
- });
26
+ };
27
+ this.el.nativeElement.addEventListener('keydown', fn);
28
+ cleanup(() => this.el.nativeElement.removeEventListener('keydown', fn));
34
29
  // if (this.autoComplete.multiple()) return;
35
30
  // this.autoComplete.events.subscribe(event => {
36
31
  // if (event === 'close') {
@@ -47,14 +42,14 @@ class NgbAutocompleteInput {
47
42
  // this.autoComplete.popClose();
48
43
  }
49
44
  updateValue(value) {
50
- this.el.nativeElement.value = value;
45
+ this.el.nativeElement.value = this.isChip() ? '' : value;
51
46
  }
52
47
  updateSearch(value) {
53
48
  this.input.setValue(value);
54
49
  this.ngbAutocompleteInput.emit(value);
55
50
  }
56
51
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbAutocompleteInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
57
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbAutocompleteInput, isStandalone: true, selector: "[ngbAutocompleteInput]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ngbAutocompleteInput: "ngbAutocompleteInput" }, host: { attributes: { "autocomplete": "off" }, listeners: { "focus": "onFocus()", "blur": "close()", "input": "updateSearch($event.target.value)" } }, exportAs: ["ngbAutocompleteInput"], hostDirectives: [{ directive: i1.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
52
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbAutocompleteInput, isStandalone: true, selector: "[ngbAutocompleteInput]", inputs: { isChip: { classPropertyName: "isChip", publicName: "isChip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ngbAutocompleteInput: "ngbAutocompleteInput" }, host: { attributes: { "autocomplete": "off" }, listeners: { "focus": "onFocus()", "blur": "close()", "input": "updateSearch($event.target.value)" } }, exportAs: ["ngbAutocompleteInput"], hostDirectives: [{ directive: i1.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
58
53
  }
59
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbAutocompleteInput, decorators: [{
60
55
  type: Directive,
@@ -76,6 +71,11 @@ class NgbAutocomplete extends SelectBase {
76
71
  super(false);
77
72
  this.searchInput = contentChild(NgbAutocompleteInput);
78
73
  this.chips = contentChildren(NgbChip);
74
+ this.filterFn = input((option) => option);
75
+ this.queryFn = input();
76
+ this.filterOptions = input();
77
+ this.optionsFilter = filterFunction(this.options, computed(() => this.filterOptions() ??
78
+ { filter: this.filterFn(), query: this.queryFn() }));
79
79
  effect(() => {
80
80
  if (this.status() !== 'opened')
81
81
  this.updateInputValue();
@@ -92,7 +92,7 @@ class NgbAutocomplete extends SelectBase {
92
92
  }
93
93
  }
94
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
95
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbAutocomplete, isStandalone: true, selector: "[ngbAutocomplete]", providers: [_provide(NgbAutocomplete)], queries: [{ propertyName: "searchInput", first: true, predicate: NgbAutocompleteInput, descendants: true, isSignal: true }, { propertyName: "chips", predicate: NgbChip, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
95
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbAutocomplete, isStandalone: true, selector: "[ngbAutocomplete]", inputs: { filterFn: { classPropertyName: "filterFn", publicName: "filterFn", isSignal: true, isRequired: false, transformFunction: null }, queryFn: { classPropertyName: "queryFn", publicName: "queryFn", isSignal: true, isRequired: false, transformFunction: null }, filterOptions: { classPropertyName: "filterOptions", publicName: "filterOptions", isSignal: true, isRequired: false, transformFunction: null } }, providers: [_provide(NgbAutocomplete)], queries: [{ propertyName: "searchInput", first: true, predicate: NgbAutocompleteInput, descendants: true, isSignal: true }, { propertyName: "chips", predicate: NgbChip, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbAutocomplete, decorators: [{
98
98
  type: Directive,
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-autocomplete.mjs","sources":["../../../projects/adk/autocomplete/autocomplete-input.ts","../../../projects/adk/autocomplete/autocomplete.ts","../../../projects/adk/autocomplete/public-api.ts","../../../projects/adk/autocomplete/ngbase-adk-autocomplete.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n afterNextRender,\n computed,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { InputBase } from '@ngbase/adk/form-field';\nimport { NgbAutocomplete } from './autocomplete';\n\n@Directive({\n selector: '[ngbAutocompleteInput]',\n exportAs: 'ngbAutocompleteInput',\n hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],\n host: {\n '(focus)': 'onFocus()',\n '(blur)': 'close()',\n '(input)': 'updateSearch($event.target.value)',\n autocomplete: 'off',\n },\n})\nexport class NgbAutocompleteInput<T> {\n // Dependencies\n readonly autoComplete = inject(NgbAutocomplete);\n readonly input = inject(InputBase);\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n // Inputs\n readonly ngbAutocompleteInput = output<string>();\n readonly options = input<T[]>([]);\n readonly filterFn = input<(query: string, value: T, values: T[]) => boolean>();\n\n // State\n readonly filteredOptions = computed(() => {\n const fn = this.filterFn();\n const options = this.options();\n const search = this.input.value();\n const values = search ? options.filter(v => fn!(search, v, options)) : options;\n return values;\n });\n\n constructor() {\n afterNextRender(() => {\n this.el.nativeElement.addEventListener('keydown', event => {\n const value = (event.target as any).value;\n if (event.key === 'Backspace' && value === '') {\n this.autoComplete.popValue();\n }\n });\n // if (this.autoComplete.multiple()) return;\n // this.autoComplete.events.subscribe(event => {\n // if (event === 'close') {\n // const value = this.autoComplete.cValue();\n // this.el.nativeElement.value = value;\n // }\n // });\n });\n }\n\n onFocus() {\n this.autoComplete.open();\n }\n\n close() {\n // this.autoComplete.popClose();\n }\n\n updateValue(value: string) {\n this.el.nativeElement.value = value;\n }\n\n updateSearch(value: string) {\n this.input.setValue(value);\n this.ngbAutocompleteInput.emit(value);\n }\n}\n","import { contentChild, contentChildren, Directive, effect, Type } from '@angular/core';\nimport { NgbChip } from '@ngbase/adk/chip';\nimport { SelectBase } from '@ngbase/adk/select';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\nimport { NgbAutocompleteInput } from './autocomplete-input';\n\n@Directive({\n selector: '[ngbAutocomplete]',\n providers: [_provide(NgbAutocomplete)],\n})\nexport class NgbAutocomplete<T> extends SelectBase<T> {\n searchInput = contentChild(NgbAutocompleteInput);\n chips = contentChildren(NgbChip);\n\n constructor() {\n super(false);\n effect(() => {\n if (this.status() !== 'opened') this.updateInputValue();\n });\n }\n\n prevent(ev: MouseEvent) {\n ev.stopPropagation();\n }\n\n private updateInputValue() {\n const searchInput = this.searchInput();\n if (!this.chips()?.length && searchInput) {\n searchInput.ngbAutocompleteInput.emit('');\n searchInput.updateValue(this.cValue());\n }\n }\n}\n\nfunction _provide<T>(autocomplete: Type<NgbAutocomplete<T>>) {\n return [{ provide: SelectBase, useExisting: autocomplete }, provideValueAccessor(autocomplete)];\n}\n\nexport function aliasAutocomplete<T>(autocomplete: Type<NgbAutocomplete<T>>) {\n const deps = [_provide(autocomplete), { provide: NgbAutocomplete, useExisting: autocomplete }];\n return deps;\n}\n","/*\n * Public API Surface of autocomplete\n */\n\nexport * from './autocomplete';\nexport * from './autocomplete-input';\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-autocomplete.mjs","sources":["../../../projects/adk/autocomplete/autocomplete-input.ts","../../../projects/adk/autocomplete/autocomplete.ts","../../../projects/adk/autocomplete/public-api.ts","../../../projects/adk/autocomplete/ngbase-adk-autocomplete.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n booleanAttribute,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { InputBase } from '@ngbase/adk/form-field';\nimport { NgbAutocomplete } from './autocomplete';\n\n@Directive({\n selector: '[ngbAutocompleteInput]',\n exportAs: 'ngbAutocompleteInput',\n hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],\n host: {\n '(focus)': 'onFocus()',\n '(blur)': 'close()',\n '(input)': 'updateSearch($event.target.value)',\n autocomplete: 'off',\n },\n})\nexport class NgbAutocompleteInput<T> {\n // Dependencies\n readonly autoComplete = inject(NgbAutocomplete);\n readonly input = inject(InputBase);\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n readonly isChip = input(false, { transform: booleanAttribute });\n\n // Inputs\n readonly ngbAutocompleteInput = output<string>();\n\n constructor() {\n effect(cleanup => {\n if (!this.isChip()) return;\n const fn = (event: KeyboardEvent) => {\n const value = (event.target as any).value;\n if (event.key === 'Backspace' && value === '') {\n this.autoComplete.popValue();\n }\n };\n this.el.nativeElement.addEventListener('keydown', fn);\n cleanup(() => this.el.nativeElement.removeEventListener('keydown', fn));\n // if (this.autoComplete.multiple()) return;\n // this.autoComplete.events.subscribe(event => {\n // if (event === 'close') {\n // const value = this.autoComplete.cValue();\n // this.el.nativeElement.value = value;\n // }\n // });\n });\n }\n\n onFocus() {\n this.autoComplete.open();\n }\n\n close() {\n // this.autoComplete.popClose();\n }\n\n updateValue(value: string) {\n this.el.nativeElement.value = this.isChip() ? '' : value;\n }\n\n updateSearch(value: string) {\n this.input.setValue(value);\n this.ngbAutocompleteInput.emit(value);\n }\n}\n","import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n input,\n Type,\n} from '@angular/core';\nimport { NgbChip } from '@ngbase/adk/chip';\nimport { SelectBase } from '@ngbase/adk/select';\nimport { filterFunction, FilterOptions, provideValueAccessor } from '@ngbase/adk/utils';\nimport { NgbAutocompleteInput } from './autocomplete-input';\n\n@Directive({\n selector: '[ngbAutocomplete]',\n providers: [_provide(NgbAutocomplete)],\n})\nexport class NgbAutocomplete<T> extends SelectBase<T> {\n readonly searchInput = contentChild(NgbAutocompleteInput);\n readonly chips = contentChildren(NgbChip);\n readonly filterFn = input((option: string) => option as string);\n readonly queryFn = input<(query: string, option: any) => boolean>();\n readonly filterOptions = input<FilterOptions<T>>();\n readonly optionsFilter = filterFunction(\n this.options,\n computed(\n () =>\n this.filterOptions() ??\n ({ filter: this.filterFn(), query: this.queryFn() } as FilterOptions<T>),\n ),\n );\n\n constructor() {\n super(false);\n effect(() => {\n if (this.status() !== 'opened') this.updateInputValue();\n });\n }\n\n prevent(ev: MouseEvent) {\n ev.stopPropagation();\n }\n\n private updateInputValue() {\n const searchInput = this.searchInput();\n if (!this.chips()?.length && searchInput) {\n searchInput.ngbAutocompleteInput.emit('');\n searchInput.updateValue(this.cValue());\n }\n }\n}\n\nfunction _provide<T>(autocomplete: Type<NgbAutocomplete<T>>) {\n return [{ provide: SelectBase, useExisting: autocomplete }, provideValueAccessor(autocomplete)];\n}\n\nexport function aliasAutocomplete<T>(autocomplete: Type<NgbAutocomplete<T>>) {\n const deps = [_provide(autocomplete), { provide: NgbAutocomplete, useExisting: autocomplete }];\n return deps;\n}\n","/*\n * Public API Surface of autocomplete\n */\n\nexport * from './autocomplete';\nexport * from './autocomplete-input';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -44,9 +44,9 @@ class NgbCarouselSubContainer {
44
44
  this.el = inject((ElementRef));
45
45
  this.dir = injectDirectionality();
46
46
  }
47
- updateScrollPosition(x, skipDirection = false) {
47
+ updateScrollPosition(x) {
48
48
  const el = this.el.nativeElement;
49
- if (this.dir.isRtl() && !skipDirection) {
49
+ if (this.dir.isRtl()) {
50
50
  el.style.transform = `translate3d(${x}px, 0, 0)`;
51
51
  }
52
52
  else {
@@ -64,8 +64,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
64
64
  }] });
65
65
  class NgbCarousel {
66
66
  constructor() {
67
- this.drag = viewChild.required(Drag);
68
67
  this.dir = injectDirectionality();
68
+ this.drag = viewChild.required(Drag);
69
69
  this.mainContainer = viewChild.required(NgbCarouselContainer);
70
70
  this.subContainer = viewChild.required(NgbCarouselSubContainer);
71
71
  this.items = contentChildren(NgbCarouselItem);
@@ -127,8 +127,8 @@ class NgbCarousel {
127
127
  this.currentScroll = this.x();
128
128
  }
129
129
  else if (event.type === 'move') {
130
- this.currentScroll = this.x() - event.x;
131
- this.subContainer().updateScrollPosition(this.currentScroll, true);
130
+ this.currentScroll = this.x() + (this.dir.isRtl() ? event.x : -event.x);
131
+ this.subContainer().updateScrollPosition(this.currentScroll);
132
132
  }
133
133
  else if (event.type === 'end') {
134
134
  const step = this.getStepBasedOnX(this.currentScroll, event.direction, event.velocity);
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-carousel.mjs","sources":["../../../projects/adk/carousel/carousel-item.ts","../../../projects/adk/carousel/carousel.ts","../../../projects/adk/carousel/carousel-next.ts","../../../projects/adk/carousel/ngbase-adk-carousel.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[ngbCarouselItem]',\n})\nexport class NgbCarouselItem {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n get width() {\n const el = this.el.nativeElement;\n return el.getBoundingClientRect?.().width ?? el.offsetWidth; // SSR: fallback to offsetWidth\n }\n}\n","import {\n Directive,\n ElementRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { Drag } from '@ngbase/adk/drag';\nimport { NgbCarouselItem } from './carousel-item';\n\n@Directive({\n selector: '[ngbCarouselContainer]',\n hostDirectives: [Drag],\n})\nexport class NgbCarouselContainer {\n readonly el = inject(ElementRef<HTMLElement>);\n\n get width() {\n return this.el.nativeElement.clientWidth;\n }\n}\n\n@Directive({\n selector: '[ngbCarouselSubContainer]',\n})\nexport class NgbCarouselSubContainer {\n private el = inject(ElementRef<HTMLElement>);\n private dir = injectDirectionality();\n\n updateScrollPosition(x: number, skipDirection = false) {\n const el = this.el.nativeElement;\n if (this.dir.isRtl() && !skipDirection) {\n el.style.transform = `translate3d(${x}px, 0, 0)`;\n } else {\n el.style.transform = `translate3d(${-x}px, 0, 0)`;\n }\n }\n}\n\n@Directive({\n selector: '[ngbCarousel]',\n exportAs: 'ngbCarousel',\n})\nexport class NgbCarousel {\n private drag = viewChild.required(Drag);\n private dir = injectDirectionality();\n private mainContainer = viewChild.required(NgbCarouselContainer);\n private subContainer = viewChild.required(NgbCarouselSubContainer);\n private items = contentChildren(NgbCarouselItem);\n readonly current = signal(0);\n private animationId = 0;\n // this can be overridden by the ui carousel component\n velocity = 1.1;\n\n readonly itemsPerStep = computed(() => {\n const _ = this.isReady();\n const items = this.items();\n // const totalWidth = this.totalWidth();\n const containerWidth = this.containerWidth;\n // const scrollableWidth = totalWidth - containerWidth || 1;\n const v = Math.ceil(containerWidth / (items[0].width || 1));\n return v;\n });\n\n private readonly totalWidth = computed(() => {\n const _ = this.isReady();\n const items = this.items();\n return items.reduce((acc, item) => acc + item.width, 0);\n });\n\n /**\n * This is the total number of steps that can be taken.\n * It is computed based on the container width and the width of the last item.\n * It is used to determine the number of steps that can be taken.\n * We have to consider gap between items like padding or margin or flex gap.\n */\n readonly totalSteps = computed(() => {\n // const containerWidth = this.containerWidth;\n const items = this.items();\n if (!items.length || !this.itemsPerStep()) return 0;\n\n // console.log('totalSteps', items.length, this.itemsPerStep());\n\n // const totalWidth = this.totalWidth();\n // const scrollableWidth = totalWidth;\n\n // if (scrollableWidth <= 0) return 1; // All items fit in container\n\n // // Calculate effective step size based on the smallest item width\n // // const minItemWidth = Math.min(...items.map(item => item.width));\n // const v = Math.max(1, Math.floor(scrollableWidth / containerWidth));\n // console.log('totalSteps', v, scrollableWidth, containerWidth, scrollableWidth / containerWidth);\n // return v;\n const itemsPerStep = this.itemsPerStep();\n // const totalWidth = this.totalWidth();\n // const scrollableWidth = totalWidth - this.containerWidth;\n // return Math.max(1, Math.floor(scrollableWidth / itemsPerStep));\n return Math.ceil(items.length / itemsPerStep);\n });\n\n private readonly isReady = signal(false, { equal: () => false });\n readonly isFirst = computed(() => this.current() === 0);\n readonly isLast = computed(() => this.current() === this.totalSteps() - 1);\n private currentScroll = 0;\n\n constructor() {\n afterNextRender(() => {\n this.isReady.set(true);\n this.drag().events.subscribe(event => {\n event.event?.preventDefault();\n requestAnimationFrame(() => {\n if (event.type === 'start') {\n cancelAnimationFrame(this.animationId);\n this.currentScroll = this.x();\n } else if (event.type === 'move') {\n this.currentScroll = this.x() - event.x;\n this.subContainer().updateScrollPosition(this.currentScroll, true);\n } else if (event.type === 'end') {\n const step = this.getStepBasedOnX(\n this.currentScroll,\n event.direction!,\n event.velocity!, // Convert to pixels/second\n );\n this.go(step, event.velocity!);\n }\n });\n });\n });\n\n effect(cleanup => {\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n requestAnimationFrame(() => this.isReady.set(true));\n });\n observer.observe(this.mainContainer().el.nativeElement);\n cleanup(() => observer.disconnect());\n }\n });\n\n // if the total steps changes, we need to update the current step\n // also make sure the most visible item is the current item\n effect(() => {\n const totalSteps = this.totalSteps();\n const _ = this.dir.isRtl();\n const __ = this.isReady();\n // console.log('effect', totalSteps, this.itemsPerStep());\n untracked(() => {\n const current = this.current();\n const step = current >= totalSteps ? totalSteps - 1 : current;\n this.go(step, this.velocity, true);\n });\n });\n }\n\n x() {\n const current = this.current() * this.itemsPerStep();\n const items = this.items();\n if (this.containerWidth > this.totalWidth()) return 0;\n\n const totalWidth = this.totalWidth() - this.containerWidth;\n\n const x = items.slice(0, current).reduce((a, item) => a + item.width, 0);\n return Math.min(x, totalWidth);\n }\n\n private get containerWidth() {\n return this.mainContainer().width;\n }\n\n next(step = 1) {\n const current = this.current();\n const nextStep = Math.min(current + step, this.totalSteps() - 1);\n this.go(nextStep);\n }\n\n prev(step = 1) {\n const current = this.current();\n const index = Math.max(current - step, 0);\n this.go(index);\n }\n\n go(step: number, velocity = this.velocity, withoutAnimation = false) {\n // const totalSteps = this.totalSteps();\n if (step < 0 || step >= this.totalSteps()) {\n console.log('out of bounds step', step, this.totalSteps());\n return;\n }\n this.current.set(step);\n this.animateToX(velocity, withoutAnimation); // Adjust the scaling factor as needed\n }\n\n /**\n * Determines the appropriate step based on scroll position, direction and velocity\n * @param scrollX Current scroll position\n * @param direction Drag direction\n * @param velocity Drag velocity\n * @returns The calculated step index\n */\n private getStepBasedOnX(scrollX: number, direction: 'left' | 'right', velocity: number): number {\n const currentStep = this.current();\n const totalSteps = this.totalSteps();\n const isRtl = this.dir.isRtl();\n\n // In RTL mode, invert the direction\n const effectiveDirection = isRtl ? (direction === 'left' ? 'right' : 'left') : direction;\n\n // Prevent movement on last step when trying to go forward\n if (currentStep === totalSteps - 1 && effectiveDirection === 'left') {\n return currentStep;\n }\n\n // Use velocity to determine step change\n const VELOCITY_THRESHOLD = 0.3;\n if (Math.abs(velocity) > VELOCITY_THRESHOLD) {\n if (effectiveDirection === 'left') {\n return Math.min(currentStep + 1, totalSteps - 1);\n } else {\n return Math.max(currentStep - 1, 0);\n }\n }\n\n // If velocity is low, stay at current step\n return currentStep;\n }\n\n // private updateScrollPosition(x = this.currentScroll) {\n // const el = this.subContainer().nativeElement;\n // if (this.dir.isRtl()) {\n // el.style.transform = `translate3d(${x}px, 0, 0)`;\n // } else {\n // el.style.transform = `translate3d(${-x}px, 0, 0)`;\n // }\n // }\n\n private animateToX(velocity: number, withoutAnimation = false) {\n velocity = Math.max(velocity, this.velocity);\n let lastTime = Date.now();\n const targetScroll = this.x();\n const startScroll = this.currentScroll;\n const isRtl = this.dir.isRtl();\n\n // In RTL, invert the distance calculation\n const distance = isRtl ? startScroll - targetScroll : targetScroll - startScroll;\n const duration = Math.abs(distance / velocity);\n let elapsedTime = 0;\n\n const easeOutQuad = (t: number) => t * (2 - t);\n const subContainer = this.subContainer();\n\n const animate = () => {\n const now = Date.now();\n const dt = now - lastTime;\n lastTime = now;\n elapsedTime += dt;\n\n const progress = Math.min(elapsedTime / duration, 1);\n const easedProgress = easeOutQuad(progress);\n\n // Calculate scroll position based on direction\n this.currentScroll = isRtl\n ? startScroll - distance * easedProgress\n : startScroll + distance * easedProgress;\n\n subContainer.updateScrollPosition(this.currentScroll);\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(animate);\n }\n };\n\n cancelAnimationFrame(this.animationId);\n if (!withoutAnimation) {\n this.animationId = requestAnimationFrame(animate);\n } else {\n this.currentScroll = targetScroll;\n subContainer.updateScrollPosition(this.currentScroll);\n }\n }\n\n private snapToNearest(velocity = this.velocity) {\n const items = this.items();\n let nearestIndex = 0;\n let minDistance = Infinity;\n\n for (let i = 0; i < items.length; i++) {\n const itemPosition = items.slice(0, i).reduce((acc, item) => acc + item.width, 0);\n const distance = Math.abs(this.currentScroll - itemPosition);\n if (distance < minDistance) {\n minDistance = distance;\n nearestIndex = i;\n }\n }\n\n const step = Math.floor(nearestIndex / this.itemsPerStep());\n\n this.go(step, velocity);\n // this.current.set(nearestIndex);\n // this.currentScroll = this.x();\n // this.updateScrollPosition();\n }\n}\n\nexport function aliasCarousel(carousel: typeof NgbCarousel) {\n return { provide: NgbCarousel, useExisting: carousel };\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { NgbCarousel } from './carousel';\n\n@Directive({\n selector: '[ngbCarouselButton]',\n host: {\n '(click)': 'clicked($event)',\n },\n})\nexport class NgbCarouselButton {\n private readonly carousel = inject(NgbCarousel);\n\n readonly ngbCarouselButton = input.required<number | 'next' | 'prev'>();\n\n clicked(event: Event) {\n event.preventDefault();\n const no = this.ngbCarouselButton();\n if (no === 'next') {\n this.carousel.next();\n } else if (no === 'prev') {\n this.carousel.prev();\n } else {\n this.carousel.go(no);\n }\n }\n}\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-carousel.mjs","sources":["../../../projects/adk/carousel/carousel-item.ts","../../../projects/adk/carousel/carousel.ts","../../../projects/adk/carousel/carousel-next.ts","../../../projects/adk/carousel/ngbase-adk-carousel.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[ngbCarouselItem]',\n})\nexport class NgbCarouselItem {\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n get width() {\n const el = this.el.nativeElement;\n return el.getBoundingClientRect?.().width ?? el.offsetWidth; // SSR: fallback to offsetWidth\n }\n}\n","import {\n Directive,\n ElementRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\nimport { Drag } from '@ngbase/adk/drag';\nimport { NgbCarouselItem } from './carousel-item';\n\n@Directive({\n selector: '[ngbCarouselContainer]',\n hostDirectives: [Drag],\n})\nexport class NgbCarouselContainer {\n readonly el = inject(ElementRef<HTMLElement>);\n\n get width() {\n return this.el.nativeElement.clientWidth;\n }\n}\n\n@Directive({\n selector: '[ngbCarouselSubContainer]',\n})\nexport class NgbCarouselSubContainer {\n private el = inject(ElementRef<HTMLElement>);\n private dir = injectDirectionality();\n\n updateScrollPosition(x: number) {\n const el = this.el.nativeElement;\n if (this.dir.isRtl()) {\n el.style.transform = `translate3d(${x}px, 0, 0)`;\n } else {\n el.style.transform = `translate3d(${-x}px, 0, 0)`;\n }\n }\n}\n\n@Directive({\n selector: '[ngbCarousel]',\n exportAs: 'ngbCarousel',\n})\nexport class NgbCarousel {\n private dir = injectDirectionality();\n private drag = viewChild.required(Drag);\n private mainContainer = viewChild.required(NgbCarouselContainer);\n private subContainer = viewChild.required(NgbCarouselSubContainer);\n private items = contentChildren(NgbCarouselItem);\n readonly current = signal(0);\n private animationId = 0;\n // this can be overridden by the ui carousel component\n velocity = 1.1;\n\n readonly itemsPerStep = computed(() => {\n const _ = this.isReady();\n const items = this.items();\n // const totalWidth = this.totalWidth();\n const containerWidth = this.containerWidth;\n // const scrollableWidth = totalWidth - containerWidth || 1;\n const v = Math.ceil(containerWidth / (items[0].width || 1));\n return v;\n });\n\n private readonly totalWidth = computed(() => {\n const _ = this.isReady();\n const items = this.items();\n return items.reduce((acc, item) => acc + item.width, 0);\n });\n\n /**\n * This is the total number of steps that can be taken.\n * It is computed based on the container width and the width of the last item.\n * It is used to determine the number of steps that can be taken.\n * We have to consider gap between items like padding or margin or flex gap.\n */\n readonly totalSteps = computed(() => {\n // const containerWidth = this.containerWidth;\n const items = this.items();\n if (!items.length || !this.itemsPerStep()) return 0;\n\n // console.log('totalSteps', items.length, this.itemsPerStep());\n\n // const totalWidth = this.totalWidth();\n // const scrollableWidth = totalWidth;\n\n // if (scrollableWidth <= 0) return 1; // All items fit in container\n\n // // Calculate effective step size based on the smallest item width\n // // const minItemWidth = Math.min(...items.map(item => item.width));\n // const v = Math.max(1, Math.floor(scrollableWidth / containerWidth));\n // console.log('totalSteps', v, scrollableWidth, containerWidth, scrollableWidth / containerWidth);\n // return v;\n const itemsPerStep = this.itemsPerStep();\n // const totalWidth = this.totalWidth();\n // const scrollableWidth = totalWidth - this.containerWidth;\n // return Math.max(1, Math.floor(scrollableWidth / itemsPerStep));\n return Math.ceil(items.length / itemsPerStep);\n });\n\n private readonly isReady = signal(false, { equal: () => false });\n readonly isFirst = computed(() => this.current() === 0);\n readonly isLast = computed(() => this.current() === this.totalSteps() - 1);\n private currentScroll = 0;\n\n constructor() {\n afterNextRender(() => {\n this.isReady.set(true);\n this.drag().events.subscribe(event => {\n event.event?.preventDefault();\n requestAnimationFrame(() => {\n if (event.type === 'start') {\n cancelAnimationFrame(this.animationId);\n this.currentScroll = this.x();\n } else if (event.type === 'move') {\n this.currentScroll = this.x() + (this.dir.isRtl() ? event.x : -event.x);\n this.subContainer().updateScrollPosition(this.currentScroll);\n } else if (event.type === 'end') {\n const step = this.getStepBasedOnX(\n this.currentScroll,\n event.direction!,\n event.velocity!, // Convert to pixels/second\n );\n this.go(step, event.velocity!);\n }\n });\n });\n });\n\n effect(cleanup => {\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n requestAnimationFrame(() => this.isReady.set(true));\n });\n observer.observe(this.mainContainer().el.nativeElement);\n cleanup(() => observer.disconnect());\n }\n });\n\n // if the total steps changes, we need to update the current step\n // also make sure the most visible item is the current item\n effect(() => {\n const totalSteps = this.totalSteps();\n const _ = this.dir.isRtl();\n const __ = this.isReady();\n // console.log('effect', totalSteps, this.itemsPerStep());\n untracked(() => {\n const current = this.current();\n const step = current >= totalSteps ? totalSteps - 1 : current;\n this.go(step, this.velocity, true);\n });\n });\n }\n\n x() {\n const current = this.current() * this.itemsPerStep();\n const items = this.items();\n if (this.containerWidth > this.totalWidth()) return 0;\n\n const totalWidth = this.totalWidth() - this.containerWidth;\n\n const x = items.slice(0, current).reduce((a, item) => a + item.width, 0);\n return Math.min(x, totalWidth);\n }\n\n private get containerWidth() {\n return this.mainContainer().width;\n }\n\n next(step = 1) {\n const current = this.current();\n const nextStep = Math.min(current + step, this.totalSteps() - 1);\n this.go(nextStep);\n }\n\n prev(step = 1) {\n const current = this.current();\n const index = Math.max(current - step, 0);\n this.go(index);\n }\n\n go(step: number, velocity = this.velocity, withoutAnimation = false) {\n // const totalSteps = this.totalSteps();\n if (step < 0 || step >= this.totalSteps()) {\n console.log('out of bounds step', step, this.totalSteps());\n return;\n }\n this.current.set(step);\n this.animateToX(velocity, withoutAnimation); // Adjust the scaling factor as needed\n }\n\n /**\n * Determines the appropriate step based on scroll position, direction and velocity\n * @param scrollX Current scroll position\n * @param direction Drag direction\n * @param velocity Drag velocity\n * @returns The calculated step index\n */\n private getStepBasedOnX(scrollX: number, direction: 'left' | 'right', velocity: number): number {\n const currentStep = this.current();\n const totalSteps = this.totalSteps();\n const isRtl = this.dir.isRtl();\n\n // In RTL mode, invert the direction\n const effectiveDirection = isRtl ? (direction === 'left' ? 'right' : 'left') : direction;\n\n // Prevent movement on last step when trying to go forward\n if (currentStep === totalSteps - 1 && effectiveDirection === 'left') {\n return currentStep;\n }\n\n // Use velocity to determine step change\n const VELOCITY_THRESHOLD = 0.3;\n if (Math.abs(velocity) > VELOCITY_THRESHOLD) {\n if (effectiveDirection === 'left') {\n return Math.min(currentStep + 1, totalSteps - 1);\n } else {\n return Math.max(currentStep - 1, 0);\n }\n }\n\n // If velocity is low, stay at current step\n return currentStep;\n }\n\n // private updateScrollPosition(x = this.currentScroll) {\n // const el = this.subContainer().nativeElement;\n // if (this.dir.isRtl()) {\n // el.style.transform = `translate3d(${x}px, 0, 0)`;\n // } else {\n // el.style.transform = `translate3d(${-x}px, 0, 0)`;\n // }\n // }\n\n private animateToX(velocity: number, withoutAnimation = false) {\n velocity = Math.max(velocity, this.velocity);\n let lastTime = Date.now();\n const targetScroll = this.x();\n const startScroll = this.currentScroll;\n const isRtl = this.dir.isRtl();\n\n // In RTL, invert the distance calculation\n const distance = isRtl ? startScroll - targetScroll : targetScroll - startScroll;\n const duration = Math.abs(distance / velocity);\n let elapsedTime = 0;\n\n const easeOutQuad = (t: number) => t * (2 - t);\n const subContainer = this.subContainer();\n\n const animate = () => {\n const now = Date.now();\n const dt = now - lastTime;\n lastTime = now;\n elapsedTime += dt;\n\n const progress = Math.min(elapsedTime / duration, 1);\n const easedProgress = easeOutQuad(progress);\n\n // Calculate scroll position based on direction\n this.currentScroll = isRtl\n ? startScroll - distance * easedProgress\n : startScroll + distance * easedProgress;\n\n subContainer.updateScrollPosition(this.currentScroll);\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(animate);\n }\n };\n\n cancelAnimationFrame(this.animationId);\n if (!withoutAnimation) {\n this.animationId = requestAnimationFrame(animate);\n } else {\n this.currentScroll = targetScroll;\n subContainer.updateScrollPosition(this.currentScroll);\n }\n }\n\n private snapToNearest(velocity = this.velocity) {\n const items = this.items();\n let nearestIndex = 0;\n let minDistance = Infinity;\n\n for (let i = 0; i < items.length; i++) {\n const itemPosition = items.slice(0, i).reduce((acc, item) => acc + item.width, 0);\n const distance = Math.abs(this.currentScroll - itemPosition);\n if (distance < minDistance) {\n minDistance = distance;\n nearestIndex = i;\n }\n }\n\n const step = Math.floor(nearestIndex / this.itemsPerStep());\n\n this.go(step, velocity);\n // this.current.set(nearestIndex);\n // this.currentScroll = this.x();\n // this.updateScrollPosition();\n }\n}\n\nexport function aliasCarousel(carousel: typeof NgbCarousel) {\n return { provide: NgbCarousel, useExisting: carousel };\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { NgbCarousel } from './carousel';\n\n@Directive({\n selector: '[ngbCarouselButton]',\n host: {\n '(click)': 'clicked($event)',\n },\n})\nexport class NgbCarouselButton {\n private readonly carousel = inject(NgbCarousel);\n\n readonly ngbCarouselButton = input.required<number | 'next' | 'prev'>();\n\n clicked(event: Event) {\n event.preventDefault();\n const no = this.ngbCarouselButton();\n if (no === 'next') {\n this.carousel.next();\n } else if (no === 'prev') {\n this.carousel.prev();\n } else {\n this.carousel.go(no);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, input, model, output } from '@angular/core';
2
+ import { inject, Directive, model, input, output } from '@angular/core';
3
3
  import { uniqueId, provideValueAccessor } from '@ngbase/adk/utils';
4
4
 
5
5
  class CheckboxButton {
@@ -26,10 +26,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
26
26
  class NgbCheckbox {
27
27
  constructor() {
28
28
  this.id = uniqueId();
29
- this.disabled = input(false);
30
29
  this.checked = model(false);
31
- this.change = output();
30
+ this.disabled = input(false);
32
31
  this.indeterminate = input(false);
32
+ this.change = output();
33
33
  this.onChange = (_) => { };
34
34
  this.onTouched = () => { };
35
35
  }
@@ -53,7 +53,7 @@ class NgbCheckbox {
53
53
  this.onTouched = fn;
54
54
  }
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
56
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbCheckbox, isStandalone: true, selector: "[ngbCheckbox]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", change: "change" }, host: { listeners: { "click": "updateValue()" } }, providers: [provideValueAccessor(NgbCheckbox)], ngImport: i0 }); }
56
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbCheckbox, isStandalone: true, selector: "[ngbCheckbox]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", change: "change" }, host: { listeners: { "click": "updateValue()" } }, ngImport: i0 }); }
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCheckbox, decorators: [{
59
59
  type: Directive,
@@ -62,9 +62,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
62
62
  host: {
63
63
  '(click)': 'updateValue()',
64
64
  },
65
- providers: [provideValueAccessor(NgbCheckbox)],
66
65
  }]
67
66
  }] });
67
+ function aliasCheckbox(checkbox) {
68
+ return [{ provide: NgbCheckbox, useExisting: checkbox }, provideValueAccessor(checkbox)];
69
+ }
68
70
 
69
71
  /*
70
72
  * Public API Surface of checkbox
@@ -74,5 +76,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
74
76
  * Generated bundle index. Do not edit.
75
77
  */
76
78
 
77
- export { CheckboxButton, NgbCheckbox };
79
+ export { CheckboxButton, NgbCheckbox, aliasCheckbox };
78
80
  //# sourceMappingURL=ngbase-adk-checkbox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-checkbox.mjs","sources":["../../../projects/adk/checkbox/checkbox.ts","../../../projects/adk/checkbox/public-api.ts","../../../projects/adk/checkbox/ngbase-adk-checkbox.ts"],"sourcesContent":["import { Directive, inject, input, model, output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbCheckboxButton]',\n host: {\n role: 'checkbox',\n type: 'button',\n '[disabled]': 'checkbox.disabled()',\n '[tabIndex]': 'checkbox.disabled() ? -1 : 0',\n '[attr.aria-checked]': 'checkbox.checked()',\n '[attr.aria-disabled]': 'checkbox.disabled()',\n },\n})\nexport class CheckboxButton {\n readonly checkbox = inject(NgbCheckbox);\n}\n\n@Directive({\n selector: '[ngbCheckbox]',\n host: {\n '(click)': 'updateValue()',\n },\n providers: [provideValueAccessor(NgbCheckbox)],\n})\nexport class NgbCheckbox implements ControlValueAccessor {\n readonly id = uniqueId();\n readonly disabled = input(false);\n readonly checked = model(false);\n readonly change = output<boolean>();\n readonly indeterminate = input(false);\n onChange = (_: any) => {};\n onTouched = () => {};\n\n updateValue() {\n if (this.disabled()) {\n return;\n }\n const value = !this.checked();\n this.checked.set(value);\n this.onChange(value);\n this.onTouched();\n this.change.emit(value);\n }\n\n writeValue(value: any): void {\n this.checked.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","/*\n * Public API Surface of checkbox\n */\n\nexport { CheckboxButton, NgbCheckbox } from './checkbox';\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-checkbox.mjs","sources":["../../../projects/adk/checkbox/checkbox.ts","../../../projects/adk/checkbox/public-api.ts","../../../projects/adk/checkbox/ngbase-adk-checkbox.ts"],"sourcesContent":["import { Directive, inject, input, model, output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbCheckboxButton]',\n host: {\n role: 'checkbox',\n type: 'button',\n '[disabled]': 'checkbox.disabled()',\n '[tabIndex]': 'checkbox.disabled() ? -1 : 0',\n '[attr.aria-checked]': 'checkbox.checked()',\n '[attr.aria-disabled]': 'checkbox.disabled()',\n },\n})\nexport class CheckboxButton {\n readonly checkbox = inject(NgbCheckbox);\n}\n\n@Directive({\n selector: '[ngbCheckbox]',\n host: {\n '(click)': 'updateValue()',\n },\n})\nexport class NgbCheckbox implements ControlValueAccessor {\n readonly id = uniqueId();\n\n readonly checked = model(false);\n readonly disabled = input(false);\n readonly indeterminate = input(false);\n\n readonly change = output<boolean>();\n\n onChange = (_: any) => {};\n onTouched = () => {};\n\n updateValue() {\n if (this.disabled()) {\n return;\n }\n const value = !this.checked();\n this.checked.set(value);\n this.onChange(value);\n this.onTouched();\n this.change.emit(value);\n }\n\n writeValue(value: any): void {\n this.checked.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n\nexport function aliasCheckbox(checkbox: typeof NgbCheckbox) {\n return [{ provide: NgbCheckbox, useExisting: checkbox }, provideValueAccessor(checkbox)];\n}\n","/*\n * Public API Surface of checkbox\n */\n\nexport { aliasCheckbox, CheckboxButton, NgbCheckbox } from './checkbox';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}