@ngbase/adk 0.1.1 → 0.1.3
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 +7 -1
- package/accordion/public-api.d.ts +1 -1
- package/autocomplete/autocomplete-input.d.ts +2 -4
- package/autocomplete/autocomplete.d.ts +13 -4
- package/avatar/avatar.d.ts +1 -1
- package/breadcrumb/breadcrumb.d.ts +2 -3
- package/breadcrumb/public-api.d.ts +1 -1
- package/carousel/carousel.d.ts +3 -3
- package/checkbox/checkbox.d.ts +11 -3
- package/checkbox/public-api.d.ts +1 -1
- package/chip/chip.d.ts +2 -2
- package/datepicker/calendar.d.ts +3 -3
- package/datepicker/datepicker-trigger.d.ts +22 -5
- package/datepicker/datepicker.d.ts +4 -3
- package/datepicker/time.d.ts +2 -2
- package/dialog/dialog.d.ts +1 -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 +16 -3
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +23 -52
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-avatar.mjs +2 -2
- package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
- package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
- package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +7 -7
- 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-chip.mjs +4 -2
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-datepicker.mjs +187 -350
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +14 -15
- 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-form-field.mjs +2 -156
- package/fesm2022/ngbase-adk-form-field.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 +34 -34
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-otp.mjs +164 -0
- package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
- package/fesm2022/ngbase-adk-pagination.mjs +10 -67
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +434 -556
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +5 -10
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +8 -19
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs +10 -43
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +87 -185
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sheet.mjs +95 -0
- package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
- package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +12 -23
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sonner.mjs +13 -63
- package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs +16 -114
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-switch.mjs +2 -2
- package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +17 -35
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs +14 -94
- 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-tooltip.mjs +49 -39
- package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +3 -3
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tree.mjs +11 -43
- package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +12 -9
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/form-field/public-api.d.ts +0 -1
- package/mask/mask.d.ts +1 -2
- package/menu/menu-trigger.d.ts +3 -3
- package/menu/menu.d.ts +13 -7
- package/otp/index.d.ts +5 -0
- package/{form-field → otp}/otp.d.ts +1 -1
- package/otp/public-api.d.ts +1 -0
- package/package.json +27 -19
- package/pagination/pagination.d.ts +7 -3
- package/popover/base-popover.service.d.ts +1 -1
- package/popover/popover-arrow.ng.d.ts +34 -0
- package/popover/popover.d.ts +17 -7
- package/popover/popover.service.d.ts +5 -4
- package/popover/public-api.d.ts +1 -0
- package/popover/utils.d.ts +32 -48
- package/portal/dialog-ref.d.ts +0 -1
- 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/resizable/resizable-group.d.ts +2 -2
- package/resizable/resizable.d.ts +2 -2
- package/select/option-group.d.ts +3 -3
- package/select/option.d.ts +1 -1
- package/select/select-base.d.ts +8 -6
- package/select/select.d.ts +6 -3
- package/sheet/index.d.ts +5 -0
- package/sheet/public-api.d.ts +2 -0
- package/sheet/sheet.d.ts +26 -0
- package/sheet/sheet.service.d.ts +13 -0
- package/sidenav/public-api.d.ts +1 -1
- package/sidenav/sidenav.d.ts +1 -1
- package/slider/public-api.d.ts +1 -1
- package/slider/slider.d.ts +6 -5
- package/sonner/sonner.d.ts +2 -1
- package/stepper/animation.d.ts +1 -1
- package/stepper/step.d.ts +1 -1
- package/stepper/stepper.d.ts +2 -2
- package/switch/switch.d.ts +1 -1
- package/table/body-row.d.ts +3 -3
- package/table/head-row.d.ts +3 -3
- package/table/table.d.ts +3 -3
- package/tabs/tab-group.d.ts +4 -4
- package/tabs/tab.d.ts +2 -2
- package/test/utils.d.ts +19 -3
- package/tooltip/public-api.d.ts +1 -1
- package/tooltip/tooltip.d.ts +5 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/tooltip/tooltip.service.d.ts +4 -2
- package/tour/tour.service.d.ts +3 -4
- package/tree/public-api.d.ts +2 -2
- package/tree/tree-node.d.ts +2 -2
- package/tree/tree.d.ts +2 -2
- package/utils/utils.d.ts +5 -4
- package/schematics/collection.json +0 -15
- package/schematics/components/files/accordion/accordion.ts.template +0 -55
- package/schematics/components/files/accordion/index.ts.template +0 -5
- package/schematics/components/files/alert/alert.ts.template +0 -62
- package/schematics/components/files/alert/index.ts.template +0 -1
- package/schematics/components/files/autocomplete/autocomplete.ts.template +0 -48
- package/schematics/components/files/autocomplete/index.ts.template +0 -5
- package/schematics/components/files/avatar/avatar.ts.template +0 -31
- package/schematics/components/files/avatar/index.ts.template +0 -1
- package/schematics/components/files/badge/badge.ts.template +0 -11
- package/schematics/components/files/badge/index.ts.template +0 -1
- package/schematics/components/files/breadcrumb/breadcrumb.ts.template +0 -49
- package/schematics/components/files/breadcrumb/index.ts.template +0 -1
- package/schematics/components/files/button/button.ts.template +0 -29
- package/schematics/components/files/button/index.ts.template +0 -5
- package/schematics/components/files/card/card.ts.template +0 -11
- package/schematics/components/files/card/index.ts.template +0 -5
- package/schematics/components/files/carousel/carousel.ts.template +0 -44
- package/schematics/components/files/carousel/index.ts.template +0 -1
- package/schematics/components/files/checkbox/checkbox.ts.template +0 -46
- package/schematics/components/files/checkbox/focus-style.directive.ts.template +0 -12
- package/schematics/components/files/checkbox/index.ts.template +0 -6
- package/schematics/components/files/chip/chip.ts.template +0 -36
- package/schematics/components/files/chip/index.ts.template +0 -1
- package/schematics/components/files/color-picker/color-picker.ts.template +0 -104
- package/schematics/components/files/color-picker/index.ts.template +0 -5
- package/schematics/components/files/command/command.ts.template +0 -82
- package/schematics/components/files/command/index.ts.template +0 -1
- package/schematics/components/files/datepicker/calendar.ts.template +0 -117
- package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
- package/schematics/components/files/datepicker/datepicker.ts.template +0 -28
- package/schematics/components/files/datepicker/index.ts.template +0 -3
- package/schematics/components/files/datepicker/time.ts.template +0 -46
- package/schematics/components/files/dialog/dialog.ts.template +0 -89
- package/schematics/components/files/dialog/index.ts.template +0 -5
- package/schematics/components/files/drawer/drawer.ts.template +0 -104
- package/schematics/components/files/drawer/index.ts.template +0 -5
- package/schematics/components/files/form-field/index.ts.template +0 -7
- package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
- package/schematics/components/files/form-field/input.ts.template +0 -100
- package/schematics/components/files/form-field/otp.ts.template +0 -37
- package/schematics/components/files/hover-card/hover-card.ts.template +0 -13
- package/schematics/components/files/hover-card/index.ts.template +0 -5
- package/schematics/components/files/icon/icon.ts.template +0 -16
- package/schematics/components/files/icon/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/inline-edit.ts.template +0 -24
- package/schematics/components/files/keys/index.ts.template +0 -5
- package/schematics/components/files/keys/key.ts.template +0 -35
- package/schematics/components/files/list/index.ts.template +0 -5
- package/schematics/components/files/list/list.ts.template +0 -28
- package/schematics/components/files/mask/index.ts.template +0 -1
- package/schematics/components/files/mask/mask.ts.template +0 -8
- package/schematics/components/files/menu/context-menu.ts.template +0 -14
- package/schematics/components/files/menu/index.ts.template +0 -8
- package/schematics/components/files/menu/mention.ts.template +0 -14
- package/schematics/components/files/menu/menu.ts.template +0 -37
- package/schematics/components/files/menu/navigation-menu.ts.template +0 -8
- package/schematics/components/files/pagination/index.ts.template +0 -1
- package/schematics/components/files/pagination/pagination.ts.template +0 -71
- package/schematics/components/files/picasa/index.ts.template +0 -1
- package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -80
- package/schematics/components/files/picasa/picasa.component.ts.template +0 -57
- package/schematics/components/files/picasa/picasa.directive.ts.template +0 -41
- package/schematics/components/files/picasa/picase.service.ts.template +0 -24
- package/schematics/components/files/popover/index.ts.template +0 -1
- package/schematics/components/files/popover/popover.ts.template +0 -87
- package/schematics/components/files/progress/index.ts.template +0 -5
- package/schematics/components/files/progress/progress.ts.template +0 -14
- package/schematics/components/files/radio/index.ts.template +0 -5
- package/schematics/components/files/radio/radio.ts.template +0 -40
- package/schematics/components/files/resizable/index.ts.template +0 -5
- package/schematics/components/files/resizable/resizable.ts.template +0 -56
- package/schematics/components/files/scroll-area/index.ts.template +0 -1
- package/schematics/components/files/scroll-area/scroll-area.ts.template +0 -40
- package/schematics/components/files/select/index.ts.template +0 -8
- package/schematics/components/files/select/list-selection.ts.template +0 -15
- package/schematics/components/files/select/option.ts.template +0 -34
- package/schematics/components/files/select/select-input.ts.template +0 -21
- package/schematics/components/files/select/select.ts.template +0 -96
- package/schematics/components/files/selectable/index.ts.template +0 -1
- package/schematics/components/files/selectable/selectable.ts.template +0 -34
- package/schematics/components/files/separator/index.ts.template +0 -5
- package/schematics/components/files/separator/separator.ts.template +0 -19
- package/schematics/components/files/sheet/index.ts.template +0 -5
- package/schematics/components/files/sheet/sheet.ts.template +0 -134
- package/schematics/components/files/sidenav/index.ts.template +0 -1
- package/schematics/components/files/sidenav/sidenav.ts.template +0 -48
- package/schematics/components/files/skeleton/index.ts.template +0 -1
- package/schematics/components/files/skeleton/skeleton.ts.template +0 -15
- package/schematics/components/files/slider/index.ts.template +0 -5
- package/schematics/components/files/slider/slider.ts.template +0 -42
- package/schematics/components/files/sonner/index.ts.template +0 -5
- package/schematics/components/files/sonner/sonner.ts.template +0 -58
- package/schematics/components/files/spinner/index.ts.template +0 -1
- package/schematics/components/files/spinner/spinner.ts.template +0 -79
- package/schematics/components/files/stepper/index.ts.template +0 -1
- package/schematics/components/files/stepper/stepper.ts.template +0 -88
- package/schematics/components/files/switch/index.ts.template +0 -5
- package/schematics/components/files/switch/switch.ts.template +0 -29
- 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
- package/schematics/components/files/table/index.ts.template +0 -26
- package/schematics/components/files/table/table.ts.template +0 -20
- package/schematics/components/files/tabs/index.ts.template +0 -5
- package/schematics/components/files/tabs/tab.ts.template +0 -89
- package/schematics/components/files/theme/index.ts.template +0 -2
- package/schematics/components/files/theme/theme-button.component.ts.template +0 -26
- package/schematics/components/files/theme/theme.component.ts.template +0 -165
- package/schematics/components/files/theme/theme.service.ts.template +0 -44
- package/schematics/components/files/toggle/index.ts.template +0 -5
- package/schematics/components/files/toggle/toggle.ts.template +0 -13
- package/schematics/components/files/toggle-group/index.ts.template +0 -5
- package/schematics/components/files/toggle-group/toggle-group.ts.template +0 -25
- package/schematics/components/files/tooltip/index.ts.template +0 -5
- package/schematics/components/files/tooltip/tooltip.ts.template +0 -40
- package/schematics/components/files/tour/index.ts.template +0 -3
- package/schematics/components/files/tour/tour-step.ts.template +0 -8
- package/schematics/components/files/tour/tour.service.ts.template +0 -7
- package/schematics/components/files/tour/tour.ts.template +0 -8
- package/schematics/components/files/tree/index.ts.template +0 -1
- package/schematics/components/files/tree/tree.ts.template +0 -66
- package/schematics/components/index.d.ts +0 -3
- package/schematics/components/index.js +0 -17
- package/schematics/components/index.js.map +0 -1
- package/schematics/components/index.ts +0 -29
- package/schematics/components/schema.d.ts +0 -6
- package/schematics/components/schema.js +0 -3
- package/schematics/components/schema.js.map +0 -1
- package/schematics/components/schema.json +0 -137
- package/schematics/components/schema.ts +0 -6
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
2
1
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { InjectionToken, inject, ElementRef,
|
|
2
|
+
import { InjectionToken, inject, ElementRef, input, effect, Directive, Injector, booleanAttribute, computed, afterNextRender, viewChild, model, signal, viewChildren, output, untracked } from '@angular/core';
|
|
4
3
|
import * as i1$1 from '@ngbase/adk/a11y';
|
|
5
4
|
import { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';
|
|
6
5
|
import { Directionality } from '@ngbase/adk/bidi';
|
|
7
6
|
import { DialogRef } from '@ngbase/adk/portal';
|
|
8
7
|
import * as i1$2 from '@ngbase/adk/utils';
|
|
9
|
-
import { uniqueId,
|
|
8
|
+
import { uniqueId, NumberOnly, padString, provideValueAccessor } from '@ngbase/adk/utils';
|
|
10
9
|
import * as i1 from '@ngbase/adk/form-field';
|
|
11
10
|
import { InputBase } from '@ngbase/adk/form-field';
|
|
12
11
|
import { ngbPopoverPortal } from '@ngbase/adk/popover';
|
|
12
|
+
import { NgbSelectTarget } from '@ngbase/adk/select';
|
|
13
13
|
|
|
14
14
|
const NgbDateAdapter = new InjectionToken('mat-date-formats');
|
|
15
15
|
function injectNgbDateAdapter() {
|
|
@@ -115,54 +115,85 @@ const DEFAULT_FIELD_FORMAT = 'ISO';
|
|
|
115
115
|
const DEFAULT_FORMAT = 'M/d/yyyy';
|
|
116
116
|
const DEFAULT_TIME_FORMAT = 'M/d/yyyy, HH:mm a';
|
|
117
117
|
const DatePicker = new InjectionToken('DatePicker');
|
|
118
|
+
class NgbEndDate {
|
|
119
|
+
constructor() {
|
|
120
|
+
this.el = inject(ElementRef);
|
|
121
|
+
this.inputS = inject(InputBase);
|
|
122
|
+
this.ngbEndDate = input.required();
|
|
123
|
+
this.hidden = false;
|
|
124
|
+
effect(() => {
|
|
125
|
+
this.ngbEndDate().endDate = this;
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbEndDate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
129
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbEndDate, isStandalone: true, selector: "[ngbEndDate]", inputs: { ngbEndDate: { classPropertyName: "ngbEndDate", publicName: "ngbEndDate", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "open()" } }, exportAs: ["ngbEndDate"], hostDirectives: [{ directive: i1.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
130
|
+
}
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbEndDate, decorators: [{
|
|
132
|
+
type: Directive,
|
|
133
|
+
args: [{
|
|
134
|
+
selector: '[ngbEndDate]',
|
|
135
|
+
exportAs: 'ngbEndDate',
|
|
136
|
+
hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],
|
|
137
|
+
host: {
|
|
138
|
+
'(click)': 'open()',
|
|
139
|
+
},
|
|
140
|
+
}]
|
|
141
|
+
}], ctorParameters: () => [] });
|
|
118
142
|
class NgbDatepickerTrigger {
|
|
119
143
|
constructor() {
|
|
120
144
|
this.el = inject(ElementRef);
|
|
121
145
|
this.inputS = inject(InputBase);
|
|
146
|
+
this.target = inject(NgbSelectTarget, { optional: true });
|
|
122
147
|
this.injector = inject(Injector);
|
|
123
148
|
this.adapter = injectNgbDateAdapter();
|
|
124
149
|
this.popover = ngbPopoverPortal();
|
|
125
150
|
this.datepicker = inject(DatePicker, { optional: true }) ?? (NgbDatePicker);
|
|
126
151
|
// readonly datepicker = input<NgbDatePicker<D>>();
|
|
127
|
-
this.noOfCalendars = input(1, { transform: (v) => Math.max(1, v) });
|
|
152
|
+
this.noOfCalendars = input(1, { transform: (v) => Math.max(1, Number(v)) });
|
|
128
153
|
this.range = input(false, { transform: booleanAttribute });
|
|
129
154
|
this.time = input(false, { transform: booleanAttribute });
|
|
130
155
|
this.format = input('');
|
|
131
156
|
this.fieldFormat = input(DEFAULT_FIELD_FORMAT);
|
|
132
|
-
this.displayFormat = computed(() => {
|
|
133
|
-
return this.format() || (this.time() ? DEFAULT_TIME_FORMAT : DEFAULT_FORMAT);
|
|
134
|
-
});
|
|
135
157
|
this.dateFilter = input(() => true);
|
|
136
158
|
this.pickerType = input('date');
|
|
137
159
|
this.pickerTemplate = input(null);
|
|
160
|
+
this.displayFormat = computed(() => {
|
|
161
|
+
return this.format() || (this.time() ? DEFAULT_TIME_FORMAT : DEFAULT_FORMAT);
|
|
162
|
+
});
|
|
163
|
+
this.inputValue = computed(() => this.getInputValue());
|
|
138
164
|
effect(() => {
|
|
139
|
-
const value = this.
|
|
165
|
+
const value = this.inputValue();
|
|
140
166
|
this.updateField(value);
|
|
141
167
|
});
|
|
142
168
|
}
|
|
143
169
|
getInputValue() {
|
|
144
170
|
const v = this.inputS.value();
|
|
171
|
+
const e = this.endDate?.inputS.value();
|
|
145
172
|
let value = [];
|
|
146
173
|
if (v) {
|
|
147
|
-
value =
|
|
174
|
+
value = Array.isArray(v) ? v : [v];
|
|
175
|
+
}
|
|
176
|
+
if (e) {
|
|
177
|
+
value[1] = e;
|
|
148
178
|
}
|
|
149
179
|
return value.map(x => this.adapter.parse(x));
|
|
150
180
|
}
|
|
151
181
|
open() {
|
|
182
|
+
const target = this.target?.target() || this.el.nativeElement;
|
|
152
183
|
const data = {
|
|
153
|
-
|
|
184
|
+
target,
|
|
185
|
+
value: this.inputValue,
|
|
154
186
|
pickerType: this.pickerType(),
|
|
155
187
|
noOfCalendars: this.noOfCalendars(),
|
|
156
188
|
range: this.range(),
|
|
157
189
|
format: this.displayFormat(),
|
|
158
190
|
fieldFormat: this.fieldFormat(),
|
|
159
|
-
target: this.el.nativeElement,
|
|
160
191
|
template: this.pickerTemplate(),
|
|
161
192
|
dateFilter: this.dateFilter(),
|
|
162
193
|
time: this.time(),
|
|
163
194
|
};
|
|
164
195
|
const { diaRef } = this.popover.open(this.datepicker, {
|
|
165
|
-
target
|
|
196
|
+
target,
|
|
166
197
|
position: 'bl',
|
|
167
198
|
data,
|
|
168
199
|
width: 'none',
|
|
@@ -173,40 +204,53 @@ class NgbDatepickerTrigger {
|
|
|
173
204
|
const filtered = dates.filter(x => x);
|
|
174
205
|
const formatDate = dates.map(x => (x ? this.adapter.format(x, this.fieldFormat()) : x));
|
|
175
206
|
if (this.range()) {
|
|
176
|
-
if (filtered.length
|
|
207
|
+
if (filtered.length < 2) {
|
|
177
208
|
return;
|
|
178
209
|
}
|
|
179
|
-
this.
|
|
210
|
+
if (this.endDate) {
|
|
211
|
+
this.inputS.setValue(formatDate[0], true);
|
|
212
|
+
this.endDate.inputS.setValue(formatDate[1], true);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.inputS?.setValue(formatDate, true);
|
|
216
|
+
}
|
|
180
217
|
}
|
|
181
218
|
else if (filtered.length) {
|
|
182
|
-
this.inputS?.setValue(formatDate[0]);
|
|
219
|
+
this.inputS?.setValue(formatDate[0], true);
|
|
183
220
|
}
|
|
184
221
|
this.updateField(filtered);
|
|
185
222
|
}
|
|
186
223
|
updateField(filtered) {
|
|
187
224
|
// console.log(this.fieldFormat());
|
|
188
|
-
const d = filtered
|
|
189
|
-
|
|
190
|
-
.
|
|
191
|
-
|
|
192
|
-
|
|
225
|
+
const d = filtered.map(x => this.adapter.format(x, this.displayFormat())).filter(x => x);
|
|
226
|
+
afterNextRender(() => {
|
|
227
|
+
if (this.endDate && !this.endDate.hidden) {
|
|
228
|
+
this.el.nativeElement.value = d[0] || '';
|
|
229
|
+
this.endDate.el.nativeElement.value = d[1] || '';
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.el.nativeElement.value = d.join(' - ');
|
|
233
|
+
}
|
|
234
|
+
}, { injector: this.injector });
|
|
193
235
|
}
|
|
194
236
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatepickerTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
195
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbDatepickerTrigger, isStandalone: true, selector: "[ngbDatepickerTrigger]", inputs: { noOfCalendars: { classPropertyName: "noOfCalendars", publicName: "noOfCalendars", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, time: { classPropertyName: "time", publicName: "time", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, fieldFormat: { classPropertyName: "fieldFormat", publicName: "fieldFormat", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, pickerTemplate: { classPropertyName: "pickerTemplate", publicName: "pickerTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "readonly": "true" }, listeners: { "click": "open()" }
|
|
237
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbDatepickerTrigger, isStandalone: true, selector: "[ngbDatepickerTrigger]", inputs: { noOfCalendars: { classPropertyName: "noOfCalendars", publicName: "noOfCalendars", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, time: { classPropertyName: "time", publicName: "time", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, fieldFormat: { classPropertyName: "fieldFormat", publicName: "fieldFormat", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, pickerTemplate: { classPropertyName: "pickerTemplate", publicName: "pickerTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "readonly": "true" }, listeners: { "click": "open()" } }, exportAs: ["ngbDatepickerTrigger"], hostDirectives: [{ directive: i1.InputBase, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
196
238
|
}
|
|
197
239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatepickerTrigger, decorators: [{
|
|
198
240
|
type: Directive,
|
|
199
241
|
args: [{
|
|
200
242
|
selector: '[ngbDatepickerTrigger]',
|
|
201
243
|
exportAs: 'ngbDatepickerTrigger',
|
|
202
|
-
hostDirectives: [InputBase],
|
|
244
|
+
hostDirectives: [{ directive: InputBase, inputs: ['value'], outputs: ['valueChange'] }],
|
|
203
245
|
host: {
|
|
204
|
-
class: 'cursor-pointer hover:bg-muted-background',
|
|
205
246
|
'(click)': 'open()',
|
|
206
247
|
readonly: 'true',
|
|
207
248
|
},
|
|
208
249
|
}]
|
|
209
250
|
}], ctorParameters: () => [] });
|
|
251
|
+
function aliasDatePickerTrigger(trigger) {
|
|
252
|
+
return { provide: NgbDatepickerTrigger, useExisting: trigger };
|
|
253
|
+
}
|
|
210
254
|
function registerDatePicker(datePicker) {
|
|
211
255
|
return {
|
|
212
256
|
provide: DatePicker,
|
|
@@ -235,6 +279,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
235
279
|
}], ctorParameters: () => [] });
|
|
236
280
|
class NgbDatePicker {
|
|
237
281
|
constructor() {
|
|
282
|
+
this.injector = inject(Injector);
|
|
238
283
|
this.datepickerTrigger = inject(NgbDatepickerTrigger, {
|
|
239
284
|
optional: true,
|
|
240
285
|
});
|
|
@@ -282,11 +327,16 @@ class NgbDatePicker {
|
|
|
282
327
|
return v;
|
|
283
328
|
});
|
|
284
329
|
this.ayId = uniqueId();
|
|
285
|
-
|
|
330
|
+
effect(() => {
|
|
331
|
+
this.init();
|
|
332
|
+
});
|
|
286
333
|
// this.allyGroup.focusChanged.subscribe(item => this.focusChanged(item));
|
|
287
334
|
}
|
|
288
335
|
init() {
|
|
289
|
-
const v = this.data
|
|
336
|
+
const v = this.data
|
|
337
|
+
?.value()
|
|
338
|
+
?.filter(x => x)
|
|
339
|
+
.map(x => this.adapter.parse(x));
|
|
290
340
|
if (Array.isArray(v) && v.length) {
|
|
291
341
|
let date;
|
|
292
342
|
let dates;
|
|
@@ -390,183 +440,22 @@ class NgbDatePicker {
|
|
|
390
440
|
}
|
|
391
441
|
this.showType.set(type);
|
|
392
442
|
}
|
|
393
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatePicker, deps: [], target: i0.ɵɵFactoryTarget.
|
|
394
|
-
static { this.ɵ
|
|
395
|
-
<div class="flex" ngbDatepickerGroup>
|
|
396
|
-
@for (no of noOfCalendar() | range; track no) {
|
|
397
|
-
<ngb-calendar [first]="$first" [last]="$last" [index]="$index" />
|
|
398
|
-
}
|
|
399
|
-
</div>
|
|
400
|
-
@if (template()) {
|
|
401
|
-
<div class="px-2 pb-2">
|
|
402
|
-
<ng-container *ngTemplateOutlet="template()" />
|
|
403
|
-
</div>
|
|
404
|
-
}
|
|
405
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NgbCalendar, selector: "ngb-calendar", inputs: ["first", "last", "index"] }, { kind: "pipe", type: RangePipe, name: "range" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DatepickerGroup, selector: "[ngbDatepickerGroup]", exportAs: ["ngbDatepickerGroup"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
443
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatePicker, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
444
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbDatePicker, isStandalone: true, selector: "[ngbDatepicker]", inputs: { dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, pickerType: { classPropertyName: "pickerType", publicName: "pickerType", isSignal: true, isRequired: false, transformFunction: null }, noOfCalendar: { classPropertyName: "noOfCalendar", publicName: "noOfCalendar", isSignal: true, isRequired: false, transformFunction: null }, range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { noOfCalendar: "noOfCalendarChange", range: "rangeChange" }, viewQueries: [{ propertyName: "allyGroup", first: true, predicate: AccessibleGroup, descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
406
445
|
}
|
|
407
446
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbDatePicker, decorators: [{
|
|
408
|
-
type:
|
|
447
|
+
type: Directive,
|
|
409
448
|
args: [{
|
|
410
449
|
selector: '[ngbDatepicker]',
|
|
411
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
412
|
-
imports: [NgbCalendar, RangePipe, NgTemplateOutlet, AccessibleGroup, DatepickerGroup],
|
|
413
|
-
template: `
|
|
414
|
-
<div class="flex" ngbDatepickerGroup>
|
|
415
|
-
@for (no of noOfCalendar() | range; track no) {
|
|
416
|
-
<ngb-calendar [first]="$first" [last]="$last" [index]="$index" />
|
|
417
|
-
}
|
|
418
|
-
</div>
|
|
419
|
-
@if (template()) {
|
|
420
|
-
<div class="px-2 pb-2">
|
|
421
|
-
<ng-container *ngTemplateOutlet="template()" />
|
|
422
|
-
</div>
|
|
423
|
-
}
|
|
424
|
-
`,
|
|
425
|
-
host: {
|
|
426
|
-
class: 'inline-block',
|
|
427
|
-
},
|
|
428
450
|
}]
|
|
429
451
|
}], ctorParameters: () => [] });
|
|
430
|
-
function
|
|
452
|
+
function aliasDatePicker(picker) {
|
|
431
453
|
return {
|
|
432
454
|
provide: NgbDatePicker,
|
|
433
455
|
useExisting: picker,
|
|
434
456
|
};
|
|
435
457
|
}
|
|
436
458
|
|
|
437
|
-
class NgbTimeInput {
|
|
438
|
-
constructor() {
|
|
439
|
-
this.numberOnly = inject(NumberOnly);
|
|
440
|
-
this.timePicker = inject(NgbTimePicker);
|
|
441
|
-
this.ngbTimeInput = input.required();
|
|
442
|
-
this.numberOnly._min.set(0);
|
|
443
|
-
this.numberOnly._len.set(2);
|
|
444
|
-
effect(() => {
|
|
445
|
-
const type = this.ngbTimeInput();
|
|
446
|
-
if (type === 'hours') {
|
|
447
|
-
this.numberOnly._max.set(this.timePicker.is24() ? 23 : 11);
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
this.numberOnly._max.set(59);
|
|
451
|
-
}
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
455
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTimeInput, isStandalone: true, selector: "[ngbTimeInput]", inputs: { ngbTimeInput: { classPropertyName: "ngbTimeInput", publicName: "ngbTimeInput", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "type": "tel" } }, hostDirectives: [{ directive: i1$2.NumberOnly, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
456
|
-
}
|
|
457
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, decorators: [{
|
|
458
|
-
type: Directive,
|
|
459
|
-
args: [{
|
|
460
|
-
selector: '[ngbTimeInput]',
|
|
461
|
-
hostDirectives: [{ directive: NumberOnly, inputs: ['value'], outputs: ['valueChange'] }],
|
|
462
|
-
host: {
|
|
463
|
-
type: 'tel',
|
|
464
|
-
},
|
|
465
|
-
}]
|
|
466
|
-
}], ctorParameters: () => [] });
|
|
467
|
-
class NgbTimePicker {
|
|
468
|
-
constructor() {
|
|
469
|
-
this.is24 = input(false);
|
|
470
|
-
this.value = input();
|
|
471
|
-
this.valueChange = output();
|
|
472
|
-
this.time = computed(() => {
|
|
473
|
-
return (`${padString(this.hours())}:${padString(this.minutes())}:${padString(this.seconds())}` +
|
|
474
|
-
(!this.is24() ? ` ${this.am() ? 'AM' : 'PM'}` : ''));
|
|
475
|
-
});
|
|
476
|
-
this.hours = signal('00');
|
|
477
|
-
this.minutes = signal('00');
|
|
478
|
-
this.seconds = signal('00');
|
|
479
|
-
this.am = signal(true);
|
|
480
|
-
this.onChange = (_) => { };
|
|
481
|
-
this.onTouched = () => { };
|
|
482
|
-
effect(() => {
|
|
483
|
-
const value = this.value();
|
|
484
|
-
untracked(() => {
|
|
485
|
-
this.parseValue(value);
|
|
486
|
-
});
|
|
487
|
-
});
|
|
488
|
-
}
|
|
489
|
-
parseValue(value) {
|
|
490
|
-
if (value) {
|
|
491
|
-
const [time, period] = value.split(' ');
|
|
492
|
-
const [hours, minutes, seconds] = time.split(':');
|
|
493
|
-
const am = period === 'AM';
|
|
494
|
-
this.hours.set(padString(hours));
|
|
495
|
-
this.minutes.set(padString(minutes));
|
|
496
|
-
this.seconds.set(padString(seconds));
|
|
497
|
-
this.am.set(am);
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
changeAm(active) {
|
|
501
|
-
this.am.set(active);
|
|
502
|
-
this.updateValue();
|
|
503
|
-
}
|
|
504
|
-
updateValue() {
|
|
505
|
-
this.notify(this.time());
|
|
506
|
-
}
|
|
507
|
-
notify(time) {
|
|
508
|
-
this.valueChange.emit(time);
|
|
509
|
-
this.onChange(time);
|
|
510
|
-
this.onTouched();
|
|
511
|
-
}
|
|
512
|
-
writeValue(value) {
|
|
513
|
-
if (value) {
|
|
514
|
-
this.parseValue(value);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
registerOnChange(fn) {
|
|
518
|
-
this.onChange = fn;
|
|
519
|
-
}
|
|
520
|
-
registerOnTouched(fn) {
|
|
521
|
-
this.onTouched = fn;
|
|
522
|
-
}
|
|
523
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
524
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgbTimePicker, isStandalone: true, selector: "[ngbTime]", inputs: { is24: { classPropertyName: "is24", publicName: "is24", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "inline-flex gap-1 items-center justify-center" }, providers: [_provide(NgbTimePicker)], ngImport: i0, template: `
|
|
525
|
-
<input ngbTimeInput="hours" [(value)]="hours" (valueChange)="updateValue()" />
|
|
526
|
-
<span>:</span>
|
|
527
|
-
<input ngbTimeInput="minutes" [(value)]="minutes" (valueChange)="updateValue()" />
|
|
528
|
-
<span>:</span>
|
|
529
|
-
<input ngbTimeInput="seconds" [(value)]="seconds" (valueChange)="updateValue()" />
|
|
530
|
-
@if (!is24()) {
|
|
531
|
-
<div class="ml-1 flex gap-2">
|
|
532
|
-
<button type="button" class="small" (click)="changeAm(true)">AM</button>
|
|
533
|
-
<button type="button" class="small" (click)="changeAm(false)">PM</button>
|
|
534
|
-
</div>
|
|
535
|
-
}
|
|
536
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgbTimeInput, selector: "[ngbTimeInput]", inputs: ["ngbTimeInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
537
|
-
}
|
|
538
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, decorators: [{
|
|
539
|
-
type: Component,
|
|
540
|
-
args: [{
|
|
541
|
-
selector: '[ngbTime]',
|
|
542
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
543
|
-
providers: [_provide(NgbTimePicker)],
|
|
544
|
-
imports: [NumberOnly, NgbTimeInput],
|
|
545
|
-
template: `
|
|
546
|
-
<input ngbTimeInput="hours" [(value)]="hours" (valueChange)="updateValue()" />
|
|
547
|
-
<span>:</span>
|
|
548
|
-
<input ngbTimeInput="minutes" [(value)]="minutes" (valueChange)="updateValue()" />
|
|
549
|
-
<span>:</span>
|
|
550
|
-
<input ngbTimeInput="seconds" [(value)]="seconds" (valueChange)="updateValue()" />
|
|
551
|
-
@if (!is24()) {
|
|
552
|
-
<div class="ml-1 flex gap-2">
|
|
553
|
-
<button type="button" class="small" (click)="changeAm(true)">AM</button>
|
|
554
|
-
<button type="button" class="small" (click)="changeAm(false)">PM</button>
|
|
555
|
-
</div>
|
|
556
|
-
}
|
|
557
|
-
`,
|
|
558
|
-
host: {
|
|
559
|
-
class: 'inline-flex gap-1 items-center justify-center',
|
|
560
|
-
},
|
|
561
|
-
}]
|
|
562
|
-
}], ctorParameters: () => [] });
|
|
563
|
-
function _provide(picker) {
|
|
564
|
-
return [provideValueAccessor(picker)];
|
|
565
|
-
}
|
|
566
|
-
function provideTimePicker(picker) {
|
|
567
|
-
return [_provide(picker), { provide: NgbTimePicker, useExisting: picker }];
|
|
568
|
-
}
|
|
569
|
-
|
|
570
459
|
class CalendarBtn {
|
|
571
460
|
constructor() {
|
|
572
461
|
this.cal = inject(NgbCalendar);
|
|
@@ -951,180 +840,128 @@ class NgbCalendar {
|
|
|
951
840
|
ngOnDestroy() {
|
|
952
841
|
this.clearListeners();
|
|
953
842
|
}
|
|
954
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCalendar, deps: [], target: i0.ɵɵFactoryTarget.
|
|
955
|
-
static { this.ɵ
|
|
956
|
-
<div class="mb-2 flex items-center justify-between">
|
|
957
|
-
<button ngbCalendarBtn="left">{{ dir.isRtl() ? '>' : '<' }}</button>
|
|
958
|
-
<button ngbCalendarTitle>{{ title() }}</button>
|
|
959
|
-
<button ngbCalendarBtn="right">{{ dir.isRtl() ? '<' : '>' }}</button>
|
|
960
|
-
</div>
|
|
961
|
-
|
|
962
|
-
@if (datePicker.showType() === 'year') {
|
|
963
|
-
<div class="grid grid-cols-3">
|
|
964
|
-
@for (year of years(); track year.year) {
|
|
965
|
-
<button
|
|
966
|
-
[ngbCalYearBtn]="year"
|
|
967
|
-
#yearBtn="ngbCalYearBtn"
|
|
968
|
-
class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
|
|
969
|
-
year.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
970
|
-
}}"
|
|
971
|
-
[ngClass]="{
|
|
972
|
-
'border bg-muted-background': yearBtn.selected(),
|
|
973
|
-
'!bg-primary text-foreground': yearBtn.active(),
|
|
974
|
-
}"
|
|
975
|
-
>
|
|
976
|
-
{{ year.year }}
|
|
977
|
-
</button>
|
|
978
|
-
}
|
|
979
|
-
</div>
|
|
980
|
-
} @else if (datePicker.showType() === 'month') {
|
|
981
|
-
<div class="grid grid-cols-3">
|
|
982
|
-
@for (month of months(); track month.value) {
|
|
983
|
-
<button
|
|
984
|
-
[ngbCalMonthBtn]="month"
|
|
985
|
-
#monthBtn="ngbCalMonthBtn"
|
|
986
|
-
class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
|
|
987
|
-
month.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
988
|
-
}}"
|
|
989
|
-
[ngClass]="{
|
|
990
|
-
'border bg-muted-background': monthBtn.selected(),
|
|
991
|
-
'!bg-primary text-foreground': monthBtn.active(),
|
|
992
|
-
}"
|
|
993
|
-
>
|
|
994
|
-
{{ month.name }}
|
|
995
|
-
</button>
|
|
996
|
-
}
|
|
997
|
-
</div>
|
|
998
|
-
} @else {
|
|
999
|
-
<div class="day-names grid grid-cols-7">
|
|
1000
|
-
@for (dayName of dayNames; track dayName) {
|
|
1001
|
-
<div class="p-1 text-center text-muted">{{ dayName }}</div>
|
|
1002
|
-
}
|
|
1003
|
-
</div>
|
|
1004
|
-
<div class="grid grid-cols-7 gap-y-2">
|
|
1005
|
-
@for (day of getDaysArray(); track day.day + '-' + day.mon) {
|
|
1006
|
-
<button
|
|
1007
|
-
#days="ngbCalDayBtn"
|
|
1008
|
-
[ngbCalDayBtn]="day"
|
|
1009
|
-
class="mx-auto flex h-9 w-9 items-center justify-center text-center {{
|
|
1010
|
-
day.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
1011
|
-
}}"
|
|
1012
|
-
[ngClass]="{
|
|
1013
|
-
'bg-muted-background': days.selected(),
|
|
1014
|
-
'opacity-40': days.dummy(),
|
|
1015
|
-
'!bg-primary text-foreground': days.active(),
|
|
1016
|
-
}"
|
|
1017
|
-
>
|
|
1018
|
-
{{ day.day }}
|
|
1019
|
-
</button>
|
|
1020
|
-
}
|
|
1021
|
-
</div>
|
|
1022
|
-
@if (datePicker.time() && datePicker.range()) {
|
|
1023
|
-
<div ngbTime [(value)]="time1" (valueChange)="timeChanged(0, time1()!)"></div>
|
|
1024
|
-
<div ngbTime [(value)]="time2" (valueChange)="timeChanged(1, time2()!)"></div>
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1027
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgbTimePicker, selector: "[ngbTime]", inputs: ["is24", "value"], outputs: ["valueChange"] }, { kind: "directive", type: CalendarBtn, selector: "[ngbCalendarBtn]", inputs: ["ngbCalendarBtn"] }, { kind: "directive", type: CalendarTitle, selector: "[ngbCalendarTitle]" }, { kind: "directive", type: CalendarYearBtn, selector: "[ngbCalYearBtn]", inputs: ["ngbCalYearBtn"], exportAs: ["ngbCalYearBtn"] }, { kind: "directive", type: CalendarMonthBtn, selector: "[ngbCalMonthBtn]", inputs: ["ngbCalMonthBtn"], exportAs: ["ngbCalMonthBtn"] }, { kind: "directive", type: CalendarDayBtn, selector: "[ngbCalDayBtn]", inputs: ["ngbCalDayBtn"], exportAs: ["ngbCalDayBtn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
843
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCalendar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
844
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbCalendar, isStandalone: true, selector: "ngb-calendar", inputs: { first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, last: { classPropertyName: "last", publicName: "last", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "days", predicate: CalendarDayBtn, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
|
|
1028
845
|
}
|
|
1029
846
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbCalendar, decorators: [{
|
|
1030
|
-
type:
|
|
847
|
+
type: Directive,
|
|
1031
848
|
args: [{
|
|
1032
849
|
selector: 'ngb-calendar',
|
|
1033
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1034
|
-
imports: [
|
|
1035
|
-
NgClass,
|
|
1036
|
-
NgbTimePicker,
|
|
1037
|
-
CalendarBtn,
|
|
1038
|
-
CalendarTitle,
|
|
1039
|
-
CalendarYearBtn,
|
|
1040
|
-
CalendarMonthBtn,
|
|
1041
|
-
CalendarDayBtn,
|
|
1042
|
-
],
|
|
1043
|
-
template: `
|
|
1044
|
-
<div class="mb-2 flex items-center justify-between">
|
|
1045
|
-
<button ngbCalendarBtn="left">{{ dir.isRtl() ? '>' : '<' }}</button>
|
|
1046
|
-
<button ngbCalendarTitle>{{ title() }}</button>
|
|
1047
|
-
<button ngbCalendarBtn="right">{{ dir.isRtl() ? '<' : '>' }}</button>
|
|
1048
|
-
</div>
|
|
1049
|
-
|
|
1050
|
-
@if (datePicker.showType() === 'year') {
|
|
1051
|
-
<div class="grid grid-cols-3">
|
|
1052
|
-
@for (year of years(); track year.year) {
|
|
1053
|
-
<button
|
|
1054
|
-
[ngbCalYearBtn]="year"
|
|
1055
|
-
#yearBtn="ngbCalYearBtn"
|
|
1056
|
-
class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
|
|
1057
|
-
year.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
1058
|
-
}}"
|
|
1059
|
-
[ngClass]="{
|
|
1060
|
-
'border bg-muted-background': yearBtn.selected(),
|
|
1061
|
-
'!bg-primary text-foreground': yearBtn.active(),
|
|
1062
|
-
}"
|
|
1063
|
-
>
|
|
1064
|
-
{{ year.year }}
|
|
1065
|
-
</button>
|
|
1066
|
-
}
|
|
1067
|
-
</div>
|
|
1068
|
-
} @else if (datePicker.showType() === 'month') {
|
|
1069
|
-
<div class="grid grid-cols-3">
|
|
1070
|
-
@for (month of months(); track month.value) {
|
|
1071
|
-
<button
|
|
1072
|
-
[ngbCalMonthBtn]="month"
|
|
1073
|
-
#monthBtn="ngbCalMonthBtn"
|
|
1074
|
-
class="items-center justify-center rounded-md py-2 h-9 w-[84px] {{
|
|
1075
|
-
month.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
1076
|
-
}}"
|
|
1077
|
-
[ngClass]="{
|
|
1078
|
-
'border bg-muted-background': monthBtn.selected(),
|
|
1079
|
-
'!bg-primary text-foreground': monthBtn.active(),
|
|
1080
|
-
}"
|
|
1081
|
-
>
|
|
1082
|
-
{{ month.name }}
|
|
1083
|
-
</button>
|
|
1084
|
-
}
|
|
1085
|
-
</div>
|
|
1086
|
-
} @else {
|
|
1087
|
-
<div class="day-names grid grid-cols-7">
|
|
1088
|
-
@for (dayName of dayNames; track dayName) {
|
|
1089
|
-
<div class="p-1 text-center text-muted">{{ dayName }}</div>
|
|
1090
|
-
}
|
|
1091
|
-
</div>
|
|
1092
|
-
<div class="grid grid-cols-7 gap-y-2">
|
|
1093
|
-
@for (day of getDaysArray(); track day.day + '-' + day.mon) {
|
|
1094
|
-
<button
|
|
1095
|
-
#days="ngbCalDayBtn"
|
|
1096
|
-
[ngbCalDayBtn]="day"
|
|
1097
|
-
class="mx-auto flex h-9 w-9 items-center justify-center text-center {{
|
|
1098
|
-
day.disabled ? 'cursor-default opacity-50' : 'hover:bg-muted-background'
|
|
1099
|
-
}}"
|
|
1100
|
-
[ngClass]="{
|
|
1101
|
-
'bg-muted-background': days.selected(),
|
|
1102
|
-
'opacity-40': days.dummy(),
|
|
1103
|
-
'!bg-primary text-foreground': days.active(),
|
|
1104
|
-
}"
|
|
1105
|
-
>
|
|
1106
|
-
{{ day.day }}
|
|
1107
|
-
</button>
|
|
1108
|
-
}
|
|
1109
|
-
</div>
|
|
1110
|
-
@if (datePicker.time() && datePicker.range()) {
|
|
1111
|
-
<div ngbTime [(value)]="time1" (valueChange)="timeChanged(0, time1()!)"></div>
|
|
1112
|
-
<div ngbTime [(value)]="time2" (valueChange)="timeChanged(1, time2()!)"></div>
|
|
1113
|
-
}
|
|
1114
|
-
}
|
|
1115
|
-
`,
|
|
1116
850
|
}]
|
|
1117
851
|
}], ctorParameters: () => [] });
|
|
1118
|
-
function
|
|
852
|
+
function aliasCalendar(cal) {
|
|
1119
853
|
return {
|
|
1120
854
|
provide: NgbCalendar,
|
|
1121
855
|
useExisting: cal,
|
|
1122
856
|
};
|
|
1123
857
|
}
|
|
1124
858
|
|
|
859
|
+
class NgbTimeInput {
|
|
860
|
+
constructor() {
|
|
861
|
+
this.numberOnly = inject(NumberOnly);
|
|
862
|
+
this.timePicker = inject(NgbTimePicker);
|
|
863
|
+
this.ngbTimeInput = input.required();
|
|
864
|
+
this.numberOnly._min.set(0);
|
|
865
|
+
this.numberOnly._len.set(2);
|
|
866
|
+
effect(() => {
|
|
867
|
+
const type = this.ngbTimeInput();
|
|
868
|
+
if (type === 'hours') {
|
|
869
|
+
this.numberOnly._max.set(this.timePicker.is24() ? 23 : 11);
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
this.numberOnly._max.set(59);
|
|
873
|
+
}
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
877
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTimeInput, isStandalone: true, selector: "[ngbTimeInput]", inputs: { ngbTimeInput: { classPropertyName: "ngbTimeInput", publicName: "ngbTimeInput", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "type": "tel" } }, hostDirectives: [{ directive: i1$2.NumberOnly, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
878
|
+
}
|
|
879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimeInput, decorators: [{
|
|
880
|
+
type: Directive,
|
|
881
|
+
args: [{
|
|
882
|
+
selector: '[ngbTimeInput]',
|
|
883
|
+
hostDirectives: [{ directive: NumberOnly, inputs: ['value'], outputs: ['valueChange'] }],
|
|
884
|
+
host: {
|
|
885
|
+
type: 'tel',
|
|
886
|
+
},
|
|
887
|
+
}]
|
|
888
|
+
}], ctorParameters: () => [] });
|
|
889
|
+
class NgbTimePicker {
|
|
890
|
+
constructor() {
|
|
891
|
+
this.is24 = input(false);
|
|
892
|
+
this.value = input();
|
|
893
|
+
this.valueChange = output();
|
|
894
|
+
this.time = computed(() => {
|
|
895
|
+
return (`${padString(this.hours())}:${padString(this.minutes())}:${padString(this.seconds())}` +
|
|
896
|
+
(!this.is24() ? ` ${this.am() ? 'AM' : 'PM'}` : ''));
|
|
897
|
+
});
|
|
898
|
+
this.hours = signal('00');
|
|
899
|
+
this.minutes = signal('00');
|
|
900
|
+
this.seconds = signal('00');
|
|
901
|
+
this.am = signal(true);
|
|
902
|
+
this.onChange = (_) => { };
|
|
903
|
+
this.onTouched = () => { };
|
|
904
|
+
effect(() => {
|
|
905
|
+
const value = this.value();
|
|
906
|
+
untracked(() => {
|
|
907
|
+
this.parseValue(value);
|
|
908
|
+
});
|
|
909
|
+
});
|
|
910
|
+
}
|
|
911
|
+
parseValue(value) {
|
|
912
|
+
if (value) {
|
|
913
|
+
const [time, period] = value.split(' ');
|
|
914
|
+
const [hours, minutes, seconds = '00'] = time.split(':');
|
|
915
|
+
const am = period === 'AM';
|
|
916
|
+
this.hours.set(padString(hours));
|
|
917
|
+
this.minutes.set(padString(minutes));
|
|
918
|
+
this.seconds.set(padString(seconds));
|
|
919
|
+
this.am.set(am);
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
changeAm(active) {
|
|
923
|
+
this.am.set(active);
|
|
924
|
+
this.updateValue();
|
|
925
|
+
}
|
|
926
|
+
updateValue() {
|
|
927
|
+
this.notify(this.time());
|
|
928
|
+
}
|
|
929
|
+
notify(time) {
|
|
930
|
+
this.valueChange.emit(time);
|
|
931
|
+
this.onChange(time);
|
|
932
|
+
this.onTouched();
|
|
933
|
+
}
|
|
934
|
+
writeValue(value) {
|
|
935
|
+
if (value) {
|
|
936
|
+
this.parseValue(value);
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
registerOnChange(fn) {
|
|
940
|
+
this.onChange = fn;
|
|
941
|
+
}
|
|
942
|
+
registerOnTouched(fn) {
|
|
943
|
+
this.onTouched = fn;
|
|
944
|
+
}
|
|
945
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
946
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTimePicker, isStandalone: true, selector: "[ngbTime]", inputs: { is24: { classPropertyName: "is24", publicName: "is24", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [_provide(NgbTimePicker)], ngImport: i0 }); }
|
|
947
|
+
}
|
|
948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTimePicker, decorators: [{
|
|
949
|
+
type: Directive,
|
|
950
|
+
args: [{
|
|
951
|
+
selector: '[ngbTime]',
|
|
952
|
+
providers: [_provide(NgbTimePicker)],
|
|
953
|
+
}]
|
|
954
|
+
}], ctorParameters: () => [] });
|
|
955
|
+
function _provide(picker) {
|
|
956
|
+
return [provideValueAccessor(picker)];
|
|
957
|
+
}
|
|
958
|
+
function aliasTimePicker(picker) {
|
|
959
|
+
return [_provide(picker), { provide: NgbTimePicker, useExisting: picker }];
|
|
960
|
+
}
|
|
961
|
+
|
|
1125
962
|
/**
|
|
1126
963
|
* Generated bundle index. Do not edit.
|
|
1127
964
|
*/
|
|
1128
965
|
|
|
1129
|
-
export { CalendarBtn, CalendarDayBtn, CalendarMonthBtn, CalendarTitle, CalendarYearBtn, DatepickerGroup, NgbCalendar, NgbDateAdapter, NgbDatePicker, NgbDatepickerTrigger, NgbNativeDateAdapter, NgbTimeInput, NgbTimePicker,
|
|
966
|
+
export { CalendarBtn, CalendarDayBtn, CalendarMonthBtn, CalendarTitle, CalendarYearBtn, DatepickerGroup, NgbCalendar, NgbDateAdapter, NgbDatePicker, NgbDatepickerTrigger, NgbEndDate, NgbNativeDateAdapter, NgbTimeInput, NgbTimePicker, aliasCalendar, aliasDatePicker, aliasDatePickerTrigger, aliasTimePicker, injectNgbDateAdapter, registerDatePicker };
|
|
1130
967
|
//# sourceMappingURL=ngbase-adk-datepicker.mjs.map
|