@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.
- package/a11y/accessibility-group.d.ts +2 -5
- package/accordion/accordion-item.d.ts +3 -1
- package/autocomplete/autocomplete-input.d.ts +2 -4
- package/autocomplete/autocomplete.d.ts +12 -3
- package/carousel/carousel.d.ts +2 -2
- package/checkbox/checkbox.d.ts +11 -3
- package/checkbox/public-api.d.ts +1 -1
- package/datepicker/datepicker-trigger.d.ts +22 -5
- package/datepicker/datepicker.d.ts +2 -1
- package/drag/drag.d.ts +1 -2
- package/fesm2022/ngbase-adk-a11y.mjs +29 -26
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-accordion.mjs +12 -2
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +18 -18
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +5 -5
- package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
- package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
- package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
- package/fesm2022/ngbase-adk-datepicker.mjs +76 -25
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +3 -3
- package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
- package/fesm2022/ngbase-adk-drag.mjs +1 -2
- package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
- package/fesm2022/ngbase-adk-list.mjs +2 -2
- package/fesm2022/ngbase-adk-list.mjs.map +1 -1
- package/fesm2022/ngbase-adk-mask.mjs +5 -3
- package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
- package/fesm2022/ngbase-adk-menu.mjs +22 -7
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-pagination.mjs +3 -3
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +25 -22
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +5 -9
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +6 -3
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +21 -13
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +4 -1
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +8 -6
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
- package/fesm2022/ngbase-adk-test.mjs +11 -1
- package/fesm2022/ngbase-adk-test.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +2 -2
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +12 -9
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/mask/mask.d.ts +1 -2
- package/menu/menu-trigger.d.ts +1 -1
- package/menu/menu.d.ts +8 -2
- package/package.json +8 -8
- package/pagination/pagination.d.ts +3 -3
- package/popover/base-popover.service.d.ts +1 -1
- package/popover/popover.d.ts +5 -4
- package/portal/portal-base.service.d.ts +3 -3
- package/portal/portal-close.directive.d.ts +3 -2
- package/radio/radio.d.ts +5 -1
- package/schematics/components/files/accordion/accordion.ts.template +2 -2
- package/schematics/components/files/alert/alert.ts.template +1 -1
- package/schematics/components/files/autocomplete/autocomplete.ts.template +1 -1
- package/schematics/components/files/avatar/avatar.ts.template +1 -1
- package/schematics/components/files/badge/badge.ts.template +1 -1
- package/schematics/components/files/breadcrumb/breadcrumb.ts.template +6 -2
- package/schematics/components/files/button/button.ts.template +5 -5
- package/schematics/components/files/card/card.ts.template +1 -1
- package/schematics/components/files/checkbox/checkbox.ts.template +9 -19
- package/schematics/components/files/checkbox/focus-style.directive.ts.template +1 -1
- package/schematics/components/files/chip/chip.ts.template +4 -2
- package/schematics/components/files/color-picker/color-picker.ts.template +1 -1
- package/schematics/components/files/command/command.ts.template +1 -1
- package/schematics/components/files/datepicker/calendar.ts.template +10 -10
- package/schematics/components/files/datepicker/datepicker.ts.template +19 -18
- package/schematics/components/files/datepicker/time.ts.template +3 -3
- package/schematics/components/files/dialog/dialog.ts.template +1 -1
- package/schematics/components/files/drawer/drawer.ts.template +2 -2
- package/schematics/components/files/form-field/form-field.ts.template +8 -8
- package/schematics/components/files/form-field/input-style.directive.ts.template +1 -1
- package/schematics/components/files/keys/key.ts.template +1 -1
- package/schematics/components/files/list/list.ts.template +1 -1
- package/schematics/components/files/otp/otp.ts.template +1 -1
- package/schematics/components/files/pagination/pagination.ts.template +6 -2
- package/schematics/components/files/popover/popover.ts.template +2 -2
- package/schematics/components/files/progress/progress.ts.template +1 -1
- package/schematics/components/files/radio/radio.ts.template +7 -5
- package/schematics/components/files/resizable/resizable.ts.template +6 -3
- package/schematics/components/files/select/option.ts.template +2 -2
- package/schematics/components/files/select/select.ts.template +3 -3
- package/schematics/components/files/selectable/selectable.ts.template +5 -5
- package/schematics/components/files/sheet/sheet.ts.template +1 -1
- package/schematics/components/files/sidenav/sidenav.ts.template +1 -1
- package/schematics/components/files/skeleton/skeleton.ts.template +1 -1
- package/schematics/components/files/slider/slider.ts.template +3 -3
- package/schematics/components/files/sonner/sonner.ts.template +3 -3
- package/schematics/components/files/spinner/spinner.ts.template +1 -1
- package/schematics/components/files/stepper/stepper.ts.template +1 -1
- package/schematics/components/files/switch/switch.ts.template +2 -2
- package/schematics/components/files/table/index.ts.template +12 -11
- package/schematics/components/files/table/table.ts.template +107 -5
- package/schematics/components/files/tabs/tab.ts.template +4 -4
- package/schematics/components/files/toggle/toggle.ts.template +1 -1
- package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
- package/schematics/components/files/tooltip/tooltip.ts.template +1 -1
- package/schematics/components/index.js +32 -8
- package/schematics/components/index.js.map +1 -1
- package/schematics/components/index.ts +41 -11
- package/schematics/components/schema.d.ts +1 -1
- package/schematics/components/schema.json +2 -2
- package/schematics/components/schema.ts +1 -1
- package/select/option.d.ts +1 -1
- package/select/select-base.d.ts +8 -6
- package/select/select.d.ts +5 -2
- package/slider/slider.d.ts +1 -0
- package/table/table.d.ts +2 -2
- package/test/utils.d.ts +19 -3
- package/utils/utils.d.ts +5 -4
- package/schematics/components/files/table/body-cell.ts.template +0 -19
- package/schematics/components/files/table/body-row.ts.template +0 -21
- package/schematics/components/files/table/column.ts.template +0 -8
- package/schematics/components/files/table/head-cell.ts.template +0 -19
- 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;
|
|
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":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef,
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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: {
|
|
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
|
|
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
|
|
47
|
+
updateScrollPosition(x) {
|
|
48
48
|
const el = this.el.nativeElement;
|
|
49
|
-
if (this.dir.isRtl()
|
|
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()
|
|
131
|
-
this.subContainer().updateScrollPosition(this.currentScroll
|
|
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,
|
|
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.
|
|
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: {
|
|
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
|
|
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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"}
|