@ptsecurity/mosaic 15.8.10 → 15.9.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 (62) hide show
  1. package/checkbox/checkbox.d.ts +6 -6
  2. package/core/animation/animation.d.ts +2 -1
  3. package/core/common-behaviors/checkbox.d.ts +1 -0
  4. package/core/common-behaviors/index.d.ts +1 -0
  5. package/core/pop-up/pop-up-trigger.d.ts +13 -0
  6. package/dropdown/dropdown-trigger.directive.d.ts +1 -1
  7. package/esm2020/checkbox/checkbox.mjs +5 -5
  8. package/esm2020/core/animation/animation.mjs +2 -1
  9. package/esm2020/core/common-behaviors/checkbox.mjs +2 -0
  10. package/esm2020/core/common-behaviors/index.mjs +2 -1
  11. package/esm2020/core/locales/en-US.mjs +2 -2
  12. package/esm2020/core/locales/es-LA.mjs +2 -2
  13. package/esm2020/core/locales/fa-IR.mjs +2 -2
  14. package/esm2020/core/locales/pt-BR.mjs +2 -2
  15. package/esm2020/core/locales/ru-RU.mjs +2 -2
  16. package/esm2020/core/locales/zh-CN.mjs +2 -2
  17. package/esm2020/core/pop-up/pop-up-trigger.mjs +43 -2
  18. package/esm2020/core/version.mjs +2 -2
  19. package/esm2020/dropdown/dropdown-trigger.directive.mjs +2 -2
  20. package/esm2020/popover/popover.component.mjs +7 -2
  21. package/esm2020/select/select.component.mjs +5 -4
  22. package/esm2020/toggle/toggle.component.mjs +102 -18
  23. package/esm2020/tooltip/tooltip.component.mjs +7 -1
  24. package/esm2020/tree-select/tree-select.component.mjs +2 -2
  25. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +4 -4
  26. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  27. package/fesm2015/ptsecurity-mosaic-core.mjs +47 -8
  28. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  29. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1 -1
  30. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  31. package/fesm2015/ptsecurity-mosaic-popover.mjs +6 -1
  32. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  33. package/fesm2015/ptsecurity-mosaic-select.mjs +4 -3
  34. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  35. package/fesm2015/ptsecurity-mosaic-toggle.mjs +103 -17
  36. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  37. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +6 -0
  38. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  39. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +1 -1
  40. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  41. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +4 -4
  42. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  43. package/fesm2020/ptsecurity-mosaic-core.mjs +50 -8
  44. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  45. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1 -1
  46. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  47. package/fesm2020/ptsecurity-mosaic-popover.mjs +6 -1
  48. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  49. package/fesm2020/ptsecurity-mosaic-select.mjs +4 -3
  50. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  51. package/fesm2020/ptsecurity-mosaic-toggle.mjs +101 -17
  52. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  53. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +6 -0
  54. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  55. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +1 -1
  56. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  57. package/package.json +4 -4
  58. package/popover/popover.component.d.ts +5 -0
  59. package/toggle/_toggle-theme.scss +7 -1
  60. package/toggle/toggle.component.d.ts +22 -6
  61. package/toggle/toggle.scss +23 -0
  62. package/tooltip/tooltip.component.d.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-tree-select.mjs","sources":["../../../packages/mosaic/tree-select/tree-select.component.ts","../../../packages/mosaic/tree-select/tree-select.html","../../../packages/mosaic/tree-select/tree-select.module.ts","../../../packages/mosaic/tree-select/ptsecurity-mosaic-tree-select.ts"],"sourcesContent":["/* tslint:disable:no-empty */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n CdkConnectedOverlay,\n ConnectedPosition,\n ViewportRuler\n} from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n Self,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n PAGE_UP,\n PAGE_DOWN,\n ESCAPE, TAB,\n hasModifierKey, isSelectAll\n} from '@ptsecurity/cdk/keycodes';\nimport {\n CanDisable,\n CanUpdateErrorState,\n ErrorStateMatcher,\n HasTabIndex,\n CanDisableCtor,\n HasTabIndexCtor,\n CanUpdateErrorStateCtor,\n mixinTabIndex,\n mixinDisabled,\n mixinErrorState,\n mcSelectAnimations,\n\n SELECT_PANEL_PADDING_X,\n SELECT_PANEL_VIEWPORT_PADDING,\n MC_SELECT_SCROLL_STRATEGY,\n MC_PARENT_POPUP,\n\n getMcSelectDynamicMultipleError,\n getMcSelectNonFunctionValueError,\n getMcSelectNonArrayValueError,\n MultipleMode\n} from '@ptsecurity/mosaic/core';\nimport { McCleaner, McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McSelectSearch } from '@ptsecurity/mosaic/select';\nimport { McTag } from '@ptsecurity/mosaic/tags';\nimport { McTree, McTreeSelection, McTreeOption } from '@ptsecurity/mosaic/tree';\nimport { defer, merge, Observable, Subject, Subscription } from 'rxjs';\nimport {\n filter,\n map,\n switchMap,\n take,\n takeUntil,\n distinctUntilChanged,\n startWith,\n delay\n} from 'rxjs/operators';\n\n\nlet nextUniqueId = 0;\n\nexport interface ITriggerValue {\n disabled: boolean;\n value: string;\n viewValue: string;\n}\n\n/** Change event object that is emitted when the select value has changed. */\nexport class McTreeSelectChange {\n constructor(public source: McTreeSelect, public value: any, public isUserInput = false) {}\n}\n\n\n@Directive({ selector: 'mc-tree-select-trigger,[mc-tree-select-trigger]' })\nexport class McTreeSelectTrigger {}\n\n@Directive({ selector: 'mc-tree-select-matcher,[mc-tree-select-matcher]' })\nexport class McTreeSelectMatcher {}\n\n@Directive({\n selector: 'mc-tree-select-footer, [mc-tree-select-footer]',\n host: { class: 'mc-tree-select__footer' }\n})\nexport class McTreeSelectFooter {}\n\n/** @docs-private */\nclass McTreeSelectBase {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `McFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {}\n}\n\n/** @docs-private */\nconst McTreeSelectMixinBase: CanDisableCtor & HasTabIndexCtor & CanUpdateErrorStateCtor &\n typeof McTreeSelectBase = mixinTabIndex(mixinDisabled(mixinErrorState(McTreeSelectBase)));\n\n\n@Component({\n selector: 'mc-tree-select',\n exportAs: 'mcTreeSelect',\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss'],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mc-tree-select',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-invalid]': 'errorState',\n\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n\n '(click)': 'toggle()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(window:resize)': 'calculateHiddenItems()'\n },\n animations: [\n mcSelectAnimations.transformPanel,\n mcSelectAnimations.fadeInContent\n ],\n providers: [\n { provide: McFormFieldControl, useExisting: McTreeSelect },\n { provide: McTree, useExisting: McTreeSelect },\n { provide: MC_PARENT_POPUP, useExisting: McTreeSelect }\n ]\n})\nexport class McTreeSelect extends McTreeSelectMixinBase implements\n AfterContentInit, AfterViewInit, OnChanges, OnDestroy, OnInit, DoCheck, ControlValueAccessor,\n CanDisable, HasTabIndex, McFormFieldControl<McTreeOption>, CanUpdateErrorState {\n\n /** A name for this control that can be used by `mc-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: DOMRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n offsetY = 0;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ];\n\n options: QueryList<McTreeOption>;\n\n @ViewChild('trigger', { static: false }) trigger: ElementRef;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChildren(McTag) tags: QueryList<McTag>;\n\n @ContentChild('mcSelectCleaner', { static: true }) cleaner: McCleaner;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(McTreeSelectTrigger, { static: false }) customTrigger: McTreeSelectTrigger;\n\n @ContentChild(McTreeSelectMatcher, { static: false }) customMatcher: McTreeSelectMatcher;\n\n @ContentChild(McTreeSelection, { static: false }) tree: McTreeSelection;\n\n @ContentChild(McSelectSearch, { static: false }) search: McSelectSearch;\n\n @ContentChild(McTreeSelectFooter, { static: false }) footer: McTreeSelectFooter;\n\n @Input() hiddenItemsText: string = 'еще';\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => o), map(() => {}));\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => !o), map(() => {}));\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<McTreeSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: McTreeOption, b: McTreeOption, options: McTreeOption[]) => number;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<McTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.onSelectionChange)))\n );\n }\n\n return this.ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n }) as Observable<McTreeSelectChange>;\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getMcSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n @Input()\n get autoSelect(): boolean {\n if (this.multiple) { return false; }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n /* tslint:disable-next-line:strict-type-predicates */\n if (typeof fn !== 'function') {\n throw getMcSelectNonFunctionValueError();\n }\n\n this._compareWith = fn;\n\n if (this.selectionModel) {\n // A different comparator means the selection could change.\n this.initializeSelection();\n }\n }\n\n get value(): any {\n return this.tree.getSelectedValues();\n }\n\n private _value: any = null;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this.parentFormField) {\n this._disabled ? this.parentFormField.stopFocusMonitor() : this.parentFormField.runFocusMonitor();\n }\n }\n\n private _disabled: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n private _focused = false;\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n get canShowCleaner(): boolean {\n return !this.disabled && this.cleaner && this.selectionModel.hasValue();\n }\n\n isEmptySearchResult: boolean;\n\n triggerValues: ITriggerValue[] = [];\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `mc-select-${nextUniqueId++}`;\n\n /** Emits whenever the component is destroyed. */\n private readonly destroy = new Subject<void>();\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n constructor(\n elementRef: ElementRef,\n readonly changeDetectorRef: ChangeDetectorRef,\n private readonly viewportRuler: ViewportRuler,\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Inject(MC_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory,\n @Optional() private readonly dir: Directionality,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() private readonly parentFormField: McFormField,\n @Optional() @Self() ngControl: NgControl\n ) {\n super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this.destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n\n if (this.search) { this.search.focus(); }\n\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.tree) { return; }\n\n this.tree.resetFocusedItemOnBlur = false;\n this.tree.optionShouldHoldFocusOnBlur = true;\n\n this.selectionModel = this.tree.selectionModel = new SelectionModel<any>(this.multiple);\n\n this.selectionModel.changed\n .subscribe(() => {\n this.onChange(this.selectedValues);\n\n if (this.multiple) {\n this.refreshTriggerValues();\n }\n });\n\n this.tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = this.tree.renderedOptions;\n this.tree.autoSelect = this.autoSelect;\n\n if (this.tree.multipleMode === null) {\n this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;\n }\n\n if (this.multiple) {\n this.tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.optionSelectionChanges\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n if (!this.multiple && this.panelOpen && event.isUserInput) {\n this.close();\n }\n });\n\n this.tree.selectionChange\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new McTreeSelectChange(this, event.option));\n\n if (this.search) {\n this.search.focus();\n }\n });\n\n if (!this.multiple) {\n this.selectionModel.changed\n .pipe(\n takeUntil(this.destroy),\n filter(({ added }) => !!added.length)\n )\n .subscribe(({ added }) => {\n this.tree.keyManager.setFocusOrigin('program');\n this.tree.keyManager.setActiveItem(\n this.options.find(({ data }) => data === added[0]) as any\n );\n });\n }\n\n this.subscribeOnSearchChanges();\n }\n\n ngAfterViewInit() {\n if (!this.tree) { return; }\n\n this.tags.changes\n .pipe(startWith(null))\n .subscribe(() => {\n this.calculateHiddenItems();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) { this.updateErrorState(); }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes.disabled) {\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this.destroy.next();\n this.destroy.complete();\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return hiddenItemsText.replace('{{ number }}', hiddenItems.toString());\n }\n\n clearValue($event): void {\n $event.stopPropagation();\n\n this.selectionModel.clear();\n this.tree.keyManager.setActiveItem(-1);\n\n this.setSelectionByValue([]);\n\n this.onChange(this.selectedValues);\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (!this.options?.length && !this.footer) {\n console.warn(`this.options.length: 0 and no footer, nothing to show.`);\n }\n\n if (this.disabled || !this.options?.length || this._panelOpen) { return; }\n\n this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n\n this._panelOpen = true;\n\n setTimeout(() => this.highlightCorrectOption());\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) { return; }\n\n this._panelOpen = false;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n if (this.search) {\n this.search.reset();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));\n\n return this.multiple ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) { return ''; }\n\n return this.tree.treeControl.getViewValue(this.selected);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (!this.disabled) {\n if (this.panelOpen) {\n this.handleOpenKeydown(event);\n } else {\n this.handleClosedKeydown(event);\n }\n }\n }\n\n onFocus() {\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange\n .pipe(take(1))\n .subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this.scrollTop;\n\n this.tree.updateScrollSize();\n });\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close());\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `mc-${this.parentFormField.color}` : '';\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel\n .deselect(this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value));\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems() {\n if (this.customTrigger || this.empty || !this.multiple) { return; }\n\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n this.changeDetectorRef.detectChanges();\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger.nativeElement.querySelector('.mc-tree-select__match-hidden-text');\n const matcherList = this.trigger.nativeElement.querySelector('.mc-tree-select__match-list');\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n const itemsCounterWidth: number = Math.floor(itemsCounter.getBoundingClientRect().width);\n\n const matcherListWidth: number = Math.floor(matcherList.getBoundingClientRect().width);\n const matcherWidth: number = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);\n\n if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {\n this.hiddenItems = 0;\n this.changeDetectorRef.detectChanges();\n }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir.overlayRef!.outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target)));\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.buildTriggerClone();\n triggerClone.querySelector('.mc-tree-select__match-hidden-text')?.remove();\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n (triggerClone.querySelectorAll('mc-tag') as NodeListOf<HTMLElement>)\n .forEach((item) => totalItemsWidth += this.getItemWidth(item));\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getTotalVisibleItems(): [number, number] {\n const triggerClone = this.buildTriggerClone();\n this.renderer.setStyle(\n triggerClone.querySelector('.mc-tree-select__match-hidden-text'),\n 'display',\n 'block'\n );\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let visibleItemsCount: number = 0;\n let totalVisibleItemsWidth: number = 0;\n (triggerClone.querySelectorAll('mc-tag') as NodeListOf<HTMLElement>)\n .forEach((item) => {\n if (item.offsetTop < item.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(item);\n visibleItemsCount++;\n }\n });\n\n triggerClone.remove();\n\n return [totalVisibleItemsWidth, visibleItemsCount];\n }\n\n private buildTriggerClone(): HTMLDivElement {\n const triggerClone = this.trigger.nativeElement.cloneNode(true);\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n return triggerClone;\n }\n\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = window.getComputedStyle(element);\n\n const width: number = parseInt(computedStyle.width as string);\n const marginLeft: number = parseInt(computedStyle.marginLeft as string);\n const marginRight: number = parseInt(computedStyle.marginRight as string);\n\n return width + marginLeft + marginRight;\n }\n\n private handleClosedKeydown(event: KeyboardEvent) {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {\n this.tree.keyManager.onKeydown(event);\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent) {\n /* tslint:disable-next-line */\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if (isArrowKey && event.altKey || keyCode === ESCAPE || keyCode === TAB) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n this.focus();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n return this.originalOnKeyDown.call(this.tree, event);\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.originalOnKeyDown.call(this.tree, event);\n } else {\n this.close();\n }\n } else if (this.multiple && isSelectAll(event)) {\n event.preventDefault();\n\n const hasDeselectedOptions = this.options.some((option) => !option.selected);\n\n this.options.forEach((option) => {\n if (hasDeselectedOptions && !option.disabled) {\n option.select();\n } else {\n option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.onKeydown(event);\n\n if (\n this.multiple && isArrowKey && event.shiftKey && this.tree.keyManager.activeItem &&\n this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n this.tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && this.tree.keyManager.activeItem) {\n this.tree.setSelectedOptionsByKey(\n this.tree.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey')\n );\n }\n\n if (this.search) {\n this.search.focus();\n }\n }\n }\n\n private refreshTriggerValues(): void {\n this.triggerValues = this.selectionModel.selected\n .map((node) => ({\n value: this.tree.treeControl.getValue(node),\n viewValue: this.tree.treeControl.getViewValue(node),\n disabled: this.tree.treeControl.isDisabled(node)\n }));\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiple && value) {\n if (!Array.isArray(value)) { throw getMcSelectNonArrayValueError(); }\n\n this.tree.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n this.originalOnKeyDown = this.tree.onKeyDown;\n\n this.tree.onKeyDown = () => {};\n\n this.tree.keyManager.change\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n if (this._panelOpen && this.panel) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {\n this.tree.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n return this.sortComparator ?\n this.sortComparator(a, b, options) :\n options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n if (this.empty || !this.tree.keyManager) { return; }\n\n const firstSelectedValue = this.multiple ? this.selectedValues[0] : this.selectedValues;\n\n const selectedOption = this.options.find((option) => option.value === firstSelectedValue);\n\n if (selectedOption) {\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.setActiveItem(selectedOption);\n }\n }\n\n /** Scrolls the active option into view. */\n private scrollActiveOptionIntoView() {\n this.tree.keyManager.activeItem?.focus();\n }\n\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n private calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this.viewportRuler.getViewportSize();\n const isRtl = this.isRtl();\n /* tslint:disable-next-line:no-magic-numbers */\n const paddingWidth = SELECT_PANEL_PADDING_X * 2;\n let offsetX: number = SELECT_PANEL_PADDING_X;\n\n // Invert the offset in LTR.\n if (!isRtl) { offsetX *= -1; }\n\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n } else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n private subscribeOnSearchChanges() {\n if (!this.search?.input.ngControl.valueChanges) { return; }\n\n this.search.input.ngControl.valueChanges\n .pipe(delay(0))\n .subscribe((value) => {\n this.isEmptySearchResult = !!value && this.tree.isEmpty;\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<div cdk-overlay-origin\n class=\"mc-tree-select__trigger\"\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <select class=\"cdk-visually-hidden\" [id]=\"id\"></select>\n\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\n <div class=\"mc-tree-select__match-list\">\n <mc-tag *ngFor=\"let triggerValue of triggerValues\"\n [selectable]=\"false\"\n [disabled]=\"triggerValue.disabled || disabled\"\n [class.mc-error]=\"errorState\">\n\n {{ triggerValue.viewValue }}\n <i mc-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!triggerValue.disabled && !disabled\"\n (click)=\"onRemoveSelectedOption(triggerValue, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-tree-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n </div>\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-tree-select__arrow-wrapper\">\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"mc-tree-select-matcher, [mc-tree-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n\n <div #panel\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-tree-select__content mc-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n\n <ng-content select=\"mc-tree-selection\"></ng-content>\n </div>\n\n <ng-content select=\"mc-tree-select-footer,[mc-tree-select-footer]\"></ng-content>\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MC_SELECT_SCROLL_STRATEGY_PROVIDER, McPseudoCheckboxModule } from '@ptsecurity/mosaic/core';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\nimport { McSelectModule } from '@ptsecurity/mosaic/select';\nimport { McTagsModule } from '@ptsecurity/mosaic/tags';\nimport { McTreeModule } from '@ptsecurity/mosaic/tree';\n\nimport {\n McTreeSelect,\n McTreeSelectFooter,\n McTreeSelectMatcher,\n McTreeSelectTrigger\n} from './tree-select.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n McTreeModule,\n McIconModule,\n McTagsModule,\n McPseudoCheckboxModule,\n McSelectModule\n ],\n exports: [McTreeSelect, McTreeSelectTrigger, McTreeSelectMatcher, McTreeSelectFooter, CommonModule],\n declarations: [McTreeSelect, McTreeSelectTrigger, McTreeSelectMatcher, McTreeSelectFooter],\n providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class McTreeSelectModule {}\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-tree-select.mjs","sources":["../../../packages/mosaic/tree-select/tree-select.component.ts","../../../packages/mosaic/tree-select/tree-select.html","../../../packages/mosaic/tree-select/tree-select.module.ts","../../../packages/mosaic/tree-select/ptsecurity-mosaic-tree-select.ts"],"sourcesContent":["/* tslint:disable:no-empty */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n CdkConnectedOverlay,\n ConnectedPosition,\n ViewportRuler\n} from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n Self,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm\n} from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n PAGE_UP,\n PAGE_DOWN,\n ESCAPE, TAB,\n hasModifierKey, isSelectAll\n} from '@ptsecurity/cdk/keycodes';\nimport {\n CanDisable,\n CanUpdateErrorState,\n ErrorStateMatcher,\n HasTabIndex,\n CanDisableCtor,\n HasTabIndexCtor,\n CanUpdateErrorStateCtor,\n mixinTabIndex,\n mixinDisabled,\n mixinErrorState,\n mcSelectAnimations,\n\n SELECT_PANEL_PADDING_X,\n SELECT_PANEL_VIEWPORT_PADDING,\n MC_SELECT_SCROLL_STRATEGY,\n MC_PARENT_POPUP,\n\n getMcSelectDynamicMultipleError,\n getMcSelectNonFunctionValueError,\n getMcSelectNonArrayValueError,\n MultipleMode\n} from '@ptsecurity/mosaic/core';\nimport { McCleaner, McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McSelectSearch } from '@ptsecurity/mosaic/select';\nimport { McTag } from '@ptsecurity/mosaic/tags';\nimport { McTree, McTreeSelection, McTreeOption } from '@ptsecurity/mosaic/tree';\nimport { defer, merge, Observable, Subject, Subscription } from 'rxjs';\nimport {\n filter,\n map,\n switchMap,\n take,\n takeUntil,\n distinctUntilChanged,\n startWith,\n delay\n} from 'rxjs/operators';\n\n\nlet nextUniqueId = 0;\n\nexport interface ITriggerValue {\n disabled: boolean;\n value: string;\n viewValue: string;\n}\n\n/** Change event object that is emitted when the select value has changed. */\nexport class McTreeSelectChange {\n constructor(public source: McTreeSelect, public value: any, public isUserInput = false) {}\n}\n\n\n@Directive({ selector: 'mc-tree-select-trigger,[mc-tree-select-trigger]' })\nexport class McTreeSelectTrigger {}\n\n@Directive({ selector: 'mc-tree-select-matcher,[mc-tree-select-matcher]' })\nexport class McTreeSelectMatcher {}\n\n@Directive({\n selector: 'mc-tree-select-footer, [mc-tree-select-footer]',\n host: { class: 'mc-tree-select__footer' }\n})\nexport class McTreeSelectFooter {}\n\n/** @docs-private */\nclass McTreeSelectBase {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `McFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {}\n}\n\n/** @docs-private */\nconst McTreeSelectMixinBase: CanDisableCtor & HasTabIndexCtor & CanUpdateErrorStateCtor &\n typeof McTreeSelectBase = mixinTabIndex(mixinDisabled(mixinErrorState(McTreeSelectBase)));\n\n\n@Component({\n selector: 'mc-tree-select',\n exportAs: 'mcTreeSelect',\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss'],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mc-tree-select',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-invalid]': 'errorState',\n\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n\n '(click)': 'toggle()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(window:resize)': 'calculateHiddenItems()'\n },\n animations: [\n mcSelectAnimations.transformPanel,\n mcSelectAnimations.fadeInContent\n ],\n providers: [\n { provide: McFormFieldControl, useExisting: McTreeSelect },\n { provide: McTree, useExisting: McTreeSelect },\n { provide: MC_PARENT_POPUP, useExisting: McTreeSelect }\n ]\n})\nexport class McTreeSelect extends McTreeSelectMixinBase implements\n AfterContentInit, AfterViewInit, OnChanges, OnDestroy, OnInit, DoCheck, ControlValueAccessor,\n CanDisable, HasTabIndex, McFormFieldControl<McTreeOption>, CanUpdateErrorState {\n\n /** A name for this control that can be used by `mc-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: DOMRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n offsetY = 0;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ];\n\n options: QueryList<McTreeOption>;\n\n @ViewChild('trigger', { static: false }) trigger: ElementRef;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChildren(McTag) tags: QueryList<McTag>;\n\n @ContentChild('mcSelectCleaner', { static: true }) cleaner: McCleaner;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(McTreeSelectTrigger, { static: false }) customTrigger: McTreeSelectTrigger;\n\n @ContentChild(McTreeSelectMatcher, { static: false }) customMatcher: McTreeSelectMatcher;\n\n @ContentChild(McTreeSelection, { static: false }) tree: McTreeSelection;\n\n @ContentChild(McSelectSearch, { static: false }) search: McSelectSearch;\n\n @ContentChild(McTreeSelectFooter, { static: false }) footer: McTreeSelectFooter;\n\n @Input() hiddenItemsText: string = 'еще {{ number }}';\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => o), map(() => {}));\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => !o), map(() => {}));\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<McTreeSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: McTreeOption, b: McTreeOption, options: McTreeOption[]) => number;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<McTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.onSelectionChange)))\n );\n }\n\n return this.ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n }) as Observable<McTreeSelectChange>;\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getMcSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n @Input()\n get autoSelect(): boolean {\n if (this.multiple) { return false; }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n /* tslint:disable-next-line:strict-type-predicates */\n if (typeof fn !== 'function') {\n throw getMcSelectNonFunctionValueError();\n }\n\n this._compareWith = fn;\n\n if (this.selectionModel) {\n // A different comparator means the selection could change.\n this.initializeSelection();\n }\n }\n\n get value(): any {\n return this.tree.getSelectedValues();\n }\n\n private _value: any = null;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this.parentFormField) {\n this._disabled ? this.parentFormField.stopFocusMonitor() : this.parentFormField.runFocusMonitor();\n }\n }\n\n private _disabled: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n private _focused = false;\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n get canShowCleaner(): boolean {\n return !this.disabled && this.cleaner && this.selectionModel.hasValue();\n }\n\n isEmptySearchResult: boolean;\n\n triggerValues: ITriggerValue[] = [];\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `mc-select-${nextUniqueId++}`;\n\n /** Emits whenever the component is destroyed. */\n private readonly destroy = new Subject<void>();\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n constructor(\n elementRef: ElementRef,\n readonly changeDetectorRef: ChangeDetectorRef,\n private readonly viewportRuler: ViewportRuler,\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Inject(MC_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory,\n @Optional() private readonly dir: Directionality,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() private readonly parentFormField: McFormField,\n @Optional() @Self() ngControl: NgControl\n ) {\n super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this.destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n\n if (this.search) { this.search.focus(); }\n\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.tree) { return; }\n\n this.tree.resetFocusedItemOnBlur = false;\n this.tree.optionShouldHoldFocusOnBlur = true;\n\n this.selectionModel = this.tree.selectionModel = new SelectionModel<any>(this.multiple);\n\n this.selectionModel.changed\n .subscribe(() => {\n this.onChange(this.selectedValues);\n\n if (this.multiple) {\n this.refreshTriggerValues();\n }\n });\n\n this.tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = this.tree.renderedOptions;\n this.tree.autoSelect = this.autoSelect;\n\n if (this.tree.multipleMode === null) {\n this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;\n }\n\n if (this.multiple) {\n this.tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.optionSelectionChanges\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n if (!this.multiple && this.panelOpen && event.isUserInput) {\n this.close();\n }\n });\n\n this.tree.selectionChange\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new McTreeSelectChange(this, event.option));\n\n if (this.search) {\n this.search.focus();\n }\n });\n\n if (!this.multiple) {\n this.selectionModel.changed\n .pipe(\n takeUntil(this.destroy),\n filter(({ added }) => !!added.length)\n )\n .subscribe(({ added }) => {\n this.tree.keyManager.setFocusOrigin('program');\n this.tree.keyManager.setActiveItem(\n this.options.find(({ data }) => data === added[0]) as any\n );\n });\n }\n\n this.subscribeOnSearchChanges();\n }\n\n ngAfterViewInit() {\n if (!this.tree) { return; }\n\n this.tags.changes\n .pipe(startWith(null))\n .subscribe(() => {\n this.calculateHiddenItems();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) { this.updateErrorState(); }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes.disabled) {\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this.destroy.next();\n this.destroy.complete();\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return hiddenItemsText.replace('{{ number }}', hiddenItems.toString());\n }\n\n clearValue($event): void {\n $event.stopPropagation();\n\n this.selectionModel.clear();\n this.tree.keyManager.setActiveItem(-1);\n\n this.setSelectionByValue([]);\n\n this.onChange(this.selectedValues);\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (!this.options?.length && !this.footer) {\n console.warn(`this.options.length: 0 and no footer, nothing to show.`);\n }\n\n if (this.disabled || !this.options?.length || this._panelOpen) { return; }\n\n this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n\n this._panelOpen = true;\n\n setTimeout(() => this.highlightCorrectOption());\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) { return; }\n\n this._panelOpen = false;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n if (this.search) {\n this.search.reset();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));\n\n return this.multiple ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) { return ''; }\n\n return this.tree.treeControl.getViewValue(this.selected);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (!this.disabled) {\n if (this.panelOpen) {\n this.handleOpenKeydown(event);\n } else {\n this.handleClosedKeydown(event);\n }\n }\n }\n\n onFocus() {\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange\n .pipe(take(1))\n .subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this.scrollTop;\n\n this.tree.updateScrollSize();\n });\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close());\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `mc-${this.parentFormField.color}` : '';\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel\n .deselect(this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value));\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems() {\n if (this.customTrigger || this.empty || !this.multiple) { return; }\n\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n this.changeDetectorRef.detectChanges();\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger.nativeElement.querySelector('.mc-tree-select__match-hidden-text');\n const matcherList = this.trigger.nativeElement.querySelector('.mc-tree-select__match-list');\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n const itemsCounterWidth: number = Math.floor(itemsCounter.getBoundingClientRect().width);\n\n const matcherListWidth: number = Math.floor(matcherList.getBoundingClientRect().width);\n const matcherWidth: number = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);\n\n if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {\n this.hiddenItems = 0;\n this.changeDetectorRef.detectChanges();\n }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir.overlayRef!.outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target)));\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.buildTriggerClone();\n triggerClone.querySelector('.mc-tree-select__match-hidden-text')?.remove();\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n (triggerClone.querySelectorAll('mc-tag') as NodeListOf<HTMLElement>)\n .forEach((item) => totalItemsWidth += this.getItemWidth(item));\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getTotalVisibleItems(): [number, number] {\n const triggerClone = this.buildTriggerClone();\n this.renderer.setStyle(\n triggerClone.querySelector('.mc-tree-select__match-hidden-text'),\n 'display',\n 'block'\n );\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let visibleItemsCount: number = 0;\n let totalVisibleItemsWidth: number = 0;\n (triggerClone.querySelectorAll('mc-tag') as NodeListOf<HTMLElement>)\n .forEach((item) => {\n if (item.offsetTop < item.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(item);\n visibleItemsCount++;\n }\n });\n\n triggerClone.remove();\n\n return [totalVisibleItemsWidth, visibleItemsCount];\n }\n\n private buildTriggerClone(): HTMLDivElement {\n const triggerClone = this.trigger.nativeElement.cloneNode(true);\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n return triggerClone;\n }\n\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = window.getComputedStyle(element);\n\n const width: number = parseInt(computedStyle.width as string);\n const marginLeft: number = parseInt(computedStyle.marginLeft as string);\n const marginRight: number = parseInt(computedStyle.marginRight as string);\n\n return width + marginLeft + marginRight;\n }\n\n private handleClosedKeydown(event: KeyboardEvent) {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {\n this.tree.keyManager.onKeydown(event);\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent) {\n /* tslint:disable-next-line */\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if (isArrowKey && event.altKey || keyCode === ESCAPE || keyCode === TAB) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n this.focus();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n return this.originalOnKeyDown.call(this.tree, event);\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.originalOnKeyDown.call(this.tree, event);\n } else {\n this.close();\n }\n } else if (this.multiple && isSelectAll(event)) {\n event.preventDefault();\n\n const hasDeselectedOptions = this.options.some((option) => !option.selected);\n\n this.options.forEach((option) => {\n if (hasDeselectedOptions && !option.disabled) {\n option.select();\n } else {\n option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.onKeydown(event);\n\n if (\n this.multiple && isArrowKey && event.shiftKey && this.tree.keyManager.activeItem &&\n this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n this.tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && this.tree.keyManager.activeItem) {\n this.tree.setSelectedOptionsByKey(\n this.tree.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey')\n );\n }\n\n if (this.search) {\n this.search.focus();\n }\n }\n }\n\n private refreshTriggerValues(): void {\n this.triggerValues = this.selectionModel.selected\n .map((node) => ({\n value: this.tree.treeControl.getValue(node),\n viewValue: this.tree.treeControl.getViewValue(node),\n disabled: this.tree.treeControl.isDisabled(node)\n }));\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiple && value) {\n if (!Array.isArray(value)) { throw getMcSelectNonArrayValueError(); }\n\n this.tree.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n this.originalOnKeyDown = this.tree.onKeyDown;\n\n this.tree.onKeyDown = () => {};\n\n this.tree.keyManager.change\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n if (this._panelOpen && this.panel) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {\n this.tree.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n return this.sortComparator ?\n this.sortComparator(a, b, options) :\n options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n if (this.empty || !this.tree.keyManager) { return; }\n\n const firstSelectedValue = this.multiple ? this.selectedValues[0] : this.selectedValues;\n\n const selectedOption = this.options.find((option) => option.value === firstSelectedValue);\n\n if (selectedOption) {\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.setActiveItem(selectedOption);\n }\n }\n\n /** Scrolls the active option into view. */\n private scrollActiveOptionIntoView() {\n this.tree.keyManager.activeItem?.focus();\n }\n\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n private calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this.viewportRuler.getViewportSize();\n const isRtl = this.isRtl();\n /* tslint:disable-next-line:no-magic-numbers */\n const paddingWidth = SELECT_PANEL_PADDING_X * 2;\n let offsetX: number = SELECT_PANEL_PADDING_X;\n\n // Invert the offset in LTR.\n if (!isRtl) { offsetX *= -1; }\n\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n } else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n\n private subscribeOnSearchChanges() {\n if (!this.search?.input.ngControl.valueChanges) { return; }\n\n this.search.input.ngControl.valueChanges\n .pipe(delay(0))\n .subscribe((value) => {\n this.isEmptySearchResult = !!value && this.tree.isEmpty;\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<div cdk-overlay-origin\n class=\"mc-tree-select__trigger\"\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <select class=\"cdk-visually-hidden\" [id]=\"id\"></select>\n\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\n <div class=\"mc-tree-select__match-list\">\n <mc-tag *ngFor=\"let triggerValue of triggerValues\"\n [selectable]=\"false\"\n [disabled]=\"triggerValue.disabled || disabled\"\n [class.mc-error]=\"errorState\">\n\n {{ triggerValue.viewValue }}\n <i mc-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!triggerValue.disabled && !disabled\"\n (click)=\"onRemoveSelectedOption(triggerValue, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-tree-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n </div>\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-tree-select__arrow-wrapper\">\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"mc-tree-select-matcher, [mc-tree-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n\n <div #panel\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-tree-select__content mc-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n\n <ng-content select=\"mc-tree-selection\"></ng-content>\n </div>\n\n <ng-content select=\"mc-tree-select-footer,[mc-tree-select-footer]\"></ng-content>\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MC_SELECT_SCROLL_STRATEGY_PROVIDER, McPseudoCheckboxModule } from '@ptsecurity/mosaic/core';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\nimport { McSelectModule } from '@ptsecurity/mosaic/select';\nimport { McTagsModule } from '@ptsecurity/mosaic/tags';\nimport { McTreeModule } from '@ptsecurity/mosaic/tree';\n\nimport {\n McTreeSelect,\n McTreeSelectFooter,\n McTreeSelectMatcher,\n McTreeSelectTrigger\n} from './tree-select.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n McTreeModule,\n McIconModule,\n McTagsModule,\n McPseudoCheckboxModule,\n McSelectModule\n ],\n exports: [McTreeSelect, McTreeSelectTrigger, McTreeSelectMatcher, McTreeSelectFooter, CommonModule],\n declarations: [McTreeSelect, McTreeSelectTrigger, McTreeSelectMatcher, McTreeSelectFooter],\n providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class McTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -29,13 +29,13 @@ const MC_CHECKBOX_CONTROL_VALUE_ACCESSOR = {
29
29
  var TransitionCheckState;
30
30
  (function (TransitionCheckState) {
31
31
  /** The initial state of the component before any user interaction. */
32
- TransitionCheckState[TransitionCheckState["Init"] = 0] = "Init";
32
+ TransitionCheckState["Init"] = "init";
33
33
  /** The state representing the component when it's becoming checked. */
34
- TransitionCheckState[TransitionCheckState["Checked"] = 1] = "Checked";
34
+ TransitionCheckState["Checked"] = "checked";
35
35
  /** The state representing the component when it's becoming unchecked. */
36
- TransitionCheckState[TransitionCheckState["Unchecked"] = 2] = "Unchecked";
36
+ TransitionCheckState["Unchecked"] = "unchecked";
37
37
  /** The state representing the component when it's becoming indeterminate. */
38
- TransitionCheckState[TransitionCheckState["Indeterminate"] = 3] = "Indeterminate";
38
+ TransitionCheckState["Indeterminate"] = "indeterminate";
39
39
  })(TransitionCheckState || (TransitionCheckState = {}));
40
40
  /** Change event object emitted by McCheckbox. */
41
41
  class McCheckboxChange {
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-checkbox.mjs","sources":["../../../packages/mosaic/checkbox/checkbox-config.ts","../../../packages/mosaic/checkbox/checkbox.ts","../../../packages/mosaic/checkbox/checkbox.html","../../../packages/mosaic/checkbox/checkbox-required-validator.ts","../../../packages/mosaic/checkbox/checkbox-module.ts","../../../packages/mosaic/checkbox/ptsecurity-mosaic-checkbox.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n\n/**\n * Checkbox click action when user click on input element.\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type McCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\n\n/**\n * Injection token that can be used to specify the checkbox click behavior.\n */\nexport const MC_CHECKBOX_CLICK_ACTION =\n new InjectionToken<McCheckboxClickAction>('mc-checkbox-click-action');\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n CanColor,\n CanColorCtor,\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinTabIndex,\n ThemePalette,\n toBoolean\n} from '@ptsecurity/mosaic/core';\n\nimport { MC_CHECKBOX_CLICK_ACTION, McCheckboxClickAction } from './checkbox-config';\n\n\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n\n/**\n * Provider Expression that allows mc-checkbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MC_CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McCheckbox),\n multi: true\n};\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init,\n /** The state representing the component when it's becoming checked. */\n Checked,\n /** The state representing the component when it's becoming unchecked. */\n Unchecked,\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate\n}\n\n/** Change event object emitted by McCheckbox. */\nexport class McCheckboxChange {\n /** The source McCheckbox of the event. */\n source: McCheckbox;\n /** The new `checked` value of the checkbox. */\n checked: boolean;\n}\n\n// Boilerplate for applying mixins to McCheckbox.\n/** @docs-private */\nexport class McCheckboxBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n/** @docs-private */\nexport const McCheckboxMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableCtor &\n typeof McCheckboxBase = mixinTabIndex(mixinColor(mixinDisabled(McCheckboxBase), ThemePalette.Primary));\n\n\n/**\n * A mosaic checkbox component. Supports all of the functionality of an HTML5 checkbox,\n * and exposes a similar API. A McCheckbox can be either checked, unchecked, indeterminate, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n */\n@Component({\n selector: 'mc-checkbox',\n exportAs: 'mcCheckbox',\n templateUrl: 'checkbox.html',\n styleUrls: ['checkbox.scss'],\n host: {\n class: 'mc-checkbox',\n '[id]': 'id',\n '[attr.id]': 'id',\n '[attr.disabled]': 'disabled',\n '[class.mc-indeterminate]': 'indeterminate',\n '[class.mc-checked]': 'checked',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-checkbox-label-before]': 'labelPosition == \"before\"'\n },\n providers: [MC_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCheckbox extends McCheckboxMixinBase implements ControlValueAccessor,\n AfterViewInit, OnDestroy, CanColor, CanDisable, HasTabIndex {\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id: string;\n\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | null = null;\n\n /** Event emitted when the checkbox's `checked` value changes. */\n @Output() readonly change: EventEmitter<McCheckboxChange> = new EventEmitter<McCheckboxChange>();\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** The value attribute of the native input element */\n @Input() value: string;\n\n /** The native `<input type=\"checkbox\">` element */\n @ViewChild('input', { static: false }) inputElement: ElementRef;\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n /** Whether the checkbox is required. */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = toBoolean(value);\n }\n\n private _required: boolean;\n\n /**\n * Whether the checkbox is checked.\n */\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n\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 /**\n * Whether the checkbox is disabled. This fully overrides the implementation provided by\n * mixinDisabled, but the mixin is still required because mixinTabIndex requires it.\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 /**\n * Whether the checkbox 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()\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 if (this._indeterminate) {\n this.transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this.transitionCheckState(\n this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n\n this.indeterminateChange.emit(this._indeterminate);\n }\n }\n\n private _indeterminate: boolean = false;\n\n private uniqueId: string = `mc-checkbox-${++nextUniqueId}`;\n\n private currentAnimationClass: string = '';\n\n private currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n\n constructor(\n elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private focusMonitor: FocusMonitor,\n @Optional() @Inject(MC_CHECKBOX_CLICK_ACTION) private clickAction: McCheckboxClickAction\n ) {\n super(elementRef);\n\n this.id = this.uniqueId;\n }\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n // tslint:disable-next-line:no-empty\n onTouched: () => any = () => {};\n\n ngAfterViewInit() {\n this.focusMonitor\n .monitor(this.inputElement.nativeElement)\n .subscribe((focusOrigin) => this.onInputFocusChange(focusOrigin));\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.inputElement.nativeElement);\n }\n\n /** Method being called whenever the label text changes. */\n onLabelTextChange() {\n // This method is getting called whenever the label of the checkbox changes.\n // Since the checkbox uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this.changeDetectorRef.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n getAriaChecked(): 'true' | 'false' | 'mixed' {\n return this.checked ? 'true' : (this.indeterminate ? 'mixed' : 'false');\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked;\n }\n\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @param event Input click event\n */\n onInputClick(event: Event) {\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.toggle();\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 /** Focuses the checkbox. */\n focus(): void {\n this.focusMonitor.focusVia(this.inputElement.nativeElement, 'keyboard');\n }\n\n onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n // tslint:disable-next-line:no-empty\n private controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n private transitionCheckState(newState: TransitionCheckState) {\n const oldState = this.currentCheckState;\n const element: HTMLElement = this.elementRef.nativeElement;\n\n if (oldState === newState) { return; }\n\n if (this.currentAnimationClass.length > 0) {\n element.classList.remove(this.currentAnimationClass);\n }\n\n this.currentCheckState = newState;\n\n if (this.currentAnimationClass.length > 0) {\n element.classList.add(this.currentAnimationClass);\n }\n }\n\n private emitChangeEvent() {\n const event = new McCheckboxChange();\n event.source = this;\n event.checked = this.checked;\n\n this.controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n }\n\n /** Function is called whenever the focus changes for the input element. */\n private onInputFocusChange(focusOrigin: FocusOrigin) {\n if (focusOrigin) {\n this.onTouched();\n }\n }\n}\n","<label [attr.for]=\"inputId\" class=\"mc-checkbox-layout\" #label>\n <div class=\"mc-checkbox-inner-container\"\n [class.mc-checkbox-inner-container-no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\">\n <input #input\n type=\"checkbox\"\n class=\"mc-checkbox-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\">\n <div class=\"mc-checkbox-frame\">\n <i class=\"mc-checkbox-checkmark mc mc-check_16\"></i>\n <i class=\"mc-checkbox-mixedmark mc mc-minus_16\"></i>\n </div>\n <div class=\"mc-checkbox-overlay\"></div>\n </div>\n\n <div class=\"mc-checkbox__text-container\">\n <span class=\"mc-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"mc-hint\"></ng-content>\n </div>\n</label>\n","import {\n Directive,\n forwardRef,\n Provider\n} from '@angular/core';\nimport {\n CheckboxRequiredValidator,\n NG_VALIDATORS\n} from '@angular/forms';\n\n\nexport const MC_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McCheckboxRequiredValidator),\n multi: true\n};\n\n/**\n * Validator for Mosaic checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `mc-checkbox`.\n */\n@Directive({\n selector: `mc-checkbox[required][formControlName],\n mc-checkbox[required][formControl], mc-checkbox[required][ngModel]`,\n providers: [MC_CHECKBOX_REQUIRED_VALIDATOR],\n host: { '[attr.required]': 'required ? \"\" : null' }\n})\nexport class McCheckboxRequiredValidator extends CheckboxRequiredValidator {\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { McCheckbox } from './checkbox';\nimport { McCheckboxRequiredValidator } from './checkbox-required-validator';\n\n\n@NgModule({\n imports: [CommonModule],\n exports: [McCheckbox, McCheckboxRequiredValidator],\n declarations: [McCheckbox, McCheckboxRequiredValidator]\n})\nexport class McCheckboxModule {\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-checkbox.mjs","sources":["../../../packages/mosaic/checkbox/checkbox-config.ts","../../../packages/mosaic/checkbox/checkbox.ts","../../../packages/mosaic/checkbox/checkbox.html","../../../packages/mosaic/checkbox/checkbox-required-validator.ts","../../../packages/mosaic/checkbox/checkbox-module.ts","../../../packages/mosaic/checkbox/ptsecurity-mosaic-checkbox.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n\n/**\n * Checkbox click action when user click on input element.\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type McCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\n\n/**\n * Injection token that can be used to specify the checkbox click behavior.\n */\nexport const MC_CHECKBOX_CLICK_ACTION =\n new InjectionToken<McCheckboxClickAction>('mc-checkbox-click-action');\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n CanColor,\n CanColorCtor,\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinTabIndex,\n ThemePalette,\n toBoolean,\n checkedState\n} from '@ptsecurity/mosaic/core';\n\nimport { MC_CHECKBOX_CLICK_ACTION, McCheckboxClickAction } from './checkbox-config';\n\n\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n\n/**\n * Provider Expression that allows mc-checkbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MC_CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McCheckbox),\n multi: true\n};\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init = 'init',\n /** The state representing the component when it's becoming checked. */\n Checked = 'checked',\n /** The state representing the component when it's becoming unchecked. */\n Unchecked = 'unchecked',\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate = 'indeterminate'\n}\n\n/** Change event object emitted by McCheckbox. */\nexport class McCheckboxChange {\n /** The source McCheckbox of the event. */\n source: McCheckbox;\n /** The new `checked` value of the checkbox. */\n checked: boolean;\n}\n\n// Boilerplate for applying mixins to McCheckbox.\n/** @docs-private */\nexport class McCheckboxBase {\n constructor(public elementRef: ElementRef) {}\n}\n\n/** @docs-private */\nexport const McCheckboxMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableCtor &\n typeof McCheckboxBase = mixinTabIndex(mixinColor(mixinDisabled(McCheckboxBase), ThemePalette.Primary));\n\n\n/**\n * A mosaic checkbox component. Supports all of the functionality of an HTML5 checkbox,\n * and exposes a similar API. A McCheckbox can be either checked, unchecked, indeterminate, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n */\n@Component({\n selector: 'mc-checkbox',\n exportAs: 'mcCheckbox',\n templateUrl: 'checkbox.html',\n styleUrls: ['checkbox.scss'],\n host: {\n class: 'mc-checkbox',\n '[id]': 'id',\n '[attr.id]': 'id',\n '[attr.disabled]': 'disabled',\n '[class.mc-indeterminate]': 'indeterminate',\n '[class.mc-checked]': 'checked',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-checkbox-label-before]': 'labelPosition == \"before\"'\n },\n providers: [MC_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCheckbox extends McCheckboxMixinBase implements ControlValueAccessor,\n AfterViewInit, OnDestroy, CanColor, CanDisable, HasTabIndex {\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id: string;\n\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | null = null;\n\n /** Event emitted when the checkbox's `checked` value changes. */\n @Output() readonly change: EventEmitter<McCheckboxChange> = new EventEmitter<McCheckboxChange>();\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** The value attribute of the native input element */\n @Input() value: string;\n\n /** The native `<input type=\"checkbox\">` element */\n @ViewChild('input', { static: false }) inputElement: ElementRef;\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n /** Whether the checkbox is required. */\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = toBoolean(value);\n }\n\n private _required: boolean;\n\n /**\n * Whether the checkbox is checked.\n */\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n\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 /**\n * Whether the checkbox is disabled. This fully overrides the implementation provided by\n * mixinDisabled, but the mixin is still required because mixinTabIndex requires it.\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 /**\n * Whether the checkbox 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()\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 if (this._indeterminate) {\n this.transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this.transitionCheckState(\n this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n\n this.indeterminateChange.emit(this._indeterminate);\n }\n }\n\n private _indeterminate: boolean = false;\n\n private uniqueId: string = `mc-checkbox-${++nextUniqueId}`;\n\n private currentAnimationClass: string = '';\n\n private currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n\n constructor(\n elementRef: ElementRef,\n private changeDetectorRef: ChangeDetectorRef,\n private focusMonitor: FocusMonitor,\n @Optional() @Inject(MC_CHECKBOX_CLICK_ACTION) private clickAction: McCheckboxClickAction\n ) {\n super(elementRef);\n\n this.id = this.uniqueId;\n }\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n // tslint:disable-next-line:no-empty\n onTouched: () => any = () => {};\n\n ngAfterViewInit() {\n this.focusMonitor\n .monitor(this.inputElement.nativeElement)\n .subscribe((focusOrigin) => this.onInputFocusChange(focusOrigin));\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.inputElement.nativeElement);\n }\n\n /** Method being called whenever the label text changes. */\n onLabelTextChange() {\n // This method is getting called whenever the label of the checkbox changes.\n // Since the checkbox uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this.changeDetectorRef.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n getAriaChecked(): checkedState {\n return this.checked ? 'true' : (this.indeterminate ? 'mixed' : 'false');\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked;\n }\n\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @param event Input click event\n */\n onInputClick(event: Event) {\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.toggle();\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 /** Focuses the checkbox. */\n focus(): void {\n this.focusMonitor.focusVia(this.inputElement.nativeElement, 'keyboard');\n }\n\n onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n // tslint:disable-next-line:no-empty\n private controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n private transitionCheckState(newState: TransitionCheckState) {\n const oldState = this.currentCheckState;\n const element: HTMLElement = this.elementRef.nativeElement;\n\n if (oldState === newState) { return; }\n\n if (this.currentAnimationClass.length > 0) {\n element.classList.remove(this.currentAnimationClass);\n }\n\n this.currentCheckState = newState;\n\n if (this.currentAnimationClass.length > 0) {\n element.classList.add(this.currentAnimationClass);\n }\n }\n\n private emitChangeEvent() {\n const event = new McCheckboxChange();\n event.source = this;\n event.checked = this.checked;\n\n this.controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n }\n\n /** Function is called whenever the focus changes for the input element. */\n private onInputFocusChange(focusOrigin: FocusOrigin) {\n if (focusOrigin) {\n this.onTouched();\n }\n }\n}\n","<label [attr.for]=\"inputId\" class=\"mc-checkbox-layout\" #label>\n <div class=\"mc-checkbox-inner-container\"\n [class.mc-checkbox-inner-container-no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\">\n <input #input\n type=\"checkbox\"\n class=\"mc-checkbox-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\">\n <div class=\"mc-checkbox-frame\">\n <i class=\"mc-checkbox-checkmark mc mc-check_16\"></i>\n <i class=\"mc-checkbox-mixedmark mc mc-minus_16\"></i>\n </div>\n <div class=\"mc-checkbox-overlay\"></div>\n </div>\n\n <div class=\"mc-checkbox__text-container\">\n <span class=\"mc-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"mc-hint\"></ng-content>\n </div>\n</label>\n","import {\n Directive,\n forwardRef,\n Provider\n} from '@angular/core';\nimport {\n CheckboxRequiredValidator,\n NG_VALIDATORS\n} from '@angular/forms';\n\n\nexport const MC_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McCheckboxRequiredValidator),\n multi: true\n};\n\n/**\n * Validator for Mosaic checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `mc-checkbox`.\n */\n@Directive({\n selector: `mc-checkbox[required][formControlName],\n mc-checkbox[required][formControl], mc-checkbox[required][ngModel]`,\n providers: [MC_CHECKBOX_REQUIRED_VALIDATOR],\n host: { '[attr.required]': 'required ? \"\" : null' }\n})\nexport class McCheckboxRequiredValidator extends CheckboxRequiredValidator {\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { McCheckbox } from './checkbox';\nimport { McCheckboxRequiredValidator } from './checkbox-required-validator';\n\n\n@NgModule({\n imports: [CommonModule],\n exports: [McCheckbox, McCheckboxRequiredValidator],\n declarations: [McCheckbox, McCheckboxRequiredValidator]\n})\nexport class McCheckboxModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}