@ptsecurity/mosaic 17.3.0 → 17.5.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 (161) hide show
  1. package/autocomplete/autocomplete-trigger.directive.d.ts +1 -0
  2. package/button/button.scss +14 -4
  3. package/checkbox/checkbox.d.ts +6 -6
  4. package/core/animation/animation.d.ts +2 -1
  5. package/core/common-behaviors/checkbox.d.ts +1 -0
  6. package/core/common-behaviors/index.d.ts +1 -0
  7. package/core/forms/index.d.ts +1 -0
  8. package/core/forms/validators.d.ts +22 -0
  9. package/core/locales/en-US.d.ts +17 -0
  10. package/core/locales/es-LA.d.ts +17 -0
  11. package/core/locales/fa-IR.d.ts +17 -0
  12. package/core/locales/index.d.ts +7 -0
  13. package/core/locales/locale-service.d.ts +175 -0
  14. package/core/locales/pt-BR.d.ts +17 -0
  15. package/core/locales/ru-RU.d.ts +17 -0
  16. package/core/locales/tk-TM.d.ts +64 -0
  17. package/core/locales/zh-CN.d.ts +17 -0
  18. package/core/pop-up/constants.d.ts +9 -0
  19. package/core/pop-up/pop-up-trigger.d.ts +28 -10
  20. package/core/pop-up/pop-up.d.ts +3 -3
  21. package/core/styles/theming/_theming.scss +1 -0
  22. package/datepicker/calendar-header.component.d.ts +11 -5
  23. package/datepicker/datepicker-input.directive.d.ts +10 -0
  24. package/dropdown/dropdown-trigger.directive.d.ts +1 -1
  25. package/ellipsis-center/ellipsis-center.directive.d.ts +3 -7
  26. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +13 -5
  27. package/esm2022/button/button.component.mjs +2 -2
  28. package/esm2022/checkbox/checkbox.mjs +5 -5
  29. package/esm2022/code-block/actionbar.component.mjs +1 -1
  30. package/esm2022/core/animation/animation.mjs +2 -1
  31. package/esm2022/core/common-behaviors/checkbox.mjs +2 -0
  32. package/esm2022/core/common-behaviors/index.mjs +2 -1
  33. package/esm2022/core/forms/index.mjs +2 -1
  34. package/esm2022/core/forms/validators.mjs +33 -0
  35. package/esm2022/core/locales/en-US.mjs +19 -2
  36. package/esm2022/core/locales/es-LA.mjs +19 -2
  37. package/esm2022/core/locales/fa-IR.mjs +19 -2
  38. package/esm2022/core/locales/index.mjs +8 -1
  39. package/esm2022/core/locales/locale-service.mjs +39 -3
  40. package/esm2022/core/locales/pt-BR.mjs +19 -2
  41. package/esm2022/core/locales/ru-RU.mjs +19 -2
  42. package/esm2022/core/locales/tk-TM.mjs +63 -0
  43. package/esm2022/core/locales/zh-CN.mjs +19 -2
  44. package/esm2022/core/pop-up/constants.mjs +6 -1
  45. package/esm2022/core/pop-up/pop-up-trigger.mjs +72 -23
  46. package/esm2022/core/pop-up/pop-up.mjs +7 -6
  47. package/esm2022/core/version.mjs +2 -2
  48. package/esm2022/datepicker/calendar-header.component.mjs +40 -10
  49. package/esm2022/datepicker/datepicker-input.directive.mjs +103 -23
  50. package/esm2022/dropdown/dropdown-trigger.directive.mjs +2 -2
  51. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +12 -23
  52. package/esm2022/file-upload/file-upload.mjs +39 -2
  53. package/esm2022/file-upload/file-upload.module.mjs +8 -1
  54. package/esm2022/file-upload/multiple-file-upload.component.mjs +159 -46
  55. package/esm2022/file-upload/single-file-upload.component.mjs +141 -41
  56. package/esm2022/form-field/form-field.mjs +6 -6
  57. package/esm2022/form-field/validate.directive.mjs +5 -2
  58. package/esm2022/input/input-number.mjs +31 -59
  59. package/esm2022/input/input-password.mjs +15 -26
  60. package/esm2022/input/input.mjs +3 -3
  61. package/esm2022/loader-overlay/loader-overlay.component.mjs +10 -8
  62. package/esm2022/modal/modal.component.mjs +3 -3
  63. package/esm2022/modal/modal.directive.mjs +38 -7
  64. package/esm2022/navbar/navbar-item.component.mjs +16 -30
  65. package/esm2022/popover/popover-confirm.component.mjs +11 -20
  66. package/esm2022/popover/popover.component.mjs +52 -29
  67. package/esm2022/progress-spinner/progress-spinner.component.mjs +2 -2
  68. package/esm2022/select/select-option.directive.mjs +7 -18
  69. package/esm2022/select/select.component.mjs +9 -6
  70. package/esm2022/sidebar/sidebar.component.mjs +10 -6
  71. package/esm2022/tabs/tab-group.component.mjs +1 -1
  72. package/esm2022/tabs/tab-header.component.mjs +2 -2
  73. package/esm2022/tabs/tab.component.mjs +3 -4
  74. package/esm2022/textarea/textarea.component.mjs +8 -4
  75. package/esm2022/timezone/timezone-option.directive.mjs +7 -18
  76. package/esm2022/title/title.directive.mjs +7 -18
  77. package/esm2022/toggle/toggle.component.mjs +103 -18
  78. package/esm2022/tooltip/tooltip.component.mjs +72 -45
  79. package/esm2022/tree-select/tree-select.component.mjs +9 -7
  80. package/fesm2022/ptsecurity-mosaic-autocomplete.mjs +12 -4
  81. package/fesm2022/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  82. package/fesm2022/ptsecurity-mosaic-button.mjs +2 -2
  83. package/fesm2022/ptsecurity-mosaic-button.mjs.map +1 -1
  84. package/fesm2022/ptsecurity-mosaic-checkbox.mjs +4 -4
  85. package/fesm2022/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  86. package/fesm2022/ptsecurity-mosaic-code-block.mjs +1 -1
  87. package/fesm2022/ptsecurity-mosaic-code-block.mjs.map +1 -1
  88. package/fesm2022/ptsecurity-mosaic-core.mjs +325 -37
  89. package/fesm2022/ptsecurity-mosaic-core.mjs.map +1 -1
  90. package/fesm2022/ptsecurity-mosaic-datepicker.mjs +141 -31
  91. package/fesm2022/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  92. package/fesm2022/ptsecurity-mosaic-dropdown.mjs +1 -1
  93. package/fesm2022/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  94. package/fesm2022/ptsecurity-mosaic-ellipsis-center.mjs +11 -19
  95. package/fesm2022/ptsecurity-mosaic-ellipsis-center.mjs.map +1 -1
  96. package/fesm2022/ptsecurity-mosaic-file-upload.mjs +330 -80
  97. package/fesm2022/ptsecurity-mosaic-file-upload.mjs.map +1 -1
  98. package/fesm2022/ptsecurity-mosaic-form-field.mjs +9 -6
  99. package/fesm2022/ptsecurity-mosaic-form-field.mjs.map +1 -1
  100. package/fesm2022/ptsecurity-mosaic-input.mjs +39 -75
  101. package/fesm2022/ptsecurity-mosaic-input.mjs.map +1 -1
  102. package/fesm2022/ptsecurity-mosaic-loader-overlay.mjs +10 -8
  103. package/fesm2022/ptsecurity-mosaic-loader-overlay.mjs.map +1 -1
  104. package/fesm2022/ptsecurity-mosaic-modal.mjs +32 -7
  105. package/fesm2022/ptsecurity-mosaic-modal.mjs.map +1 -1
  106. package/fesm2022/ptsecurity-mosaic-navbar.mjs +14 -26
  107. package/fesm2022/ptsecurity-mosaic-navbar.mjs.map +1 -1
  108. package/fesm2022/ptsecurity-mosaic-popover.mjs +58 -40
  109. package/fesm2022/ptsecurity-mosaic-popover.mjs.map +1 -1
  110. package/fesm2022/ptsecurity-mosaic-progress-spinner.mjs +2 -2
  111. package/fesm2022/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  112. package/fesm2022/ptsecurity-mosaic-select.mjs +25 -28
  113. package/fesm2022/ptsecurity-mosaic-select.mjs.map +1 -1
  114. package/fesm2022/ptsecurity-mosaic-sidebar.mjs +8 -4
  115. package/fesm2022/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  116. package/fesm2022/ptsecurity-mosaic-tabs.mjs +5 -6
  117. package/fesm2022/ptsecurity-mosaic-tabs.mjs.map +1 -1
  118. package/fesm2022/ptsecurity-mosaic-textarea.mjs +7 -3
  119. package/fesm2022/ptsecurity-mosaic-textarea.mjs.map +1 -1
  120. package/fesm2022/ptsecurity-mosaic-timezone.mjs +10 -17
  121. package/fesm2022/ptsecurity-mosaic-timezone.mjs.map +1 -1
  122. package/fesm2022/ptsecurity-mosaic-title.mjs +6 -14
  123. package/fesm2022/ptsecurity-mosaic-title.mjs.map +1 -1
  124. package/fesm2022/ptsecurity-mosaic-toggle.mjs +102 -17
  125. package/fesm2022/ptsecurity-mosaic-toggle.mjs.map +1 -1
  126. package/fesm2022/ptsecurity-mosaic-tooltip.mjs +71 -42
  127. package/fesm2022/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  128. package/fesm2022/ptsecurity-mosaic-tree-select.mjs +8 -6
  129. package/fesm2022/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  130. package/file-upload/_file-upload-theme.scss +23 -13
  131. package/file-upload/file-upload.d.ts +31 -3
  132. package/file-upload/file-upload.module.d.ts +11 -10
  133. package/file-upload/file-upload.scss +8 -1
  134. package/file-upload/multiple-file-upload.component.d.ts +62 -10
  135. package/file-upload/multiple-file-upload.component.scss +0 -8
  136. package/file-upload/single-file-upload.component.d.ts +55 -11
  137. package/file-upload/single-file-upload.component.scss +0 -8
  138. package/form-field/form-field.d.ts +1 -1
  139. package/form-field/validate.directive.d.ts +5 -2
  140. package/input/input-number.d.ts +10 -11
  141. package/input/input-password.d.ts +3 -6
  142. package/input/input.d.ts +1 -1
  143. package/loader-overlay/loader-overlay.component.d.ts +4 -3
  144. package/modal/modal.directive.d.ts +4 -1
  145. package/navbar/navbar-item.component.d.ts +5 -7
  146. package/package.json +24 -27
  147. package/popover/popover-confirm.component.d.ts +3 -6
  148. package/popover/popover.component.d.ts +14 -7
  149. package/prebuilt-themes/dark-theme.css +1 -1
  150. package/prebuilt-themes/default-theme.css +1 -1
  151. package/progress-spinner/progress-spinner.scss +1 -0
  152. package/select/select-option.directive.d.ts +3 -6
  153. package/sidebar/sidebar.component.d.ts +3 -2
  154. package/tabs/tab-header.scss +2 -2
  155. package/textarea/textarea.component.d.ts +1 -0
  156. package/timezone/timezone-option.directive.d.ts +3 -6
  157. package/title/title.directive.d.ts +3 -6
  158. package/toggle/_toggle-theme.scss +7 -1
  159. package/toggle/toggle.component.d.ts +23 -6
  160. package/toggle/toggle.scss +23 -0
  161. package/tooltip/tooltip.component.d.ts +25 -13
@@ -2,10 +2,11 @@ import * as i1 from '@angular/cdk/a11y';
2
2
  import { A11yModule } from '@angular/cdk/a11y';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Input, Output, NgModule } from '@angular/core';
6
- import { mixinTabIndex, mixinColor, mixinDisabled, ThemePalette, McCommonModule } from '@ptsecurity/mosaic/core';
5
+ import { EventEmitter, booleanAttribute, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, ViewChild, Input, Output, NgModule } from '@angular/core';
6
+ import { mixinTabIndex, mixinColor, mixinDisabled, ThemePalette, AnimationCurves, McCommonModule } from '@ptsecurity/mosaic/core';
7
7
  import { trigger, state, style, transition, animate } from '@angular/animations';
8
8
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
+ import { TransitionCheckState, MC_CHECKBOX_CLICK_ACTION } from '@ptsecurity/mosaic/checkbox';
9
10
 
10
11
  let nextUniqueId = 0;
11
12
  /** @docs-private */
@@ -37,21 +38,44 @@ class McToggleComponent extends McToggleMixinBase {
37
38
  set checked(value) {
38
39
  if (value !== this._checked) {
39
40
  this._checked = value;
41
+ this.setTransitionCheckState();
40
42
  this._changeDetectorRef.markForCheck();
41
43
  }
42
44
  }
43
- constructor(elementRef, _focusMonitor, _changeDetectorRef) {
45
+ /**
46
+ * Whether the toggle is indeterminate. This is also known as "mixed" mode and can be used to
47
+ * represent a checkbox with three states, e.g. a checkbox that represents a nested list of
48
+ * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately
49
+ * set to false.
50
+ */
51
+ get indeterminate() {
52
+ return this._indeterminate;
53
+ }
54
+ set indeterminate(value) {
55
+ const changed = value !== this._indeterminate;
56
+ this._indeterminate = value;
57
+ if (changed) {
58
+ this.setTransitionCheckState();
59
+ this.indeterminateChange.emit(this._indeterminate);
60
+ }
61
+ }
62
+ constructor(elementRef, _focusMonitor, _changeDetectorRef, clickAction) {
44
63
  super(elementRef);
45
64
  this.elementRef = elementRef;
46
65
  this._focusMonitor = _focusMonitor;
47
66
  this._changeDetectorRef = _changeDetectorRef;
67
+ this.clickAction = clickAction;
48
68
  this.labelPosition = 'right';
49
69
  this.ariaLabel = '';
50
70
  this.ariaLabelledby = null;
51
71
  this.name = null;
72
+ this.currentCheckState = TransitionCheckState.Init;
52
73
  this._disabled = false;
53
74
  this._checked = false;
75
+ this._indeterminate = false;
54
76
  this.change = new EventEmitter();
77
+ /** Event emitted when the toggle's `indeterminate` value changes. */
78
+ this.indeterminateChange = new EventEmitter();
55
79
  this.uniqueId = `mc-toggle-${++nextUniqueId}`;
56
80
  // tslint:disable-next-line:no-empty
57
81
  this.onTouchedCallback = () => { };
@@ -67,18 +91,45 @@ class McToggleComponent extends McToggleMixinBase {
67
91
  this._focusMonitor.focusVia(this.inputElement.nativeElement, 'keyboard');
68
92
  }
69
93
  getAriaChecked() {
70
- return this.checked;
94
+ return this.indeterminate ? 'mixed' : this.checked.toString();
71
95
  }
72
96
  onChangeEvent(event) {
73
97
  event.stopPropagation();
74
- this.updateModelValue();
75
- this.emitChangeEvent();
76
98
  }
77
99
  onLabelTextChange() {
78
100
  this._changeDetectorRef.markForCheck();
79
101
  }
80
102
  onInputClick(event) {
103
+ // We have to stop propagation for click events on the visual hidden input element.
104
+ // By default, when a user clicks on a label element, a generated click event will be
105
+ // dispatched on the associated input element. Since we are using a label element as our
106
+ // root container, the click event on the `checkbox` will be executed twice.
107
+ // The real click event will bubble up, and the generated click event also tries to bubble up.
108
+ // This will lead to multiple click events.
109
+ // Preventing bubbling for the second event will solve that issue.
81
110
  event.stopPropagation();
111
+ // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click
112
+ if (!this.disabled && this.clickAction !== 'noop') {
113
+ // When user manually click on the checkbox, `indeterminate` is set to false.
114
+ if (this.indeterminate && this.clickAction !== 'check') {
115
+ Promise.resolve().then(() => {
116
+ this._indeterminate = false;
117
+ this.indeterminateChange.emit(this._indeterminate);
118
+ });
119
+ }
120
+ this.updateModelValue();
121
+ this.transitionCheckState(this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);
122
+ // Emit our custom change event if the native input emitted one.
123
+ // It is important to only emit it, if the native input triggered one, because
124
+ // we don't want to trigger a change event, when the `checked` variable changes for example.
125
+ this.emitChangeEvent();
126
+ }
127
+ else if (!this.disabled && this.clickAction === 'noop') {
128
+ // Reset native input when clicked with noop. The native checkbox becomes checked after
129
+ // click, reset it to be align with `checked` value of `mc-checkbox`.
130
+ this.inputElement.nativeElement.checked = this.checked;
131
+ this.inputElement.nativeElement.indeterminate = this.indeterminate;
132
+ }
82
133
  }
83
134
  writeValue(value) {
84
135
  this.checked = !!value;
@@ -92,10 +143,25 @@ class McToggleComponent extends McToggleMixinBase {
92
143
  setDisabledState(isDisabled) {
93
144
  this.disabled = isDisabled;
94
145
  }
146
+ setTransitionCheckState() {
147
+ if (this._indeterminate) {
148
+ this.transitionCheckState(TransitionCheckState.Indeterminate);
149
+ }
150
+ else {
151
+ this.transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);
152
+ }
153
+ }
95
154
  updateModelValue() {
96
155
  this._checked = !this.checked;
97
156
  this.onTouchedCallback();
98
157
  }
158
+ transitionCheckState(newState) {
159
+ const oldState = this.currentCheckState;
160
+ if (oldState === newState) {
161
+ return;
162
+ }
163
+ this.currentCheckState = newState;
164
+ }
99
165
  emitChangeEvent() {
100
166
  const event = new McToggleChange();
101
167
  event.source = this;
@@ -103,14 +169,18 @@ class McToggleComponent extends McToggleMixinBase {
103
169
  this.onChangeCallback(this.checked);
104
170
  this.change.emit(event);
105
171
  }
106
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McToggleComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
107
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: McToggleComponent, selector: "mc-toggle", inputs: { color: "color", tabIndex: "tabIndex", labelPosition: "labelPosition", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], id: "id", name: "name", value: "value", disabled: "disabled", checked: "checked" }, outputs: { change: "change" }, host: { properties: { "id": "id", "attr.id": "id", "class.mc-disabled": "disabled", "class.mc-active": "checked" }, classAttribute: "mc-toggle" }, providers: [{
172
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McToggleComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: MC_CHECKBOX_CLICK_ACTION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
173
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.0", type: McToggleComponent, selector: "mc-toggle", inputs: { color: "color", tabIndex: "tabIndex", labelPosition: "labelPosition", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], id: "id", name: "name", value: "value", disabled: "disabled", checked: "checked", indeterminate: ["indeterminate", "indeterminate", booleanAttribute] }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "class.mc-disabled": "disabled", "class.mc-indeterminate": "indeterminate", "class.mc-active": "checked" }, classAttribute: "mc-toggle" }, providers: [{
108
174
  provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => McToggleComponent)), multi: true
109
- }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["mcToggle"], usesInheritance: true, ngImport: i0, template: "<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\n <input #input\n type=\"checkbox\"\n role=\"switch\"\n class=\"mc-toggle-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChangeEvent($event)\"/>\n <div class=\"mc-toggle-bar-outer-container\">\n <div class=\"mc-toggle-bar-inner-container\">\n <div class=\"mc-toggle__overlay\"></div>\n <div class=\"mc-toggle-bar\">\n <div class=\"mc-toggle__circle\" [@switch]=\"checked\"></div>\n </div>\n </div>\n </div>\n <div class=\"mc-toggle__content\"\n [class.left]=\"labelPosition === 'left'\"\n [class.right]=\"labelPosition === 'right'\">\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n </div>\n </div>\n</label>\n", styles: [".mc-toggle{display:inline-block}.mc-toggle .mc-toggle-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mc-toggle .mc-toggle-bar{box-sizing:border-box;position:relative;border-width:1px;border-style:solid}.mc-toggle .mc-toggle-bar.mc-toggle-label-position-left{order:1}.mc-toggle .mc-toggle-bar-outer-container{display:flex;align-items:center}.mc-toggle .mc-toggle-bar-inner-container{position:relative}.mc-toggle__container{display:flex;position:relative}.mc-toggle__container.left{flex-direction:row-reverse}.mc-toggle__content.left{margin-right:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__content.right{margin-left:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__circle{box-sizing:border-box;position:absolute;border-width:1px;border-style:solid;border-radius:100%;margin-top:-1px;margin-left:-1px;transform:translate(-1px)}.mc-toggle__overlay{position:absolute;top:0;left:0;z-index:1}.mc-toggle:not(.mc-toggle_small) .mc-toggle-bar{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px);border-radius:var(--mc-toggle-size-border-radius, 9px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__overlay{border-radius:var(--mc-toggle-size-border-radius, 9px);height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__circle{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-height, 16px)}.mc-toggle.mc-toggle_small .mc-toggle-bar{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px);border-radius:var(--mc-toggle-small-size-border-radius, 8px)}.mc-toggle.mc-toggle_small .mc-toggle__overlay{border-radius:var(--mc-toggle-small-size-border-radius, 8px);height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px)}.mc-toggle.mc-toggle_small .mc-toggle__circle{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-height, 14px)}.mc-toggle:not(.mc-disabled){cursor:pointer}\n"], animations: [
175
+ }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["mcToggle"], usesInheritance: true, ngImport: i0, template: "<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\n <input #input\n type=\"checkbox\"\n role=\"switch\"\n class=\"mc-toggle-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChangeEvent($event)\"/>\n <div class=\"mc-toggle-bar-outer-container\">\n <div class=\"mc-toggle-bar-inner-container\">\n <div class=\"mc-toggle__overlay\"></div>\n <div class=\"mc-toggle-bar\">\n <div class=\"mc-toggle__circle\" [@switch]=\"currentCheckState\"></div>\n <div class=\"mc-toggle__thumb\"></div>\n </div>\n </div>\n </div>\n <div class=\"mc-toggle__content\"\n [class.left]=\"labelPosition === 'left'\"\n [class.right]=\"labelPosition === 'right'\">\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n </div>\n </div>\n</label>\n", styles: [".mc-toggle{display:inline-block}.mc-toggle .mc-toggle-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mc-toggle .mc-toggle-bar{box-sizing:border-box;position:relative;border-width:1px;border-style:solid}.mc-toggle .mc-toggle-bar.mc-toggle-label-position-left{order:1}.mc-toggle .mc-toggle-bar .mc-toggle__thumb{display:none;justify-content:center;align-items:center;height:100%}.mc-toggle .mc-toggle-bar .mc-toggle__thumb:after{content:\"\";display:block;height:2px;width:10px}.mc-toggle.mc-indeterminate .mc-toggle-bar .mc-toggle__thumb{display:flex}.mc-toggle .mc-toggle-bar-outer-container{display:flex;align-items:center}.mc-toggle .mc-toggle-bar-inner-container{position:relative}.mc-toggle__container{display:flex;position:relative}.mc-toggle__container.left{flex-direction:row-reverse}.mc-toggle__content.left{margin-right:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__content.right{margin-left:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__circle{box-sizing:border-box;position:absolute;border-width:1px;border-style:solid;border-radius:100%;margin-top:-1px;margin-left:-1px;transform:translate(-1px)}.mc-toggle__overlay{position:absolute;top:0;left:0;z-index:1}.mc-toggle:not(.mc-toggle_small) .mc-toggle-bar{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px);border-radius:var(--mc-toggle-size-border-radius, 9px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__overlay{border-radius:var(--mc-toggle-size-border-radius, 9px);height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__circle{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-height, 16px)}.mc-toggle.mc-toggle_small .mc-toggle-bar{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px);border-radius:var(--mc-toggle-small-size-border-radius, 8px)}.mc-toggle.mc-toggle_small .mc-toggle__overlay{border-radius:var(--mc-toggle-small-size-border-radius, 8px);height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px)}.mc-toggle.mc-toggle_small .mc-toggle__circle{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-height, 14px)}.mc-toggle:not(.mc-disabled){cursor:pointer}\n"], animations: [
110
176
  trigger('switch', [
111
- state('true', style({ left: '50%' })),
112
- state('false', style({ left: '1px' })),
113
- transition('true <=> false', animate('150ms'))
177
+ state(TransitionCheckState.Init, style({ left: '1px' })),
178
+ state(TransitionCheckState.Unchecked, style({ left: '1px' })),
179
+ state(TransitionCheckState.Indeterminate, style({ left: '27%', visibility: 'hidden' })),
180
+ state(TransitionCheckState.Checked, style({ left: '50%' })),
181
+ transition(`${TransitionCheckState.Init} => ${TransitionCheckState.Checked}`, animate('150ms')),
182
+ transition(`${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`, animate('150ms')),
183
+ transition(`${TransitionCheckState.Indeterminate} => *`, animate(`50ms ${AnimationCurves.EaseInOut}`))
114
184
  ])
115
185
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
116
186
  }
@@ -121,17 +191,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
121
191
  '[id]': 'id',
122
192
  '[attr.id]': 'id',
123
193
  '[class.mc-disabled]': 'disabled',
194
+ '[class.mc-indeterminate]': 'indeterminate',
124
195
  '[class.mc-active]': 'checked'
125
196
  }, animations: [
126
197
  trigger('switch', [
127
- state('true', style({ left: '50%' })),
128
- state('false', style({ left: '1px' })),
129
- transition('true <=> false', animate('150ms'))
198
+ state(TransitionCheckState.Init, style({ left: '1px' })),
199
+ state(TransitionCheckState.Unchecked, style({ left: '1px' })),
200
+ state(TransitionCheckState.Indeterminate, style({ left: '27%', visibility: 'hidden' })),
201
+ state(TransitionCheckState.Checked, style({ left: '50%' })),
202
+ transition(`${TransitionCheckState.Init} => ${TransitionCheckState.Checked}`, animate('150ms')),
203
+ transition(`${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`, animate('150ms')),
204
+ transition(`${TransitionCheckState.Indeterminate} => *`, animate(`50ms ${AnimationCurves.EaseInOut}`))
130
205
  ])
131
206
  ], providers: [{
132
207
  provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => McToggleComponent)), multi: true
133
- }], template: "<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\n <input #input\n type=\"checkbox\"\n role=\"switch\"\n class=\"mc-toggle-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChangeEvent($event)\"/>\n <div class=\"mc-toggle-bar-outer-container\">\n <div class=\"mc-toggle-bar-inner-container\">\n <div class=\"mc-toggle__overlay\"></div>\n <div class=\"mc-toggle-bar\">\n <div class=\"mc-toggle__circle\" [@switch]=\"checked\"></div>\n </div>\n </div>\n </div>\n <div class=\"mc-toggle__content\"\n [class.left]=\"labelPosition === 'left'\"\n [class.right]=\"labelPosition === 'right'\">\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n </div>\n </div>\n</label>\n", styles: [".mc-toggle{display:inline-block}.mc-toggle .mc-toggle-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mc-toggle .mc-toggle-bar{box-sizing:border-box;position:relative;border-width:1px;border-style:solid}.mc-toggle .mc-toggle-bar.mc-toggle-label-position-left{order:1}.mc-toggle .mc-toggle-bar-outer-container{display:flex;align-items:center}.mc-toggle .mc-toggle-bar-inner-container{position:relative}.mc-toggle__container{display:flex;position:relative}.mc-toggle__container.left{flex-direction:row-reverse}.mc-toggle__content.left{margin-right:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__content.right{margin-left:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__circle{box-sizing:border-box;position:absolute;border-width:1px;border-style:solid;border-radius:100%;margin-top:-1px;margin-left:-1px;transform:translate(-1px)}.mc-toggle__overlay{position:absolute;top:0;left:0;z-index:1}.mc-toggle:not(.mc-toggle_small) .mc-toggle-bar{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px);border-radius:var(--mc-toggle-size-border-radius, 9px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__overlay{border-radius:var(--mc-toggle-size-border-radius, 9px);height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__circle{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-height, 16px)}.mc-toggle.mc-toggle_small .mc-toggle-bar{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px);border-radius:var(--mc-toggle-small-size-border-radius, 8px)}.mc-toggle.mc-toggle_small .mc-toggle__overlay{border-radius:var(--mc-toggle-small-size-border-radius, 8px);height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px)}.mc-toggle.mc-toggle_small .mc-toggle__circle{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-height, 14px)}.mc-toggle:not(.mc-disabled){cursor:pointer}\n"] }]
134
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }], propDecorators: { inputElement: [{
208
+ }], template: "<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\n <input #input\n type=\"checkbox\"\n role=\"switch\"\n class=\"mc-toggle-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChangeEvent($event)\"/>\n <div class=\"mc-toggle-bar-outer-container\">\n <div class=\"mc-toggle-bar-inner-container\">\n <div class=\"mc-toggle__overlay\"></div>\n <div class=\"mc-toggle-bar\">\n <div class=\"mc-toggle__circle\" [@switch]=\"currentCheckState\"></div>\n <div class=\"mc-toggle__thumb\"></div>\n </div>\n </div>\n </div>\n <div class=\"mc-toggle__content\"\n [class.left]=\"labelPosition === 'left'\"\n [class.right]=\"labelPosition === 'right'\">\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n </div>\n </div>\n</label>\n", styles: [".mc-toggle{display:inline-block}.mc-toggle .mc-toggle-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mc-toggle .mc-toggle-bar{box-sizing:border-box;position:relative;border-width:1px;border-style:solid}.mc-toggle .mc-toggle-bar.mc-toggle-label-position-left{order:1}.mc-toggle .mc-toggle-bar .mc-toggle__thumb{display:none;justify-content:center;align-items:center;height:100%}.mc-toggle .mc-toggle-bar .mc-toggle__thumb:after{content:\"\";display:block;height:2px;width:10px}.mc-toggle.mc-indeterminate .mc-toggle-bar .mc-toggle__thumb{display:flex}.mc-toggle .mc-toggle-bar-outer-container{display:flex;align-items:center}.mc-toggle .mc-toggle-bar-inner-container{position:relative}.mc-toggle__container{display:flex;position:relative}.mc-toggle__container.left{flex-direction:row-reverse}.mc-toggle__content.left{margin-right:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__content.right{margin-left:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__circle{box-sizing:border-box;position:absolute;border-width:1px;border-style:solid;border-radius:100%;margin-top:-1px;margin-left:-1px;transform:translate(-1px)}.mc-toggle__overlay{position:absolute;top:0;left:0;z-index:1}.mc-toggle:not(.mc-toggle_small) .mc-toggle-bar{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px);border-radius:var(--mc-toggle-size-border-radius, 9px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__overlay{border-radius:var(--mc-toggle-size-border-radius, 9px);height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__circle{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-height, 16px)}.mc-toggle.mc-toggle_small .mc-toggle-bar{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px);border-radius:var(--mc-toggle-small-size-border-radius, 8px)}.mc-toggle.mc-toggle_small .mc-toggle__overlay{border-radius:var(--mc-toggle-small-size-border-radius, 8px);height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px)}.mc-toggle.mc-toggle_small .mc-toggle__circle{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-height, 14px)}.mc-toggle:not(.mc-disabled){cursor:pointer}\n"] }]
209
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
210
+ type: Optional
211
+ }, {
212
+ type: Inject,
213
+ args: [MC_CHECKBOX_CLICK_ACTION]
214
+ }] }], propDecorators: { inputElement: [{
135
215
  type: ViewChild,
136
216
  args: ['input', { static: false }]
137
217
  }], labelPosition: [{
@@ -152,8 +232,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
152
232
  type: Input
153
233
  }], checked: [{
154
234
  type: Input
235
+ }], indeterminate: [{
236
+ type: Input,
237
+ args: [{ transform: booleanAttribute }]
155
238
  }], change: [{
156
239
  type: Output
240
+ }], indeterminateChange: [{
241
+ type: Output
157
242
  }] } });
158
243
 
159
244
  class McToggleModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-toggle.mjs","sources":["../../../packages/mosaic/toggle/toggle.component.ts","../../../packages/mosaic/toggle/toggle.component.html","../../../packages/mosaic/toggle/toggle.module.ts","../../../packages/mosaic/toggle/ptsecurity-mosaic-toggle.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n ThemePalette,\n CanColor, CanColorCtor,\n CanDisable, CanDisableCtor,\n HasTabIndex, HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinTabIndex\n} from '@ptsecurity/mosaic/core';\n\n\nlet nextUniqueId = 0;\n\ntype ToggleLabelPositionType = 'left' | 'right';\n\n/** @docs-private */\nexport class McToggleBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n/** @docs-private */\nexport const McToggleMixinBase:\n HasTabIndexCtor &\n CanDisableCtor &\n CanColorCtor &\n typeof McToggleBase = mixinTabIndex(mixinColor(mixinDisabled(McToggleBase), ThemePalette.Primary));\n\nexport class McToggleChange {\n source: McToggleComponent;\n checked: boolean;\n}\n\n@Component({\n selector: 'mc-toggle',\n exportAs: 'mcToggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n inputs: ['color', 'tabIndex'],\n host: {\n class: 'mc-toggle',\n '[id]': 'id',\n '[attr.id]': 'id',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-active]': 'checked'\n },\n animations: [\n trigger('switch', [\n state('true' , style({ left: '50%' })),\n state('false', style({ left: '1px' })),\n transition('true <=> false', animate('150ms'))\n ])\n ],\n providers: [{\n provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => McToggleComponent), multi: true\n }]\n})\nexport class McToggleComponent extends McToggleMixinBase\n implements ControlValueAccessor, CanColor, CanDisable, HasTabIndex {\n\n @ViewChild('input', { static: false }) inputElement: ElementRef;\n\n @Input() labelPosition: ToggleLabelPositionType = 'right';\n\n @Input('aria-label') ariaLabel: string = '';\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n @Input() id: string;\n\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n @Input() name: string | null = null;\n\n @Input() value: string;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n if (value !== this._disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _disabled: boolean = false;\n\n get checked() {\n return this._checked;\n }\n\n @Input()\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _checked: boolean = false;\n\n @Output() readonly change: EventEmitter<McToggleChange> = new EventEmitter<McToggleChange>();\n\n private uniqueId: string = `mc-toggle-${++nextUniqueId}`;\n\n constructor(\n public elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n super(elementRef);\n\n this.id = this.uniqueId;\n\n this._focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n focus(): void {\n this._focusMonitor.focusVia(this.inputElement.nativeElement, 'keyboard');\n }\n\n getAriaChecked(): boolean {\n return this.checked;\n }\n\n onChangeEvent(event: Event) {\n event.stopPropagation();\n\n this.updateModelValue();\n this.emitChangeEvent();\n }\n\n onLabelTextChange() {\n this._changeDetectorRef.markForCheck();\n }\n\n onInputClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n // tslint:disable-next-line:no-empty\n private onTouchedCallback = () => {};\n\n // tslint:disable-next-line:no-empty\n private onChangeCallback = (_: any) => {};\n\n private updateModelValue() {\n this._checked = !this.checked;\n this.onTouchedCallback();\n }\n\n private emitChangeEvent() {\n const event = new McToggleChange();\n event.source = this;\n event.checked = this.checked;\n\n this.onChangeCallback(this.checked);\n this.change.emit(event);\n }\n}\n","<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\n <input #input\n type=\"checkbox\"\n role=\"switch\"\n class=\"mc-toggle-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChangeEvent($event)\"/>\n <div class=\"mc-toggle-bar-outer-container\">\n <div class=\"mc-toggle-bar-inner-container\">\n <div class=\"mc-toggle__overlay\"></div>\n <div class=\"mc-toggle-bar\">\n <div class=\"mc-toggle__circle\" [@switch]=\"checked\"></div>\n </div>\n </div>\n </div>\n <div class=\"mc-toggle__content\"\n [class.left]=\"labelPosition === 'left'\"\n [class.right]=\"labelPosition === 'right'\">\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n </div>\n </div>\n</label>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { McCommonModule } from '@ptsecurity/mosaic/core';\n\nimport { McToggleComponent } from './toggle.component';\n\n\n@NgModule({\n imports: [CommonModule, A11yModule, McCommonModule],\n exports: [McToggleComponent],\n declarations: [McToggleComponent]\n})\nexport class McToggleModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ptsecurity-mosaic-toggle.mjs","sources":["../../../packages/mosaic/toggle/toggle.component.ts","../../../packages/mosaic/toggle/toggle.component.html","../../../packages/mosaic/toggle/toggle.module.ts","../../../packages/mosaic/toggle/ptsecurity-mosaic-toggle.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef, Inject,\n Input, Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MC_CHECKBOX_CLICK_ACTION, McCheckboxClickAction, TransitionCheckState } from '@ptsecurity/mosaic/checkbox';\nimport {\n ThemePalette,\n CanColor, CanColorCtor,\n CanDisable, CanDisableCtor,\n HasTabIndex, HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinTabIndex, AnimationCurves,\n checkedState\n} from '@ptsecurity/mosaic/core';\n\n\nlet nextUniqueId = 0;\n\ntype ToggleLabelPositionType = 'left' | 'right';\n\n/** @docs-private */\nexport class McToggleBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n/** @docs-private */\nexport const McToggleMixinBase:\n HasTabIndexCtor &\n CanDisableCtor &\n CanColorCtor &\n typeof McToggleBase = mixinTabIndex(mixinColor(mixinDisabled(McToggleBase), ThemePalette.Primary));\n\nexport class McToggleChange {\n source: McToggleComponent;\n checked: boolean;\n}\n\n@Component({\n selector: 'mc-toggle',\n exportAs: 'mcToggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n inputs: ['color', 'tabIndex'],\n host: {\n class: 'mc-toggle',\n '[id]': 'id',\n '[attr.id]': 'id',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-indeterminate]': 'indeterminate',\n '[class.mc-active]': 'checked'\n },\n animations: [\n trigger('switch', [\n state(TransitionCheckState.Init, style({ left: '1px' })),\n state(TransitionCheckState.Unchecked, style({ left: '1px' })),\n state(TransitionCheckState.Indeterminate, style({ left: '27%', visibility: 'hidden' })),\n state(TransitionCheckState.Checked, style({ left: '50%' })),\n transition(`${TransitionCheckState.Init} => ${TransitionCheckState.Checked}`, animate('150ms')),\n transition(`${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`, animate('150ms')),\n transition(`${TransitionCheckState.Indeterminate} => *`, animate(`50ms ${AnimationCurves.EaseInOut}`))\n ])\n ],\n providers: [{\n provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => McToggleComponent), multi: true\n }]\n})\nexport class McToggleComponent extends McToggleMixinBase\n implements ControlValueAccessor, CanColor, CanDisable, HasTabIndex {\n\n @ViewChild('input', { static: false }) inputElement: ElementRef<HTMLInputElement>;\n\n @Input() labelPosition: ToggleLabelPositionType = 'right';\n\n @Input('aria-label') ariaLabel: string = '';\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n @Input() id: string;\n\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n @Input() name: string | null = null;\n\n @Input() value: string;\n\n currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n if (value !== this._disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _disabled: boolean = false;\n\n get checked() {\n return this._checked;\n }\n\n @Input()\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n this.setTransitionCheckState();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _checked: boolean = false;\n\n /**\n * Whether the toggle is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n @Input({ transform: booleanAttribute })\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n set indeterminate(value: boolean) {\n const changed = value !== this._indeterminate;\n this._indeterminate = value;\n\n if (changed) {\n this.setTransitionCheckState();\n this.indeterminateChange.emit(this._indeterminate);\n }\n }\n\n private _indeterminate: boolean = false;\n\n @Output() readonly change: EventEmitter<McToggleChange> = new EventEmitter<McToggleChange>();\n\n /** Event emitted when the toggle's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private uniqueId: string = `mc-toggle-${++nextUniqueId}`;\n\n constructor(\n public elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_CHECKBOX_CLICK_ACTION) private clickAction: McCheckboxClickAction\n ) {\n super(elementRef);\n\n this.id = this.uniqueId;\n\n this._focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n focus(): void {\n this._focusMonitor.focusVia(this.inputElement.nativeElement, 'keyboard');\n }\n\n getAriaChecked(): checkedState {\n return this.indeterminate ? 'mixed' : this.checked.toString() as 'true' | 'false';\n }\n\n onChangeEvent(event: Event) {\n event.stopPropagation();\n }\n\n onLabelTextChange() {\n this._changeDetectorRef.markForCheck();\n }\n\n onInputClick(event: MouseEvent) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `checkbox` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && this.clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && this.clickAction !== 'check') {\n\n Promise.resolve().then(() => {\n this._indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n\n this.updateModelValue();\n this.transitionCheckState(\n this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this.emitChangeEvent();\n } else if (!this.disabled && this.clickAction === 'noop') {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mc-checkbox`.\n this.inputElement.nativeElement.checked = this.checked;\n this.inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n private setTransitionCheckState() {\n if (this._indeterminate) {\n this.transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this.transitionCheckState(\n this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n }\n\n // tslint:disable-next-line:no-empty\n private onTouchedCallback = () => {};\n\n // tslint:disable-next-line:no-empty\n private onChangeCallback = (_: any) => {};\n\n private updateModelValue() {\n this._checked = !this.checked;\n this.onTouchedCallback();\n }\n\n private transitionCheckState(newState: TransitionCheckState) {\n const oldState = this.currentCheckState;\n\n if (oldState === newState) { return; }\n\n this.currentCheckState = newState;\n }\n\n private emitChangeEvent() {\n const event = new McToggleChange();\n event.source = this;\n event.checked = this.checked;\n\n this.onChangeCallback(this.checked);\n this.change.emit(event);\n }\n}\n","<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\n <input #input\n type=\"checkbox\"\n role=\"switch\"\n class=\"mc-toggle-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (click)=\"onInputClick($event)\"\n (change)=\"onChangeEvent($event)\"/>\n <div class=\"mc-toggle-bar-outer-container\">\n <div class=\"mc-toggle-bar-inner-container\">\n <div class=\"mc-toggle__overlay\"></div>\n <div class=\"mc-toggle-bar\">\n <div class=\"mc-toggle__circle\" [@switch]=\"currentCheckState\"></div>\n <div class=\"mc-toggle__thumb\"></div>\n </div>\n </div>\n </div>\n <div class=\"mc-toggle__content\"\n [class.left]=\"labelPosition === 'left'\"\n [class.right]=\"labelPosition === 'right'\">\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n </div>\n </div>\n</label>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { McCommonModule } from '@ptsecurity/mosaic/core';\n\nimport { McToggleComponent } from './toggle.component';\n\n\n@NgModule({\n imports: [CommonModule, A11yModule, McCommonModule],\n exports: [McToggleComponent],\n declarations: [McToggleComponent]\n})\nexport class McToggleModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,11 @@
1
- import * as i2 from '@angular/cdk/overlay';
2
1
  import { Overlay, OverlayModule } from '@angular/cdk/overlay';
3
2
  import * as i1 from '@angular/common';
4
3
  import { CommonModule } from '@angular/common';
5
4
  import * as i0 from '@angular/core';
6
- import { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, EventEmitter, Directive, Optional, Input, Output, NgModule } from '@angular/core';
7
- import * as i4 from '@angular/cdk/a11y';
8
- import * as i3 from '@angular/cdk/bidi';
5
+ import { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, inject, EventEmitter, booleanAttribute, Directive, Input, Output, NgModule } from '@angular/core';
6
+ import { FocusMonitor } from '@angular/cdk/a11y';
9
7
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
- import { McPopUp, McPopUpTrigger, PopUpTriggers, POSITION_TO_CSS_MAP } from '@ptsecurity/mosaic/core';
8
+ import { McPopUp, McPopUpTrigger, PopUpTriggers, MC_PARENT_POPUP, POSITION_TO_CSS_MAP, PopUpPlacements } from '@ptsecurity/mosaic/core';
11
9
  import { merge, EMPTY } from 'rxjs';
12
10
  import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';
13
11
 
@@ -43,8 +41,8 @@ const MC_TOOLTIP_OPEN_TIME_PROVIDER = {
43
41
  };
44
42
  const MIN_TIME_FOR_DELAY = 2000;
45
43
  class McTooltipComponent extends McPopUp {
46
- constructor(changeDetectorRef, openTime) {
47
- super(changeDetectorRef);
44
+ constructor(openTime) {
45
+ super();
48
46
  this.openTime = openTime;
49
47
  this.prefix = 'mc-tooltip';
50
48
  }
@@ -62,13 +60,13 @@ class McTooltipComponent extends McPopUp {
62
60
  };
63
61
  super.updateClassMap(placement, customClass, classMap);
64
62
  }
65
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McTooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: MC_TOOLTIP_OPEN_TIME }], target: i0.ɵɵFactoryTarget.Component }); }
63
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McTooltipComponent, deps: [{ token: MC_TOOLTIP_OPEN_TIME }], target: i0.ɵɵFactoryTarget.Component }); }
66
64
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: McTooltipComponent, selector: "mc-tooltip-component", providers: [MC_TOOLTIP_OPEN_TIME_PROVIDER], usesInheritance: true, ngImport: i0, template: "<div class=\"mc-tooltip\"\n [ngClass]=\"classMap\"\n [@state]=\"visibility\"\n (@state.start)=\"animationStart()\"\n (@state.done)=\"animationDone($event)\">\n\n <div class=\"mc-tooltip__inner\">\n <div class=\"mc-tooltip__arrow\"></div>\n\n <div class=\"mc-tooltip__header\" *ngIf=\"header\">\n <ng-container *ngIf=\"isTemplateRef(header)\" [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\"></ng-container>\n <ng-container *ngIf=\"!isTemplateRef(header)\">\n <div>{{ header }}</div>\n </ng-container>\n </div>\n <div class=\"mc-tooltip__content\">\n <ng-container *ngIf=\"isTemplateRef(content)\" [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\"></ng-container>\n <ng-container *ngIf=\"!isTemplateRef(content)\">\n <div>{{ content }}</div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".mc-tooltip__inner{border-radius:var(--mc-tooltip-size-border-radius, 4px);word-break:break-word}.mc-tooltip{box-sizing:border-box;border-radius:var(--mc-tooltip-size-border-radius, 4px);z-index:1060;white-space:pre-line}.mc-tooltip.mc-tooltip_placement-top,.mc-tooltip.mc-tooltip_placement-top-left,.mc-tooltip.mc-tooltip_placement-top-right{margin-bottom:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-right,.mc-tooltip.mc-tooltip_placement-right-top,.mc-tooltip.mc-tooltip_placement-right-bottom{margin-left:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-bottom,.mc-tooltip.mc-tooltip_placement-bottom-left,.mc-tooltip.mc-tooltip_placement-bottom-right{margin-top:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-left,.mc-tooltip.mc-tooltip_placement-left-top,.mc-tooltip.mc-tooltip_placement-left-bottom{margin-right:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_default,.mc-tooltip.mc-tooltip_warning{max-width:var(--mc-tooltip-size-max-width, 300px)}.mc-tooltip.mc-tooltip_default .mc-tooltip__inner,.mc-tooltip.mc-tooltip_warning .mc-tooltip__inner{padding:var(--mc-tooltip-size-padding, 8px 16px)}.mc-tooltip.mc-tooltip_extended{max-height:var(--mc-extended-tooltip-size-max-height, 480px)}.mc-tooltip.mc-tooltip_extended .mc-tooltip__header{height:var(--mc-extended-tooltip-header-size-height, 40px);padding:var(--mc-extended-tooltip-header-size-padding, 8px 16px);box-sizing:border-box;border-top-left-radius:var(--mc-tooltip-size-border-radius, 4px);border-top-right-radius:var(--mc-tooltip-size-border-radius, 4px)}.mc-tooltip.mc-tooltip_extended .mc-tooltip__content{padding:var(--mc-extended-tooltip-size-padding, 8px 16px)}.mc-tooltip__arrow{position:absolute;width:var(--mc-tooltip-size-arrow-size, 12px);height:var(--mc-tooltip-size-arrow-size, 12px);transform:rotate(45deg)}.mc-tooltip_placement-top .mc-tooltip__arrow{bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:50%;margin-left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-top-left .mc-tooltip__arrow{bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-top-right .mc-tooltip__arrow{bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);right:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-right .mc-tooltip__arrow{left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:50%;margin-top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-right-top .mc-tooltip__arrow{left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-right-bottom .mc-tooltip__arrow{left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);bottom:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-left .mc-tooltip__arrow{right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:50%;margin-top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-left-top .mc-tooltip__arrow{right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-left-bottom .mc-tooltip__arrow{right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);bottom:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-bottom .mc-tooltip__arrow{top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:50%;margin-left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-bottom-left .mc-tooltip__arrow{top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-bottom-right .mc-tooltip__arrow{top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);right:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [mcTooltipAnimations.tooltipState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
67
65
  }
68
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McTooltipComponent, decorators: [{
69
67
  type: Component,
70
68
  args: [{ selector: 'mc-tooltip-component', animations: [mcTooltipAnimations.tooltipState], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MC_TOOLTIP_OPEN_TIME_PROVIDER], template: "<div class=\"mc-tooltip\"\n [ngClass]=\"classMap\"\n [@state]=\"visibility\"\n (@state.start)=\"animationStart()\"\n (@state.done)=\"animationDone($event)\">\n\n <div class=\"mc-tooltip__inner\">\n <div class=\"mc-tooltip__arrow\"></div>\n\n <div class=\"mc-tooltip__header\" *ngIf=\"header\">\n <ng-container *ngIf=\"isTemplateRef(header)\" [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\"></ng-container>\n <ng-container *ngIf=\"!isTemplateRef(header)\">\n <div>{{ header }}</div>\n </ng-container>\n </div>\n <div class=\"mc-tooltip__content\">\n <ng-container *ngIf=\"isTemplateRef(content)\" [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\"></ng-container>\n <ng-container *ngIf=\"!isTemplateRef(content)\">\n <div>{{ content }}</div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".mc-tooltip__inner{border-radius:var(--mc-tooltip-size-border-radius, 4px);word-break:break-word}.mc-tooltip{box-sizing:border-box;border-radius:var(--mc-tooltip-size-border-radius, 4px);z-index:1060;white-space:pre-line}.mc-tooltip.mc-tooltip_placement-top,.mc-tooltip.mc-tooltip_placement-top-left,.mc-tooltip.mc-tooltip_placement-top-right{margin-bottom:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-right,.mc-tooltip.mc-tooltip_placement-right-top,.mc-tooltip.mc-tooltip_placement-right-bottom{margin-left:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-bottom,.mc-tooltip.mc-tooltip_placement-bottom-left,.mc-tooltip.mc-tooltip_placement-bottom-right{margin-top:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_placement-left,.mc-tooltip.mc-tooltip_placement-left-top,.mc-tooltip.mc-tooltip_placement-left-bottom{margin-right:calc(var(--mc-tooltip-size-trigger-margin, 9px))}.mc-tooltip.mc-tooltip_default,.mc-tooltip.mc-tooltip_warning{max-width:var(--mc-tooltip-size-max-width, 300px)}.mc-tooltip.mc-tooltip_default .mc-tooltip__inner,.mc-tooltip.mc-tooltip_warning .mc-tooltip__inner{padding:var(--mc-tooltip-size-padding, 8px 16px)}.mc-tooltip.mc-tooltip_extended{max-height:var(--mc-extended-tooltip-size-max-height, 480px)}.mc-tooltip.mc-tooltip_extended .mc-tooltip__header{height:var(--mc-extended-tooltip-header-size-height, 40px);padding:var(--mc-extended-tooltip-header-size-padding, 8px 16px);box-sizing:border-box;border-top-left-radius:var(--mc-tooltip-size-border-radius, 4px);border-top-right-radius:var(--mc-tooltip-size-border-radius, 4px)}.mc-tooltip.mc-tooltip_extended .mc-tooltip__content{padding:var(--mc-extended-tooltip-size-padding, 8px 16px)}.mc-tooltip__arrow{position:absolute;width:var(--mc-tooltip-size-arrow-size, 12px);height:var(--mc-tooltip-size-arrow-size, 12px);transform:rotate(45deg)}.mc-tooltip_placement-top .mc-tooltip__arrow{bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:50%;margin-left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-top-left .mc-tooltip__arrow{bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-top-right .mc-tooltip__arrow{bottom:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);right:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-right .mc-tooltip__arrow{left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:50%;margin-top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-right-top .mc-tooltip__arrow{left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-right-bottom .mc-tooltip__arrow{left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);bottom:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-left .mc-tooltip__arrow{right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:50%;margin-top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-left-top .mc-tooltip__arrow{right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);top:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-left-bottom .mc-tooltip__arrow{right:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);bottom:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-bottom .mc-tooltip__arrow{top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:50%;margin-left:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2)}.mc-tooltip_placement-bottom-left .mc-tooltip__arrow{top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);left:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}.mc-tooltip_placement-bottom-right .mc-tooltip__arrow{top:calc((var(--mc-tooltip-size-arrow-size, 12px) - 1px) / -2);right:calc(18px - var(--mc-tooltip-size-trigger-margin, 9px) / 2)}\n"] }]
71
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
69
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
72
70
  type: Inject,
73
71
  args: [MC_TOOLTIP_OPEN_TIME]
74
72
  }] }] });
@@ -149,9 +147,19 @@ class McTooltipTrigger extends McPopUpTrigger {
149
147
  get hasClickInTrigger() {
150
148
  return this.trigger.includes(PopUpTriggers.Click);
151
149
  }
152
- constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor) {
153
- super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
154
- this.focusMonitor = focusMonitor;
150
+ constructor() {
151
+ super();
152
+ this.parentPopup = inject(MC_PARENT_POPUP, { optional: true });
153
+ /**
154
+ * default offset + arrow position shift
155
+ * @docs-private
156
+ */
157
+ this.arrowOffset = 19.5;
158
+ /**
159
+ * Positions the tooltip relative to the mouse cursor. Only available for top and bottom mcPlacement.
160
+ * Does not work with mcPlacementPriority.
161
+ */
162
+ this.relativeToPointer = false;
155
163
  this.enterDelay = 400;
156
164
  this.leaveDelay = 0;
157
165
  // tslint:disable-next-line:naming-convention
@@ -159,12 +167,15 @@ class McTooltipTrigger extends McPopUpTrigger {
159
167
  this._context = null;
160
168
  this.placementChange = new EventEmitter();
161
169
  this.visibleChange = new EventEmitter();
170
+ this.scrollStrategy = inject(MC_TOOLTIP_SCROLL_STRATEGY);
171
+ this.focusMonitor = inject(FocusMonitor);
162
172
  this.originSelector = '.mc-tooltip';
163
173
  this.overlayConfig = {
164
174
  panelClass: 'mc-tooltip-panel'
165
175
  };
166
176
  this.modifier = TooltipModifier.Default;
167
177
  this.focusMonitor?.monitor(this.elementRef.nativeElement);
178
+ this.parentPopup?.closedStream.subscribe(() => this.hide());
168
179
  }
169
180
  ngOnDestroy() {
170
181
  this.focusMonitor?.stopMonitoring(this.elementRef.nativeElement);
@@ -176,6 +187,13 @@ class McTooltipTrigger extends McPopUpTrigger {
176
187
  return;
177
188
  }
178
189
  super.show(delay);
190
+ if (this.relativeToPointer) {
191
+ this.applyRelativeToPointer();
192
+ }
193
+ }
194
+ showForElement(element) {
195
+ this.show();
196
+ this.strategy.setOrigin(element);
179
197
  }
180
198
  updateData() {
181
199
  if (!this.instance) {
@@ -184,6 +202,7 @@ class McTooltipTrigger extends McPopUpTrigger {
184
202
  this.instance.content = this.content;
185
203
  this.instance.context = this.context && { $implicit: this.context };
186
204
  this.instance.detectChanges();
205
+ this.updatePosition(true);
187
206
  }
188
207
  closingActions() {
189
208
  return merge(this.hasClickInTrigger ? this.overlayRef.outsidePointerEvents() : EMPTY, this.overlayRef.detachments());
@@ -198,8 +217,30 @@ class McTooltipTrigger extends McPopUpTrigger {
198
217
  this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, { modifier: this.modifier });
199
218
  this.instance.markForCheck();
200
219
  }
201
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McTooltipTrigger, deps: [{ token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }, { token: i4.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }
202
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: McTooltipTrigger, selector: "[mcTooltip]", inputs: { tooltipVisible: ["mcVisible", "tooltipVisible"], tooltipPlacement: ["mcPlacement", "tooltipPlacement"], tooltipPlacementPriority: ["mcPlacementPriority", "tooltipPlacementPriority"], content: ["mcTooltip", "content"], disabled: ["mcTooltipDisabled", "disabled"], enterDelay: ["mcEnterDelay", "enterDelay"], leaveDelay: ["mcLeaveDelay", "leaveDelay"], trigger: ["mcTrigger", "trigger"], customClass: ["mcTooltipClass", "customClass"], context: ["mcTooltipContext", "context"] }, outputs: { placementChange: "mcPlacementChange", visibleChange: "mcVisibleChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcTooltip"], usesInheritance: true, ngImport: i0 }); }
220
+ applyRelativeToPointer() {
221
+ if (!this.strategy ||
222
+ ![PopUpPlacements.Top, PopUpPlacements.Bottom].includes(this.placement) ||
223
+ this.triggerName !== 'mouseenter') {
224
+ this.resetOrigin();
225
+ return;
226
+ }
227
+ const triggerRects = this.elementRef.nativeElement.getBoundingClientRect();
228
+ const point = { x: 0, y: 0 };
229
+ if (this.placement === PopUpPlacements.Top) {
230
+ point.x = this.mouseEvent.x;
231
+ point.y = triggerRects.y;
232
+ this.placementPriority = [PopUpPlacements.Top, PopUpPlacements.Left, PopUpPlacements.Right];
233
+ }
234
+ else if (this.placement === PopUpPlacements.Bottom) {
235
+ point.x = this.mouseEvent.x;
236
+ point.y = triggerRects.y + triggerRects.height;
237
+ this.placementPriority = [PopUpPlacements.Bottom, PopUpPlacements.Left, PopUpPlacements.Right];
238
+ }
239
+ this.updatePosition(true);
240
+ this.strategy.setOrigin(point);
241
+ }
242
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McTooltipTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
243
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.0", type: McTooltipTrigger, selector: "[mcTooltip]", inputs: { tooltipVisible: ["mcVisible", "tooltipVisible"], tooltipPlacement: ["mcPlacement", "tooltipPlacement"], relativeToPointer: ["mcRelativeToPointer", "relativeToPointer", booleanAttribute], tooltipPlacementPriority: ["mcPlacementPriority", "tooltipPlacementPriority"], content: ["mcTooltip", "content"], disabled: ["mcTooltipDisabled", "disabled"], enterDelay: ["mcEnterDelay", "enterDelay"], leaveDelay: ["mcLeaveDelay", "leaveDelay"], trigger: ["mcTrigger", "trigger"], customClass: ["mcTooltipClass", "customClass"], context: ["mcTooltipContext", "context"] }, outputs: { placementChange: "mcPlacementChange", visibleChange: "mcVisibleChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcTooltip"], usesInheritance: true, ngImport: i0 }); }
203
244
  }
204
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McTooltipTrigger, decorators: [{
205
246
  type: Directive,
@@ -212,17 +253,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
212
253
  '(touchend)': 'handleTouchend()'
213
254
  }
214
255
  }]
215
- }], ctorParameters: () => [{ type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
216
- type: Inject,
217
- args: [MC_TOOLTIP_SCROLL_STRATEGY]
218
- }] }, { type: i3.Directionality, decorators: [{
219
- type: Optional
220
- }] }, { type: i4.FocusMonitor }], propDecorators: { tooltipVisible: [{
256
+ }], ctorParameters: () => [], propDecorators: { tooltipVisible: [{
221
257
  type: Input,
222
258
  args: ['mcVisible']
223
259
  }], tooltipPlacement: [{
224
260
  type: Input,
225
261
  args: ['mcPlacement']
262
+ }], relativeToPointer: [{
263
+ type: Input,
264
+ args: [{ alias: 'mcRelativeToPointer', transform: booleanAttribute }]
226
265
  }], tooltipPlacementPriority: [{
227
266
  type: Input,
228
267
  args: ['mcPlacementPriority']
@@ -255,6 +294,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
255
294
  args: ['mcVisibleChange']
256
295
  }] } });
257
296
  class McWarningTooltipTrigger extends McTooltipTrigger {
297
+ constructor() {
298
+ super(...arguments);
299
+ this.modifier = TooltipModifier.Warning;
300
+ }
258
301
  get content() {
259
302
  return this._content;
260
303
  }
@@ -262,11 +305,7 @@ class McWarningTooltipTrigger extends McTooltipTrigger {
262
305
  this._content = content;
263
306
  this.updateData();
264
307
  }
265
- constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor) {
266
- super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor);
267
- this.modifier = TooltipModifier.Warning;
268
- }
269
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McWarningTooltipTrigger, deps: [{ token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }, { token: i4.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }
308
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McWarningTooltipTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
270
309
  /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: McWarningTooltipTrigger, selector: "[mcWarningTooltip]", inputs: { content: ["mcWarningTooltip", "content"] }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcWarningTooltip"], usesInheritance: true, ngImport: i0 }); }
271
310
  }
272
311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McWarningTooltipTrigger, decorators: [{
@@ -280,16 +319,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
280
319
  '(touchend)': 'handleTouchend()'
281
320
  }
282
321
  }]
283
- }], ctorParameters: () => [{ type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
284
- type: Inject,
285
- args: [MC_TOOLTIP_SCROLL_STRATEGY]
286
- }] }, { type: i3.Directionality, decorators: [{
287
- type: Optional
288
- }] }, { type: i4.FocusMonitor }], propDecorators: { content: [{
322
+ }], propDecorators: { content: [{
289
323
  type: Input,
290
324
  args: ['mcWarningTooltip']
291
325
  }] } });
292
326
  class McExtendedTooltipTrigger extends McTooltipTrigger {
327
+ constructor() {
328
+ super(...arguments);
329
+ this.modifier = TooltipModifier.Extended;
330
+ }
293
331
  get content() {
294
332
  return this._content;
295
333
  }
@@ -304,10 +342,6 @@ class McExtendedTooltipTrigger extends McTooltipTrigger {
304
342
  this._header = header;
305
343
  this.updateData();
306
344
  }
307
- constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor) {
308
- super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor);
309
- this.modifier = TooltipModifier.Extended;
310
- }
311
345
  updateData() {
312
346
  if (!this.instance) {
313
347
  return;
@@ -315,7 +349,7 @@ class McExtendedTooltipTrigger extends McTooltipTrigger {
315
349
  super.updateData();
316
350
  this.instance.header = this.header;
317
351
  }
318
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McExtendedTooltipTrigger, deps: [{ token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }, { token: i4.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }
352
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McExtendedTooltipTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
319
353
  /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: McExtendedTooltipTrigger, selector: "[mcExtendedTooltip]", inputs: { content: ["mcExtendedTooltip", "content"], header: ["mcTooltipHeader", "header"] }, host: { listeners: { "keydown": "handleKeydown($event)", "touchend": "handleTouchend()" }, properties: { "class.mc-tooltip_open": "isOpen" } }, exportAs: ["mcExtendedTooltip"], usesInheritance: true, ngImport: i0 }); }
320
354
  }
321
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: McExtendedTooltipTrigger, decorators: [{
@@ -329,12 +363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
329
363
  '(touchend)': 'handleTouchend()'
330
364
  }
331
365
  }]
332
- }], ctorParameters: () => [{ type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
333
- type: Inject,
334
- args: [MC_TOOLTIP_SCROLL_STRATEGY]
335
- }] }, { type: i3.Directionality, decorators: [{
336
- type: Optional
337
- }] }, { type: i4.FocusMonitor }], propDecorators: { content: [{
366
+ }], propDecorators: { content: [{
338
367
  type: Input,
339
368
  args: ['mcExtendedTooltip']
340
369
  }], header: [{