novo-elements 6.0.0-next.7 → 6.0.0

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.
Files changed (132) hide show
  1. package/bundles/novo-elements.umd.js +364 -112
  2. package/bundles/novo-elements.umd.js.map +1 -1
  3. package/bundles/novo-elements.umd.min.js +1 -1
  4. package/bundles/novo-elements.umd.min.js.map +1 -1
  5. package/elements/button/styles/button-icon.scss +1 -1
  6. package/elements/button/styles/button-other.scss +7 -7
  7. package/elements/button/styles/button-secondary.scss +1 -0
  8. package/elements/button/styles/button-standard.scss +2 -2
  9. package/elements/card/Card.scss +1 -1
  10. package/elements/category-dropdown/CategoryDropdown.scss +1 -1
  11. package/elements/chips/Chip.scss +5 -0
  12. package/elements/chips/Chips.scss +3 -0
  13. package/elements/ckeditor/CKEditor.scss +27 -4
  14. package/elements/common/typography/caption/caption.scss +0 -5
  15. package/elements/common/typography/label/label.scss +0 -7
  16. package/elements/common/typography/link/link.scss +3 -1
  17. package/elements/common/typography/text/text.scss +0 -7
  18. package/elements/common/typography/text.mixins.scss +4 -2
  19. package/elements/common/typography/title/title.scss +0 -7
  20. package/elements/data-table/data-table.component.scss +9 -4
  21. package/elements/data-table/sort-filter/sort-button.component.scss +1 -1
  22. package/elements/date-picker/DatePicker.scss +5 -2
  23. package/elements/field/field.scss +1 -0
  24. package/elements/form/ControlGroup.scss +3 -2
  25. package/elements/form/Form.scss +22 -33
  26. package/elements/header/Header.scss +31 -27
  27. package/elements/icon/Icon.scss +3 -1
  28. package/elements/list/List.scss +1 -1
  29. package/elements/modal/modal.component.scss +4 -3
  30. package/elements/picker/Picker.scss +2 -4
  31. package/elements/search/SearchBox.scss +4 -15
  32. package/elements/switch/Switch.scss +1 -1
  33. package/elements/tabbed-group-picker/TabbedGroupPicker.scss +5 -25
  34. package/elements/table/Table.scss +6 -3
  35. package/elements/tabs/Tabs.scss +2 -2
  36. package/elements/time-picker/TimePicker.scss +21 -17
  37. package/elements/tooltip/Tooltip.scss +77 -148
  38. package/esm2015/src/elements/aside/aside.service.js +9 -10
  39. package/esm2015/src/elements/avatar/Avatar.js +1 -1
  40. package/esm2015/src/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.js +1 -1
  41. package/esm2015/src/elements/button/Button.js +2 -2
  42. package/esm2015/src/elements/calendar/calendar.component.js +5 -2
  43. package/esm2015/src/elements/calendar/month-view/month-view.component.js +3 -2
  44. package/esm2015/src/elements/chips/Chip.js +1 -1
  45. package/esm2015/src/elements/common/directives/bg.directive.js +11 -4
  46. package/esm2015/src/elements/common/directives/color.directive.js +10 -3
  47. package/esm2015/src/elements/common/option/optgroup.component.js +1 -1
  48. package/esm2015/src/elements/common/option/option.component.js +1 -1
  49. package/esm2015/src/elements/common/typography/caption/caption.component.js +1 -1
  50. package/esm2015/src/elements/common/typography/label/label.component.js +1 -1
  51. package/esm2015/src/elements/common/typography/link/link.component.js +1 -1
  52. package/esm2015/src/elements/common/typography/text/text.component.js +1 -1
  53. package/esm2015/src/elements/common/typography/title/title.component.js +3 -3
  54. package/esm2015/src/elements/data-table/cell-headers/data-table-checkbox-header-cell.component.js +15 -12
  55. package/esm2015/src/elements/data-table/cell-headers/data-table-header-cell.component.js +91 -89
  56. package/esm2015/src/elements/data-table/cells/data-table-checkbox-cell.component.js +6 -4
  57. package/esm2015/src/elements/data-table/data-table.component.js +27 -8
  58. package/esm2015/src/elements/data-table/pagination/data-table-pagination.component.js +8 -4
  59. package/esm2015/src/elements/data-table/sort-filter/sort-button.component.js +1 -1
  60. package/esm2015/src/elements/data-table/state/data-table-state.service.js +5 -3
  61. package/esm2015/src/elements/date-picker/DatePicker.js +5 -1
  62. package/esm2015/src/elements/date-picker/DatePickerInput.js +12 -4
  63. package/esm2015/src/elements/date-picker/DateRangeInput.js +13 -3
  64. package/esm2015/src/elements/date-picker/MultiDateInput.js +7 -5
  65. package/esm2015/src/elements/expansion/expansion-panel.js +1 -1
  66. package/esm2015/src/elements/field/field.js +1 -1
  67. package/esm2015/src/elements/field/formats/date-format.js +3 -1
  68. package/esm2015/src/elements/field/formats/time-format.js +33 -2
  69. package/esm2015/src/elements/field/hint/hint.js +1 -1
  70. package/esm2015/src/elements/form/Control.js +4 -1
  71. package/esm2015/src/elements/form/ControlGroup.js +2 -2
  72. package/esm2015/src/elements/form/ControlTemplates.js +16 -1
  73. package/esm2015/src/elements/form/Form.module.js +3 -1
  74. package/esm2015/src/elements/form/FormControls.js +2 -1
  75. package/esm2015/src/elements/form/controls/ControlFactory.js +4 -2
  76. package/esm2015/src/elements/form/controls/index.js +3 -1
  77. package/esm2015/src/elements/form/controls/switch/SwitchControl.js +9 -0
  78. package/esm2015/src/elements/form/controls/switch/index.js +2 -0
  79. package/esm2015/src/elements/icon/Icon.js +5 -2
  80. package/esm2015/src/elements/layout/sidenav/sidenav.component.js +1 -1
  81. package/esm2015/src/elements/menu/menu-content.component.js +1 -1
  82. package/esm2015/src/elements/modal/modal.animation.js +3 -3
  83. package/esm2015/src/elements/progress/ProgressBar.js +1 -1
  84. package/esm2015/src/elements/search/SearchBox.js +2 -2
  85. package/esm2015/src/elements/select/Select.js +27 -6
  86. package/esm2015/src/elements/switch/Switch.js +14 -8
  87. package/esm2015/src/elements/tabbed-group-picker/TabbedGroupPicker.js +2 -2
  88. package/esm2015/src/elements/tabs/Tabs.js +49 -6
  89. package/esm2015/src/elements/time-picker/TimePicker.js +8 -4
  90. package/esm2015/src/elements/time-picker/TimePickerInput.js +60 -12
  91. package/esm2015/src/elements/toolbar/toolbar.component.js +1 -1
  92. package/esm2015/src/elements/tooltip/Tooltip.component.js +4 -6
  93. package/esm2015/src/utils/form-utils/FormUtils.js +5 -2
  94. package/fesm2015/novo-elements.js +462 -202
  95. package/fesm2015/novo-elements.js.map +1 -1
  96. package/novo-elements.scss +36 -19
  97. package/package.json +2 -2
  98. package/schematics/ng-add/fonts/novo-fonts.js +0 -1
  99. package/schematics/ng-add/fonts/novo-fonts.js.map +1 -1
  100. package/schematics/ng-add/setup-project.js +5 -5
  101. package/schematics/ng-add/setup-project.js.map +1 -1
  102. package/schematics/package.json +1 -1
  103. package/src/elements/aside/aside.service.d.ts +1 -1
  104. package/src/elements/button/Button.d.ts +1 -1
  105. package/src/elements/calendar/calendar.component.d.ts +3 -0
  106. package/src/elements/calendar/month-view/month-view.component.d.ts +1 -0
  107. package/src/elements/common/directives/bg.directive.d.ts +2 -1
  108. package/src/elements/common/directives/color.directive.d.ts +1 -0
  109. package/src/elements/data-table/cell-headers/data-table-checkbox-header-cell.component.d.ts +0 -1
  110. package/src/elements/data-table/data-table.component.d.ts +3 -1
  111. package/src/elements/data-table/pagination/data-table-pagination.component.d.ts +2 -0
  112. package/src/elements/data-table/state/data-table-state.service.d.ts +2 -1
  113. package/src/elements/date-picker/DatePickerInput.d.ts +4 -2
  114. package/src/elements/date-picker/DateRangeInput.d.ts +5 -2
  115. package/src/elements/field/formats/time-format.d.ts +5 -2
  116. package/src/elements/form/FormControls.d.ts +1 -0
  117. package/src/elements/form/controls/index.d.ts +2 -0
  118. package/src/elements/form/controls/switch/SwitchControl.d.ts +5 -0
  119. package/src/elements/form/controls/switch/index.d.ts +1 -0
  120. package/src/elements/select/Select.d.ts +2 -1
  121. package/src/elements/switch/Switch.d.ts +3 -1
  122. package/src/elements/tabs/Tabs.d.ts +12 -2
  123. package/src/elements/time-picker/TimePickerInput.d.ts +10 -2
  124. package/styles/cdk.scss +3 -4
  125. package/styles/content/code.scss +15 -9
  126. package/styles/content/forms.scss +3 -0
  127. package/styles/content/root.scss +5 -6
  128. package/styles/reset.scss +2 -2
  129. package/styles/themes/dark.scss +8 -1
  130. package/styles/themes/light.scss +8 -4
  131. package/styles/typography.scss +5 -0
  132. package/styles/variables.scss +8 -3
@@ -4,6 +4,7 @@
4
4
  & > header {
5
5
  border-top-left-radius: 4px;
6
6
  border-top-right-radius: 4px;
7
+ overflow: hidden;
7
8
 
8
9
  h1,
9
10
  h2 {
@@ -84,7 +85,7 @@
84
85
 
85
86
  &[type="success"] {
86
87
  .novo-notification-body {
87
- i {
88
+ i.indicator {
88
89
  color: $success;
89
90
  border-color: $success;
90
91
  }
@@ -93,7 +94,7 @@
93
94
 
94
95
  &[type="warning"] {
95
96
  .novo-notification-body {
96
- i {
97
+ i.indicator {
97
98
  color: $warning;
98
99
  border-color: $warning;
99
100
  }
@@ -102,7 +103,7 @@
102
103
 
103
104
  &[type="error"] {
104
105
  .novo-notification-body {
105
- i {
106
+ i.indicator {
106
107
  color: $negative;
107
108
  border-color: $negative;
108
109
  }
@@ -199,6 +199,7 @@ entity-picker-result.active {
199
199
  .novo-item-content {
200
200
  margin-top: $spacing-sm;
201
201
  margin-left: 1.8rem;
202
+ row-gap: 1rem;
202
203
  .novo-text {
203
204
  white-space: nowrap;
204
205
  text-overflow: ellipsis;
@@ -262,6 +263,7 @@ novo-picker {
262
263
  }
263
264
 
264
265
  entity-picker-results {
266
+ min-width: 250px;
265
267
  novo-list {
266
268
  max-height: 49vh;
267
269
  overflow: auto;
@@ -329,10 +331,6 @@ picker-results {
329
331
  }
330
332
  }
331
333
 
332
- entity-picker-results {
333
- min-width: 250px;
334
- }
335
-
336
334
  // Shared specialty picker styles
337
335
  workers-comp-codes-picker-results,
338
336
  distribution-list-picker-results {
@@ -33,7 +33,7 @@ novo-search {
33
33
  background: transparent;
34
34
  position: relative;
35
35
  font-size: 1.4em;
36
- color: $dark;
36
+ color: var(--text-main);
37
37
  z-index: z(above);
38
38
  border: none;
39
39
  transition: all 250ms;
@@ -46,14 +46,14 @@ novo-search {
46
46
  }
47
47
 
48
48
  novo-icon {
49
- color: $dark;
49
+ color: var(--text-main);
50
50
  }
51
51
 
52
52
  &.focused {
53
- border: 1px solid $positive;
53
+ border: 1px solid var(--selection);
54
54
 
55
55
  > novo-icon {
56
- color: $positive !important;
56
+ color: var(--selection) !important;
57
57
  }
58
58
 
59
59
  @include theme-colors() using ($name, $color, $contrast, $tint, $shade, $pale) {
@@ -63,16 +63,5 @@ novo-search {
63
63
  }
64
64
  }
65
65
  }
66
-
67
- @include theme-backgrounds() using ($name, $color, $contrast, $tint, $shade, $pale) {
68
- novo-icon,
69
- input {
70
- transition: all 250ms;
71
- color: inherit !important;
72
- &::placeholder {
73
- color: var(--form-placeholder);
74
- }
75
- }
76
- }
77
66
  }
78
67
  }
@@ -17,7 +17,7 @@ $switch-thumb-size: 20px !default;
17
17
  .novo-switch {
18
18
  display: flex;
19
19
  align-items: center;
20
- margin: 15px;
20
+ // margin: 15px;
21
21
  white-space: nowrap;
22
22
  cursor: pointer;
23
23
  outline: none;
@@ -120,9 +120,6 @@
120
120
  padding: 0.5em 1.75em;
121
121
  border-bottom: none;
122
122
  }
123
- novo-list-item:last-of-type {
124
- padding-bottom: 1em;
125
- }
126
123
  }
127
124
  }
128
125
  novo-optgroup {
@@ -132,29 +129,12 @@
132
129
  @media (max-height: 720px) {
133
130
  height: 18em;
134
131
  }
132
+ }
135
133
 
136
- novo-list-item {
137
- font-size: 1.2em;
138
- padding: 0.75em 1.75em;
139
- cursor: pointer;
140
- border-bottom: none;
141
- align-items: center;
142
-
143
- &:focus,
144
- &:hover {
145
- background: lighten($light, 10%);
146
- color: darken($light, 55%);
147
- }
148
-
149
- novo-checkbox .check-box-group {
150
- margin-right: 0;
151
- label span {
152
- white-space: nowrap;
153
- overflow: hidden;
154
- text-overflow: ellipsis;
155
- width: 16.23em;
156
- }
157
- }
134
+ novo-option {
135
+ &:hover.novo-option-inert {
136
+ background: var(--background-main, rgba($ocean, 0.1));
137
+ color: var(--text-bright, $dark);
158
138
  }
159
139
  }
160
140
  }
@@ -160,9 +160,12 @@ novo-table {
160
160
  flex-direction: row;
161
161
  align-items: center;
162
162
  novo-dropdown.column-filters {
163
- .novo-button.filtered {
164
- i {
165
- color: $positive;
163
+ .novo-button {
164
+ -webkit-appearance: none;
165
+ &.filtered {
166
+ i {
167
+ color: $positive;
168
+ }
166
169
  }
167
170
  }
168
171
  }
@@ -38,8 +38,8 @@ novo-nav {
38
38
 
39
39
  .novo-tab-link {
40
40
  @include novo-label-text();
41
- padding: $spacing-lg;
42
- // color: var(--text-main);
41
+ font-size: var(--font-size-tab);
42
+ padding: $spacing-md;
43
43
  display: flex;
44
44
  align-items: center;
45
45
  gap: $spacing-xs;
@@ -12,7 +12,7 @@ novo-time-picker-input {
12
12
  input {
13
13
  font-size: 1em;
14
14
  border: none;
15
- border-bottom: 1px solid rgba(lighten($dark, 12%), 0.25);
15
+ border-bottom: 1px solid var(--border);
16
16
  background: transparent !important;
17
17
  border-radius: 0;
18
18
  outline: none;
@@ -23,10 +23,10 @@ novo-time-picker-input {
23
23
  box-shadow: none;
24
24
  box-sizing: content-box;
25
25
  transition: all 300ms;
26
- color: $dark;
26
+ color: var(--text-main);
27
27
 
28
28
  &:focus {
29
- border-bottom: 1px solid $ocean;
29
+ border-bottom: 1px solid var(--selection);
30
30
  }
31
31
  }
32
32
  > i.bhi-clock,
@@ -54,7 +54,7 @@ novo-time-picker {
54
54
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15), 0 2px 7px rgba(0, 0, 0, 0.1);
55
55
  z-index: z(overlay);
56
56
  .digital {
57
- background-color: $positive;
57
+ background-color: var(--selection);
58
58
  display: flex;
59
59
  justify-content: center;
60
60
  &.inline {
@@ -69,7 +69,7 @@ novo-time-picker {
69
69
  display: flex;
70
70
  flex: 1;
71
71
  .digital--period {
72
- color: $positive;
72
+ color: var(--selection);
73
73
  cursor: pointer;
74
74
  font-size: 1em;
75
75
  opacity: 0.6;
@@ -77,7 +77,7 @@ novo-time-picker {
77
77
  flex: 1;
78
78
  &.active {
79
79
  opacity: 1;
80
- background-color: $positive;
80
+ background-color: var(--selection);
81
81
  color: $white;
82
82
  }
83
83
  }
@@ -112,10 +112,11 @@ novo-time-picker {
112
112
  font-weight: 600;
113
113
  }
114
114
  }
115
+
115
116
  .increments {
116
117
  position: relative;
117
118
  height: 250px;
118
- width: 130px;
119
+ width: auto;
119
120
  display: flex;
120
121
  flex-flow: row nowrap;
121
122
 
@@ -132,9 +133,11 @@ novo-time-picker {
132
133
  }
133
134
  }
134
135
 
135
- novo-list-item {
136
+ .increments--hour,
137
+ .increments--minute,
138
+ .increments--meridian {
136
139
  padding: 5px 16px;
137
- width: 130px;
140
+ width: 50px;
138
141
  scroll-snap-align: start;
139
142
 
140
143
  .list-item {
@@ -142,12 +145,13 @@ novo-time-picker {
142
145
  }
143
146
  &:focus,
144
147
  &:hover {
145
- background: lighten($light, 10%);
146
- color: darken($light, 55%);
148
+ background: var(--selection);
149
+ color: var(--text-selection);
150
+ filter: brightness(1.25);
147
151
  }
148
152
  &.active {
149
- background-color: $positive;
150
- color: $white;
153
+ background: var(--selection);
154
+ color: var(--text-selection);
151
155
  font-weight: 500;
152
156
  }
153
157
  }
@@ -209,8 +213,8 @@ novo-time-picker {
209
213
  margin-top: -1.5rem;
210
214
  border-radius: 50%;
211
215
  position: absolute;
212
- border: 3px solid $positive;
213
- background: $positive;
216
+ border: 3px solid var(--selection);
217
+ background: var(--selection);
214
218
  }
215
219
  &.hour-12 {
216
220
  transform: rotate(-90deg);
@@ -281,8 +285,8 @@ novo-time-picker {
281
285
  width: 2.4rem;
282
286
  right: 4.2rem;
283
287
  margin-top: -1.2rem;
284
- border: 2px solid lighten($positive, 10%);
285
- background: lighten($positive, 10%);
288
+ border: 2px solid var(--selection);
289
+ background: var(--selection);
286
290
  transition: all 160ms ease-in-out;
287
291
  &.between {
288
292
  height: 1px;
@@ -1,210 +1,113 @@
1
+ $tooltip-background: var(--tooltip-background-color, #383838);
2
+ $tooltip-error-color: var(--color-shade-error, #b34e4d);
3
+ $tooltip-info-color: var(--color-shade-info, #3986ac);
4
+ $tooltip-warning-color: var(--color-shade-warning, #c09854);
5
+ $tooltip-success-color: var(--color-shade-success, #458746);
6
+
7
+ @mixin tooltip-pointer($color) {
8
+ &.top-right:before,
9
+ &.top-left:before,
10
+ &.top:before {
11
+ border-top-color: $color;
12
+ }
13
+ &.bottom-left::before,
14
+ &.bottom-right:before,
15
+ &.bottom:before {
16
+ border-bottom-color: $color;
17
+ }
18
+ &.left:before {
19
+ border-left-color: $color;
20
+ }
21
+ &.right:before {
22
+ border-right-color: $color;
23
+ }
24
+ }
25
+
1
26
  novo-tooltip {
2
27
  div {
3
- background: #383838;
4
- color: #fff;
28
+ background: $tooltip-background;
29
+ color: var(--color-white, #fff);
30
+ border-radius: var(--tooltip-border-radius, 4px);
5
31
  padding: 8px 10px;
6
32
  font-size: 12px;
7
- // font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
8
33
  line-height: 12px;
9
34
  white-space: nowrap;
10
- text-shadow: 0 -1px 0 #000;
11
- box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3);
35
+ box-shadow: var(--shadow-2);
36
+
12
37
  &.error {
13
- background-color: #b34e4d;
14
- text-shadow: 0 -1px 0 #592726;
38
+ background-color: $tooltip-error-color;
39
+ @include tooltip-pointer($tooltip-error-color);
15
40
  }
16
41
  &.info {
17
- background-color: #3986ac;
18
- text-shadow: 0 -1px 0 #1a3c4d;
42
+ background-color: $tooltip-info-color;
43
+ @include tooltip-pointer($tooltip-info-color);
19
44
  }
20
45
  &.warning {
21
- background-color: #c09854;
22
- text-shadow: 0 -1px 0 #6c5328;
46
+ background-color: $tooltip-warning-color;
47
+ @include tooltip-pointer($tooltip-warning-color);
23
48
  }
24
49
  &.success {
25
- background-color: #458746;
26
- text-shadow: 0 -1px 0 #1a321a;
27
- }
28
- &.rounded {
29
- border-radius: 4px;
30
- }
31
- &.extra-large,
32
- &.large,
33
- &.small,
34
- &.medium {
35
- white-space: normal;
36
- line-height: 1.4em;
37
- word-wrap: break-word;
38
- }
39
- &.extra-large {
40
- width: 400px;
41
- font-size: 1.2vh;
42
- }
43
- &.large {
44
- width: 300px;
45
- }
46
- &.medium {
47
- width: 150px;
48
- }
49
- &.small {
50
- width: 80px;
51
- }
52
- &.preline {
53
- white-space: pre-line;
50
+ background-color: $tooltip-success-color;
51
+ @include tooltip-pointer($tooltip-success-color);
54
52
  }
53
+
55
54
  //Arrow positions
55
+ @include tooltip-pointer($tooltip-background);
56
+
56
57
  &.top:before {
57
58
  margin-bottom: -11px;
58
59
  left: calc(50% - 6px);
59
60
  bottom: 0;
60
- border-top-color: #383838;
61
- }
62
- &.top.error:before {
63
- border-top-color: #b34e4d;
64
- }
65
- &.top.info:before {
66
- border-top-color: #3986ac;
67
- }
68
- &.top.warning:before {
69
- border-top-color: #c09854;
70
- }
71
- &.top.success:before {
72
- border-top-color: #458746;
73
61
  }
74
62
 
75
63
  &.top-left:before {
76
- border-top-color: #383838;
77
64
  margin-right: 0;
78
65
  margin-bottom: -11px;
79
- right: 0;
66
+ right: 1px;
80
67
  bottom: 0;
81
68
  }
82
- &.top-left.error:before {
83
- border-top-color: #b34e4d;
84
- }
85
- &.top-left.info:before {
86
- border-top-color: #3986ac;
87
- }
88
- &.top-left.warning:before {
89
- border-top-color: #c09854;
90
- }
91
- &.top-left.success:before {
92
- border-top-color: #458746;
93
- }
69
+
94
70
  &.top-right:before {
95
- border-top-color: #383838;
96
71
  margin-left: 0;
97
72
  margin-bottom: -11px;
98
- left: 0;
73
+ left: 1px;
99
74
  bottom: 0;
100
75
  }
101
- &.top-right.error:before {
102
- border-top-color: #b34e4d;
103
- }
104
- &.top-right.info:before {
105
- border-top-color: #3986ac;
106
- }
107
- &.top-right.warning:before {
108
- border-top-color: #c09854;
109
- }
110
- &.top-right.success:before {
111
- border-top-color: #458746;
112
- }
76
+
113
77
  &.bottom:before {
114
78
  margin-top: -11px;
115
79
  left: calc(50% - 6px);
116
80
  top: 0;
117
- border-bottom-color: #383838;
118
- }
119
- &.bottom.error:before {
120
- border-top-color: #b34e4d;
121
- }
122
- &.bottom.info:before {
123
- border-top-color: #3986ac;
124
- }
125
- &.bottom.warning:before {
126
- border-top-color: #c09854;
127
- }
128
- &.bottom.success:before {
129
- border-top-color: #458746;
130
81
  }
82
+
131
83
  &.bottom-left:before {
132
- border-bottom-color: #383838;
133
84
  margin-right: 0;
134
85
  margin-top: -11px;
135
- right: 0;
86
+ right: 1px;
136
87
  top: 0;
137
88
  }
138
- &.bottom-left.error:before {
139
- border-bottom-color: #b34e4d;
140
- }
141
- &.bottom-left.info:before {
142
- border-bottom-color: #3986ac;
143
- }
144
- &.bottom-left.warning:before {
145
- border-bottom-color: #c09854;
146
- }
147
- &.bottom-left.success:before {
148
- border-bottom-color: #458746;
149
- }
89
+
150
90
  &.bottom-right:before {
151
- border-bottom-color: #383838;
152
91
  margin-left: 0;
153
92
  margin-top: -11px;
154
- left: 0;
93
+ left: 1px;
155
94
  top: 0;
156
95
  }
157
- &.bottom-right.error:before {
158
- border-bottom-color: #b34e4d;
159
- }
160
- &.bottom-right.info:before {
161
- border-bottom-color: #3986ac;
162
- }
163
- &.bottom-right.warning:before {
164
- border-bottom-color: #c09854;
165
- }
166
- &.bottom-right.success:before {
167
- border-bottom-color: #458746;
168
- }
96
+
169
97
  &.left:before {
170
- border-left-color: #383838;
171
98
  margin-right: -11px;
172
99
  margin-bottom: -6px;
173
100
  right: 0;
174
101
  bottom: 50%;
175
102
  }
176
- &.left.error:before {
177
- border-left-color: #b34e4d;
178
- }
179
- &.left.info:before {
180
- border-left-color: #3986ac;
181
- }
182
- &.left.warning:before {
183
- border-left-color: #c09854;
184
- }
185
- &.left.success:before {
186
- border-left-color: #458746;
187
- }
188
103
 
189
104
  &.right:before {
190
105
  left: 0;
191
106
  bottom: 50%;
192
- border-right-color: #383838;
193
107
  margin-left: -11px;
194
108
  margin-bottom: -6px;
195
109
  }
196
- &.right.error:before {
197
- border-right-color: #b34e4d;
198
- }
199
- &.right.info:before {
200
- border-right-color: #3986ac;
201
- }
202
- &.right.warning:before {
203
- border-right-color: #c09854;
204
- }
205
- &.right.success:before {
206
- border-right-color: #458746;
207
- }
110
+
208
111
  &:before {
209
112
  content: "";
210
113
  position: absolute;
@@ -212,5 +115,31 @@ novo-tooltip {
212
115
  border: 6px solid transparent;
213
116
  box-sizing: border-box;
214
117
  }
118
+
119
+ // Sizing
120
+ &.extra-large,
121
+ &.large,
122
+ &.small,
123
+ &.medium {
124
+ white-space: normal;
125
+ line-height: 1.4em;
126
+ word-wrap: break-word;
127
+ }
128
+ &.extra-large {
129
+ width: 400px;
130
+ font-size: 1.2vh;
131
+ }
132
+ &.large {
133
+ width: 300px;
134
+ }
135
+ &.medium {
136
+ width: 150px;
137
+ }
138
+ &.small {
139
+ width: 80px;
140
+ }
141
+ &.preline {
142
+ white-space: pre-line;
143
+ }
215
144
  }
216
145
  }
@@ -1,4 +1,4 @@
1
- import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
1
+ import { Overlay } from '@angular/cdk/overlay';
2
2
  import { ComponentPortal, PortalInjector } from '@angular/cdk/portal';
3
3
  import { Injectable, Injector } from '@angular/core';
4
4
  import { NovoAsideRef } from './aside-ref';
@@ -15,9 +15,9 @@ export class NovoAsideService {
15
15
  this.injector = injector;
16
16
  this.overlay = overlay;
17
17
  }
18
- open(component, params = {}) {
18
+ open(component, params = {}, config = {}) {
19
19
  // Override default configuration
20
- const asideConfig = DEFAULT_CONFIG;
20
+ const asideConfig = this.getOverlayConfig(Object.assign(Object.assign({}, DEFAULT_CONFIG), config));
21
21
  // Returns an OverlayRef which is a PortalHost
22
22
  const overlayRef = this.createOverlay(asideConfig);
23
23
  // Instantiate remote control
@@ -29,7 +29,6 @@ export class NovoAsideService {
29
29
  return overlayRef;
30
30
  }
31
31
  createOverlay(config) {
32
- // const overlayConfig = this.getOverlayConfig(config);
33
32
  return this.overlay.create(config);
34
33
  }
35
34
  attachAsideContainer(component, overlayRef, config, asideRef) {
@@ -44,14 +43,14 @@ export class NovoAsideService {
44
43
  return new PortalInjector(this.injector, injectionTokens);
45
44
  }
46
45
  getOverlayConfig(config) {
47
- const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();
48
- const overlayConfig = new OverlayConfig({
49
- positionStrategy,
46
+ // const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();
47
+ const scrollStrategy = config.hasBackdrop ? this.overlay.scrollStrategies.block() : this.overlay.scrollStrategies.noop();
48
+ return {
49
+ scrollStrategy,
50
50
  hasBackdrop: config.hasBackdrop,
51
51
  backdropClass: config.backdropClass,
52
52
  panelClass: config.panelClass,
53
- });
54
- return overlayConfig;
53
+ };
55
54
  }
56
55
  }
57
56
  NovoAsideService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NovoAsideService_Factory() { return new NovoAsideService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.Overlay)); }, token: NovoAsideService, providedIn: "root" });
@@ -62,4 +61,4 @@ NovoAsideService.ctorParameters = () => [
62
61
  { type: Injector },
63
62
  { type: Overlay }
64
63
  ];
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpZGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9ub3ZvLWVsZW1lbnRzL25vdm8tZWxlbWVudHMvcHJvamVjdHMvbm92by1lbGVtZW50cy8iLCJzb3VyY2VzIjpbInNyYy9lbGVtZW50cy9hc2lkZS9hc2lkZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQWdCLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVFuRCxNQUFNLGNBQWMsR0FBZ0I7SUFDbEMsV0FBVyxFQUFFLElBQUk7SUFDakIsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxVQUFVLEVBQUUscUJBQXFCO0NBQ2xDLENBQUM7QUFHRixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQW9CLFFBQWtCLEVBQVUsT0FBZ0I7UUFBNUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFBRyxDQUFDO0lBRXBFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUU7UUFDekIsaUNBQWlDO1FBQ2pDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQztRQUVuQyw4Q0FBOEM7UUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuRCw2QkFBNkI7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVqRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV0RyxtRUFBbUU7UUFDbkUsUUFBUSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBRTlDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFN0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFtQjtRQUN2Qyx1REFBdUQ7UUFDdkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBUyxFQUFFLFVBQXNCLEVBQUUsTUFBbUIsRUFBRSxRQUFzQjtRQUN6RyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sWUFBWSxHQUFzQixVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQW1CLEVBQUUsUUFBc0I7UUFDaEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQW1CO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFbEcsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDdEMsZ0JBQWdCO1lBQ2hCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7WUFDbkMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQzlCLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7Ozs7WUF6REYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBaEJDLFFBQVE7WUFGbEMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFBvcnRhbEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3ZvQXNpZGVSZWYgfSBmcm9tICcuL2FzaWRlLXJlZic7XG5pbXBvcnQgeyBBc2lkZUNvbXBvbmVudCB9IGZyb20gJy4vYXNpZGUuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEFzaWRlQ29uZmlnIHtcbiAgcGFuZWxDbGFzcz86IHN0cmluZztcbiAgaGFzQmFja2Ryb3A/OiBib29sZWFuO1xuICBiYWNrZHJvcENsYXNzPzogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogQXNpZGVDb25maWcgPSB7XG4gIGhhc0JhY2tkcm9wOiB0cnVlLFxuICBiYWNrZHJvcENsYXNzOiAnYXNpZGUtb3ZlcmxheS1iYWNrZHJvcCcsXG4gIHBhbmVsQ2xhc3M6ICdhc2lkZS1vdmVybGF5LXBhbmVsJyxcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTm92b0FzaWRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXkpIHt9XG5cbiAgb3Blbihjb21wb25lbnQsIHBhcmFtcyA9IHt9KSB7XG4gICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgYXNpZGVDb25maWcgPSBERUZBVUxUX0NPTkZJRztcblxuICAgIC8vIFJldHVybnMgYW4gT3ZlcmxheVJlZiB3aGljaCBpcyBhIFBvcnRhbEhvc3RcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KGFzaWRlQ29uZmlnKTtcblxuICAgIC8vIEluc3RhbnRpYXRlIHJlbW90ZSBjb250cm9sXG4gICAgY29uc3QgYXNpZGVSZWYgPSBuZXcgTm92b0FzaWRlUmVmKGNvbXBvbmVudCwgcGFyYW1zLCBvdmVybGF5UmVmKTtcblxuICAgIGNvbnN0IG92ZXJsYXlDb21wb25lbnQgPSB0aGlzLmF0dGFjaEFzaWRlQ29udGFpbmVyKEFzaWRlQ29tcG9uZW50LCBvdmVybGF5UmVmLCBhc2lkZUNvbmZpZywgYXNpZGVSZWYpO1xuXG4gICAgLy8gUGFzcyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG92ZXJsYXkgY29tcG9uZW50IHRvIHRoZSByZW1vdGUgY29udHJvbFxuICAgIGFzaWRlUmVmLmNvbXBvbmVudEluc3RhbmNlID0gb3ZlcmxheUNvbXBvbmVudDtcblxuICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiBhc2lkZVJlZi5jbG9zZSgpKTtcblxuICAgIHJldHVybiBvdmVybGF5UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KGNvbmZpZzogQXNpZGVDb25maWcpIHtcbiAgICAvLyBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoQXNpZGVDb250YWluZXIoY29tcG9uZW50LCBvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IEFzaWRlQ29uZmlnLCBhc2lkZVJlZjogTm92b0FzaWRlUmVmKSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yKGNvbmZpZywgYXNpZGVSZWYpO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUluamVjdG9yKGNvbmZpZzogQXNpZGVDb25maWcsIGFzaWRlUmVmOiBOb3ZvQXNpZGVSZWYpOiBQb3J0YWxJbmplY3RvciB7XG4gICAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIGluamVjdGlvblRva2Vucy5zZXQoTm92b0FzaWRlUmVmLCBhc2lkZVJlZik7XG5cbiAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuaW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoY29uZmlnOiBBc2lkZUNvbmZpZyk6IE92ZXJsYXlDb25maWcge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCk7XG5cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIGhhc0JhY2tkcm9wOiBjb25maWcuaGFzQmFja2Ryb3AsXG4gICAgICBiYWNrZHJvcENsYXNzOiBjb25maWcuYmFja2Ryb3BDbGFzcyxcbiAgICAgIHBhbmVsQ2xhc3M6IGNvbmZpZy5wYW5lbENsYXNzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG92ZXJsYXlDb25maWc7XG4gIH1cbn1cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpZGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9ub3ZvLWVsZW1lbnRzL25vdm8tZWxlbWVudHMvcHJvamVjdHMvbm92by1lbGVtZW50cy8iLCJzb3VyY2VzIjpbInNyYy9lbGVtZW50cy9hc2lkZS9hc2lkZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQTZCLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQWdCLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVFuRCxNQUFNLGNBQWMsR0FBZ0I7SUFDbEMsV0FBVyxFQUFFLElBQUk7SUFDakIsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxVQUFVLEVBQUUscUJBQXFCO0NBQ2xDLENBQUM7QUFHRixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQW9CLFFBQWtCLEVBQVUsT0FBZ0I7UUFBNUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFBRyxDQUFDO0lBRXBFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUN0QyxpQ0FBaUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixpQ0FBTSxjQUFjLEdBQUssTUFBTSxFQUFHLENBQUM7UUFFNUUsOENBQThDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkQsNkJBQTZCO1FBQzdCLE1BQU0sUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFdEcsbUVBQW1FO1FBQ25FLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU5QyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTdELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBbUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBUyxFQUFFLFVBQXNCLEVBQUUsTUFBbUIsRUFBRSxRQUFzQjtRQUN6RyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV2RCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sWUFBWSxHQUFzQixVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQW1CLEVBQUUsUUFBc0I7UUFDaEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQW1CO1FBQzFDLHFHQUFxRztRQUNyRyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpILE9BQU87WUFDTCxjQUFjO1lBQ2QsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7U0FDOUIsQ0FBQztJQUNKLENBQUM7Ozs7WUF2REYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBaEJDLFFBQVE7WUFGbEMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFBvcnRhbEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3ZvQXNpZGVSZWYgfSBmcm9tICcuL2FzaWRlLXJlZic7XG5pbXBvcnQgeyBBc2lkZUNvbXBvbmVudCB9IGZyb20gJy4vYXNpZGUuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEFzaWRlQ29uZmlnIGV4dGVuZHMgT3ZlcmxheUNvbmZpZyB7XG4gIHBhbmVsQ2xhc3M/OiBzdHJpbmc7XG4gIGhhc0JhY2tkcm9wPzogYm9vbGVhbjtcbiAgYmFja2Ryb3BDbGFzcz86IHN0cmluZztcbn1cblxuY29uc3QgREVGQVVMVF9DT05GSUc6IEFzaWRlQ29uZmlnID0ge1xuICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgYmFja2Ryb3BDbGFzczogJ2FzaWRlLW92ZXJsYXktYmFja2Ryb3AnLFxuICBwYW5lbENsYXNzOiAnYXNpZGUtb3ZlcmxheS1wYW5lbCcsXG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5vdm9Bc2lkZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5KSB7fVxuXG4gIG9wZW4oY29tcG9uZW50LCBwYXJhbXMgPSB7fSwgY29uZmlnID0ge30pIHtcbiAgICAvLyBPdmVycmlkZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBhc2lkZUNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZyh7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfSk7XG5cbiAgICAvLyBSZXR1cm5zIGFuIE92ZXJsYXlSZWYgd2hpY2ggaXMgYSBQb3J0YWxIb3N0XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheShhc2lkZUNvbmZpZyk7XG5cbiAgICAvLyBJbnN0YW50aWF0ZSByZW1vdGUgY29udHJvbFxuICAgIGNvbnN0IGFzaWRlUmVmID0gbmV3IE5vdm9Bc2lkZVJlZihjb21wb25lbnQsIHBhcmFtcywgb3ZlcmxheVJlZik7XG5cbiAgICBjb25zdCBvdmVybGF5Q29tcG9uZW50ID0gdGhpcy5hdHRhY2hBc2lkZUNvbnRhaW5lcihBc2lkZUNvbXBvbmVudCwgb3ZlcmxheVJlZiwgYXNpZGVDb25maWcsIGFzaWRlUmVmKTtcblxuICAgIC8vIFBhc3MgdGhlIGluc3RhbmNlIG9mIHRoZSBvdmVybGF5IGNvbXBvbmVudCB0byB0aGUgcmVtb3RlIGNvbnRyb2xcbiAgICBhc2lkZVJlZi5jb21wb25lbnRJbnN0YW5jZSA9IG92ZXJsYXlDb21wb25lbnQ7XG5cbiAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gYXNpZGVSZWYuY2xvc2UoKSk7XG5cbiAgICByZXR1cm4gb3ZlcmxheVJlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheShjb25maWc6IEFzaWRlQ29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoQXNpZGVDb250YWluZXIoY29tcG9uZW50LCBvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IEFzaWRlQ29uZmlnLCBhc2lkZVJlZjogTm92b0FzaWRlUmVmKSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yKGNvbmZpZywgYXNpZGVSZWYpO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUluamVjdG9yKGNvbmZpZzogQXNpZGVDb25maWcsIGFzaWRlUmVmOiBOb3ZvQXNpZGVSZWYpOiBQb3J0YWxJbmplY3RvciB7XG4gICAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIGluamVjdGlvblRva2Vucy5zZXQoTm92b0FzaWRlUmVmLCBhc2lkZVJlZik7XG5cbiAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuaW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcoY29uZmlnOiBBc2lkZUNvbmZpZyk6IEFzaWRlQ29uZmlnIHtcbiAgICAvLyBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpO1xuICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gY29uZmlnLmhhc0JhY2tkcm9wID8gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSA6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxTdHJhdGVneSxcbiAgICAgIGhhc0JhY2tkcm9wOiBjb25maWcuaGFzQmFja2Ryb3AsXG4gICAgICBiYWNrZHJvcENsYXNzOiBjb25maWcuYmFja2Ryb3BDbGFzcyxcbiAgICAgIHBhbmVsQ2xhc3M6IGNvbmZpZy5wYW5lbENsYXNzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==