igniteui-angular 17.2.0 → 17.2.1
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/esm2022/lib/calendar/month-picker/month-picker.component.mjs +224 -6
- package/esm2022/lib/core/utils.mjs +3 -1
- package/esm2022/lib/directives/button/button-base.mjs +39 -2
- package/esm2022/lib/directives/button/button.directive.mjs +2 -1
- package/esm2022/lib/directives/toggle/toggle.directive.mjs +18 -6
- package/fesm2022/igniteui-angular.mjs +276 -8
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/calendar/month-picker/month-picker.component.d.ts +83 -2
- package/lib/core/styles/components/button/_button-component.scss +16 -0
- package/lib/core/styles/components/button/_button-theme.scss +203 -273
- package/lib/core/styles/components/button-group/_button-group-theme.scss +314 -85
- package/lib/core/styles/components/icon-button/_icon-button-theme.scss +27 -51
- package/lib/core/styles/components/overlay/_overlay-component.scss +4 -0
- package/lib/core/styles/components/overlay/_overlay-theme.scss +17 -1
- package/lib/core/utils.d.ts +2 -0
- package/lib/directives/button/button-base.d.ts +21 -0
- package/lib/directives/toggle/toggle.directive.d.ts +5 -3
- package/package.json +2 -2
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -394,10 +394,12 @@ class PlatformUtil {
|
|
|
394
394
|
this.platformId = platformId;
|
|
395
395
|
this.isBrowser = isPlatformBrowser(this.platformId);
|
|
396
396
|
this.isIOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);
|
|
397
|
+
this.isSafari = this.isBrowser && /Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent);
|
|
397
398
|
this.isFirefox = this.isBrowser && /Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent);
|
|
398
399
|
this.isEdge = this.isBrowser && /Edge[\/\s](\d+\.\d+)/.test(navigator.userAgent);
|
|
399
400
|
this.isChromium = this.isBrowser && (/Chrom|e?ium/g.test(navigator.userAgent) ||
|
|
400
401
|
/Google Inc/g.test(navigator.vendor)) && !/Edge/g.test(navigator.userAgent);
|
|
402
|
+
this.browserVersion = this.isBrowser ? parseFloat(navigator.userAgent.match(/Version\/([\d.]+)/)?.at(1)) : 0;
|
|
401
403
|
this.KEYMAP = mkenum({
|
|
402
404
|
ENTER: 'Enter',
|
|
403
405
|
SPACE: ' ',
|
|
@@ -8355,6 +8357,14 @@ class IgxButtonBaseDirective extends DisplayDensityBase {
|
|
|
8355
8357
|
*/
|
|
8356
8358
|
onClick(ev) {
|
|
8357
8359
|
this.buttonClick.emit(ev);
|
|
8360
|
+
this.focused = false;
|
|
8361
|
+
}
|
|
8362
|
+
/**
|
|
8363
|
+
* @hidden
|
|
8364
|
+
* @internal
|
|
8365
|
+
*/
|
|
8366
|
+
onBlur() {
|
|
8367
|
+
this.focused = false;
|
|
8358
8368
|
}
|
|
8359
8369
|
/**
|
|
8360
8370
|
* @hidden
|
|
@@ -8381,6 +8391,17 @@ class IgxButtonBaseDirective extends DisplayDensityBase {
|
|
|
8381
8391
|
* ```
|
|
8382
8392
|
*/
|
|
8383
8393
|
this.role = 'button';
|
|
8394
|
+
/**
|
|
8395
|
+
* Sets/gets whether the button component is on focus.
|
|
8396
|
+
* Default value is `false`.
|
|
8397
|
+
* ```typescript
|
|
8398
|
+
* this.button.focus = true;
|
|
8399
|
+
* ```
|
|
8400
|
+
* ```typescript
|
|
8401
|
+
* let isFocused = this.button.focused;
|
|
8402
|
+
* ```
|
|
8403
|
+
*/
|
|
8404
|
+
this.focused = false;
|
|
8384
8405
|
/**
|
|
8385
8406
|
* Enables/disables the button.
|
|
8386
8407
|
*
|
|
@@ -8391,6 +8412,15 @@ class IgxButtonBaseDirective extends DisplayDensityBase {
|
|
|
8391
8412
|
*/
|
|
8392
8413
|
this.disabled = false;
|
|
8393
8414
|
}
|
|
8415
|
+
/**
|
|
8416
|
+
* @hidden
|
|
8417
|
+
* @internal
|
|
8418
|
+
*/
|
|
8419
|
+
updateOnKeyUp(event) {
|
|
8420
|
+
if (event.key === "Tab") {
|
|
8421
|
+
this.focused = true;
|
|
8422
|
+
}
|
|
8423
|
+
}
|
|
8394
8424
|
/**
|
|
8395
8425
|
* Returns the underlying DOM element.
|
|
8396
8426
|
*/
|
|
@@ -8398,7 +8428,7 @@ class IgxButtonBaseDirective extends DisplayDensityBase {
|
|
|
8398
8428
|
return this.element.nativeElement;
|
|
8399
8429
|
}
|
|
8400
8430
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxButtonBaseDirective, deps: [{ token: i0.ElementRef }, { token: DisplayDensityToken, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8401
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.4", type: IgxButtonBaseDirective, inputs: { disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "click": "onClick($event)" }, properties: { "attr.role": "this.role", "class.igx-button--disabled": "this.disabled", "attr.disabled": "this.disabledAttribute" } }, usesInheritance: true, ngImport: i0 }); }
|
|
8431
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.4", type: IgxButtonBaseDirective, inputs: { disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { buttonClick: "buttonClick" }, host: { listeners: { "click": "onClick($event)", "blur": "onBlur()", "keyup": "updateOnKeyUp($event)" }, properties: { "attr.role": "this.role", "class.igx-button--focused": "this.focused", "class.igx-button--disabled": "this.disabled", "attr.disabled": "this.disabledAttribute" } }, usesInheritance: true, ngImport: i0 }); }
|
|
8402
8432
|
}
|
|
8403
8433
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxButtonBaseDirective, decorators: [{
|
|
8404
8434
|
type: Directive
|
|
@@ -8415,6 +8445,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
8415
8445
|
}], onClick: [{
|
|
8416
8446
|
type: HostListener,
|
|
8417
8447
|
args: ['click', ['$event']]
|
|
8448
|
+
}], onBlur: [{
|
|
8449
|
+
type: HostListener,
|
|
8450
|
+
args: ['blur']
|
|
8451
|
+
}], focused: [{
|
|
8452
|
+
type: HostBinding,
|
|
8453
|
+
args: ['class.igx-button--focused']
|
|
8418
8454
|
}], disabled: [{
|
|
8419
8455
|
type: Input,
|
|
8420
8456
|
args: [{ transform: booleanAttribute }]
|
|
@@ -8424,6 +8460,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
8424
8460
|
}], disabledAttribute: [{
|
|
8425
8461
|
type: HostBinding,
|
|
8426
8462
|
args: ['attr.disabled']
|
|
8463
|
+
}], updateOnKeyUp: [{
|
|
8464
|
+
type: HostListener,
|
|
8465
|
+
args: ['keyup', ['$event']]
|
|
8427
8466
|
}] } });
|
|
8428
8467
|
|
|
8429
8468
|
const IgxButtonType = /*@__PURE__*/ mkenum({
|
|
@@ -8569,6 +8608,7 @@ class IgxButtonDirective extends IgxButtonBaseDirective {
|
|
|
8569
8608
|
*/
|
|
8570
8609
|
deselect() {
|
|
8571
8610
|
this.selected = false;
|
|
8611
|
+
this.focused = false;
|
|
8572
8612
|
}
|
|
8573
8613
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxButtonDirective, deps: [{ token: i0.ElementRef }, { token: DisplayDensityToken, optional: true }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8574
8614
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.4", type: IgxButtonDirective, isStandalone: true, selector: "[igxButton]", inputs: { selected: ["selected", "selected", booleanAttribute], type: ["igxButton", "type"], label: ["igxLabel", "label"] }, outputs: { buttonSelected: "buttonSelected" }, host: { properties: { "class.igx-button": "this._cssClass", "class.igx-button--flat": "this.flat", "class.igx-button--contained": "this.contained", "class.igx-button--outlined": "this.outlined", "class.igx-button--fab": "this.fab", "style.--component-size": "this.componentSize" } }, usesInheritance: true, ngImport: i0 }); }
|
|
@@ -17447,6 +17487,11 @@ class IgxToggleDirective {
|
|
|
17447
17487
|
get hiddenClass() {
|
|
17448
17488
|
return this.collapsed;
|
|
17449
17489
|
}
|
|
17490
|
+
get hiddenWebkitClass() {
|
|
17491
|
+
const isSafari = this.platform?.isSafari;
|
|
17492
|
+
const browserVersion = this.platform?.browserVersion;
|
|
17493
|
+
return this.collapsed && isSafari && !!browserVersion && browserVersion < 17.5;
|
|
17494
|
+
}
|
|
17450
17495
|
/**
|
|
17451
17496
|
* @hidden
|
|
17452
17497
|
*/
|
|
@@ -17456,11 +17501,12 @@ class IgxToggleDirective {
|
|
|
17456
17501
|
/**
|
|
17457
17502
|
* @hidden
|
|
17458
17503
|
*/
|
|
17459
|
-
constructor(elementRef, cdr, overlayService, navigationService) {
|
|
17504
|
+
constructor(elementRef, cdr, overlayService, navigationService, platform) {
|
|
17460
17505
|
this.elementRef = elementRef;
|
|
17461
17506
|
this.cdr = cdr;
|
|
17462
17507
|
this.overlayService = overlayService;
|
|
17463
17508
|
this.navigationService = navigationService;
|
|
17509
|
+
this.platform = platform;
|
|
17464
17510
|
/**
|
|
17465
17511
|
* Emits an event after the toggle container is opened.
|
|
17466
17512
|
*
|
|
@@ -17737,8 +17783,8 @@ class IgxToggleDirective {
|
|
|
17737
17783
|
subscription.unsubscribe();
|
|
17738
17784
|
}
|
|
17739
17785
|
}
|
|
17740
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: IgxOverlayService }, { token: IgxNavigationService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17741
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: IgxToggleDirective, isStandalone: true, selector: "[igxToggle]", inputs: { id: "id" }, outputs: { opened: "opened", opening: "opening", closed: "closed", closing: "closing", appended: "appended" }, host: { properties: { "class.igx-toggle--hidden": "this.hiddenClass", "attr.aria-hidden": "this.hiddenClass", "class.igx-toggle": "this.defaultClass" } }, exportAs: ["toggle"], ngImport: i0 }); }
|
|
17786
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: IgxOverlayService }, { token: IgxNavigationService, optional: true }, { token: PlatformUtil, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17787
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: IgxToggleDirective, isStandalone: true, selector: "[igxToggle]", inputs: { id: "id" }, outputs: { opened: "opened", opening: "opening", closed: "closed", closing: "closing", appended: "appended" }, host: { properties: { "class.igx-toggle--hidden": "this.hiddenClass", "attr.aria-hidden": "this.hiddenClass", "class.igx-toggle--hidden-webkit": "this.hiddenWebkitClass", "class.igx-toggle": "this.defaultClass" } }, exportAs: ["toggle"], ngImport: i0 }); }
|
|
17742
17788
|
}
|
|
17743
17789
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxToggleDirective, decorators: [{
|
|
17744
17790
|
type: Directive,
|
|
@@ -17752,6 +17798,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
17752
17798
|
args: [IgxOverlayService]
|
|
17753
17799
|
}] }, { type: IgxNavigationService, decorators: [{
|
|
17754
17800
|
type: Optional
|
|
17801
|
+
}] }, { type: PlatformUtil, decorators: [{
|
|
17802
|
+
type: Optional
|
|
17755
17803
|
}] }], propDecorators: { opened: [{
|
|
17756
17804
|
type: Output
|
|
17757
17805
|
}], opening: [{
|
|
@@ -17770,6 +17818,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
17770
17818
|
}, {
|
|
17771
17819
|
type: HostBinding,
|
|
17772
17820
|
args: ['attr.aria-hidden']
|
|
17821
|
+
}], hiddenWebkitClass: [{
|
|
17822
|
+
type: HostBinding,
|
|
17823
|
+
args: ['class.igx-toggle--hidden-webkit']
|
|
17773
17824
|
}], defaultClass: [{
|
|
17774
17825
|
type: HostBinding,
|
|
17775
17826
|
args: ['class.igx-toggle']
|
|
@@ -31649,6 +31700,26 @@ class IgxMonthPickerComponent extends IgxCalendarBaseDirective {
|
|
|
31649
31700
|
this.viewDate = CalendarDay.from(this.viewDate).add('year', 15).native;
|
|
31650
31701
|
}
|
|
31651
31702
|
}
|
|
31703
|
+
/**
|
|
31704
|
+
* @hidden
|
|
31705
|
+
* @internal
|
|
31706
|
+
*/
|
|
31707
|
+
onActiveViewDecadeKB(date, event, activeViewIdx) {
|
|
31708
|
+
super.activeViewDecadeKB(event, activeViewIdx);
|
|
31709
|
+
if (this.platform.isActivationKey(event)) {
|
|
31710
|
+
this.viewDate = date;
|
|
31711
|
+
this.wrapper.nativeElement.focus();
|
|
31712
|
+
}
|
|
31713
|
+
}
|
|
31714
|
+
/**
|
|
31715
|
+
* @hidden
|
|
31716
|
+
* @internal
|
|
31717
|
+
*/
|
|
31718
|
+
onActiveViewDecade(event, date, activeViewIdx) {
|
|
31719
|
+
event.preventDefault();
|
|
31720
|
+
super.activeViewDecade(activeViewIdx);
|
|
31721
|
+
this.viewDate = date;
|
|
31722
|
+
}
|
|
31652
31723
|
/**
|
|
31653
31724
|
* @hidden
|
|
31654
31725
|
*/
|
|
@@ -31690,7 +31761,8 @@ class IgxMonthPickerComponent extends IgxCalendarBaseDirective {
|
|
|
31690
31761
|
selectYear(event) {
|
|
31691
31762
|
this.previousViewDate = this.viewDate;
|
|
31692
31763
|
this.viewDate = new Date(event.getFullYear(), event.getMonth(), event.getDate());
|
|
31693
|
-
this.activeView = IgxCalendarView.
|
|
31764
|
+
this.activeView = IgxCalendarView.Year;
|
|
31765
|
+
this.wrapper.nativeElement.focus();
|
|
31694
31766
|
}
|
|
31695
31767
|
/**
|
|
31696
31768
|
* @hidden
|
|
@@ -31737,13 +31809,202 @@ class IgxMonthPickerComponent extends IgxCalendarBaseDirective {
|
|
|
31737
31809
|
});
|
|
31738
31810
|
}
|
|
31739
31811
|
}
|
|
31812
|
+
onMouseDown(event) {
|
|
31813
|
+
event.stopPropagation();
|
|
31814
|
+
this.wrapper.nativeElement.focus();
|
|
31815
|
+
}
|
|
31816
|
+
/**
|
|
31817
|
+
* @hidden
|
|
31818
|
+
* @internal
|
|
31819
|
+
*/
|
|
31820
|
+
set showActiveDay(value) {
|
|
31821
|
+
this._showActiveDay = value;
|
|
31822
|
+
this.cdr.detectChanges();
|
|
31823
|
+
}
|
|
31824
|
+
get showActiveDay() {
|
|
31825
|
+
return this._showActiveDay;
|
|
31826
|
+
}
|
|
31827
|
+
get activeDescendant() {
|
|
31828
|
+
if (this.activeView === 'month') {
|
|
31829
|
+
return this.value?.getTime();
|
|
31830
|
+
}
|
|
31831
|
+
return this._activeDescendant ?? this.viewDate.getTime();
|
|
31832
|
+
}
|
|
31833
|
+
set activeDescendant(date) {
|
|
31834
|
+
this._activeDescendant = date.getTime();
|
|
31835
|
+
}
|
|
31836
|
+
get isDefaultView() {
|
|
31837
|
+
return this.activeView === IgxCalendarView.Year;
|
|
31838
|
+
}
|
|
31839
|
+
ngOnInit() {
|
|
31840
|
+
this.activeView = IgxCalendarView.Year;
|
|
31841
|
+
}
|
|
31740
31842
|
ngAfterViewInit() {
|
|
31843
|
+
this.keyboardNavigation
|
|
31844
|
+
.attachKeyboardHandlers(this.wrapper, this)
|
|
31845
|
+
.set("ArrowUp", this.onArrowUp)
|
|
31846
|
+
.set("ArrowDown", this.onArrowDown)
|
|
31847
|
+
.set("ArrowLeft", this.onArrowLeft)
|
|
31848
|
+
.set("ArrowRight", this.onArrowRight)
|
|
31849
|
+
.set("Enter", this.onEnter)
|
|
31850
|
+
.set(" ", this.onEnter)
|
|
31851
|
+
.set("Home", this.onHome)
|
|
31852
|
+
.set("End", this.onEnd)
|
|
31853
|
+
.set("PageUp", this.handlePageUp)
|
|
31854
|
+
.set("PageDown", this.handlePageDown);
|
|
31855
|
+
this.wrapper.nativeElement.addEventListener('focus', (event) => this.onWrapperFocus(event));
|
|
31856
|
+
this.wrapper.nativeElement.addEventListener('blur', (event) => this.onWrapperBlur(event));
|
|
31741
31857
|
this.activeView$.subscribe((view) => {
|
|
31742
31858
|
this.activeViewChanged.emit(view);
|
|
31859
|
+
this.viewDateChanged.emit({
|
|
31860
|
+
previousValue: this.previousViewDate,
|
|
31861
|
+
currentValue: this.viewDate
|
|
31862
|
+
});
|
|
31743
31863
|
});
|
|
31744
31864
|
}
|
|
31865
|
+
onWrapperFocus(event) {
|
|
31866
|
+
event.stopPropagation();
|
|
31867
|
+
this.showActiveDay = true;
|
|
31868
|
+
}
|
|
31869
|
+
onWrapperBlur(event) {
|
|
31870
|
+
event.stopPropagation();
|
|
31871
|
+
this.showActiveDay = false;
|
|
31872
|
+
this._onTouchedCallback();
|
|
31873
|
+
}
|
|
31874
|
+
handlePageUpDown(event, delta) {
|
|
31875
|
+
event.preventDefault();
|
|
31876
|
+
event.stopPropagation();
|
|
31877
|
+
if (this.isDefaultView && event.shiftKey) {
|
|
31878
|
+
this.viewDate = CalendarDay.from(this.viewDate).add('year', delta).native;
|
|
31879
|
+
this.cdr.detectChanges();
|
|
31880
|
+
}
|
|
31881
|
+
else {
|
|
31882
|
+
delta > 0 ? this.nextPage() : this.previousPage();
|
|
31883
|
+
}
|
|
31884
|
+
}
|
|
31885
|
+
handlePageUp(event) {
|
|
31886
|
+
this.handlePageUpDown(event, -1);
|
|
31887
|
+
}
|
|
31888
|
+
handlePageDown(event) {
|
|
31889
|
+
this.handlePageUpDown(event, 1);
|
|
31890
|
+
}
|
|
31891
|
+
onArrowUp(event) {
|
|
31892
|
+
if (this.isDefaultView) {
|
|
31893
|
+
this.monthsView.onKeydownArrowUp(event);
|
|
31894
|
+
}
|
|
31895
|
+
if (this.isDecadeView) {
|
|
31896
|
+
this.dacadeView.onKeydownArrowUp(event);
|
|
31897
|
+
}
|
|
31898
|
+
}
|
|
31899
|
+
onArrowDown(event) {
|
|
31900
|
+
if (this.isDefaultView) {
|
|
31901
|
+
this.monthsView.onKeydownArrowDown(event);
|
|
31902
|
+
}
|
|
31903
|
+
if (this.isDecadeView) {
|
|
31904
|
+
this.dacadeView.onKeydownArrowDown(event);
|
|
31905
|
+
}
|
|
31906
|
+
}
|
|
31907
|
+
onArrowLeft(event) {
|
|
31908
|
+
if (this.isDefaultView) {
|
|
31909
|
+
this.monthsView.onKeydownArrowLeft(event);
|
|
31910
|
+
}
|
|
31911
|
+
if (this.isDecadeView) {
|
|
31912
|
+
this.dacadeView.onKeydownArrowLeft(event);
|
|
31913
|
+
}
|
|
31914
|
+
}
|
|
31915
|
+
onArrowRight(event) {
|
|
31916
|
+
if (this.isDefaultView) {
|
|
31917
|
+
this.monthsView.onKeydownArrowRight(event);
|
|
31918
|
+
}
|
|
31919
|
+
if (this.isDecadeView) {
|
|
31920
|
+
this.dacadeView.onKeydownArrowRight(event);
|
|
31921
|
+
}
|
|
31922
|
+
}
|
|
31923
|
+
onEnter(event) {
|
|
31924
|
+
event.stopPropagation();
|
|
31925
|
+
if (this.isDefaultView) {
|
|
31926
|
+
this.monthsView.onKeydownEnter(event);
|
|
31927
|
+
}
|
|
31928
|
+
if (this.isDecadeView) {
|
|
31929
|
+
this.dacadeView.onKeydownEnter(event);
|
|
31930
|
+
}
|
|
31931
|
+
}
|
|
31932
|
+
onHome(event) {
|
|
31933
|
+
event.stopPropagation();
|
|
31934
|
+
if (this.isDefaultView) {
|
|
31935
|
+
this.monthsView.onKeydownHome(event);
|
|
31936
|
+
}
|
|
31937
|
+
if (this.isDecadeView) {
|
|
31938
|
+
this.dacadeView.onKeydownHome(event);
|
|
31939
|
+
}
|
|
31940
|
+
}
|
|
31941
|
+
onEnd(event) {
|
|
31942
|
+
event.stopPropagation();
|
|
31943
|
+
if (this.isDefaultView) {
|
|
31944
|
+
this.monthsView.onKeydownEnd(event);
|
|
31945
|
+
}
|
|
31946
|
+
if (this.isDecadeView) {
|
|
31947
|
+
this.dacadeView.onKeydownEnd(event);
|
|
31948
|
+
}
|
|
31949
|
+
}
|
|
31950
|
+
/**
|
|
31951
|
+
* @hidden
|
|
31952
|
+
* @internal
|
|
31953
|
+
*/
|
|
31954
|
+
ngOnDestroy() {
|
|
31955
|
+
this.keyboardNavigation.detachKeyboardHandlers();
|
|
31956
|
+
this.wrapper?.nativeElement.removeEventListener('focus', this.onWrapperFocus);
|
|
31957
|
+
this.wrapper?.nativeElement.removeEventListener('blur', this.onWrapperBlur);
|
|
31958
|
+
}
|
|
31959
|
+
/**
|
|
31960
|
+
* @hidden
|
|
31961
|
+
* @internal
|
|
31962
|
+
*/
|
|
31963
|
+
getPrevYearDate(date) {
|
|
31964
|
+
return CalendarDay.from(date).add('year', -1).native;
|
|
31965
|
+
}
|
|
31966
|
+
/**
|
|
31967
|
+
* @hidden
|
|
31968
|
+
* @internal
|
|
31969
|
+
*/
|
|
31970
|
+
getNextYearDate(date) {
|
|
31971
|
+
return CalendarDay.from(date).add('year', 1).native;
|
|
31972
|
+
}
|
|
31973
|
+
/**
|
|
31974
|
+
* Getter for the context object inside the calendar templates.
|
|
31975
|
+
*
|
|
31976
|
+
* @hidden
|
|
31977
|
+
* @internal
|
|
31978
|
+
*/
|
|
31979
|
+
getContext(i) {
|
|
31980
|
+
const date = CalendarDay.from(this.viewDate).add('month', i).native;
|
|
31981
|
+
return this.generateContext(date, i);
|
|
31982
|
+
}
|
|
31983
|
+
/**
|
|
31984
|
+
* Helper method building and returning the context object inside the calendar templates.
|
|
31985
|
+
*
|
|
31986
|
+
* @hidden
|
|
31987
|
+
* @internal
|
|
31988
|
+
*/
|
|
31989
|
+
generateContext(value, i) {
|
|
31990
|
+
const construct = (date, index) => ({
|
|
31991
|
+
index: index,
|
|
31992
|
+
date,
|
|
31993
|
+
...formatToParts(date, this.locale, this.formatOptions, [
|
|
31994
|
+
"era",
|
|
31995
|
+
"year",
|
|
31996
|
+
"month",
|
|
31997
|
+
"day",
|
|
31998
|
+
"weekday",
|
|
31999
|
+
]),
|
|
32000
|
+
});
|
|
32001
|
+
const formatObject = Array.isArray(value)
|
|
32002
|
+
? value.map((date, index) => construct(date, index))
|
|
32003
|
+
: construct(value, i);
|
|
32004
|
+
return { $implicit: formatObject };
|
|
32005
|
+
}
|
|
31745
32006
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxMonthPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
31746
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxMonthPickerComponent, isStandalone: true, selector: "igx-month-picker", inputs: { id: "id" }, host: { listeners: { "keydown.pageup": "previousPage($event)", "keydown.pagedown": "nextPage($event)" }, properties: { "attr.id": "this.id", "class.igx-month-picker": "this.styleClass" } }, providers: [
|
|
32007
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxMonthPickerComponent, isStandalone: true, selector: "igx-month-picker", inputs: { id: "id" }, host: { listeners: { "keydown.pageup": "previousPage($event)", "keydown.pagedown": "nextPage($event)", "mousedown": "onMouseDown($event)" }, properties: { "attr.id": "this.id", "class.igx-month-picker": "this.styleClass" } }, providers: [
|
|
31747
32008
|
{
|
|
31748
32009
|
multi: true,
|
|
31749
32010
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -31753,7 +32014,7 @@ class IgxMonthPickerComponent extends IgxCalendarBaseDirective {
|
|
|
31753
32014
|
multi: false,
|
|
31754
32015
|
provide: KeyboardNavigationService
|
|
31755
32016
|
},
|
|
31756
|
-
], viewQueries: [{ propertyName: "monthsView", first: true, predicate: ["months"], descendants: true, read: IgxMonthsViewComponent }, { propertyName: "dacadeView", first: true, predicate: ["decade"], descendants: true, read: IgxYearsViewComponent }, { propertyName: "daysView", first: true, predicate: ["days"], descendants: true, read: IgxDaysViewComponent }, { propertyName: "yearsBtn", first: true, predicate: ["yearsBtn"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--
|
|
32017
|
+
], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "monthsView", first: true, predicate: ["months"], descendants: true, read: IgxMonthsViewComponent }, { propertyName: "dacadeView", first: true, predicate: ["decade"], descendants: true, read: IgxYearsViewComponent }, { propertyName: "daysView", first: true, predicate: ["days"], descendants: true, read: IgxDaysViewComponent }, { propertyName: "yearsBtn", first: true, predicate: ["yearsBtn"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Previous arrow icon -->\n<ng-template #prevArrow let-obj>\n <igx-icon aria-hidden=\"true\">keyboard_arrow_left</igx-icon>\n</ng-template>\n\n<!-- Next arrow icon -->\n<ng-template #nextArrow let-obj>\n <igx-icon aria-hidden=\"true\">keyboard_arrow_right</igx-icon>\n</ng-template>\n\n<!-- Previous picker button -->\n<ng-template #prevPageButton let-obj>\n <div\n #prevPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__prev\"\n role=\"button\"\n [attr.aria-label]=\"prevNavLabel((getPrevYearDate(viewDate) | date: 'YYYY'))\"\n data-action=\"prev\"\n igxCalendarScrollPage\n (mousedown)=\"previousPage()\"\n (keydown)=\"changePageKB($event, false)\"\n >\n <ng-container *ngTemplateOutlet=\"prevArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Next picker button -->\n<ng-template #nextPageButton let-obj>\n <div\n #nextPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__next\"\n role=\"button\"\n [attr.aria-label]=\"nextNavLabel((getNextYearDate(viewDate) | date: 'YYYY'))\"\n data-action=\"next\"\n igxCalendarScrollPage\n (mousedown)=\"nextPage()\"\n (keydown)=\"changePageKB($event)\"\n >\n <ng-container *ngTemplateOutlet=\"nextArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Year -->\n<ng-template #defaultYear let-obj>\n <span *ngIf=\"activeView === 'year'\" class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">{{ formattedYear(obj.date) }}</span>\n <span\n #yearsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'yyyy') + ', ' + resourceStrings.igx_calendar_select_year\"\n (keydown)=\"onActiveViewDecadeKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewDecade($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedYear(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Decade -->\n<ng-template #defaultDecade>\n <span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>\n</ng-template>\n\n<!-- PICKER IN MONTHS -->\n<ng-template #calendarYearPicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\">\n <ng-container\n *ngTemplateOutlet=\"defaultYear; context: getContext(0)\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<!-- PICKER IN YEARS -->\n<ng-template #calendarDecadePicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\" aria-live=\"polite\">\n <ng-container\n *ngTemplateOutlet=\"defaultDecade;\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<div\n #wrapper\n [tabIndex]=\"0\"\n class=\"igx-calendar__wrapper\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-multiselectable]=\"selection !== 'single'\"\n aria-labelledby=\"calendar-desc\"\n role=\"grid\"\n >\n <caption id=\"calendar-desc\" tabindex=\"-1\" class=\"igx-calendar__aria-off-screen\">\n {{ resourceStrings.igx_calendar_singular_single_selection}}\n </caption>\n\n <section class=\"igx-calendar__pickers\">\n <ng-container *ngIf=\"isDefaultView\">\n <ng-container *ngTemplateOutlet=\"calendarYearPicker\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isDecadeView\">\n <ng-container *ngTemplateOutlet=\"calendarDecadePicker\"></ng-container>\n </ng-container>\n </section>\n\n <section class=\"igx-calendar__body\">\n <ng-container *ngIf=\"isDefaultView\">\n <igx-months-view\n #months\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.month\"\n [monthFormat]=\"formatOptions.month\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectMonth($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\">\n >\n </igx-months-view>\n </ng-container>\n\n <ng-container *ngIf=\"isDecadeView\">\n <igx-years-view\n #decade\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.year\"\n [yearFormat]=\"formatOptions.year\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectYear($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n </igx-years-view>\n </ng-container>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "component", type: IgxMonthsViewComponent, selector: "igx-months-view", inputs: ["id", "standalone", "monthFormat", "formatView"] }, { kind: "component", type: IgxYearsViewComponent, selector: "igx-years-view", inputs: ["standalone", "yearFormat"] }] }); }
|
|
31757
32018
|
}
|
|
31758
32019
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxMonthPickerComponent, decorators: [{
|
|
31759
32020
|
type: Component,
|
|
@@ -31771,15 +32032,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
31771
32032
|
NgIf,
|
|
31772
32033
|
NgStyle,
|
|
31773
32034
|
NgTemplateOutlet,
|
|
32035
|
+
DatePipe,
|
|
31774
32036
|
IgxIconComponent,
|
|
31775
32037
|
IgxMonthsViewComponent,
|
|
31776
32038
|
IgxYearsViewComponent,
|
|
31777
|
-
], template: "<!--
|
|
32039
|
+
], template: "<!-- Previous arrow icon -->\n<ng-template #prevArrow let-obj>\n <igx-icon aria-hidden=\"true\">keyboard_arrow_left</igx-icon>\n</ng-template>\n\n<!-- Next arrow icon -->\n<ng-template #nextArrow let-obj>\n <igx-icon aria-hidden=\"true\">keyboard_arrow_right</igx-icon>\n</ng-template>\n\n<!-- Previous picker button -->\n<ng-template #prevPageButton let-obj>\n <div\n #prevPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__prev\"\n role=\"button\"\n [attr.aria-label]=\"prevNavLabel((getPrevYearDate(viewDate) | date: 'YYYY'))\"\n data-action=\"prev\"\n igxCalendarScrollPage\n (mousedown)=\"previousPage()\"\n (keydown)=\"changePageKB($event, false)\"\n >\n <ng-container *ngTemplateOutlet=\"prevArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Next picker button -->\n<ng-template #nextPageButton let-obj>\n <div\n #nextPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__next\"\n role=\"button\"\n [attr.aria-label]=\"nextNavLabel((getNextYearDate(viewDate) | date: 'YYYY'))\"\n data-action=\"next\"\n igxCalendarScrollPage\n (mousedown)=\"nextPage()\"\n (keydown)=\"changePageKB($event)\"\n >\n <ng-container *ngTemplateOutlet=\"nextArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Year -->\n<ng-template #defaultYear let-obj>\n <span *ngIf=\"activeView === 'year'\" class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">{{ formattedYear(obj.date) }}</span>\n <span\n #yearsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'yyyy') + ', ' + resourceStrings.igx_calendar_select_year\"\n (keydown)=\"onActiveViewDecadeKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewDecade($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedYear(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Decade -->\n<ng-template #defaultDecade>\n <span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>\n</ng-template>\n\n<!-- PICKER IN MONTHS -->\n<ng-template #calendarYearPicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\">\n <ng-container\n *ngTemplateOutlet=\"defaultYear; context: getContext(0)\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<!-- PICKER IN YEARS -->\n<ng-template #calendarDecadePicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\" aria-live=\"polite\">\n <ng-container\n *ngTemplateOutlet=\"defaultDecade;\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<div\n #wrapper\n [tabIndex]=\"0\"\n class=\"igx-calendar__wrapper\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-multiselectable]=\"selection !== 'single'\"\n aria-labelledby=\"calendar-desc\"\n role=\"grid\"\n >\n <caption id=\"calendar-desc\" tabindex=\"-1\" class=\"igx-calendar__aria-off-screen\">\n {{ resourceStrings.igx_calendar_singular_single_selection}}\n </caption>\n\n <section class=\"igx-calendar__pickers\">\n <ng-container *ngIf=\"isDefaultView\">\n <ng-container *ngTemplateOutlet=\"calendarYearPicker\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isDecadeView\">\n <ng-container *ngTemplateOutlet=\"calendarDecadePicker\"></ng-container>\n </ng-container>\n </section>\n\n <section class=\"igx-calendar__body\">\n <ng-container *ngIf=\"isDefaultView\">\n <igx-months-view\n #months\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.month\"\n [monthFormat]=\"formatOptions.month\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectMonth($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\">\n >\n </igx-months-view>\n </ng-container>\n\n <ng-container *ngIf=\"isDecadeView\">\n <igx-years-view\n #decade\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.year\"\n [yearFormat]=\"formatOptions.year\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectYear($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n </igx-years-view>\n </ng-container>\n </section>\n</div>\n" }]
|
|
31778
32040
|
}], propDecorators: { id: [{
|
|
31779
32041
|
type: HostBinding,
|
|
31780
32042
|
args: ["attr.id"]
|
|
31781
32043
|
}, {
|
|
31782
32044
|
type: Input
|
|
32045
|
+
}], wrapper: [{
|
|
32046
|
+
type: ViewChild,
|
|
32047
|
+
args: ["wrapper"]
|
|
31783
32048
|
}], styleClass: [{
|
|
31784
32049
|
type: HostBinding,
|
|
31785
32050
|
args: ["class.igx-month-picker"]
|
|
@@ -31801,6 +32066,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
31801
32066
|
}], nextPage: [{
|
|
31802
32067
|
type: HostListener,
|
|
31803
32068
|
args: ["keydown.pagedown", ["$event"]]
|
|
32069
|
+
}], onMouseDown: [{
|
|
32070
|
+
type: HostListener,
|
|
32071
|
+
args: ['mousedown', ['$event']]
|
|
31804
32072
|
}] } });
|
|
31805
32073
|
|
|
31806
32074
|
/* NOTE: Calendar directives collection for ease-of-use import in standalone components scenario */
|