@ng-matero/extensions 13.0.3 → 13.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/_all-theme.scss +2 -0
- package/_index.scss +1 -0
- package/_theming.scss +1 -0
- package/button/button-loading.directive.d.ts +2 -4
- package/checkbox-group/checkbox-group.component.scss +12 -0
- package/datetimepicker/_datetimepicker-theme.scss +2 -2
- package/datetimepicker/calendar.scss +49 -9
- package/datetimepicker/datetimepicker-content.scss +1 -1
- package/dialog/dialog.component.scss +27 -0
- package/drawer/_drawer-theme.import.scss +2 -0
- package/drawer/_drawer-theme.scss +40 -0
- package/drawer/drawer-animation.d.ts +5 -0
- package/drawer/drawer-config.d.ts +53 -0
- package/drawer/drawer-container.d.ts +83 -0
- package/drawer/drawer-container.scss +32 -0
- package/drawer/drawer-module.d.ts +10 -0
- package/drawer/drawer-ref.d.ts +44 -0
- package/drawer/drawer.d.ts +61 -0
- package/drawer/mtxDrawer.d.ts +5 -0
- package/drawer/package.json +10 -0
- package/drawer/public-api.d.ts +6 -0
- package/esm2020/alert/alert.component.mjs +4 -4
- package/esm2020/alert/alert.module.mjs +5 -5
- package/esm2020/button/button-loading.directive.mjs +7 -9
- package/esm2020/button/button.module.mjs +5 -5
- package/esm2020/checkbox-group/checkbox-group.component.mjs +4 -4
- package/esm2020/checkbox-group/checkbox-group.module.mjs +5 -5
- package/esm2020/colorpicker/colorpicker-input.mjs +4 -4
- package/esm2020/colorpicker/colorpicker-module.mjs +5 -5
- package/esm2020/colorpicker/colorpicker-toggle.mjs +7 -7
- package/esm2020/colorpicker/colorpicker.mjs +7 -7
- package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-module.mjs +5 -5
- package/esm2020/column-resize/column-resize-notifier.mjs +7 -7
- package/esm2020/column-resize/column-resize.mjs +4 -4
- package/esm2020/column-resize/column-size-store.mjs +4 -4
- package/esm2020/column-resize/event-dispatcher.mjs +4 -4
- package/esm2020/column-resize/overlay-handle.mjs +4 -4
- package/esm2020/column-resize/resizable.mjs +4 -4
- package/esm2020/column-resize/resize-strategy.mjs +10 -10
- package/esm2020/core/datetime/datetime.module.mjs +9 -9
- package/esm2020/core/datetime/native-datetime-adapter.mjs +4 -4
- package/esm2020/core/pipes/pipes.module.mjs +5 -5
- package/esm2020/core/pipes/to-observable.pipe.mjs +4 -4
- package/esm2020/datetimepicker/calendar-body.mjs +4 -4
- package/esm2020/datetimepicker/calendar.mjs +5 -5
- package/esm2020/datetimepicker/clock.mjs +4 -4
- package/esm2020/datetimepicker/datetimepicker-input.mjs +4 -4
- package/esm2020/datetimepicker/datetimepicker-module.mjs +5 -5
- package/esm2020/datetimepicker/datetimepicker-toggle.mjs +7 -7
- package/esm2020/datetimepicker/datetimepicker.mjs +8 -8
- package/esm2020/datetimepicker/month-view.mjs +4 -4
- package/esm2020/datetimepicker/multi-year-view.mjs +4 -4
- package/esm2020/datetimepicker/year-view.mjs +4 -4
- package/esm2020/dialog/dialog.component.mjs +4 -4
- package/esm2020/dialog/dialog.mjs +4 -4
- package/esm2020/dialog/dialog.module.mjs +5 -5
- package/esm2020/drawer/drawer-animation.mjs +18 -0
- package/esm2020/drawer/drawer-config.mjs +39 -0
- package/esm2020/drawer/drawer-container.mjs +242 -0
- package/esm2020/drawer/drawer-module.mjs +22 -0
- package/esm2020/drawer/drawer-ref.mjs +90 -0
- package/esm2020/drawer/drawer.mjs +166 -0
- package/esm2020/drawer/mtxDrawer.mjs +5 -0
- package/esm2020/drawer/public-api.mjs +7 -0
- package/esm2020/form-group/form-group.component.mjs +4 -4
- package/esm2020/form-group/form-group.module.mjs +5 -5
- package/esm2020/grid/cell.component.mjs +6 -6
- package/esm2020/grid/column-menu.component.mjs +32 -9
- package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
- package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +4 -4
- package/esm2020/grid/column-resize/column-resize-module.mjs +9 -9
- package/esm2020/grid/column-resize/overlay-handle.mjs +4 -4
- package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +4 -4
- package/esm2020/grid/column-resize/resize-strategy.mjs +4 -4
- package/esm2020/grid/expansion-toggle.directive.mjs +4 -4
- package/esm2020/grid/grid.component.mjs +26 -31
- package/esm2020/grid/grid.interface.mjs +1 -1
- package/esm2020/grid/grid.module.mjs +5 -5
- package/esm2020/grid/grid.service.mjs +4 -4
- package/esm2020/loader/loader.component.mjs +4 -4
- package/esm2020/loader/loader.module.mjs +5 -5
- package/esm2020/popover/popover-module.mjs +5 -5
- package/esm2020/popover/popover-target.mjs +4 -4
- package/esm2020/popover/popover-trigger.mjs +4 -4
- package/esm2020/popover/popover.mjs +4 -4
- package/esm2020/progress/progress.component.mjs +4 -4
- package/esm2020/progress/progress.module.mjs +5 -5
- package/esm2020/select/option.component.mjs +4 -4
- package/esm2020/select/select.component.mjs +4 -4
- package/esm2020/select/select.module.mjs +5 -5
- package/esm2020/select/templates.directive.mjs +34 -34
- package/esm2020/slider/slider-module.mjs +5 -5
- package/esm2020/slider/slider.mjs +4 -4
- package/esm2020/split/split-pane.directive.mjs +4 -4
- package/esm2020/split/split.component.mjs +4 -4
- package/esm2020/split/split.module.mjs +5 -5
- package/esm2020/text3d/text3d.component.mjs +4 -4
- package/esm2020/text3d/text3d.module.mjs +5 -5
- package/esm2020/tooltip/tooltip-module.mjs +5 -5
- package/esm2020/tooltip/tooltip.mjs +7 -7
- package/fesm2015/mtxAlert.mjs +7 -7
- package/fesm2015/mtxAlert.mjs.map +1 -1
- package/fesm2015/mtxButton.mjs +10 -12
- package/fesm2015/mtxButton.mjs.map +1 -1
- package/fesm2015/mtxCheckboxGroup.mjs +7 -7
- package/fesm2015/mtxCheckboxGroup.mjs.map +1 -1
- package/fesm2015/mtxColorpicker.mjs +19 -19
- package/fesm2015/mtxColorpicker.mjs.map +1 -1
- package/fesm2015/mtxColumnResize.mjs +40 -40
- package/fesm2015/mtxColumnResize.mjs.map +1 -1
- package/fesm2015/mtxCore.mjs +18 -18
- package/fesm2015/mtxCore.mjs.map +1 -1
- package/fesm2015/mtxDatetimepicker.mjs +39 -39
- package/fesm2015/mtxDatetimepicker.mjs.map +1 -1
- package/fesm2015/mtxDialog.mjs +10 -10
- package/fesm2015/mtxDialog.mjs.map +1 -1
- package/fesm2015/mtxDrawer.mjs +572 -0
- package/fesm2015/mtxDrawer.mjs.map +1 -0
- package/fesm2015/mtxFormGroup.mjs +7 -7
- package/fesm2015/mtxFormGroup.mjs.map +1 -1
- package/fesm2015/mtxGrid.mjs +87 -68
- package/fesm2015/mtxGrid.mjs.map +1 -1
- package/fesm2015/mtxLoader.mjs +7 -7
- package/fesm2015/mtxLoader.mjs.map +1 -1
- package/fesm2015/mtxPopover.mjs +13 -13
- package/fesm2015/mtxPopover.mjs.map +1 -1
- package/fesm2015/mtxProgress.mjs +7 -7
- package/fesm2015/mtxProgress.mjs.map +1 -1
- package/fesm2015/mtxSelect.mjs +43 -43
- package/fesm2015/mtxSelect.mjs.map +1 -1
- package/fesm2015/mtxSlider.mjs +7 -7
- package/fesm2015/mtxSlider.mjs.map +1 -1
- package/fesm2015/mtxSplit.mjs +10 -10
- package/fesm2015/mtxSplit.mjs.map +1 -1
- package/fesm2015/mtxText3d.mjs +7 -7
- package/fesm2015/mtxText3d.mjs.map +1 -1
- package/fesm2015/mtxTooltip.mjs +10 -10
- package/fesm2015/mtxTooltip.mjs.map +1 -1
- package/fesm2020/mtxAlert.mjs +7 -7
- package/fesm2020/mtxAlert.mjs.map +1 -1
- package/fesm2020/mtxButton.mjs +10 -12
- package/fesm2020/mtxButton.mjs.map +1 -1
- package/fesm2020/mtxCheckboxGroup.mjs +7 -7
- package/fesm2020/mtxCheckboxGroup.mjs.map +1 -1
- package/fesm2020/mtxColorpicker.mjs +19 -19
- package/fesm2020/mtxColorpicker.mjs.map +1 -1
- package/fesm2020/mtxColumnResize.mjs +40 -40
- package/fesm2020/mtxColumnResize.mjs.map +1 -1
- package/fesm2020/mtxCore.mjs +18 -18
- package/fesm2020/mtxCore.mjs.map +1 -1
- package/fesm2020/mtxDatetimepicker.mjs +39 -39
- package/fesm2020/mtxDatetimepicker.mjs.map +1 -1
- package/fesm2020/mtxDialog.mjs +10 -10
- package/fesm2020/mtxDialog.mjs.map +1 -1
- package/fesm2020/mtxDrawer.mjs +568 -0
- package/fesm2020/mtxDrawer.mjs.map +1 -0
- package/fesm2020/mtxFormGroup.mjs +7 -7
- package/fesm2020/mtxFormGroup.mjs.map +1 -1
- package/fesm2020/mtxGrid.mjs +87 -68
- package/fesm2020/mtxGrid.mjs.map +1 -1
- package/fesm2020/mtxLoader.mjs +7 -7
- package/fesm2020/mtxLoader.mjs.map +1 -1
- package/fesm2020/mtxPopover.mjs +13 -13
- package/fesm2020/mtxPopover.mjs.map +1 -1
- package/fesm2020/mtxProgress.mjs +7 -7
- package/fesm2020/mtxProgress.mjs.map +1 -1
- package/fesm2020/mtxSelect.mjs +43 -43
- package/fesm2020/mtxSelect.mjs.map +1 -1
- package/fesm2020/mtxSlider.mjs +7 -7
- package/fesm2020/mtxSlider.mjs.map +1 -1
- package/fesm2020/mtxSplit.mjs +10 -10
- package/fesm2020/mtxSplit.mjs.map +1 -1
- package/fesm2020/mtxText3d.mjs +7 -7
- package/fesm2020/mtxText3d.mjs.map +1 -1
- package/fesm2020/mtxTooltip.mjs +10 -10
- package/fesm2020/mtxTooltip.mjs.map +1 -1
- package/grid/cell.component.d.ts +1 -1
- package/grid/cell.component.scss +0 -9
- package/grid/column-menu.component.d.ts +11 -6
- package/grid/column-menu.component.scss +28 -2
- package/grid/grid.component.d.ts +6 -6
- package/grid/grid.component.scss +27 -9
- package/grid/grid.interface.d.ts +12 -12
- package/package.json +9 -1
package/_all-theme.scss
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
@use './alert/alert-theme';
|
|
3
3
|
@use './colorpicker/colorpicker-theme';
|
|
4
4
|
@use './datetimepicker/datetimepicker-theme';
|
|
5
|
+
@use './drawer/drawer-theme';
|
|
5
6
|
@use './grid/grid-theme';
|
|
6
7
|
@use './loader/loader-theme';
|
|
7
8
|
@use './popover/popover-theme';
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
@include alert-theme.theme($theme);
|
|
19
20
|
@include colorpicker-theme.theme($theme);
|
|
20
21
|
@include datetimepicker-theme.theme($theme);
|
|
22
|
+
@include drawer-theme.theme($theme);
|
|
21
23
|
@include grid-theme.theme($theme);
|
|
22
24
|
@include loader-theme.theme($theme);
|
|
23
25
|
@include popover-theme.theme($theme);
|
package/_index.scss
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
@forward './alert/alert-theme' as alert-* show alert-theme;
|
|
6
6
|
@forward './colorpicker/colorpicker-theme' as colorpicker-* show colorpicker-theme;
|
|
7
7
|
@forward './datetimepicker/datetimepicker-theme' as datetimepicker-* show datetimepicker-theme;
|
|
8
|
+
@forward './drawer/drawer-theme' as drawer-* show drawer-theme;
|
|
8
9
|
@forward './grid/grid-theme' as grid-* show grid-theme;
|
|
9
10
|
@forward './loader/loader-theme' as loader-* show loader-theme;
|
|
10
11
|
@forward './popover/popover-theme' as popover-* show popover-theme;
|
package/_theming.scss
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
@forward './alert/alert-theme.import';
|
|
6
6
|
@forward './colorpicker/colorpicker-theme.import';
|
|
7
7
|
@forward './datetimepicker/datetimepicker-theme.import';
|
|
8
|
+
@forward './drawer/drawer-theme.import';
|
|
8
9
|
@forward './grid/grid-theme.import';
|
|
9
10
|
@forward './loader/loader-theme.import';
|
|
10
11
|
@forward './popover/popover-theme.import';
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnChanges, Renderer2, SimpleChanges, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { BooleanInput } from '@angular/cdk/coercion';
|
|
3
3
|
import { ThemePalette } from '@angular/material/core';
|
|
4
4
|
import { MatButton } from '@angular/material/button';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class MatButtonLoadingDirective implements OnChanges {
|
|
7
7
|
private matButton;
|
|
8
|
-
private componentFactoryResolver;
|
|
9
8
|
private viewContainerRef;
|
|
10
9
|
private renderer;
|
|
11
|
-
private spinnerFactory;
|
|
12
10
|
private spinner;
|
|
13
11
|
get loading(): boolean;
|
|
14
12
|
set loading(value: boolean);
|
|
@@ -17,7 +15,7 @@ export declare class MatButtonLoadingDirective implements OnChanges {
|
|
|
17
15
|
set disabled(value: boolean);
|
|
18
16
|
private _disabled;
|
|
19
17
|
color: ThemePalette;
|
|
20
|
-
constructor(matButton: MatButton,
|
|
18
|
+
constructor(matButton: MatButton, viewContainerRef: ViewContainerRef, renderer: Renderer2);
|
|
21
19
|
ngOnChanges(changes: SimpleChanges): void;
|
|
22
20
|
private createSpinner;
|
|
23
21
|
private destroySpinner;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
$selected-today-box-shadow-width: 1px;
|
|
9
9
|
$calendar-body-font-size: 13px !default;
|
|
10
10
|
$calendar-weekday-table-font-size: 11px !default;
|
|
11
|
-
$calendar-header-font-size:
|
|
11
|
+
$calendar-header-font-size: 28px !default;
|
|
12
12
|
$clock-font-size: 14px !default;
|
|
13
13
|
|
|
14
14
|
@mixin color($config-or-theme) {
|
|
@@ -167,7 +167,7 @@ $clock-font-size: 14px !default;
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
.mtx-calendar-header-ampm-container {
|
|
170
|
-
font-size: .
|
|
170
|
+
font-size: .65em;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
.mtx-clock {
|
|
@@ -44,16 +44,19 @@ $calendar-next-icon-transform: translateX(-2px) rotate(45deg);
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
.mtx-calendar-header-year {
|
|
47
|
-
height:
|
|
48
|
-
line-height: 32px;
|
|
47
|
+
line-height: 24px;
|
|
49
48
|
|
|
50
49
|
> * {
|
|
51
50
|
vertical-align: middle;
|
|
52
51
|
}
|
|
52
|
+
|
|
53
|
+
+ .mtx-calendar-header-date-time {
|
|
54
|
+
margin-top: 4px;
|
|
55
|
+
}
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
.mtx-calendar-header-date-time {
|
|
56
|
-
line-height:
|
|
59
|
+
line-height: 36px;
|
|
57
60
|
|
|
58
61
|
[mode='landscape'] & {
|
|
59
62
|
white-space: normal;
|
|
@@ -77,8 +80,7 @@ $calendar-next-icon-transform: translateX(-2px) rotate(45deg);
|
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
.mtx-calendar-header-time {
|
|
80
|
-
display: inline-
|
|
81
|
-
padding-left: 8px;
|
|
83
|
+
display: inline-flex;
|
|
82
84
|
|
|
83
85
|
&:not(.active) {
|
|
84
86
|
opacity: .6;
|
|
@@ -91,16 +93,42 @@ $calendar-next-icon-transform: translateX(-2px) rotate(45deg);
|
|
|
91
93
|
}
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
[
|
|
95
|
-
|
|
96
|
+
[mode='landscape'] & {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-direction: column;
|
|
96
99
|
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.mtx-calendar-header-hour-minute-container {
|
|
103
|
+
padding: 0 8px;
|
|
97
104
|
|
|
98
105
|
[mode='landscape'] & {
|
|
99
|
-
display: block;
|
|
100
106
|
padding: 0;
|
|
101
107
|
}
|
|
102
108
|
}
|
|
103
109
|
|
|
110
|
+
.mtx-calendar-header-hour-minute-separator {
|
|
111
|
+
display: inline-block;
|
|
112
|
+
width: 8px;
|
|
113
|
+
text-align: center;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.mtx-calendar-header-ampm-container {
|
|
117
|
+
display: inline-flex;
|
|
118
|
+
flex-direction: column;
|
|
119
|
+
line-height: 18px;
|
|
120
|
+
|
|
121
|
+
[mode='landscape'] & {
|
|
122
|
+
flex-direction: row;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.mtx-calendar-header-ampm {
|
|
127
|
+
[mode='landscape'] & {
|
|
128
|
+
padding: 4px;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
104
132
|
.mtx-calendar-content {
|
|
105
133
|
width: 100%;
|
|
106
134
|
padding: $calendar-padding;
|
|
@@ -176,8 +204,20 @@ $calendar-next-icon-transform: translateX(-2px) rotate(45deg);
|
|
|
176
204
|
}
|
|
177
205
|
|
|
178
206
|
.mtx-calendar-header-time {
|
|
179
|
-
display:
|
|
207
|
+
display: flex;
|
|
208
|
+
flex-direction: column;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.mtx-calendar-header-hour-minute-container {
|
|
180
212
|
padding: 0;
|
|
181
213
|
}
|
|
214
|
+
|
|
215
|
+
.mtx-calendar-header-ampm-container {
|
|
216
|
+
flex-direction: row;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.mtx-calendar-header-ampm {
|
|
220
|
+
padding: 4px;
|
|
221
|
+
}
|
|
182
222
|
}
|
|
183
223
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
$calendar-padding: 8px;
|
|
2
2
|
$non-touch-calendar-cell-size: 40px;
|
|
3
3
|
$non-touch-calendar-portrait-width: $non-touch-calendar-cell-size * 7 + $calendar-padding * 2;
|
|
4
|
-
$non-touch-calendar-portrait-height:
|
|
4
|
+
$non-touch-calendar-portrait-height: 424px;
|
|
5
5
|
$non-touch-calendar-landscape-width: 446px;
|
|
6
6
|
$non-touch-calendar-landscape-height: 328px;
|
|
7
7
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.mtx-dialog-title {
|
|
2
|
+
display: flex;
|
|
3
|
+
justify-content: space-between;
|
|
4
|
+
align-items: center;
|
|
5
|
+
margin: 0 0 20px;
|
|
6
|
+
font: 500 20px/32px Roboto, 'Helvetica Neue', sans-serif;
|
|
7
|
+
letter-spacing: normal;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.mtx-dialog-content {
|
|
11
|
+
display: block;
|
|
12
|
+
max-height: 65vh;
|
|
13
|
+
padding: 0 24px;
|
|
14
|
+
margin: 0 -24px;
|
|
15
|
+
overflow: auto;
|
|
16
|
+
-webkit-overflow-scrolling: touch;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.mtx-dialog-actions {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: flex-end;
|
|
24
|
+
min-height: 52px;
|
|
25
|
+
padding: 8px 0;
|
|
26
|
+
margin-bottom: -24px;
|
|
27
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use '../core/theming/theming';
|
|
3
|
+
@use '../core/theming/palette';
|
|
4
|
+
@use '../core/style/private';
|
|
5
|
+
|
|
6
|
+
@mixin color($config-or-theme) {
|
|
7
|
+
$config: theming.get-color-config($config-or-theme);
|
|
8
|
+
$background: map.get($config, background);
|
|
9
|
+
$foreground: map.get($config, foreground);
|
|
10
|
+
|
|
11
|
+
.mtx-drawer-container {
|
|
12
|
+
@include private.private-theme-elevation(16, $config);
|
|
13
|
+
|
|
14
|
+
background: theming.get-color-from-palette($background, dialog);
|
|
15
|
+
color: theming.get-color-from-palette($foreground, text);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@mixin typography($config-or-theme) {}
|
|
20
|
+
|
|
21
|
+
@mixin _density($config-or-theme) {}
|
|
22
|
+
|
|
23
|
+
@mixin theme($theme-or-color-config) {
|
|
24
|
+
$theme: theming.private-legacy-get-theme($theme-or-color-config);
|
|
25
|
+
@include theming.private-check-duplicate-theme-styles($theme, 'mtx-drawer') {
|
|
26
|
+
$color: theming.get-color-config($theme);
|
|
27
|
+
$density: theming.get-density-config($theme);
|
|
28
|
+
$typography: theming.get-typography-config($theme);
|
|
29
|
+
|
|
30
|
+
@if $color != null {
|
|
31
|
+
@include color($color);
|
|
32
|
+
}
|
|
33
|
+
@if $density != null {
|
|
34
|
+
@include _density($density);
|
|
35
|
+
}
|
|
36
|
+
@if $typography != null {
|
|
37
|
+
@include typography($typography);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Direction } from '@angular/cdk/bidi';
|
|
2
|
+
import { ScrollStrategy } from '@angular/cdk/overlay';
|
|
3
|
+
import { ViewContainerRef } from '@angular/core';
|
|
4
|
+
/** Options for where to set focus to automatically on dialog open */
|
|
5
|
+
export declare type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';
|
|
6
|
+
/** Possible overrides for a drawer's position. */
|
|
7
|
+
export declare type DrawerPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration used when opening a drawer.
|
|
10
|
+
*/
|
|
11
|
+
export declare class MtxDrawerConfig<D = any> {
|
|
12
|
+
/** The view container to place the overlay for the drawer into. */
|
|
13
|
+
viewContainerRef?: ViewContainerRef;
|
|
14
|
+
/** Extra CSS classes to be added to the drawer container. */
|
|
15
|
+
panelClass?: string | string[];
|
|
16
|
+
/** Text layout direction for the drawer. */
|
|
17
|
+
direction?: Direction;
|
|
18
|
+
/** Data being injected into the child component. */
|
|
19
|
+
data?: D | null;
|
|
20
|
+
/** Whether the drawer has a backdrop. */
|
|
21
|
+
hasBackdrop?: boolean;
|
|
22
|
+
/** Custom class for the backdrop. */
|
|
23
|
+
backdropClass?: string;
|
|
24
|
+
/** Whether the user can use escape or clicking outside to close the drawer. */
|
|
25
|
+
disableClose?: boolean;
|
|
26
|
+
/** Aria label to assign to the drawer element. */
|
|
27
|
+
ariaLabel?: string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the drawer should close when the user goes backwards/forwards in history.
|
|
30
|
+
* Note that this usually doesn't include clicking on links (unless the user is using
|
|
31
|
+
* the `HashLocationStrategy`).
|
|
32
|
+
*/
|
|
33
|
+
closeOnNavigation?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Where the drawer should focus on open.
|
|
36
|
+
* @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or
|
|
37
|
+
* AutoFocusTarget instead.
|
|
38
|
+
*/
|
|
39
|
+
autoFocus?: AutoFocusTarget | string | boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the drawer should restore focus to the
|
|
42
|
+
* previously-focused element, after it's closed.
|
|
43
|
+
*/
|
|
44
|
+
restoreFocus?: boolean;
|
|
45
|
+
/** Scroll strategy to be used for the drawer. */
|
|
46
|
+
scrollStrategy?: ScrollStrategy;
|
|
47
|
+
/** Position of the drawer */
|
|
48
|
+
position?: DrawerPosition;
|
|
49
|
+
/** Width of the drawer. */
|
|
50
|
+
width?: string;
|
|
51
|
+
/** Height of the drawer. */
|
|
52
|
+
height?: string;
|
|
53
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { AnimationEvent } from '@angular/animations';
|
|
2
|
+
import { FocusTrapFactory, InteractivityChecker } from '@angular/cdk/a11y';
|
|
3
|
+
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
4
|
+
import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, DomPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
5
|
+
import { ChangeDetectorRef, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter, NgZone, OnDestroy } from '@angular/core';
|
|
6
|
+
import { MtxDrawerConfig } from './drawer-config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* Internal component that wraps user-provided drawer content.
|
|
10
|
+
* @docs-private
|
|
11
|
+
*/
|
|
12
|
+
export declare class MtxDrawerContainer extends BasePortalOutlet implements OnDestroy {
|
|
13
|
+
private _elementRef;
|
|
14
|
+
private _changeDetectorRef;
|
|
15
|
+
private _focusTrapFactory;
|
|
16
|
+
private readonly _interactivityChecker;
|
|
17
|
+
private readonly _ngZone;
|
|
18
|
+
/** The drawer configuration. */
|
|
19
|
+
drawerConfig: MtxDrawerConfig;
|
|
20
|
+
private _breakpointSubscription;
|
|
21
|
+
/** The portal outlet inside of this container into which the content will be loaded. */
|
|
22
|
+
_portalOutlet: CdkPortalOutlet;
|
|
23
|
+
/** The state of the drawer animations. */
|
|
24
|
+
_animationState: 'void' | 'visible' | 'hidden';
|
|
25
|
+
/** Emits whenever the state of the animation changes. */
|
|
26
|
+
_animationStateChanged: EventEmitter<AnimationEvent>;
|
|
27
|
+
/** The class that traps and manages focus within the drawer. */
|
|
28
|
+
private _focusTrap;
|
|
29
|
+
/** Element that was focused before the drawer was opened. */
|
|
30
|
+
private _elementFocusedBeforeOpened;
|
|
31
|
+
/** Server-side rendering-compatible reference to the global document object. */
|
|
32
|
+
private _document;
|
|
33
|
+
/** Whether the component has been destroyed. */
|
|
34
|
+
private _destroyed;
|
|
35
|
+
get drawerPosition(): string;
|
|
36
|
+
get drawerWidth(): string | undefined;
|
|
37
|
+
get drawerHeight(): string | undefined;
|
|
38
|
+
constructor(_elementRef: ElementRef<HTMLElement>, _changeDetectorRef: ChangeDetectorRef, _focusTrapFactory: FocusTrapFactory, _interactivityChecker: InteractivityChecker, _ngZone: NgZone, breakpointObserver: BreakpointObserver, document: any,
|
|
39
|
+
/** The drawer configuration. */
|
|
40
|
+
drawerConfig: MtxDrawerConfig);
|
|
41
|
+
/** Attach a component portal as content to this drawer container. */
|
|
42
|
+
attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;
|
|
43
|
+
/** Attach a template portal as content to this drawer container. */
|
|
44
|
+
attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
|
|
45
|
+
/**
|
|
46
|
+
* Attaches a DOM portal to the drawer container.
|
|
47
|
+
* @deprecated To be turned into a method.
|
|
48
|
+
* @breaking-change 10.0.0
|
|
49
|
+
*/
|
|
50
|
+
attachDomPortal: (portal: DomPortal) => void;
|
|
51
|
+
/** Begin animation of drawer entrance into view. */
|
|
52
|
+
enter(): void;
|
|
53
|
+
/** Begin animation of the drawer exiting from view. */
|
|
54
|
+
exit(): void;
|
|
55
|
+
ngOnDestroy(): void;
|
|
56
|
+
_onAnimationDone(event: AnimationEvent): void;
|
|
57
|
+
_onAnimationStart(event: AnimationEvent): void;
|
|
58
|
+
private _toggleClass;
|
|
59
|
+
private _validatePortalAttached;
|
|
60
|
+
private _setPanelClass;
|
|
61
|
+
/**
|
|
62
|
+
* Focuses the provided element. If the element is not focusable, it will add a tabIndex
|
|
63
|
+
* attribute to forcefully focus it. The attribute is removed after focus is moved.
|
|
64
|
+
* @param element The element to focus.
|
|
65
|
+
*/
|
|
66
|
+
private _forceFocus;
|
|
67
|
+
/**
|
|
68
|
+
* Focuses the first element that matches the given selector within the focus trap.
|
|
69
|
+
* @param selector The CSS selector for the element to set focus to.
|
|
70
|
+
*/
|
|
71
|
+
private _focusByCssSelector;
|
|
72
|
+
/**
|
|
73
|
+
* Moves the focus inside the focus trap. When autoFocus is not set to 'bottom-sheet',
|
|
74
|
+
* if focus cannot be moved then focus will go to the drawer container.
|
|
75
|
+
*/
|
|
76
|
+
private _trapFocus;
|
|
77
|
+
/** Restores focus to the element that was focused before the drawer was opened. */
|
|
78
|
+
private _restoreFocus;
|
|
79
|
+
/** Saves a reference to the element that was focused before the drawer was opened. */
|
|
80
|
+
private _savePreviouslyFocusedElement;
|
|
81
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MtxDrawerContainer, [null, null, null, null, null, null, { optional: true; }, null]>;
|
|
82
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MtxDrawerContainer, "mtx-drawer-container", never, {}, {}, never, never>;
|
|
83
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
@use '@angular/cdk' as cdk;
|
|
2
|
+
|
|
3
|
+
.mtx-drawer-container {
|
|
4
|
+
display: block;
|
|
5
|
+
outline: 0;
|
|
6
|
+
|
|
7
|
+
@include cdk.high-contrast(active, off) {
|
|
8
|
+
outline: 1px solid;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.mtx-drawer-content-wrapper {
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
padding: 8px 16px;
|
|
15
|
+
overflow: auto;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.mtx-drawer-right {
|
|
19
|
+
transform: translateX(100%);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.mtx-drawer-left {
|
|
23
|
+
transform: translateX(-100%);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.mtx-drawer-bottom {
|
|
27
|
+
transform: translateY(100%);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.mtx-drawer-top {
|
|
31
|
+
transform: translateY(-100%);
|
|
32
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./drawer-container";
|
|
3
|
+
import * as i2 from "@angular/cdk/overlay";
|
|
4
|
+
import * as i3 from "@angular/cdk/portal";
|
|
5
|
+
import * as i4 from "@angular/material/core";
|
|
6
|
+
export declare class MtxDrawerModule {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MtxDrawerModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MtxDrawerModule, [typeof i1.MtxDrawerContainer], [typeof i2.OverlayModule, typeof i3.PortalModule, typeof i4.MatCommonModule], [typeof i1.MtxDrawerContainer, typeof i4.MatCommonModule]>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<MtxDrawerModule>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { OverlayRef } from '@angular/cdk/overlay';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { MtxDrawerContainer } from './drawer-container';
|
|
4
|
+
/**
|
|
5
|
+
* Reference to a drawer dispatched from the drawer service.
|
|
6
|
+
*/
|
|
7
|
+
export declare class MtxDrawerRef<T = any, R = any> {
|
|
8
|
+
private _overlayRef;
|
|
9
|
+
/** Instance of the component making up the content of the drawer. */
|
|
10
|
+
instance: T;
|
|
11
|
+
/**
|
|
12
|
+
* Instance of the component into which the drawer content is projected.
|
|
13
|
+
* @docs-private
|
|
14
|
+
*/
|
|
15
|
+
containerInstance: MtxDrawerContainer;
|
|
16
|
+
/** Whether the user is allowed to close the drawer. */
|
|
17
|
+
disableClose: boolean | undefined;
|
|
18
|
+
/** Subject for notifying the user that the drawer has been dismissed. */
|
|
19
|
+
private readonly _afterDismissed;
|
|
20
|
+
/** Subject for notifying the user that the drawer has opened and appeared. */
|
|
21
|
+
private readonly _afterOpened;
|
|
22
|
+
/** Result to be passed down to the `afterDismissed` stream. */
|
|
23
|
+
private _result;
|
|
24
|
+
/** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */
|
|
25
|
+
private _closeFallbackTimeout;
|
|
26
|
+
constructor(containerInstance: MtxDrawerContainer, _overlayRef: OverlayRef);
|
|
27
|
+
/**
|
|
28
|
+
* Dismisses the drawer.
|
|
29
|
+
* @param result Data to be passed back to the drawer opener.
|
|
30
|
+
*/
|
|
31
|
+
dismiss(result?: R): void;
|
|
32
|
+
/** Gets an observable that is notified when the drawer is finished closing. */
|
|
33
|
+
afterDismissed(): Observable<R | undefined>;
|
|
34
|
+
/** Gets an observable that is notified when the drawer has opened and appeared. */
|
|
35
|
+
afterOpened(): Observable<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Gets an observable that emits when the overlay's backdrop has been clicked.
|
|
38
|
+
*/
|
|
39
|
+
backdropClick(): Observable<MouseEvent>;
|
|
40
|
+
/**
|
|
41
|
+
* Gets an observable that emits when keydown events are targeted on the overlay.
|
|
42
|
+
*/
|
|
43
|
+
keydownEvents(): Observable<KeyboardEvent>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
2
|
+
import { ComponentType } from '@angular/cdk/portal';
|
|
3
|
+
import { Injector, TemplateRef, InjectionToken, OnDestroy } from '@angular/core';
|
|
4
|
+
import { MtxDrawerConfig } from './drawer-config';
|
|
5
|
+
import { MtxDrawerRef } from './drawer-ref';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/** Injection token that can be used to access the data that was passed in to a drawer. */
|
|
8
|
+
export declare const MTX_DRAWER_DATA: InjectionToken<any>;
|
|
9
|
+
/** Injection token that can be used to specify default drawer options. */
|
|
10
|
+
export declare const MTX_DRAWER_DEFAULT_OPTIONS: InjectionToken<MtxDrawerConfig<any>>;
|
|
11
|
+
/**
|
|
12
|
+
* Service to trigger Material Design bottom sheets.
|
|
13
|
+
*/
|
|
14
|
+
export declare class MtxDrawer implements OnDestroy {
|
|
15
|
+
private _overlay;
|
|
16
|
+
private _injector;
|
|
17
|
+
private _parentDrawer;
|
|
18
|
+
private _defaultOptions?;
|
|
19
|
+
private _drawerRefAtThisLevel;
|
|
20
|
+
/** Reference to the currently opened drawer. */
|
|
21
|
+
get _openedDrawerRef(): MtxDrawerRef<any> | null;
|
|
22
|
+
set _openedDrawerRef(value: MtxDrawerRef<any> | null);
|
|
23
|
+
constructor(_overlay: Overlay, _injector: Injector, _parentDrawer: MtxDrawer, _defaultOptions?: MtxDrawerConfig<any> | undefined);
|
|
24
|
+
/**
|
|
25
|
+
* Opens a drawer containing the given component.
|
|
26
|
+
* @param component Type of the component to load into the drawer.
|
|
27
|
+
* @param config Extra configuration options.
|
|
28
|
+
* @returns Reference to the newly-opened drawer.
|
|
29
|
+
*/
|
|
30
|
+
open<T, D = any, R = any>(component: ComponentType<T>, config?: MtxDrawerConfig<D>): MtxDrawerRef<T, R>;
|
|
31
|
+
/**
|
|
32
|
+
* Opens a drawer containing the given template.
|
|
33
|
+
* @param template TemplateRef to instantiate as the drawer content.
|
|
34
|
+
* @param config Extra configuration options.
|
|
35
|
+
* @returns Reference to the newly-opened drawer.
|
|
36
|
+
*/
|
|
37
|
+
open<T, D = any, R = any>(template: TemplateRef<T>, config?: MtxDrawerConfig<D>): MtxDrawerRef<T, R>;
|
|
38
|
+
/**
|
|
39
|
+
* Dismisses the currently-visible drawer.
|
|
40
|
+
* @param result Data to pass to the drawer instance.
|
|
41
|
+
*/
|
|
42
|
+
dismiss<R = any>(result?: R): void;
|
|
43
|
+
ngOnDestroy(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Attaches the drawer container component to the overlay.
|
|
46
|
+
*/
|
|
47
|
+
private _attachContainer;
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new overlay and places it in the correct location.
|
|
50
|
+
* @param config The user-specified drawer config.
|
|
51
|
+
*/
|
|
52
|
+
private _createOverlay;
|
|
53
|
+
/**
|
|
54
|
+
* Creates an injector to be used inside of a drawer component.
|
|
55
|
+
* @param config Config that was used to create the drawer.
|
|
56
|
+
* @param drawerRef Reference to the drawer.
|
|
57
|
+
*/
|
|
58
|
+
private _createInjector;
|
|
59
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MtxDrawer, [null, null, { optional: true; skipSelf: true; }, { optional: true; }]>;
|
|
60
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MtxDrawer>;
|
|
61
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"module": "../fesm2015/mtxDrawer.mjs",
|
|
3
|
+
"es2020": "../fesm2020/mtxDrawer.mjs",
|
|
4
|
+
"esm2020": "../esm2020/drawer/mtxDrawer.mjs",
|
|
5
|
+
"fesm2020": "../fesm2020/mtxDrawer.mjs",
|
|
6
|
+
"fesm2015": "../fesm2015/mtxDrawer.mjs",
|
|
7
|
+
"typings": "mtxDrawer.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"name": "@ng-matero/extensions/drawer"
|
|
10
|
+
}
|
|
@@ -28,9 +28,9 @@ export class MtxAlertComponent {
|
|
|
28
28
|
this.closed.emit(this);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
/** @nocollapse */
|
|
32
|
-
/** @nocollapse */
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
31
|
+
/** @nocollapse */ MtxAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
/** @nocollapse */ MtxAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxAlertComponent, selector: "mtx-alert", inputs: { type: "type", dismissible: "dismissible", elevation: "elevation" }, outputs: { closed: "closed" }, host: { attributes: { "role": "alert" }, properties: { "class.mtx-alert": "true", "class.mtx-alert-dismissible": "dismissible", "class": "this.hostClassList" } }, exportAs: ["mtxAlert"], ngImport: i0, template: "<ng-content></ng-content>\n<ng-template [ngIf]=\"dismissible\">\n <button type=\"button\" class=\"mtx-alert-close\" aria-label=\"Close\" (click)=\"_onClosed()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</ng-template>\n", styles: [".mtx-alert{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.mtx-alert-close{position:absolute;top:0;bottom:0;right:0;padding:0 1.25rem;font-size:1.5rem;line-height:1;color:inherit;opacity:.5;background-color:transparent;border:0;cursor:pointer}[dir=rtl] .mtx-alert-close{right:auto;left:0}.mtx-alert-close:hover{opacity:.75}.mtx-alert-dismissible{padding-right:4rem}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxAlertComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
35
|
args: [{ selector: 'mtx-alert', exportAs: 'mtxAlert', host: {
|
|
36
36
|
'[class.mtx-alert]': 'true',
|
|
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
|
|
|
49
49
|
}], closed: [{
|
|
50
50
|
type: Output
|
|
51
51
|
}] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFpQjVFLE1BQU0sT0FBTyxpQkFBaUI7SUF3QjVCLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBbkJ6RCxxQkFBcUI7UUFDWixTQUFJLEdBQWlCLFNBQVMsQ0FBQztRQVVoQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU3Qix5QkFBeUI7UUFDaEIsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUV2QixtRkFBbUY7UUFDekUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO0lBRUcsQ0FBQztJQXZCN0QsSUFBMEIsYUFBYTtRQUNyQyxPQUFPLGFBQWEsSUFBSSxDQUFDLElBQUksbUJBQW1CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBS0QsZ0RBQWdEO0lBQ2hELElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFXRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7O2lJQTdCVSxpQkFBaUI7cUhBQWpCLGlCQUFpQix5VkMzQjlCLGtQQU1BOzJGRHFCYSxpQkFBaUI7a0JBYjdCLFNBQVM7K0JBQ0UsV0FBVyxZQUNYLFVBQVUsUUFDZDt3QkFDSixtQkFBbUIsRUFBRSxNQUFNO3dCQUMzQiwrQkFBK0IsRUFBRSxhQUFhO3dCQUM5QyxNQUFNLEVBQUUsT0FBTztxQkFDaEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTt3R0FHckIsYUFBYTtzQkFBdEMsV0FBVzt1QkFBQyxPQUFPO2dCQUtYLElBQUk7c0JBQVosS0FBSztnQkFJRixXQUFXO3NCQURkLEtBQUs7Z0JBVUcsU0FBUztzQkFBakIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5leHBvcnQgdHlwZSBNdHhBbGVydFR5cGUgPSAnZGVmYXVsdCcgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZGFuZ2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWFsZXJ0JyxcbiAgZXhwb3J0QXM6ICdtdHhBbGVydCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm10eC1hbGVydF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5tdHgtYWxlcnQtZGlzbWlzc2libGVdJzogJ2Rpc21pc3NpYmxlJyxcbiAgICAncm9sZSc6ICdhbGVydCcsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhBbGVydENvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgaG9zdENsYXNzTGlzdCgpIHtcbiAgICByZXR1cm4gYG10eC1hbGVydC0ke3RoaXMudHlwZX0gbWF0LWVsZXZhdGlvbi16JHt0aGlzLmVsZXZhdGlvbn1gO1xuICB9XG5cbiAgLyoqIFRoZSBhbGVydCB0eXBlICovXG4gIEBJbnB1dCgpIHR5cGU6IE10eEFsZXJ0VHlwZSA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciBkaXNwbGF5cyBhbiBpbmxpbmUgYENsb3NlYCBidXR0b24gKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc21pc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNtaXNzaWJsZTtcbiAgfVxuICBzZXQgZGlzbWlzc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNtaXNzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzbWlzc2libGUgPSBmYWxzZTtcblxuICAvKiogTWF0ZXJpYWwgZWxldmF0aW9uICovXG4gIEBJbnB1dCgpIGVsZXZhdGlvbiA9IDA7XG5cbiAgLyoqIFRoaXMgZXZlbnQgZmlyZXMgd2hlbiBhbGVydCBjbG9zZWQsICRldmVudCBpcyBhbiBpbnN0YW5jZSBvZiBBbGVydCBjb21wb25lbnQgKi9cbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TXR4QWxlcnRDb21wb25lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIF9vbkNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc21pc3NpYmxlOiBCb29sZWFuSW5wdXQ7XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48bmctdGVtcGxhdGUgW25nSWZdPVwiZGlzbWlzc2libGVcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtdHgtYWxlcnQtY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiX29uQ2xvc2VkKClcIj5cbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|