@ng-matero/extensions 11.3.4 → 11.5.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/alert/_alert-theme.scss +5 -9
- package/alert/alert.component.d.ts +6 -4
- package/alert/alert.component.scss +2 -1
- package/alert/mtxAlert.metadata.json +1 -1
- package/bundles/mtxAlert.umd.js +22 -12
- package/bundles/mtxAlert.umd.js.map +1 -1
- package/bundles/mtxAlert.umd.min.js +1 -1
- package/bundles/mtxAlert.umd.min.js.map +1 -1
- package/bundles/{ng-matero-extensions-button.umd.js → mtxButton.umd.js} +1 -1
- package/bundles/mtxButton.umd.js.map +1 -0
- package/bundles/{ng-matero-extensions-button.umd.min.js → mtxButton.umd.min.js} +1 -1
- package/bundles/{ng-matero-extensions-button.umd.min.js.map → mtxButton.umd.min.js.map} +0 -0
- package/bundles/mtxCheckboxGroup.umd.js +41 -10
- package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
- package/bundles/mtxCheckboxGroup.umd.min.js +1 -1
- package/bundles/mtxCheckboxGroup.umd.min.js.map +1 -1
- package/bundles/mtxColorPicker.umd.js +14 -1
- package/bundles/mtxColorPicker.umd.js.map +1 -1
- package/bundles/mtxColorPicker.umd.min.js +1 -1
- package/bundles/mtxColorPicker.umd.min.js.map +1 -1
- package/bundles/mtxFormGroup.umd.js.map +1 -1
- package/bundles/mtxFormGroup.umd.min.js.map +1 -1
- package/bundles/mtxGrid.umd.js +14 -14
- package/bundles/mtxGrid.umd.js.map +1 -1
- package/bundles/mtxGrid.umd.min.js.map +1 -1
- package/bundles/mtxLoader.umd.js +27 -7
- package/bundles/mtxLoader.umd.js.map +1 -1
- package/bundles/mtxLoader.umd.min.js +1 -1
- package/bundles/mtxLoader.umd.min.js.map +1 -1
- package/bundles/mtxPopover.umd.js +177 -129
- package/bundles/mtxPopover.umd.js.map +1 -1
- package/bundles/mtxPopover.umd.min.js +1 -1
- package/bundles/mtxPopover.umd.min.js.map +1 -1
- package/bundles/mtxProgress.umd.js +28 -4
- package/bundles/mtxProgress.umd.js.map +1 -1
- package/bundles/mtxProgress.umd.min.js +1 -1
- package/bundles/mtxProgress.umd.min.js.map +1 -1
- package/bundles/mtxSelect.umd.js.map +1 -1
- package/bundles/mtxSelect.umd.min.js.map +1 -1
- package/button/{ng-matero-extensions-button.d.ts → mtxButton.d.ts} +0 -0
- package/button/{ng-matero-extensions-button.metadata.json → mtxButton.metadata.json} +0 -0
- package/button/package.json +7 -7
- package/checkbox-group/checkbox-group.component.d.ts +13 -6
- package/checkbox-group/mtxCheckboxGroup.metadata.json +1 -1
- package/color-picker/color-picker.component.d.ts +5 -0
- package/color-picker/mtxColorPicker.metadata.json +1 -1
- package/data-grid/grid.component.d.ts +2 -2
- package/esm2015/alert/alert.component.js +16 -9
- package/esm2015/button/mtxButton.js +5 -0
- package/esm2015/checkbox-group/checkbox-group.component.js +35 -8
- package/esm2015/color-picker/color-picker.component.js +11 -2
- package/esm2015/data-grid/grid.component.js +15 -15
- package/esm2015/form-group/form-group.component.js +1 -1
- package/esm2015/loader/loader.component.js +17 -4
- package/esm2015/popover/popover-errors.js +15 -15
- package/esm2015/popover/popover-interfaces.js +1 -1
- package/esm2015/popover/popover-trigger.js +95 -64
- package/esm2015/popover/popover-types.js +1 -1
- package/esm2015/popover/popover.js +68 -51
- package/esm2015/popover/public-api.js +2 -1
- package/esm2015/progress/progress.component.js +18 -1
- package/esm2015/select/select.component.js +1 -1
- package/fesm2015/mtxAlert.js +15 -8
- package/fesm2015/mtxAlert.js.map +1 -1
- package/fesm2015/{ng-matero-extensions-button.js → mtxButton.js} +1 -1
- package/fesm2015/mtxButton.js.map +1 -0
- package/fesm2015/mtxCheckboxGroup.js +34 -7
- package/fesm2015/mtxCheckboxGroup.js.map +1 -1
- package/fesm2015/mtxColorPicker.js +10 -1
- package/fesm2015/mtxColorPicker.js.map +1 -1
- package/fesm2015/mtxFormGroup.js.map +1 -1
- package/fesm2015/mtxGrid.js +14 -14
- package/fesm2015/mtxGrid.js.map +1 -1
- package/fesm2015/mtxLoader.js +16 -3
- package/fesm2015/mtxLoader.js.map +1 -1
- package/fesm2015/mtxPopover.js +174 -126
- package/fesm2015/mtxPopover.js.map +1 -1
- package/fesm2015/mtxProgress.js +17 -0
- package/fesm2015/mtxProgress.js.map +1 -1
- package/fesm2015/mtxSelect.js.map +1 -1
- package/form-group/form-group.component.d.ts +2 -0
- package/loader/loader.component.d.ts +9 -2
- package/loader/mtxLoader.metadata.json +1 -1
- package/package.json +2 -2
- package/popover/_popover-theme.scss +17 -7
- package/popover/mtxPopover.metadata.json +1 -1
- package/popover/popover-errors.d.ts +6 -6
- package/popover/popover-interfaces.d.ts +9 -9
- package/popover/popover-types.d.ts +3 -2
- package/popover/popover.d.ts +23 -17
- package/popover/popover.scss +117 -20
- package/popover/public-api.d.ts +1 -0
- package/progress/mtxProgress.metadata.json +1 -1
- package/progress/progress.component.d.ts +9 -2
- package/select/mtxSelect.metadata.json +1 -1
- package/select/select.component.d.ts +9 -5
- package/bundles/ng-matero-extensions-button.umd.js.map +0 -1
- package/esm2015/button/ng-matero-extensions-button.js +0 -5
- package/fesm2015/ng-matero-extensions-button.js.map +0 -1
package/fesm2015/mtxPopover.js
CHANGED
|
@@ -14,27 +14,27 @@ import { takeUntil } from 'rxjs/operators';
|
|
|
14
14
|
* Throws an exception for the case when popover trigger doesn't have a valid mtx-popover instance
|
|
15
15
|
*/
|
|
16
16
|
function throwMtxPopoverMissingError() {
|
|
17
|
-
throw Error(`mtx-popover-trigger: must pass in an mtx-popover instance.
|
|
18
|
-
|
|
19
|
-
Example:
|
|
20
|
-
<mtx-popover #popover="mtxPopover"></mtx-popover>
|
|
17
|
+
throw Error(`mtx-popover-trigger: must pass in an mtx-popover instance.
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
<mtx-popover #popover="mtxPopover"></mtx-popover>
|
|
21
21
|
<button [mtxPopoverTriggerFor]="popover"></button>`);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Throws an exception for the case when popover's
|
|
25
|
-
* In other words, it doesn't match 'before' or 'after'.
|
|
24
|
+
* Throws an exception for the case when popover's mtxPopoverPosition[0] value isn't valid.
|
|
25
|
+
* In other words, it doesn't match 'above', 'below', 'before' or 'after'.
|
|
26
26
|
*/
|
|
27
|
-
function
|
|
28
|
-
throw Error(`
|
|
29
|
-
|
|
27
|
+
function throwMtxPopoverInvalidPositionStart() {
|
|
28
|
+
throw Error(`mtxPopoverPosition[0] value must be either 'above', 'below', 'before' or 'after'.
|
|
29
|
+
Example: <mtx-popover [position]="['below', 'after']" #popover="mtxPopover"></mtx-popover>`);
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* Throws an exception for the case when popover's
|
|
33
|
-
* In other words, it doesn't match 'above' or '
|
|
32
|
+
* Throws an exception for the case when popover's mtxPopoverPosition[1] value isn't valid.
|
|
33
|
+
* In other words, it doesn't match 'above', 'below', 'before', 'after' or 'center'.
|
|
34
34
|
*/
|
|
35
|
-
function
|
|
36
|
-
throw Error(`
|
|
37
|
-
|
|
35
|
+
function throwMtxPopoverInvalidPositionEnd() {
|
|
36
|
+
throw Error(`mtxPopoverPosition[1] value must be either 'above', 'below', 'before', 'after' or 'center'.
|
|
37
|
+
Example: <mtx-popover [position]="['below', 'after']" #popover="mtxPopover"></mtx-popover>`);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
@@ -71,26 +71,25 @@ class MtxPopover {
|
|
|
71
71
|
this.zone = zone;
|
|
72
72
|
this.role = 'dialog';
|
|
73
73
|
/** Settings for popover, view setters and getters for more detail */
|
|
74
|
-
this.
|
|
75
|
-
this._yPosition = 'below';
|
|
74
|
+
this._position = ['below', 'after'];
|
|
76
75
|
this._triggerEvent = 'hover';
|
|
77
76
|
this._scrollStrategy = 'reposition';
|
|
78
77
|
this._enterDelay = 100;
|
|
79
78
|
this._leaveDelay = 100;
|
|
80
|
-
this._overlapTrigger = false;
|
|
81
|
-
this._disableAnimation = false;
|
|
82
79
|
this._panelOffsetX = 0;
|
|
83
80
|
this._panelOffsetY = 0;
|
|
84
81
|
this._closeOnPanelClick = false;
|
|
85
82
|
this._closeOnBackdropClick = true;
|
|
83
|
+
this._disableAnimation = false;
|
|
86
84
|
this._focusTrapEnabled = true;
|
|
87
85
|
this._focusTrapAutoCaptureEnabled = true;
|
|
88
86
|
this._arrowOffsetX = 20;
|
|
87
|
+
this._arrowOffsetY = 20;
|
|
89
88
|
this._arrowWidth = 16;
|
|
89
|
+
this._arrowHeight = 16;
|
|
90
90
|
/** Config object to be passed into the popover's ngClass */
|
|
91
91
|
this._classList = {};
|
|
92
|
-
|
|
93
|
-
/** */
|
|
92
|
+
/** Whether popover's `targetElement` is defined */
|
|
94
93
|
this.containerPositioning = false;
|
|
95
94
|
/** Closing disabled on popover */
|
|
96
95
|
this.closeDisabled = false;
|
|
@@ -100,26 +99,18 @@ class MtxPopover {
|
|
|
100
99
|
this.closed = new EventEmitter();
|
|
101
100
|
this.setPositionClasses();
|
|
102
101
|
}
|
|
103
|
-
/** Position of the popover
|
|
104
|
-
get
|
|
105
|
-
return this.
|
|
102
|
+
/** Position of the popover. */
|
|
103
|
+
get position() {
|
|
104
|
+
return this._position;
|
|
106
105
|
}
|
|
107
|
-
set
|
|
108
|
-
if (
|
|
109
|
-
|
|
106
|
+
set position(value) {
|
|
107
|
+
if (!['before', 'after', 'above', 'below'].includes(value[0])) {
|
|
108
|
+
throwMtxPopoverInvalidPositionStart();
|
|
110
109
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
/** Position of the popover in the Y axis. */
|
|
115
|
-
get yPosition() {
|
|
116
|
-
return this._yPosition;
|
|
117
|
-
}
|
|
118
|
-
set yPosition(value) {
|
|
119
|
-
if (value !== 'above' && value !== 'below') {
|
|
120
|
-
throwMtxPopoverInvalidPositionY();
|
|
110
|
+
if (!['before', 'after', 'above', 'below', 'center'].includes(value[1])) {
|
|
111
|
+
throwMtxPopoverInvalidPositionEnd();
|
|
121
112
|
}
|
|
122
|
-
this.
|
|
113
|
+
this._position = value;
|
|
123
114
|
this.setPositionClasses();
|
|
124
115
|
}
|
|
125
116
|
/** Popover trigger event */
|
|
@@ -150,13 +141,6 @@ class MtxPopover {
|
|
|
150
141
|
set leaveDelay(value) {
|
|
151
142
|
this._leaveDelay = value;
|
|
152
143
|
}
|
|
153
|
-
/** Popover overlap trigger */
|
|
154
|
-
get overlapTrigger() {
|
|
155
|
-
return this._overlapTrigger;
|
|
156
|
-
}
|
|
157
|
-
set overlapTrigger(value) {
|
|
158
|
-
this._overlapTrigger = value;
|
|
159
|
-
}
|
|
160
144
|
/** Popover target offset x */
|
|
161
145
|
get xOffset() {
|
|
162
146
|
return this._panelOffsetX;
|
|
@@ -178,6 +162,13 @@ class MtxPopover {
|
|
|
178
162
|
set arrowOffsetX(value) {
|
|
179
163
|
this._arrowOffsetX = value;
|
|
180
164
|
}
|
|
165
|
+
/** Popover arrow offset y */
|
|
166
|
+
get arrowOffsetY() {
|
|
167
|
+
return this._arrowOffsetY;
|
|
168
|
+
}
|
|
169
|
+
set arrowOffsetY(value) {
|
|
170
|
+
this._arrowOffsetY = value;
|
|
171
|
+
}
|
|
181
172
|
/** Popover arrow width */
|
|
182
173
|
get arrowWidth() {
|
|
183
174
|
return this._arrowWidth;
|
|
@@ -185,6 +176,13 @@ class MtxPopover {
|
|
|
185
176
|
set arrowWidth(value) {
|
|
186
177
|
this._arrowWidth = value;
|
|
187
178
|
}
|
|
179
|
+
/** Popover arrow height */
|
|
180
|
+
get arrowHeight() {
|
|
181
|
+
return this._arrowHeight;
|
|
182
|
+
}
|
|
183
|
+
set arrowHeight(value) {
|
|
184
|
+
this._arrowHeight = value;
|
|
185
|
+
}
|
|
188
186
|
/** Popover close on container click */
|
|
189
187
|
get closeOnPanelClick() {
|
|
190
188
|
return this._closeOnPanelClick;
|
|
@@ -294,39 +292,58 @@ class MtxPopover {
|
|
|
294
292
|
// TODO: Refactor how styles are set and updated on the component, use best practices.
|
|
295
293
|
// TODO: If arrow left and right positioning is requested, see if flex direction can be used to work with order.
|
|
296
294
|
/** Sets the current styles for the popover to allow for dynamically changing settings */
|
|
297
|
-
setCurrentStyles() {
|
|
298
|
-
const left =
|
|
295
|
+
setCurrentStyles(pos = this.position) {
|
|
296
|
+
const left = pos[1] === 'after'
|
|
299
297
|
? `${this.arrowOffsetX - this.arrowWidth / 2}px`
|
|
300
|
-
:
|
|
298
|
+
: pos[1] === 'center'
|
|
301
299
|
? `calc(50% - ${this.arrowWidth / 2}px)`
|
|
302
300
|
: '';
|
|
303
|
-
const right =
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
301
|
+
const right = pos[1] === 'before' ? `${this.arrowOffsetX - this.arrowWidth / 2}px` : '';
|
|
302
|
+
const bottom = pos[1] === 'above'
|
|
303
|
+
? `${this.arrowOffsetY - this.arrowHeight / 2}px`
|
|
304
|
+
: pos[1] === 'center'
|
|
305
|
+
? `calc(50% - ${this.arrowHeight / 2}px)`
|
|
306
|
+
: '';
|
|
307
|
+
const top = pos[1] === 'below' ? `${this.arrowOffsetY - this.arrowHeight / 2}px` : '';
|
|
308
|
+
this.popoverArrowStyles =
|
|
309
|
+
pos[0] === 'above' || pos[0] === 'below'
|
|
310
|
+
? {
|
|
311
|
+
left: this._dir.value === 'ltr' ? left : right,
|
|
312
|
+
right: this._dir.value === 'ltr' ? right : left,
|
|
313
|
+
}
|
|
314
|
+
: {
|
|
315
|
+
top,
|
|
316
|
+
bottom,
|
|
317
|
+
};
|
|
308
318
|
}
|
|
309
319
|
/**
|
|
310
320
|
* It's necessary to set position-based classes to ensure the popover panel animation
|
|
311
321
|
* folds out from the correct direction.
|
|
312
322
|
*/
|
|
313
|
-
setPositionClasses(
|
|
314
|
-
this._classList['mtx-popover-before'] =
|
|
315
|
-
this._classList['mtx-popover-center'] =
|
|
316
|
-
this._classList['mtx-popover-
|
|
317
|
-
this._classList['mtx-popover-above'] =
|
|
318
|
-
this._classList['mtx-popover-
|
|
323
|
+
setPositionClasses(pos = this.position) {
|
|
324
|
+
this._classList['mtx-popover-before-above'] = pos[0] === 'before' && pos[1] === 'above';
|
|
325
|
+
this._classList['mtx-popover-before-center'] = pos[0] === 'before' && pos[1] === 'center';
|
|
326
|
+
this._classList['mtx-popover-before-below'] = pos[0] === 'before' && pos[1] === 'below';
|
|
327
|
+
this._classList['mtx-popover-after-above'] = pos[0] === 'after' && pos[1] === 'above';
|
|
328
|
+
this._classList['mtx-popover-after-center'] = pos[0] === 'after' && pos[1] === 'center';
|
|
329
|
+
this._classList['mtx-popover-after-below'] = pos[0] === 'after' && pos[1] === 'below';
|
|
330
|
+
this._classList['mtx-popover-above-before'] = pos[0] === 'above' && pos[1] === 'before';
|
|
331
|
+
this._classList['mtx-popover-above-center'] = pos[0] === 'above' && pos[1] === 'center';
|
|
332
|
+
this._classList['mtx-popover-above-after'] = pos[0] === 'above' && pos[1] === 'after';
|
|
333
|
+
this._classList['mtx-popover-below-before'] = pos[0] === 'below' && pos[1] === 'before';
|
|
334
|
+
this._classList['mtx-popover-below-center'] = pos[0] === 'below' && pos[1] === 'center';
|
|
335
|
+
this._classList['mtx-popover-below-after'] = pos[0] === 'below' && pos[1] === 'after';
|
|
319
336
|
}
|
|
320
337
|
}
|
|
321
338
|
MtxPopover.decorators = [
|
|
322
339
|
{ type: Component, args: [{
|
|
323
340
|
selector: 'mtx-popover',
|
|
324
|
-
template: "<ng-template>\r\n <div class=\"mtx-popover-panel mat-elevation-z8\" role=\"dialog\"\r\n [
|
|
341
|
+
template: "<ng-template>\r\n <div class=\"mtx-popover-panel mat-elevation-z8\" role=\"dialog\"\r\n [ngClass]=\"_classList\"\r\n [ngStyle]=\"popoverPanelStyles\"\r\n (keydown)=\"_handleKeydown($event)\"\r\n (click)=\"onClick()\"\r\n (mouseover)=\"onMouseOver()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n [@.disabled]=\"disableAnimation\"\r\n [@transformPopover]=\"'enter'\">\r\n <div class=\"mtx-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"mtx-popover-content\"\r\n [ngStyle]=\"popoverContentStyles\"\r\n [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
|
|
325
342
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
326
343
|
encapsulation: ViewEncapsulation.None,
|
|
327
344
|
animations: [transformPopover],
|
|
328
345
|
exportAs: 'mtxPopover',
|
|
329
|
-
styles: [".mtx-popover-panel{max-height:calc(100vh - 48px);padding:8px;border-radius:4px}.mtx-popover-panel
|
|
346
|
+
styles: [".mtx-popover-panel{max-height:calc(100vh - 48px);padding:8px;border-radius:4px;font-size:16px}.mtx-popover-panel[class*=mtx-popover-below]{margin-top:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-above]{margin-bottom:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.mtx-popover-direction-arrow{position:absolute}.mtx-popover-direction-arrow:after,.mtx-popover-direction-arrow:before{position:absolute;display:inline-block;content:\"\";border-width:.5em;border-style:solid}.mtx-popover-direction-arrow:after{border-width:calc(.5em - 1px)}[class*=mtx-popover-above] .mtx-popover-direction-arrow,[class*=mtx-popover-below] .mtx-popover-direction-arrow{width:1em}[class*=mtx-popover-above] .mtx-popover-direction-arrow:after,[class*=mtx-popover-below] .mtx-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=mtx-popover-above] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-below] .mtx-popover-direction-arrow:after{right:1px;left:auto}[class*=mtx-popover-below] .mtx-popover-direction-arrow{top:0}[class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[class*=mtx-popover-below] .mtx-popover-direction-arrow:before{bottom:0;border-top-width:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow{bottom:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow:after,[class*=mtx-popover-above] .mtx-popover-direction-arrow:before{top:0;border-bottom-width:0}[class*=mtx-popover-after] .mtx-popover-direction-arrow,[class*=mtx-popover-before] .mtx-popover-direction-arrow{height:1em}[class*=mtx-popover-after] .mtx-popover-direction-arrow:after,[class*=mtx-popover-before] .mtx-popover-direction-arrow:after{top:1px}[class*=mtx-popover-before] .mtx-popover-direction-arrow{right:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow:after,[class*=mtx-popover-before] .mtx-popover-direction-arrow:before{left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=mtx-popover-after] .mtx-popover-direction-arrow{left:0}[class*=mtx-popover-after] .mtx-popover-direction-arrow:after,[class*=mtx-popover-after] .mtx-popover-direction-arrow:before{right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}"]
|
|
330
347
|
},] }
|
|
331
348
|
];
|
|
332
349
|
/** @nocollapse */
|
|
@@ -337,17 +354,17 @@ MtxPopover.ctorParameters = () => [
|
|
|
337
354
|
];
|
|
338
355
|
MtxPopover.propDecorators = {
|
|
339
356
|
role: [{ type: HostBinding, args: ['attr.role',] }],
|
|
340
|
-
|
|
341
|
-
yPosition: [{ type: Input }],
|
|
357
|
+
position: [{ type: Input }],
|
|
342
358
|
triggerEvent: [{ type: Input }],
|
|
343
359
|
scrollStrategy: [{ type: Input }],
|
|
344
360
|
enterDelay: [{ type: Input }],
|
|
345
361
|
leaveDelay: [{ type: Input }],
|
|
346
|
-
overlapTrigger: [{ type: Input }],
|
|
347
362
|
xOffset: [{ type: Input }],
|
|
348
363
|
yOffset: [{ type: Input }],
|
|
349
364
|
arrowOffsetX: [{ type: Input }],
|
|
365
|
+
arrowOffsetY: [{ type: Input }],
|
|
350
366
|
arrowWidth: [{ type: Input }],
|
|
367
|
+
arrowHeight: [{ type: Input }],
|
|
351
368
|
closeOnPanelClick: [{ type: Input }],
|
|
352
369
|
closeOnBackdropClick: [{ type: Input }],
|
|
353
370
|
disableAnimation: [{ type: Input }],
|
|
@@ -576,7 +593,7 @@ class MtxPopoverTrigger {
|
|
|
576
593
|
overlayState.hasBackdrop = true;
|
|
577
594
|
overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
|
|
578
595
|
}
|
|
579
|
-
overlayState.direction = this.
|
|
596
|
+
overlayState.direction = this._dir;
|
|
580
597
|
overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);
|
|
581
598
|
return overlayState;
|
|
582
599
|
}
|
|
@@ -603,19 +620,24 @@ class MtxPopoverTrigger {
|
|
|
603
620
|
*/
|
|
604
621
|
_subscribeToPositions(position) {
|
|
605
622
|
this._positionSubscription = position.positionChanges.subscribe(change => {
|
|
606
|
-
const
|
|
623
|
+
const posX = change.connectionPair.overlayX === 'start'
|
|
607
624
|
? 'after'
|
|
608
625
|
: change.connectionPair.overlayX === 'end'
|
|
609
626
|
? 'before'
|
|
610
627
|
: 'center';
|
|
611
|
-
const
|
|
628
|
+
const posY = change.connectionPair.overlayY === 'top'
|
|
629
|
+
? 'below'
|
|
630
|
+
: change.connectionPair.overlayY === 'bottom'
|
|
631
|
+
? 'above'
|
|
632
|
+
: 'center';
|
|
633
|
+
const pos = this.popover.position[0] === 'above' || this.popover.position[0] === 'below'
|
|
634
|
+
? [posY, posX]
|
|
635
|
+
: [posX, posY];
|
|
612
636
|
// required for ChangeDetectionStrategy.OnPush
|
|
613
637
|
this._changeDetectorRef.markForCheck();
|
|
614
638
|
this.popover.zone.run(() => {
|
|
615
|
-
this.popover.
|
|
616
|
-
this.popover.
|
|
617
|
-
this.popover.setCurrentStyles();
|
|
618
|
-
this.popover.setPositionClasses(posisionX, posisionY);
|
|
639
|
+
this.popover.setCurrentStyles(pos);
|
|
640
|
+
this.popover.setPositionClasses(pos);
|
|
619
641
|
});
|
|
620
642
|
});
|
|
621
643
|
}
|
|
@@ -625,24 +647,36 @@ class MtxPopoverTrigger {
|
|
|
625
647
|
* @returns ConnectedPositionStrategy
|
|
626
648
|
*/
|
|
627
649
|
_getPosition() {
|
|
628
|
-
const [originX, origin2ndX, origin3rdX] = this.popover.
|
|
629
|
-
? ['
|
|
630
|
-
: this.popover.
|
|
631
|
-
? ['
|
|
650
|
+
const [originX, origin2ndX, origin3rdX] = this.popover.position[0] === 'before' || this.popover.position[1] === 'after'
|
|
651
|
+
? ['start', 'center', 'end']
|
|
652
|
+
: this.popover.position[0] === 'after' || this.popover.position[1] === 'before'
|
|
653
|
+
? ['end', 'center', 'start']
|
|
632
654
|
: ['center', 'start', 'end'];
|
|
633
|
-
const [
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
655
|
+
const [originY, origin2ndY, origin3rdY] = this.popover.position[0] === 'above' || this.popover.position[1] === 'below'
|
|
656
|
+
? ['top', 'center', 'bottom']
|
|
657
|
+
: this.popover.position[0] === 'below' || this.popover.position[1] === 'above'
|
|
658
|
+
? ['bottom', 'center', 'top']
|
|
659
|
+
: ['center', 'top', 'bottom'];
|
|
660
|
+
const [overlayX, overlayFallbackX] = this.popover.position[0] === 'below' || this.popover.position[0] === 'above'
|
|
661
|
+
? [originX, originX]
|
|
662
|
+
: this.popover.position[0] === 'before'
|
|
663
|
+
? ['end', 'start']
|
|
664
|
+
: ['start', 'end'];
|
|
665
|
+
const [overlayY, overlayFallbackY] = this.popover.position[0] === 'before' || this.popover.position[0] === 'after'
|
|
666
|
+
? [originY, originY]
|
|
667
|
+
: this.popover.position[0] === 'below'
|
|
668
|
+
? ['top', 'bottom']
|
|
669
|
+
: ['bottom', 'top'];
|
|
670
|
+
const originFallbackX = overlayX;
|
|
671
|
+
const originFallbackY = overlayY;
|
|
638
672
|
const offsetX = this.popover.xOffset && !isNaN(Number(this.popover.xOffset))
|
|
639
|
-
? Number(this.popover.xOffset)
|
|
673
|
+
? Number(this.dir === 'ltr' ? this.popover.xOffset : -this.popover.xOffset)
|
|
640
674
|
: 0;
|
|
641
675
|
const offsetY = this.popover.yOffset && !isNaN(Number(this.popover.yOffset))
|
|
642
676
|
? Number(this.popover.yOffset)
|
|
643
677
|
: 0;
|
|
644
678
|
/**
|
|
645
|
-
* For overriding position element, when mtxPopoverTargetAt has a valid element reference.
|
|
679
|
+
* For overriding position element, when `mtxPopoverTargetAt` has a valid element reference.
|
|
646
680
|
* Useful for sticking popover to parent element and offsetting arrow to trigger element.
|
|
647
681
|
* If undefined defaults to the trigger element reference.
|
|
648
682
|
*/
|
|
@@ -651,54 +685,68 @@ class MtxPopoverTrigger {
|
|
|
651
685
|
this.popover.containerPositioning = true;
|
|
652
686
|
element = this.targetElement._elementRef;
|
|
653
687
|
}
|
|
688
|
+
let positions = [{ originX, originY, overlayX, overlayY }];
|
|
689
|
+
if (this.popover.position[0] === 'above' || this.popover.position[0] === 'below') {
|
|
690
|
+
positions = [
|
|
691
|
+
{ originX, originY, overlayX, overlayY, offsetY },
|
|
692
|
+
{ originX: origin2ndX, originY, overlayX: origin2ndX, overlayY, offsetY },
|
|
693
|
+
{ originX: origin3rdX, originY, overlayX: origin3rdX, overlayY, offsetY },
|
|
694
|
+
{
|
|
695
|
+
originX,
|
|
696
|
+
originY: originFallbackY,
|
|
697
|
+
overlayX,
|
|
698
|
+
overlayY: overlayFallbackY,
|
|
699
|
+
offsetY: -offsetY,
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
originX: origin2ndX,
|
|
703
|
+
originY: originFallbackY,
|
|
704
|
+
overlayX: origin2ndX,
|
|
705
|
+
overlayY: overlayFallbackY,
|
|
706
|
+
offsetY: -offsetY,
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
originX: origin3rdX,
|
|
710
|
+
originY: originFallbackY,
|
|
711
|
+
overlayX: origin3rdX,
|
|
712
|
+
overlayY: overlayFallbackY,
|
|
713
|
+
offsetY: -offsetY,
|
|
714
|
+
},
|
|
715
|
+
];
|
|
716
|
+
}
|
|
717
|
+
if (this.popover.position[0] === 'before' || this.popover.position[0] === 'after') {
|
|
718
|
+
positions = [
|
|
719
|
+
{ originX, originY, overlayX, overlayY, offsetX },
|
|
720
|
+
{ originX, originY: origin2ndY, overlayX, overlayY: origin2ndY, offsetX },
|
|
721
|
+
{ originX, originY: origin3rdY, overlayX, overlayY: origin3rdY, offsetX },
|
|
722
|
+
{
|
|
723
|
+
originX: originFallbackX,
|
|
724
|
+
originY,
|
|
725
|
+
overlayX: overlayFallbackX,
|
|
726
|
+
overlayY,
|
|
727
|
+
offsetX: -offsetX,
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
originX: originFallbackX,
|
|
731
|
+
originY: origin2ndY,
|
|
732
|
+
overlayX: overlayFallbackX,
|
|
733
|
+
overlayY: origin2ndY,
|
|
734
|
+
offsetX: -offsetX,
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
originX: originFallbackX,
|
|
738
|
+
originY: origin3rdY,
|
|
739
|
+
overlayX: overlayFallbackX,
|
|
740
|
+
overlayY: origin3rdY,
|
|
741
|
+
offsetX: -offsetX,
|
|
742
|
+
},
|
|
743
|
+
];
|
|
744
|
+
}
|
|
654
745
|
return this._overlay
|
|
655
746
|
.position()
|
|
656
747
|
.flexibleConnectedTo(element)
|
|
657
|
-
.withLockedPosition(
|
|
658
|
-
.withPositions(
|
|
659
|
-
{
|
|
660
|
-
originX,
|
|
661
|
-
originY,
|
|
662
|
-
overlayX,
|
|
663
|
-
overlayY,
|
|
664
|
-
offsetY,
|
|
665
|
-
},
|
|
666
|
-
{
|
|
667
|
-
originX: origin2ndX,
|
|
668
|
-
originY,
|
|
669
|
-
overlayX: origin2ndX,
|
|
670
|
-
overlayY,
|
|
671
|
-
offsetY,
|
|
672
|
-
},
|
|
673
|
-
{
|
|
674
|
-
originX,
|
|
675
|
-
originY: originFallbackY,
|
|
676
|
-
overlayX,
|
|
677
|
-
overlayY: overlayFallbackY,
|
|
678
|
-
offsetY: -offsetY,
|
|
679
|
-
},
|
|
680
|
-
{
|
|
681
|
-
originX: origin2ndX,
|
|
682
|
-
originY: originFallbackY,
|
|
683
|
-
overlayX: origin2ndX,
|
|
684
|
-
overlayY: overlayFallbackY,
|
|
685
|
-
offsetY: -offsetY,
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
originX: origin3rdX,
|
|
689
|
-
originY,
|
|
690
|
-
overlayX: origin3rdX,
|
|
691
|
-
overlayY,
|
|
692
|
-
offsetY,
|
|
693
|
-
},
|
|
694
|
-
{
|
|
695
|
-
originX: origin3rdX,
|
|
696
|
-
originY: originFallbackY,
|
|
697
|
-
overlayX: origin3rdX,
|
|
698
|
-
overlayY: overlayFallbackY,
|
|
699
|
-
offsetY: -offsetY,
|
|
700
|
-
},
|
|
701
|
-
])
|
|
748
|
+
.withLockedPosition()
|
|
749
|
+
.withPositions(positions)
|
|
702
750
|
.withDefaultOffsetX(offsetX)
|
|
703
751
|
.withDefaultOffsetY(offsetY);
|
|
704
752
|
}
|