@ptsecurity/mosaic 15.5.0 → 15.7.2

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 (188) hide show
  1. package/_theming.scss +29 -6
  2. package/_visual.scss +6 -4
  3. package/autocomplete/autocomplete-trigger.directive.d.ts +5 -15
  4. package/button/_button-theme.scss +2 -5
  5. package/button-toggle/_button-toggle-theme.scss +2 -5
  6. package/checkbox/_checkbox-theme.scss +6 -5
  7. package/code-block/_code-block-theme.scss +2 -6
  8. package/core/formatters/index.d.ts +1 -1
  9. package/core/formatters/number/formatter.d.ts +25 -0
  10. package/core/forms/_forms-theme.scss +2 -4
  11. package/core/locales/en-US.d.ts +1 -2
  12. package/core/locales/es-LA.d.ts +9 -0
  13. package/core/locales/fa-IR.d.ts +9 -0
  14. package/core/locales/locale-service.d.ts +39 -5
  15. package/core/locales/pt-BR.d.ts +9 -0
  16. package/core/locales/ru-RU.d.ts +1 -2
  17. package/core/locales/zh-CN.d.ts +9 -0
  18. package/core/option/_optgroup-theme.scss +2 -4
  19. package/core/option/_option-theme.scss +2 -5
  20. package/core/option/option.d.ts +36 -7
  21. package/core/overlay/overlay-position-map.d.ts +7 -1
  22. package/core/styles/_variables.scss +1 -0
  23. package/core/styles/theming/_badges.scss +2 -1
  24. package/core/styles/theming/_theming.scss +1 -0
  25. package/datepicker/_datepicker-theme.scss +2 -5
  26. package/datepicker/calendar-header.component.d.ts +8 -2
  27. package/datepicker/calendar.component.d.ts +3 -4
  28. package/datepicker/month-view.component.d.ts +3 -4
  29. package/dl/_dl-theme.scss +2 -5
  30. package/dropdown/_dropdown-theme.scss +2 -5
  31. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +27 -24
  32. package/esm2020/core/formatters/index.mjs +6 -2
  33. package/esm2020/core/formatters/number/formatter.mjs +90 -1
  34. package/esm2020/core/locales/en-US.mjs +3 -4
  35. package/esm2020/core/locales/es-LA.mjs +11 -2
  36. package/esm2020/core/locales/fa-IR.mjs +11 -2
  37. package/esm2020/core/locales/locale-service.mjs +4 -4
  38. package/esm2020/core/locales/pt-BR.mjs +11 -2
  39. package/esm2020/core/locales/ru-RU.mjs +3 -4
  40. package/esm2020/core/locales/zh-CN.mjs +11 -2
  41. package/esm2020/core/option/optgroup.mjs +2 -2
  42. package/esm2020/core/option/option.mjs +44 -8
  43. package/esm2020/core/overlay/overlay-position-map.mjs +7 -1
  44. package/esm2020/core/version.mjs +2 -2
  45. package/esm2020/datepicker/calendar-header.component.mjs +8 -7
  46. package/esm2020/datepicker/calendar.component.mjs +5 -14
  47. package/esm2020/datepicker/datepicker-input.directive.mjs +7 -6
  48. package/esm2020/datepicker/month-view.component.mjs +6 -15
  49. package/esm2020/file-upload/multiple-file-upload.component.mjs +9 -5
  50. package/esm2020/file-upload/single-file-upload.component.mjs +10 -6
  51. package/esm2020/form-field/form-field.mjs +5 -8
  52. package/esm2020/form-field/password-hint.mjs +13 -5
  53. package/esm2020/list/list-selection.component.mjs +2 -2
  54. package/esm2020/list/list.component.mjs +2 -2
  55. package/esm2020/loader-overlay/loader-overlay.component.mjs +2 -2
  56. package/esm2020/modal/modal.component.mjs +6 -5
  57. package/esm2020/modal/modal.module.mjs +8 -4
  58. package/esm2020/navbar/navbar-item.component.mjs +14 -13
  59. package/esm2020/navbar/navbar.component.mjs +18 -9
  60. package/esm2020/navbar/vertical-navbar.component.mjs +9 -6
  61. package/esm2020/radio/radio.component.mjs +3 -2
  62. package/esm2020/select/select.component.mjs +23 -9
  63. package/esm2020/tabs/tab.component.mjs +13 -4
  64. package/esm2020/tags/tag-default-options.mjs +1 -1
  65. package/esm2020/tags/tag-input.mjs +10 -8
  66. package/esm2020/tags/tag-list.component.mjs +10 -6
  67. package/esm2020/tags/tag.component.mjs +5 -5
  68. package/esm2020/timezone/timezone-option.component.mjs +2 -2
  69. package/esm2020/timezone/timezone-select.component.mjs +2 -2
  70. package/esm2020/title/title.directive.mjs +2 -2
  71. package/esm2020/toast/toast.module.mjs +10 -4
  72. package/esm2020/tree/tree-option.component.mjs +7 -3
  73. package/esm2020/tree/tree-selection.component.mjs +6 -5
  74. package/esm2020/tree-select/tree-select.component.mjs +5 -5
  75. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +30 -24
  76. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  77. package/fesm2015/ptsecurity-mosaic-core.mjs +192 -25
  78. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  79. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +20 -36
  80. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  81. package/fesm2015/ptsecurity-mosaic-file-upload.mjs +15 -7
  82. package/fesm2015/ptsecurity-mosaic-file-upload.mjs.map +1 -1
  83. package/fesm2015/ptsecurity-mosaic-form-field.mjs +15 -11
  84. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  85. package/fesm2015/ptsecurity-mosaic-list.mjs +4 -4
  86. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs +2 -2
  87. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs.map +1 -1
  88. package/fesm2015/ptsecurity-mosaic-modal.mjs +10 -5
  89. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  90. package/fesm2015/ptsecurity-mosaic-navbar.mjs +36 -27
  91. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
  92. package/fesm2015/ptsecurity-mosaic-radio.mjs +2 -1
  93. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  94. package/fesm2015/ptsecurity-mosaic-select.mjs +23 -8
  95. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  96. package/fesm2015/ptsecurity-mosaic-tabs.mjs +12 -3
  97. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  98. package/fesm2015/ptsecurity-mosaic-tags.mjs +22 -16
  99. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  100. package/fesm2015/ptsecurity-mosaic-timezone.mjs +4 -4
  101. package/fesm2015/ptsecurity-mosaic-timezone.mjs.map +1 -1
  102. package/fesm2015/ptsecurity-mosaic-title.mjs +1 -1
  103. package/fesm2015/ptsecurity-mosaic-title.mjs.map +1 -1
  104. package/fesm2015/ptsecurity-mosaic-toast.mjs +8 -2
  105. package/fesm2015/ptsecurity-mosaic-toast.mjs.map +1 -1
  106. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +4 -4
  107. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  108. package/fesm2015/ptsecurity-mosaic-tree.mjs +12 -6
  109. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  110. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +27 -24
  111. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  112. package/fesm2020/ptsecurity-mosaic-core.mjs +192 -24
  113. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  114. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +20 -36
  115. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  116. package/fesm2020/ptsecurity-mosaic-file-upload.mjs +15 -7
  117. package/fesm2020/ptsecurity-mosaic-file-upload.mjs.map +1 -1
  118. package/fesm2020/ptsecurity-mosaic-form-field.mjs +15 -10
  119. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  120. package/fesm2020/ptsecurity-mosaic-list.mjs +4 -4
  121. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs +2 -2
  122. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs.map +1 -1
  123. package/fesm2020/ptsecurity-mosaic-modal.mjs +10 -5
  124. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  125. package/fesm2020/ptsecurity-mosaic-navbar.mjs +36 -27
  126. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
  127. package/fesm2020/ptsecurity-mosaic-radio.mjs +2 -1
  128. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  129. package/fesm2020/ptsecurity-mosaic-select.mjs +22 -8
  130. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  131. package/fesm2020/ptsecurity-mosaic-tabs.mjs +12 -3
  132. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  133. package/fesm2020/ptsecurity-mosaic-tags.mjs +22 -16
  134. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  135. package/fesm2020/ptsecurity-mosaic-timezone.mjs +4 -4
  136. package/fesm2020/ptsecurity-mosaic-timezone.mjs.map +1 -1
  137. package/fesm2020/ptsecurity-mosaic-title.mjs +1 -1
  138. package/fesm2020/ptsecurity-mosaic-title.mjs.map +1 -1
  139. package/fesm2020/ptsecurity-mosaic-toast.mjs +8 -2
  140. package/fesm2020/ptsecurity-mosaic-toast.mjs.map +1 -1
  141. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +4 -4
  142. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  143. package/fesm2020/ptsecurity-mosaic-tree.mjs +11 -6
  144. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  145. package/file-upload/_file-upload-theme.scss +2 -4
  146. package/file-upload/multiple-file-upload.component.d.ts +4 -3
  147. package/file-upload/single-file-upload.component.d.ts +4 -3
  148. package/form-field/_form-field-theme.scss +7 -5
  149. package/form-field/form-field.d.ts +0 -1
  150. package/form-field/form-field.scss +1 -3
  151. package/form-field/password-hint.d.ts +6 -3
  152. package/input/_input-theme.scss +7 -6
  153. package/link/_link-theme.scss +7 -8
  154. package/list/_list-theme.scss +2 -5
  155. package/loader-overlay/_loader-overlay-theme.scss +2 -5
  156. package/loader-overlay/loader-overlay.scss +3 -0
  157. package/markdown/_markdown-theme.scss +3 -6
  158. package/modal/_modal-theme.scss +3 -5
  159. package/modal/modal.module.d.ts +2 -1
  160. package/modal/modal.scss +14 -2
  161. package/navbar/_navbar-theme.scss +2 -6
  162. package/navbar/navbar-item.component.d.ts +3 -2
  163. package/navbar/navbar.component.d.ts +5 -2
  164. package/navbar/vertical-navbar.component.d.ts +4 -2
  165. package/package.json +11 -14
  166. package/popover/_popover-theme.scss +2 -6
  167. package/prebuilt-themes/dark-theme.css +1 -1
  168. package/prebuilt-themes/default-theme.css +1 -1
  169. package/radio/_radio-theme.scss +6 -6
  170. package/select/_select-theme.scss +2 -5
  171. package/select/select.component.d.ts +12 -9
  172. package/select/select.scss +3 -1
  173. package/sidepanel/_sidepanel-theme.scss +2 -5
  174. package/table/_table-theme.scss +2 -5
  175. package/tabs/_tabs-theme.scss +2 -5
  176. package/tags/_tag-theme.scss +2 -5
  177. package/tags/tag-default-options.d.ts +4 -0
  178. package/tags/tag-list.component.d.ts +1 -0
  179. package/tags/tag-list.scss +6 -2
  180. package/tags/tag.component.d.ts +1 -1
  181. package/textarea/_textarea-theme.scss +2 -5
  182. package/timezone/_timezone-option-theme.scss +2 -5
  183. package/toast/_toast-theme.scss +2 -5
  184. package/toggle/_toggle-theme.scss +2 -5
  185. package/tooltip/_tooltip-theme.scss +2 -5
  186. package/tree/_tree-theme.scss +2 -4
  187. package/tree/tree-option.scss +4 -2
  188. package/tree-select/_tree-select-theme.scss +2 -5
@@ -539,6 +539,9 @@ class McTreeOption extends McTreeNode {
539
539
  else {
540
540
  this.tree.selectionModel.deselect(this.data);
541
541
  }
542
+ if (this.showCheckbox) {
543
+ this.updateCheckboxState();
544
+ }
542
545
  this.markForCheck();
543
546
  }
544
547
  focus(focusOrigin) {
@@ -606,6 +609,7 @@ class McTreeOption extends McTreeNode {
606
609
  this._selected = false;
607
610
  this.updateCheckboxState();
608
611
  this.markForCheck();
612
+ this.emitSelectionChangeEvent();
609
613
  }
610
614
  onKeydown($event) {
611
615
  if (!this.actionButton) {
@@ -641,7 +645,7 @@ class McTreeOption extends McTreeNode {
641
645
  { provide: McTreeNode, useExisting: McTreeOption },
642
646
  { provide: MC_TITLE_TEXT_REF, useExisting: McTreeOption },
643
647
  { provide: MC_OPTION_ACTION_PARENT, useExisting: McTreeOption }
644
- ], queries: [{ propertyName: "toggleElementDirective", first: true, predicate: McTreeNodeToggleDirective, descendants: true }, { propertyName: "toggleElementComponent", first: true, predicate: McTreeNodeToggleComponent, descendants: true }, { propertyName: "pseudoCheckbox", first: true, predicate: McPseudoCheckbox, descendants: true }, { propertyName: "actionButton", first: true, predicate: McOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: McTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: McDropdownTrigger, descendants: true }], viewQueries: [{ propertyName: "parentTextElement", first: true, predicate: ["mcTitleContainer"], descendants: true }, { propertyName: "toggleWrapper", first: true, predicate: ["toggleWrapper"], descendants: true }], exportAs: ["mcTreeOption"], usesInheritance: true, ngImport: i0, template: "<div class=\"toggle-wrapper\" #toggleWrapper>\n <ng-content select=\"mc-tree-node-toggle, [mc-tree-node-toggle], [mcTreeNodeToggle]\"></ng-content>\n</div>\n\n<ng-container [ngSwitch]=\"externalPseudoCheckbox\">\n <ng-content *ngSwitchCase=\"true\" select=\"mc-pseudo-checkbox\"></ng-content>\n\n <ng-container *ngSwitchCase=\"false\">\n <mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"checkboxState\"\n [disabled]=\"disabled\">\n </mc-pseudo-checkbox>\n </ng-container>\n</ng-container>\n\n<ng-content select=\"mc-checkbox\"></ng-content>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<ng-content select=\"mc-progress-spinner\"></ng-content>\n\n<span class=\"mc-option-text\" #mcTitleContainer><ng-content></ng-content></span>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n\n<div class=\"mc-option-overlay\"></div>\n", styles: [".mc-tree-option{box-sizing:border-box;display:flex;align-items:center;height:var(--mc-tree-size-node-height, 32px);word-wrap:break-word;border:2px solid transparent}.mc-tree-option .mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:var(--mc-tree-size-padding-right, 16px)}.mc-tree-option>.mc-icon,.mc-tree-option>.toggle-wrapper>.mc-icon{margin-right:var(--mc-tree-size-icon-padding, 8px);cursor:pointer}.mc-tree-option>.mc-progress-spinner{margin-right:8px}.mc-tree-option:focus{outline:none}.mc-tree-option:not([disabled]){cursor:pointer}.mc-tree-option>.mc-pseudo-checkbox,.mc-tree-option>.mc-checkbox{margin-right:var(--mc-tree-size-icon-padding, 8px)}.mc-tree-option .mc-option-action{display:none}.mc-tree-option:not([disabled]):hover .mc-option-action,.mc-tree-option:not([disabled]).mc-focused .mc-option-action,.mc-tree-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.McPseudoCheckbox, selector: "mc-pseudo-checkbox", inputs: ["color", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
648
+ ], queries: [{ propertyName: "toggleElementDirective", first: true, predicate: McTreeNodeToggleDirective, descendants: true }, { propertyName: "toggleElementComponent", first: true, predicate: McTreeNodeToggleComponent, descendants: true }, { propertyName: "pseudoCheckbox", first: true, predicate: McPseudoCheckbox, descendants: true }, { propertyName: "actionButton", first: true, predicate: McOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: McTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: McDropdownTrigger, descendants: true }], viewQueries: [{ propertyName: "parentTextElement", first: true, predicate: ["mcTitleContainer"], descendants: true }, { propertyName: "toggleWrapper", first: true, predicate: ["toggleWrapper"], descendants: true }], exportAs: ["mcTreeOption"], usesInheritance: true, ngImport: i0, template: "<div class=\"toggle-wrapper\" #toggleWrapper>\n <ng-content select=\"mc-tree-node-toggle, [mc-tree-node-toggle], [mcTreeNodeToggle]\"></ng-content>\n</div>\n\n<ng-container [ngSwitch]=\"externalPseudoCheckbox\">\n <ng-content *ngSwitchCase=\"true\" select=\"mc-pseudo-checkbox\"></ng-content>\n\n <ng-container *ngSwitchCase=\"false\">\n <mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"checkboxState\"\n [disabled]=\"disabled\">\n </mc-pseudo-checkbox>\n </ng-container>\n</ng-container>\n\n<ng-content select=\"mc-checkbox\"></ng-content>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<ng-content select=\"mc-progress-spinner\"></ng-content>\n\n<span class=\"mc-option-text\" #mcTitleContainer><ng-content></ng-content></span>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n\n<div class=\"mc-option-overlay\"></div>\n", styles: [".mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-tree-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;box-sizing:border-box;display:flex;align-items:center;height:var(--mc-tree-size-node-height, 32px);word-wrap:break-word;border:2px solid transparent}.mc-tree-option .mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:var(--mc-tree-size-padding-right, 16px)}.mc-tree-option>.mc-icon,.mc-tree-option>.toggle-wrapper>.mc-icon{margin-right:var(--mc-tree-size-icon-padding, 8px);cursor:pointer}.mc-tree-option>.mc-progress-spinner{margin-right:8px}.mc-tree-option:focus{outline:none}.mc-tree-option:not([disabled]){cursor:pointer}.mc-tree-option>.mc-pseudo-checkbox{margin-right:var(--mc-tree-size-icon-padding, 8px)}.mc-tree-option .mc-option-action{display:none}.mc-tree-option:not([disabled]):hover .mc-option-action,.mc-tree-option:not([disabled]).mc-focused .mc-option-action,.mc-tree-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.McPseudoCheckbox, selector: "mc-pseudo-checkbox", inputs: ["color", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
645
649
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McTreeOption, decorators: [{
646
650
  type: Component,
647
651
  args: [{ selector: 'mc-tree-option', exportAs: 'mcTreeOption', host: {
@@ -660,7 +664,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
660
664
  { provide: McTreeNode, useExisting: McTreeOption },
661
665
  { provide: MC_TITLE_TEXT_REF, useExisting: McTreeOption },
662
666
  { provide: MC_OPTION_ACTION_PARENT, useExisting: McTreeOption }
663
- ], template: "<div class=\"toggle-wrapper\" #toggleWrapper>\n <ng-content select=\"mc-tree-node-toggle, [mc-tree-node-toggle], [mcTreeNodeToggle]\"></ng-content>\n</div>\n\n<ng-container [ngSwitch]=\"externalPseudoCheckbox\">\n <ng-content *ngSwitchCase=\"true\" select=\"mc-pseudo-checkbox\"></ng-content>\n\n <ng-container *ngSwitchCase=\"false\">\n <mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"checkboxState\"\n [disabled]=\"disabled\">\n </mc-pseudo-checkbox>\n </ng-container>\n</ng-container>\n\n<ng-content select=\"mc-checkbox\"></ng-content>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<ng-content select=\"mc-progress-spinner\"></ng-content>\n\n<span class=\"mc-option-text\" #mcTitleContainer><ng-content></ng-content></span>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n\n<div class=\"mc-option-overlay\"></div>\n", styles: [".mc-tree-option{box-sizing:border-box;display:flex;align-items:center;height:var(--mc-tree-size-node-height, 32px);word-wrap:break-word;border:2px solid transparent}.mc-tree-option .mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:var(--mc-tree-size-padding-right, 16px)}.mc-tree-option>.mc-icon,.mc-tree-option>.toggle-wrapper>.mc-icon{margin-right:var(--mc-tree-size-icon-padding, 8px);cursor:pointer}.mc-tree-option>.mc-progress-spinner{margin-right:8px}.mc-tree-option:focus{outline:none}.mc-tree-option:not([disabled]){cursor:pointer}.mc-tree-option>.mc-pseudo-checkbox,.mc-tree-option>.mc-checkbox{margin-right:var(--mc-tree-size-icon-padding, 8px)}.mc-tree-option .mc-option-action{display:none}.mc-tree-option:not([disabled]):hover .mc-option-action,.mc-tree-option:not([disabled]).mc-focused .mc-option-action,.mc-tree-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}\n"] }]
667
+ ], template: "<div class=\"toggle-wrapper\" #toggleWrapper>\n <ng-content select=\"mc-tree-node-toggle, [mc-tree-node-toggle], [mcTreeNodeToggle]\"></ng-content>\n</div>\n\n<ng-container [ngSwitch]=\"externalPseudoCheckbox\">\n <ng-content *ngSwitchCase=\"true\" select=\"mc-pseudo-checkbox\"></ng-content>\n\n <ng-container *ngSwitchCase=\"false\">\n <mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"checkboxState\"\n [disabled]=\"disabled\">\n </mc-pseudo-checkbox>\n </ng-container>\n</ng-container>\n\n<ng-content select=\"mc-checkbox\"></ng-content>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<ng-content select=\"mc-progress-spinner\"></ng-content>\n\n<span class=\"mc-option-text\" #mcTitleContainer><ng-content></ng-content></span>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n\n<div class=\"mc-option-overlay\"></div>\n", styles: [".mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-tree-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;box-sizing:border-box;display:flex;align-items:center;height:var(--mc-tree-size-node-height, 32px);word-wrap:break-word;border:2px solid transparent}.mc-tree-option .mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:var(--mc-tree-size-padding-right, 16px)}.mc-tree-option>.mc-icon,.mc-tree-option>.toggle-wrapper>.mc-icon{margin-right:var(--mc-tree-size-icon-padding, 8px);cursor:pointer}.mc-tree-option>.mc-progress-spinner{margin-right:8px}.mc-tree-option:focus{outline:none}.mc-tree-option:not([disabled]){cursor:pointer}.mc-tree-option>.mc-pseudo-checkbox{margin-right:var(--mc-tree-size-icon-padding, 8px)}.mc-tree-option .mc-option-action{display:none}.mc-tree-option:not([disabled]):hover .mc-option-action,.mc-tree-option:not([disabled]).mc-focused .mc-option-action,.mc-tree-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}\n"] }]
664
668
  }], ctorParameters: function () {
665
669
  return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
666
670
  type: Inject,
@@ -1102,11 +1106,13 @@ class McTreeSelection extends McTreeBase {
1102
1106
  this.emitChangeEvent(option);
1103
1107
  }
1104
1108
  selectActiveOptions() {
1109
+ var _a;
1105
1110
  const options = this.renderedOptions.toArray();
1106
1111
  let fromIndex = this.keyManager.previousActiveItemIndex;
1107
1112
  let toIndex = this.keyManager.previousActiveItemIndex = this.keyManager.activeItemIndex;
1108
- const selectedOptionState = options[fromIndex].selected;
1109
- if (toIndex === fromIndex) {
1113
+ const selectedOptionState = (_a = options[fromIndex]) === null || _a === void 0 ? void 0 : _a.selected;
1114
+ if (toIndex === fromIndex || fromIndex === -1) {
1115
+ options[toIndex].toggle();
1110
1116
  return;
1111
1117
  }
1112
1118
  if (fromIndex > toIndex) {
@@ -1146,8 +1152,8 @@ class McTreeSelection extends McTreeBase {
1146
1152
  selectAllOptions() {
1147
1153
  const optionsToSelect = this.renderedOptions
1148
1154
  .filter((option) => !option.disabled);
1149
- optionsToSelect
1150
- .forEach((option) => option.setSelected(true));
1155
+ const hasDeselectedOptions = optionsToSelect.some((option) => !option.selected);
1156
+ optionsToSelect.forEach((option) => option.setSelected(hasDeselectedOptions));
1151
1157
  this.onSelectAll.emit(new McTreeSelectAllEvent(this, optionsToSelect));
1152
1158
  }
1153
1159
  copyActiveOption() {