@ptsecurity/mosaic 13.5.0 → 13.6.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 (70) hide show
  1. package/_theming.scss +119 -82
  2. package/_visual.scss +45 -41
  3. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +11 -2
  4. package/design-tokens/legacy-2017/tokens/components/alert.json5 +10 -10
  5. package/design-tokens/legacy-2017/tokens/components/button.json5 +8 -8
  6. package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +14 -14
  7. package/design-tokens/legacy-2017/tokens/components/divider.json5 +6 -0
  8. package/design-tokens/legacy-2017/tokens/components/form-field.json5 +6 -6
  9. package/design-tokens/legacy-2017/tokens/components/popup.json5 +0 -2
  10. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +12 -0
  11. package/design-tokens/legacy-2017/tokens/components/tags.json5 +16 -16
  12. package/design-tokens/legacy-2017/tokens.d.ts +56 -52
  13. package/design-tokens/pt-2022/tokens/components/alert.json5 +10 -10
  14. package/design-tokens/pt-2022/tokens/components/button.json5 +8 -8
  15. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +18 -18
  16. package/design-tokens/pt-2022/tokens/components/divider.json5 +6 -0
  17. package/design-tokens/pt-2022/tokens/components/form-field.json5 +6 -6
  18. package/design-tokens/pt-2022/tokens/components/popup.json5 +0 -2
  19. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +12 -0
  20. package/design-tokens/pt-2022/tokens/components/tags.json5 +12 -12
  21. package/design-tokens/pt-2022/tokens.d.ts +45 -41
  22. package/esm2020/core/option/option.mjs +1 -1
  23. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +20 -8
  24. package/esm2020/design-tokens/legacy-2017/tokens.mjs +57 -53
  25. package/esm2020/design-tokens/pt-2022/tokens.mjs +46 -42
  26. package/esm2020/form-field/password-hint.mjs +6 -1
  27. package/esm2020/input/input-password.mjs +12 -8
  28. package/esm2020/list/list-selection.component.mjs +1 -1
  29. package/esm2020/select/select.component.mjs +3 -3
  30. package/esm2020/tree/control/flat-tree-control.mjs +5 -2
  31. package/esm2020/tree/tree-option.component.mjs +3 -3
  32. package/esm2020/tree-select/tree-select.component.mjs +23 -18
  33. package/fesm2015/ptsecurity-mosaic-core.mjs +19 -8
  34. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  35. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +126 -114
  36. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  37. package/fesm2015/ptsecurity-mosaic-form-field.mjs +5 -0
  38. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  39. package/fesm2015/ptsecurity-mosaic-input.mjs +11 -7
  40. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  41. package/fesm2015/ptsecurity-mosaic-list.mjs +1 -1
  42. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  43. package/fesm2015/ptsecurity-mosaic-select.mjs +2 -2
  44. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  45. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +22 -17
  46. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  47. package/fesm2015/ptsecurity-mosaic-tree.mjs +6 -3
  48. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  49. package/fesm2020/ptsecurity-mosaic-core.mjs +19 -8
  50. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  51. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +126 -114
  52. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  53. package/fesm2020/ptsecurity-mosaic-form-field.mjs +5 -0
  54. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  55. package/fesm2020/ptsecurity-mosaic-input.mjs +11 -7
  56. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  57. package/fesm2020/ptsecurity-mosaic-list.mjs +1 -1
  58. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  59. package/fesm2020/ptsecurity-mosaic-select.mjs +2 -2
  60. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  61. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +22 -17
  62. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  63. package/fesm2020/ptsecurity-mosaic-tree.mjs +6 -3
  64. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  65. package/input/input-password.d.ts +7 -5
  66. package/package.json +4 -4
  67. package/prebuilt-themes/dark-theme.css +1 -1
  68. package/prebuilt-themes/default-theme.css +1 -1
  69. package/tree/control/flat-tree-control.d.ts +5 -1
  70. package/tree-select/tree-select.component.d.ts +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-list.mjs","sources":["../../../packages/mosaic/list/list-selection.component.ts","../../../packages/mosaic/list/list-option.html","../../../packages/mosaic/list/list.component.ts","../../../packages/mosaic/list/list-item.html","../../../packages/mosaic/list/list.module.ts","../../../packages/mosaic/list/ptsecurity-mosaic-list.ts"],"sourcesContent":["/* tslint:disable:no-empty */\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport {\r\n AfterContentInit,\r\n Attribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation,\r\n ChangeDetectorRef,\r\n Inject,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n NgZone,\r\n Optional,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FocusKeyManager, IFocusableOption } from '@ptsecurity/cdk/a11y';\r\nimport {\r\n hasModifierKey,\r\n isCopy,\r\n isSelectAll,\r\n isVerticalMovement,\r\n DOWN_ARROW,\r\n END,\r\n ENTER,\r\n HOME,\r\n LEFT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n RIGHT_ARROW,\r\n SPACE,\r\n TAB,\r\n UP_ARROW\r\n} from '@ptsecurity/cdk/keycodes';\r\nimport {\r\n CanDisable,\r\n mixinDisabled,\r\n toBoolean,\r\n CanDisableCtor,\r\n HasTabIndexCtor,\r\n mixinTabIndex,\r\n HasTabIndex,\r\n MultipleMode,\r\n McOptgroup,\r\n MC_OPTION_ACTION_PARENT,\r\n McOptionActionComponent\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McDropdownTrigger } from '@ptsecurity/mosaic/dropdown';\r\nimport { McTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\r\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\r\nimport { startWith, take, takeUntil } from 'rxjs/operators';\r\n\r\n\r\n// tslint:disable-next-line:naming-convention\r\nexport interface McOptionEvent {\r\n option: McListOption;\r\n}\r\n\r\n/**\r\n * Component for list-options of selection-list. Each list-option can automatically\r\n * generate a checkbox and can put current item into the selectionModel of selection-list\r\n * if the current item is selected.\r\n */\r\n@Component({\r\n exportAs: 'mcListOption',\r\n selector: 'mc-list-option',\r\n templateUrl: './list-option.html',\r\n host: {\r\n class: 'mc-list-option',\r\n\r\n '[class.mc-selected]': 'selected',\r\n '[class.mc-disabled]': 'disabled',\r\n '[class.mc-focused]': 'hasFocus',\r\n\r\n '[class.mc-action-button-focused]': 'actionButton?.active',\r\n\r\n '[attr.tabindex]': 'tabIndex',\r\n '[attr.disabled]': 'disabled || null',\r\n\r\n '(focusin)': 'focus()',\r\n '(blur)': 'blur()',\r\n '(click)': 'handleClick($event)',\r\n '(keydown)': 'onKeydown($event)'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: MC_OPTION_ACTION_PARENT, useExisting: McListOption }\r\n ]\r\n})\r\nexport class McListOption implements OnDestroy, OnInit, IFocusableOption {\r\n hasFocus: boolean = false;\r\n\r\n readonly onFocus = new Subject<McOptionEvent>();\r\n\r\n readonly onBlur = new Subject<McOptionEvent>();\r\n\r\n @ContentChild(McOptionActionComponent) actionButton: McOptionActionComponent;\r\n @ContentChild(McTooltipTrigger) tooltipTrigger: McTooltipTrigger;\r\n @ContentChild(McDropdownTrigger) dropdownTrigger: McDropdownTrigger;\r\n\r\n @ViewChild('text', { static: false }) text: ElementRef;\r\n\r\n // Whether the label should appear before or after the checkbox. Defaults to 'after'\r\n @Input() checkboxPosition: 'before' | 'after';\r\n\r\n /**\r\n * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`\r\n * in the first cycle.\r\n */\r\n private inputsInitialized = false;\r\n\r\n @Input()\r\n get value(): any { return this._value; }\r\n set value(newValue: any) {\r\n if (this.selected && newValue !== this.value && this.inputsInitialized) {\r\n this.selected = false;\r\n }\r\n\r\n this._value = newValue;\r\n }\r\n private _value: any;\r\n\r\n @Input()\r\n get disabled() {\r\n const listSelectionDisabled = this.listSelection && this.listSelection.disabled;\r\n const groupDisabled = this.group && this.group.disabled;\r\n\r\n return listSelectionDisabled || groupDisabled || this._disabled;\r\n }\r\n\r\n set disabled(value: any) {\r\n const newValue = toBoolean(value);\r\n\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n private _disabled = false;\r\n\r\n @Input()\r\n get showCheckbox() {\r\n return this._showCheckbox !== undefined ? this._showCheckbox : this.listSelection.showCheckbox;\r\n }\r\n\r\n set showCheckbox(value: any) {\r\n this._showCheckbox = coerceBooleanProperty(value);\r\n }\r\n\r\n private _showCheckbox: boolean;\r\n\r\n @Input()\r\n get selected(): boolean {\r\n return this.listSelection.selectionModel?.isSelected(this) || false;\r\n }\r\n\r\n set selected(value: boolean) {\r\n const isSelected = toBoolean(value);\r\n\r\n if (isSelected !== this._selected) {\r\n this.setSelected(isSelected);\r\n }\r\n }\r\n\r\n private _selected = false;\r\n\r\n get tabIndex(): any {\r\n return this.disabled ? null : -1;\r\n }\r\n\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>,\r\n private changeDetector: ChangeDetectorRef,\r\n private ngZone: NgZone,\r\n @Inject(forwardRef(() => McListSelection)) public listSelection: McListSelection,\r\n @Optional() readonly group: McOptgroup\r\n ) {}\r\n\r\n ngOnInit() {\r\n const list = this.listSelection;\r\n\r\n if (list._value && list._value.some((value) => list.compareWith(value, this._value))) {\r\n this.setSelected(true);\r\n }\r\n\r\n const wasSelected = this._selected;\r\n\r\n // List options that are selected at initialization can't be reported properly to the form\r\n // control. This is because it takes some time until the selection-list knows about all\r\n // available options. Also it can happen that the ControlValueAccessor has an initial value\r\n // that should be used instead. Deferring the value change report to the next tick ensures\r\n // that the form control value is not being overwritten.\r\n Promise.resolve().then(() => {\r\n if (this._selected || wasSelected) {\r\n this.selected = true;\r\n this.changeDetector.markForCheck();\r\n }\r\n });\r\n\r\n this.inputsInitialized = true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.selected) {\r\n // We have to delay this until the next tick in order\r\n // to avoid changed after checked errors.\r\n Promise.resolve().then(() => this.selected = false);\r\n }\r\n\r\n this.listSelection.removeOptionFromList(this);\r\n }\r\n\r\n toggle(): void {\r\n this.selected = !this.selected;\r\n }\r\n\r\n getLabel() {\r\n return this.text ? this.text.nativeElement.textContent : '';\r\n }\r\n\r\n setSelected(selected: boolean) {\r\n if (this._selected === selected || !this.listSelection.selectionModel) { return; }\r\n\r\n this._selected = selected;\r\n\r\n if (selected) {\r\n this.listSelection.selectionModel.select(this);\r\n } else {\r\n this.listSelection.selectionModel.deselect(this);\r\n }\r\n\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n getHeight(): number {\r\n const clientRects = this.elementRef.nativeElement.getClientRects();\r\n\r\n return clientRects.length ? clientRects[0].height : 0;\r\n }\r\n\r\n handleClick($event) {\r\n if (this.disabled) { return; }\r\n\r\n this.listSelection.setSelectedOptionsByClick(\r\n this, hasModifierKey($event, 'shiftKey'), hasModifierKey($event, 'ctrlKey')\r\n );\r\n }\r\n\r\n onKeydown($event) {\r\n if (!this.actionButton) { return; }\r\n\r\n if ($event.keyCode === TAB && !$event.shiftKey && !this.actionButton.hasFocus) {\r\n this.actionButton.focus();\r\n\r\n $event.preventDefault();\r\n }\r\n }\r\n\r\n focus() {\r\n if (this.disabled || this.hasFocus || this.actionButton?.hasFocus) { return; }\r\n\r\n this.elementRef.nativeElement.focus();\r\n\r\n this.onFocus.next({ option: this });\r\n\r\n Promise.resolve().then(() => {\r\n this.hasFocus = true;\r\n\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n\r\n blur(): void {\r\n // When animations are enabled, Angular may end up removing the option from the DOM a little\r\n // earlier than usual, causing it to be blurred and throwing off the logic in the list\r\n // that moves focus not the next item. To work around the issue, we defer marking the option\r\n // as not focused until the next time the zone stabilizes.\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.ngZone.run(() => {\r\n this.hasFocus = false;\r\n\r\n if (this.actionButton?.hasFocus) { return; }\r\n\r\n this.onBlur.next({ option: this });\r\n });\r\n });\r\n }\r\n\r\n getHostElement(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n\r\n\r\nexport const MC_SELECTION_LIST_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => McListSelection),\r\n multi: true\r\n};\r\n\r\nexport class McListSelectionChange {\r\n constructor(public source: McListSelection, public option: McListOption) {}\r\n}\r\n\r\nexport class McListSelectAllEvent<T> {\r\n constructor(public source: McListSelection, public options: T[]) {}\r\n}\r\n\r\nexport class McListCopyEvent<T> {\r\n constructor(public source: McListSelection, public option: T) {}\r\n}\r\n\r\nexport class McListSelectionBase {\r\n constructor(public elementRef: ElementRef) {}\r\n}\r\n\r\n// tslint:disable-next-line:naming-convention\r\nexport const McListSelectionMixinBase: CanDisableCtor & HasTabIndexCtor & typeof McListSelectionBase\r\n = mixinTabIndex(mixinDisabled(McListSelectionBase));\r\n\r\n@Component({\r\n exportAs: 'mcListSelection',\r\n selector: 'mc-list-selection',\r\n template: `\r\n <div [attr.tabindex]=\"tabIndex\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n <ng-content></ng-content>\r\n </div>`,\r\n styleUrls: ['./list.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n inputs: ['disabled'],\r\n host: {\r\n class: 'mc-list-selection',\r\n\r\n '[attr.tabindex]': '-1',\r\n '[attr.disabled]': 'disabled || null',\r\n\r\n '(keydown)': 'onKeyDown($event)',\r\n '(window:resize)': 'updateScrollSize()'\r\n },\r\n providers: [MC_SELECTION_LIST_VALUE_ACCESSOR],\r\n preserveWhitespaces: false\r\n})\r\nexport class McListSelection extends McListSelectionMixinBase implements CanDisable, HasTabIndex, AfterContentInit,\r\n ControlValueAccessor {\r\n\r\n keyManager: FocusKeyManager<McListOption>;\r\n\r\n @ContentChildren(McListOption, { descendants: true }) options: QueryList<McListOption>;\r\n\r\n @Output() readonly onSelectAll = new EventEmitter<McListSelectAllEvent<McListOption>>();\r\n\r\n @Output() readonly onCopy = new EventEmitter<McListCopyEvent<McListOption>>();\r\n\r\n @Input()\r\n get autoSelect(): boolean {\r\n return this._autoSelect;\r\n }\r\n\r\n set autoSelect(value: boolean) {\r\n this._autoSelect = coerceBooleanProperty(value);\r\n }\r\n\r\n private _autoSelect: boolean = true;\r\n\r\n @Input()\r\n get noUnselectLast(): boolean {\r\n return this._noUnselectLast;\r\n }\r\n\r\n set noUnselectLast(value: boolean) {\r\n this._noUnselectLast = coerceBooleanProperty(value);\r\n }\r\n\r\n private _noUnselectLast: boolean = true;\r\n\r\n multipleMode: MultipleMode | null;\r\n\r\n get multiple(): boolean {\r\n return !!this.multipleMode;\r\n }\r\n\r\n @Input() horizontal: boolean = false;\r\n\r\n @Input()\r\n get tabIndex(): any {\r\n return this.disabled ? -1 : this._tabIndex;\r\n }\r\n\r\n set tabIndex(value: any) {\r\n this.userTabIndex = value;\r\n this._tabIndex = value;\r\n }\r\n\r\n private _tabIndex = 0;\r\n\r\n userTabIndex: number | null = null;\r\n\r\n get showCheckbox(): boolean {\r\n return this.multipleMode === MultipleMode.CHECKBOX;\r\n }\r\n\r\n // Emits a change event whenever the selected state of an option changes.\r\n @Output() readonly selectionChange: EventEmitter<McListSelectionChange> = new EventEmitter<McListSelectionChange>();\r\n\r\n selectionModel: SelectionModel<McListOption>;\r\n\r\n get optionFocusChanges(): Observable<McOptionEvent> {\r\n return merge(...this.options.map((option) => option.onFocus));\r\n }\r\n\r\n get optionBlurChanges(): Observable<McOptionEvent> {\r\n return merge(...this.options.map((option) => option.onBlur));\r\n }\r\n\r\n // tslint:disable-next-line:orthodox-getter-and-setter naming-convention\r\n _value: string[] | null;\r\n\r\n /** Emits whenever the component is destroyed. */\r\n private readonly destroyed = new Subject<void>();\r\n\r\n private optionFocusSubscription: Subscription | null;\r\n\r\n private optionBlurSubscription: Subscription | null;\r\n\r\n constructor(\r\n elementRef: ElementRef,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Attribute('multiple') multiple: MultipleMode,\r\n @Optional() private clipboard: Clipboard\r\n ) {\r\n super(elementRef);\r\n\r\n if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) {\r\n this.multipleMode = multiple;\r\n } else if (multiple !== null) {\r\n this.multipleMode = MultipleMode.CHECKBOX;\r\n }\r\n\r\n if (this.multipleMode === MultipleMode.CHECKBOX) {\r\n this.autoSelect = false;\r\n this.noUnselectLast = false;\r\n }\r\n\r\n this.selectionModel = new SelectionModel<McListOption>(this.multiple);\r\n }\r\n\r\n /**\r\n * Function used for comparing an option against the selected value when determining which\r\n * options should appear as selected. The first argument is the value of an options. The second\r\n * one is a value from the selected value. A boolean must be returned.\r\n */\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\r\n\r\n ngAfterContentInit(): void {\r\n this.horizontal = toBoolean(this.horizontal);\r\n\r\n this.keyManager = new FocusKeyManager<McListOption>(this.options)\r\n .withTypeAhead()\r\n .withVerticalOrientation(!this.horizontal)\r\n .withHorizontalOrientation(this.horizontal ? 'ltr' : null);\r\n\r\n this.keyManager.tabOut\r\n .pipe(takeUntil(this.destroyed))\r\n .subscribe(() => {\r\n this._tabIndex = -1;\r\n\r\n setTimeout(() => {\r\n this._tabIndex = this.userTabIndex || 0;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n });\r\n\r\n if (this._value) {\r\n this.setOptionsFromValues(this._value);\r\n }\r\n\r\n this.selectionModel.changed\r\n .pipe(takeUntil(this.destroyed))\r\n .subscribe((event) => {\r\n for (const item of event.added) { item.selected = true; }\r\n\r\n for (const item of event.removed) { item.selected = false; }\r\n });\r\n\r\n this.options.changes\r\n .pipe(startWith(null), takeUntil(this.destroyed))\r\n .subscribe(() => {\r\n this.resetOptions();\r\n\r\n // Check to see if we need to update our tab index\r\n this.updateTabIndex();\r\n });\r\n\r\n this.updateScrollSize();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed.next();\r\n\r\n this.destroyed.complete();\r\n }\r\n\r\n focus(): void {\r\n if (this.options.length === 0) { return; }\r\n\r\n this.keyManager.setFirstItemActive();\r\n }\r\n\r\n blur() {\r\n if (!this.hasFocusedOption()) {\r\n this.keyManager.setActiveItem(-1);\r\n }\r\n\r\n this.onTouched();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n selectAll() {\r\n this.options.forEach((option) => option.setSelected(true));\r\n\r\n this.reportValueChange();\r\n }\r\n\r\n deselectAll() {\r\n this.options.forEach((option) => option.setSelected(false));\r\n\r\n this.reportValueChange();\r\n }\r\n\r\n updateScrollSize(): void {\r\n if (this.horizontal || !this.options.first) { return; }\r\n\r\n this.keyManager.withScrollSize(Math.floor(this.getHeight() / this.options.first.getHeight()));\r\n }\r\n\r\n setSelectedOptionsByClick(option: McListOption, shiftKey: boolean, ctrlKey: boolean): void {\r\n if (shiftKey && this.multiple) {\r\n this.selectActiveOptions();\r\n } else if (ctrlKey) {\r\n if (!this.canDeselectLast(option)) { return; }\r\n\r\n this.selectionModel.toggle(option);\r\n } else if (this.autoSelect) {\r\n this.selectionModel.clear();\r\n this.selectionModel.toggle(option);\r\n } else {\r\n this.selectionModel.toggle(option);\r\n }\r\n\r\n this.emitChangeEvent(option);\r\n this.reportValueChange();\r\n }\r\n\r\n setSelectedOptionsByKey(option: McListOption, shiftKey: boolean, ctrlKey: boolean): void {\r\n if (shiftKey && this.multiple) {\r\n this.selectActiveOptions();\r\n } else if (ctrlKey) {\r\n if (!this.canDeselectLast(option)) { return; }\r\n } else if (this.autoSelect) {\r\n this.options.forEach((item) => item.setSelected(false));\r\n option.setSelected(true);\r\n\r\n this.emitChangeEvent(option);\r\n this.reportValueChange();\r\n }\r\n }\r\n\r\n selectActiveOptions(): void {\r\n const options = this.options.toArray();\r\n let fromIndex = this.keyManager.previousActiveItemIndex;\r\n let toIndex = this.keyManager.previousActiveItemIndex = this.keyManager.activeItemIndex;\r\n const selectedOptionState = options[fromIndex].selected;\r\n\r\n if (toIndex === fromIndex) { return; }\r\n\r\n if (fromIndex > toIndex) {\r\n [fromIndex, toIndex] = [toIndex, fromIndex];\r\n }\r\n\r\n options\r\n .slice(fromIndex, toIndex + 1)\r\n .filter((item) => !item.disabled)\r\n .forEach((renderedOption) => {\r\n if (!selectedOptionState && this.noUnselectLast && this.selectionModel.selected.length === 1) {\r\n return;\r\n }\r\n\r\n renderedOption.setSelected(selectedOptionState);\r\n });\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n writeValue(values: string[]): void {\r\n this._value = values;\r\n\r\n if (this.options) {\r\n this.setOptionsFromValues(values || []);\r\n }\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n // Implemented as a part of ControlValueAccessor.\r\n setDisabledState(isDisabled: boolean): void {\r\n if (this.options) {\r\n this.options.forEach((option) => option.disabled = isDisabled);\r\n }\r\n }\r\n\r\n getSelectedOptionValues(): string[] {\r\n return this.options.filter((option) => option.selected).map((option) => option.value);\r\n }\r\n\r\n // Toggles the selected state of the currently focused option.\r\n toggleFocusedOption(): void {\r\n const focusedIndex = this.keyManager.activeItemIndex;\r\n\r\n if (focusedIndex != null && this.isValidIndex(focusedIndex)) {\r\n const focusedOption: McListOption = this.options.toArray()[focusedIndex];\r\n\r\n if (focusedOption && this.canDeselectLast(focusedOption)) {\r\n focusedOption.toggle();\r\n\r\n // Emit a change event because the focused option changed its state through user interaction.\r\n this.emitChangeEvent(focusedOption);\r\n }\r\n }\r\n }\r\n\r\n canDeselectLast(listOption: McListOption): boolean {\r\n return !(this.noUnselectLast && this.selectionModel.selected.length === 1 && listOption.selected);\r\n }\r\n\r\n getHeight(): number {\r\n const clientRects = this.elementRef.nativeElement.getClientRects();\r\n\r\n return clientRects.length ? clientRects[0].height : 0;\r\n }\r\n\r\n // View to model callback that should be called if the list or its options lost focus.\r\n // tslint:disable-next-line:no-empty\r\n onTouched: () => void = () => {};\r\n\r\n // Removes an option from the selection list and updates the active item.\r\n removeOptionFromList(option: McListOption) {\r\n if (!option.hasFocus) { return; }\r\n\r\n const optionIndex = this.getOptionIndex(option);\r\n\r\n // Check whether the option is the last item\r\n if (optionIndex > 0) {\r\n this.keyManager.setPreviousItemActive();\r\n } else if (optionIndex === 0 && this.options.length > 1) {\r\n this.keyManager.setNextItemActive();\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n // tslint:disable-next-line: deprecation\r\n const keyCode = event.keyCode;\r\n\r\n if ([SPACE, ENTER, LEFT_ARROW, RIGHT_ARROW].includes(keyCode) || isVerticalMovement(event)) {\r\n event.preventDefault();\r\n }\r\n\r\n if (this.multiple && isSelectAll(event)) {\r\n this.selectAllOptions();\r\n event.preventDefault();\r\n\r\n return;\r\n } else if (isCopy(event)) {\r\n this.copyActiveOption();\r\n event.preventDefault();\r\n\r\n return;\r\n } else if ([SPACE, ENTER].includes(keyCode)) {\r\n this.toggleFocusedOption();\r\n\r\n return;\r\n } else if (keyCode === TAB) {\r\n this.keyManager.tabOut.next();\r\n\r\n return;\r\n } else if (keyCode === DOWN_ARROW) {\r\n this.keyManager.setNextItemActive();\r\n } else if (keyCode === UP_ARROW) {\r\n this.keyManager.setPreviousItemActive();\r\n } else if (keyCode === HOME) {\r\n this.keyManager.setFirstItemActive();\r\n } else if (keyCode === END) {\r\n this.keyManager.setLastItemActive();\r\n } else if (keyCode === PAGE_UP) {\r\n this.keyManager.setPreviousPageItemActive();\r\n } else if (keyCode === PAGE_DOWN) {\r\n this.keyManager.setNextPageItemActive();\r\n }\r\n\r\n if (this.keyManager.activeItem && isVerticalMovement(event)) {\r\n this.setSelectedOptionsByKey(\r\n this.keyManager.activeItem as McListOption,\r\n hasModifierKey(event, 'shiftKey'),\r\n hasModifierKey(event, 'ctrlKey')\r\n );\r\n }\r\n }\r\n\r\n // Reports a value change to the ControlValueAccessor\r\n reportValueChange() {\r\n if (this.options) {\r\n const value = this.getSelectedOptionValues();\r\n this.onChange(value);\r\n this._value = value;\r\n }\r\n }\r\n\r\n // Emits a change event if the selected state of an option changed.\r\n emitChangeEvent(option: McListOption) {\r\n this.selectionChange.emit(new McListSelectionChange(this, option));\r\n }\r\n\r\n protected updateTabIndex(): void {\r\n this._tabIndex = this.userTabIndex || (this.options.length === 0 ? -1 : 0);\r\n }\r\n\r\n private onCopyDefaultHandler(): void {\r\n this.clipboard?.copy(this.keyManager.activeItem!.value);\r\n }\r\n\r\n private resetOptions() {\r\n this.dropSubscriptions();\r\n this.listenToOptionsFocus();\r\n }\r\n\r\n private dropSubscriptions() {\r\n if (this.optionFocusSubscription) {\r\n this.optionFocusSubscription.unsubscribe();\r\n this.optionFocusSubscription = null;\r\n }\r\n\r\n if (this.optionBlurSubscription) {\r\n this.optionBlurSubscription.unsubscribe();\r\n this.optionBlurSubscription = null;\r\n }\r\n }\r\n\r\n private listenToOptionsFocus(): void {\r\n this.optionFocusSubscription = this.optionFocusChanges\r\n .subscribe((event) => {\r\n const index: number = this.options.toArray().indexOf(event.option);\r\n\r\n if (this.isValidIndex(index)) {\r\n this.keyManager.updateActiveItem(index);\r\n }\r\n });\r\n\r\n this.optionBlurSubscription = this.optionBlurChanges\r\n .subscribe(() => this.blur());\r\n }\r\n\r\n /** Checks whether any of the options is focused. */\r\n private hasFocusedOption() {\r\n return this.options.some((option) => option.hasFocus);\r\n }\r\n\r\n // Returns the option with the specified value.\r\n private getOptionByValue(value: string): McListOption | undefined {\r\n return this.options.find((option) => option.value === value);\r\n }\r\n\r\n // Sets the selected options based on the specified values.\r\n private setOptionsFromValues(values: string[]) {\r\n this.options.forEach((option) => option.setSelected(false));\r\n\r\n values\r\n .map((value) => this.getOptionByValue(value))\r\n .filter(Boolean)\r\n .forEach((option) => option!.setSelected(true));\r\n }\r\n\r\n /**\r\n * Utility to ensure all indexes are valid.\r\n * @param index The index to be checked.\r\n * @returns True if the index is valid for our list of options.\r\n */\r\n private isValidIndex(index: number): boolean {\r\n return index >= 0 && index < this.options.length;\r\n }\r\n\r\n // Returns the index of the specified list option.\r\n private getOptionIndex(option: McListOption): number {\r\n return this.options.toArray().indexOf(option);\r\n }\r\n\r\n // View to model callback that should be called whenever the selected options change.\r\n private onChange: (value: any) => void = (_: any) => {};\r\n\r\n private selectAllOptions() {\r\n const optionsToSelect = this.options\r\n .filter((option) => !option.disabled);\r\n\r\n optionsToSelect\r\n .forEach((option) => option.setSelected(true));\r\n\r\n this.onSelectAll.emit(new McListSelectAllEvent(this, optionsToSelect));\r\n }\r\n\r\n private copyActiveOption() {\r\n if (this.onCopy.observers.length) {\r\n this.onCopy.emit(new McListCopyEvent(this, this.keyManager.activeItem as McListOption));\r\n } else {\r\n this.onCopyDefaultHandler();\r\n }\r\n }\r\n}\r\n","<mc-pseudo-checkbox\r\n *ngIf=\"showCheckbox\"\r\n [state]=\"selected ? 'checked' : 'unchecked'\"\r\n [disabled]=\"disabled\">\r\n</mc-pseudo-checkbox>\r\n\r\n<ng-content select=\"[mc-icon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\" #text>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-content select=\"mc-option-action\"></ng-content>\r\n","// todo пока не делаем, перенесено из материала, но у нас в доках таких простых списков нет.\r\nimport {\r\n AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { McLine, McLineSetter } from '@ptsecurity/mosaic/core';\r\n\r\n\r\n@Component({\r\n selector: 'mc-list',\r\n host: { class: 'mc-list' },\r\n template: '<ng-content></ng-content>',\r\n styleUrls: ['./list.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class McList {}\r\n\r\n\r\n@Component({\r\n selector: 'mc-list-item, a[mc-list-item]',\r\n host: {\r\n class: 'mc-list-item',\r\n '(focus)': 'handleFocus()',\r\n '(blur)': 'handleBlur()'\r\n },\r\n templateUrl: './list-item.html',\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McListItem implements AfterContentInit {\r\n @ContentChildren(McLine) lines: QueryList<McLine>;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n ngAfterContentInit() {\r\n // tslint:disable-next-line:no-unused-expression\r\n new McLineSetter(this.lines, this.elementRef);\r\n }\r\n\r\n handleFocus() {\r\n this.elementRef.nativeElement.classList.add('mc-focused');\r\n }\r\n\r\n handleBlur() {\r\n this.elementRef.nativeElement.classList.remove('mc-focused');\r\n }\r\n\r\n getHostElement(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n","<ng-content select=\"[mc-list-icon], [mcListIcon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\">\r\n <ng-content select=\"[mc-line], [mcLine]\"></ng-content>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { McLineModule, McOptionModule, McPseudoCheckboxModule } from '@ptsecurity/mosaic/core';\r\n\r\nimport { McListSelection, McListOption } from './list-selection.component';\r\nimport { McList, McListItem } from './list.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n McPseudoCheckboxModule,\r\n McLineModule,\r\n McOptionModule\r\n ],\r\n exports: [\r\n McList,\r\n McListSelection,\r\n McListItem,\r\n McListOption,\r\n McOptionModule\r\n ],\r\n declarations: [\r\n McList,\r\n McListSelection,\r\n McListItem,\r\n McListOption\r\n ]\r\n})\r\nexport class McListModule {}\r\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-list.mjs","sources":["../../../packages/mosaic/list/list-selection.component.ts","../../../packages/mosaic/list/list-option.html","../../../packages/mosaic/list/list.component.ts","../../../packages/mosaic/list/list-item.html","../../../packages/mosaic/list/list.module.ts","../../../packages/mosaic/list/ptsecurity-mosaic-list.ts"],"sourcesContent":["/* tslint:disable:no-empty */\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport {\r\n AfterContentInit,\r\n Attribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation,\r\n ChangeDetectorRef,\r\n Inject,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n NgZone,\r\n Optional,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FocusKeyManager, IFocusableOption } from '@ptsecurity/cdk/a11y';\r\nimport {\r\n hasModifierKey,\r\n isCopy,\r\n isSelectAll,\r\n isVerticalMovement,\r\n DOWN_ARROW,\r\n END,\r\n ENTER,\r\n HOME,\r\n LEFT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n RIGHT_ARROW,\r\n SPACE,\r\n TAB,\r\n UP_ARROW\r\n} from '@ptsecurity/cdk/keycodes';\r\nimport {\r\n CanDisable,\r\n mixinDisabled,\r\n toBoolean,\r\n CanDisableCtor,\r\n HasTabIndexCtor,\r\n mixinTabIndex,\r\n HasTabIndex,\r\n MultipleMode,\r\n McOptgroup,\r\n MC_OPTION_ACTION_PARENT,\r\n McOptionActionComponent\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McDropdownTrigger } from '@ptsecurity/mosaic/dropdown';\r\nimport { McTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\r\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\r\nimport { startWith, take, takeUntil } from 'rxjs/operators';\r\n\r\n\r\n// tslint:disable-next-line:naming-convention\r\nexport interface McOptionEvent {\r\n option: McListOption;\r\n}\r\n\r\n/**\r\n * Component for list-options of selection-list. Each list-option can automatically\r\n * generate a checkbox and can put current item into the selectionModel of selection-list\r\n * if the current item is selected.\r\n */\r\n@Component({\r\n exportAs: 'mcListOption',\r\n selector: 'mc-list-option',\r\n templateUrl: './list-option.html',\r\n host: {\r\n class: 'mc-list-option',\r\n\r\n '[class.mc-selected]': 'selected',\r\n '[class.mc-disabled]': 'disabled',\r\n '[class.mc-focused]': 'hasFocus',\r\n\r\n '[class.mc-action-button-focused]': 'actionButton?.active',\r\n\r\n '[attr.tabindex]': 'tabIndex',\r\n '[attr.disabled]': 'disabled || null',\r\n\r\n '(focusin)': 'focus()',\r\n '(blur)': 'blur()',\r\n '(click)': 'handleClick($event)',\r\n '(keydown)': 'onKeydown($event)'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: MC_OPTION_ACTION_PARENT, useExisting: McListOption }\r\n ]\r\n})\r\nexport class McListOption implements OnDestroy, OnInit, IFocusableOption {\r\n hasFocus: boolean = false;\r\n\r\n readonly onFocus = new Subject<McOptionEvent>();\r\n\r\n readonly onBlur = new Subject<McOptionEvent>();\r\n\r\n @ContentChild(McOptionActionComponent) actionButton: McOptionActionComponent;\r\n @ContentChild(McTooltipTrigger) tooltipTrigger: McTooltipTrigger;\r\n @ContentChild(McDropdownTrigger) dropdownTrigger: McDropdownTrigger;\r\n\r\n @ViewChild('text', { static: false }) text: ElementRef;\r\n\r\n // Whether the label should appear before or after the checkbox. Defaults to 'after'\r\n @Input() checkboxPosition: 'before' | 'after';\r\n\r\n /**\r\n * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`\r\n * in the first cycle.\r\n */\r\n private inputsInitialized = false;\r\n\r\n @Input()\r\n get value(): any { return this._value; }\r\n set value(newValue: any) {\r\n if (this.selected && newValue !== this.value && this.inputsInitialized) {\r\n this.selected = false;\r\n }\r\n\r\n this._value = newValue;\r\n }\r\n private _value: any;\r\n\r\n @Input()\r\n get disabled() {\r\n const listSelectionDisabled = this.listSelection && this.listSelection.disabled;\r\n const groupDisabled = this.group && this.group.disabled;\r\n\r\n return listSelectionDisabled || groupDisabled || this._disabled;\r\n }\r\n\r\n set disabled(value: any) {\r\n const newValue = toBoolean(value);\r\n\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n private _disabled = false;\r\n\r\n @Input()\r\n get showCheckbox() {\r\n return this._showCheckbox !== undefined ? this._showCheckbox : this.listSelection.showCheckbox;\r\n }\r\n\r\n set showCheckbox(value: any) {\r\n this._showCheckbox = coerceBooleanProperty(value);\r\n }\r\n\r\n private _showCheckbox: boolean;\r\n\r\n @Input()\r\n get selected(): boolean {\r\n return this.listSelection.selectionModel?.isSelected(this) || false;\r\n }\r\n\r\n set selected(value: boolean) {\r\n const isSelected = toBoolean(value);\r\n\r\n if (isSelected !== this._selected) {\r\n this.setSelected(isSelected);\r\n }\r\n }\r\n\r\n private _selected = false;\r\n\r\n get tabIndex(): any {\r\n return this.disabled ? null : -1;\r\n }\r\n\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>,\r\n private changeDetector: ChangeDetectorRef,\r\n private ngZone: NgZone,\r\n @Inject(forwardRef(() => McListSelection)) public listSelection: McListSelection,\r\n @Optional() readonly group: McOptgroup\r\n ) {}\r\n\r\n ngOnInit() {\r\n const list = this.listSelection;\r\n\r\n if (list._value && list._value.some((value) => list.compareWith(value, this._value))) {\r\n this.setSelected(true);\r\n }\r\n\r\n const wasSelected = this._selected;\r\n\r\n // List options that are selected at initialization can't be reported properly to the form\r\n // control. This is because it takes some time until the selection-list knows about all\r\n // available options. Also it can happen that the ControlValueAccessor has an initial value\r\n // that should be used instead. Deferring the value change report to the next tick ensures\r\n // that the form control value is not being overwritten.\r\n Promise.resolve().then(() => {\r\n if (this._selected || wasSelected) {\r\n this.selected = true;\r\n this.changeDetector.markForCheck();\r\n }\r\n });\r\n\r\n this.inputsInitialized = true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.selected) {\r\n // We have to delay this until the next tick in order\r\n // to avoid changed after checked errors.\r\n Promise.resolve().then(() => this.selected = false);\r\n }\r\n\r\n this.listSelection.removeOptionFromList(this);\r\n }\r\n\r\n toggle(): void {\r\n this.selected = !this.selected;\r\n }\r\n\r\n getLabel() {\r\n return this.text ? this.text.nativeElement.textContent : '';\r\n }\r\n\r\n setSelected(selected: boolean) {\r\n if (this._selected === selected || !this.listSelection.selectionModel) { return; }\r\n\r\n this._selected = selected;\r\n\r\n if (selected) {\r\n this.listSelection.selectionModel.select(this);\r\n } else {\r\n this.listSelection.selectionModel.deselect(this);\r\n }\r\n\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n getHeight(): number {\r\n const clientRects = this.elementRef.nativeElement.getClientRects();\r\n\r\n return clientRects.length ? clientRects[0].height : 0;\r\n }\r\n\r\n handleClick($event) {\r\n if (this.disabled) { return; }\r\n\r\n this.listSelection.setSelectedOptionsByClick(\r\n this, hasModifierKey($event, 'shiftKey'), hasModifierKey($event, 'ctrlKey')\r\n );\r\n }\r\n\r\n onKeydown($event) {\r\n if (!this.actionButton) { return; }\r\n\r\n if ($event.keyCode === TAB && !$event.shiftKey && !this.actionButton.hasFocus) {\r\n this.actionButton.focus();\r\n\r\n $event.preventDefault();\r\n }\r\n }\r\n\r\n focus() {\r\n if (this.disabled || this.hasFocus || this.actionButton?.hasFocus) { return; }\r\n\r\n this.elementRef.nativeElement.focus();\r\n\r\n this.onFocus.next({ option: this });\r\n\r\n Promise.resolve().then(() => {\r\n this.hasFocus = true;\r\n\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n\r\n blur(): void {\r\n // When animations are enabled, Angular may end up removing the option from the DOM a little\r\n // earlier than usual, causing it to be blurred and throwing off the logic in the list\r\n // that moves focus not the next item. To work around the issue, we defer marking the option\r\n // as not focused until the next time the zone stabilizes.\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.ngZone.run(() => {\r\n this.hasFocus = false;\r\n\r\n if (this.actionButton?.hasFocus) { return; }\r\n\r\n this.onBlur.next({ option: this });\r\n });\r\n });\r\n }\r\n\r\n getHostElement(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n\r\n\r\nexport const MC_SELECTION_LIST_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => McListSelection),\r\n multi: true\r\n};\r\n\r\nexport class McListSelectionChange {\r\n constructor(public source: McListSelection, public option: McListOption) {}\r\n}\r\n\r\nexport class McListSelectAllEvent<T> {\r\n constructor(public source: McListSelection, public options: T[]) {}\r\n}\r\n\r\nexport class McListCopyEvent<T> {\r\n constructor(public source: McListSelection, public option: T) {}\r\n}\r\n\r\nexport class McListSelectionBase {\r\n constructor(public elementRef: ElementRef) {}\r\n}\r\n\r\n// tslint:disable-next-line:naming-convention\r\nexport const McListSelectionMixinBase: CanDisableCtor & HasTabIndexCtor & typeof McListSelectionBase\r\n = mixinTabIndex(mixinDisabled(McListSelectionBase));\r\n\r\n@Component({\r\n exportAs: 'mcListSelection',\r\n selector: 'mc-list-selection',\r\n template: `\r\n <div [attr.tabindex]=\"tabIndex\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n <ng-content></ng-content>\r\n </div>`,\r\n styleUrls: ['./list.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n inputs: ['disabled'],\r\n host: {\r\n class: 'mc-list-selection',\r\n\r\n '[attr.tabindex]': '-1',\r\n '[attr.disabled]': 'disabled || null',\r\n\r\n '(keydown)': 'onKeyDown($event)',\r\n '(window:resize)': 'updateScrollSize()'\r\n },\r\n providers: [MC_SELECTION_LIST_VALUE_ACCESSOR],\r\n preserveWhitespaces: false\r\n})\r\nexport class McListSelection extends McListSelectionMixinBase implements CanDisable, HasTabIndex, AfterContentInit,\r\n ControlValueAccessor {\r\n\r\n keyManager: FocusKeyManager<McListOption>;\r\n\r\n @ContentChildren(McListOption, { descendants: true }) options: QueryList<McListOption>;\r\n\r\n @Output() readonly onSelectAll = new EventEmitter<McListSelectAllEvent<McListOption>>();\r\n\r\n @Output() readonly onCopy = new EventEmitter<McListCopyEvent<McListOption>>();\r\n\r\n @Input()\r\n get autoSelect(): boolean {\r\n return this._autoSelect;\r\n }\r\n\r\n set autoSelect(value: boolean) {\r\n this._autoSelect = coerceBooleanProperty(value);\r\n }\r\n\r\n private _autoSelect: boolean = true;\r\n\r\n @Input()\r\n get noUnselectLast(): boolean {\r\n return this._noUnselectLast;\r\n }\r\n\r\n set noUnselectLast(value: boolean) {\r\n this._noUnselectLast = coerceBooleanProperty(value);\r\n }\r\n\r\n private _noUnselectLast: boolean = true;\r\n\r\n multipleMode: MultipleMode | null;\r\n\r\n get multiple(): boolean {\r\n return !!this.multipleMode;\r\n }\r\n\r\n @Input() horizontal: boolean = false;\r\n\r\n @Input()\r\n get tabIndex(): any {\r\n return this.disabled ? -1 : this._tabIndex;\r\n }\r\n\r\n set tabIndex(value: any) {\r\n this.userTabIndex = value;\r\n this._tabIndex = value;\r\n }\r\n\r\n private _tabIndex = 0;\r\n\r\n userTabIndex: number | null = null;\r\n\r\n get showCheckbox(): boolean {\r\n return this.multipleMode === MultipleMode.CHECKBOX;\r\n }\r\n\r\n // Emits a change event whenever the selected state of an option changes.\r\n @Output() readonly selectionChange: EventEmitter<McListSelectionChange> = new EventEmitter<McListSelectionChange>();\r\n\r\n selectionModel: SelectionModel<McListOption>;\r\n\r\n get optionFocusChanges(): Observable<McOptionEvent> {\r\n return merge(...this.options.map((option) => option.onFocus));\r\n }\r\n\r\n get optionBlurChanges(): Observable<McOptionEvent> {\r\n return merge(...this.options.map((option) => option.onBlur));\r\n }\r\n\r\n // tslint:disable-next-line:orthodox-getter-and-setter naming-convention\r\n _value: string[] | null;\r\n\r\n /** Emits whenever the component is destroyed. */\r\n private readonly destroyed = new Subject<void>();\r\n\r\n private optionFocusSubscription: Subscription | null;\r\n\r\n private optionBlurSubscription: Subscription | null;\r\n\r\n constructor(\r\n elementRef: ElementRef,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Attribute('multiple') multiple: MultipleMode,\r\n @Optional() private clipboard: Clipboard\r\n ) {\r\n super(elementRef);\r\n\r\n if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) {\r\n this.multipleMode = multiple;\r\n } else if (multiple !== null) {\r\n this.multipleMode = MultipleMode.CHECKBOX;\r\n }\r\n\r\n if (this.multipleMode === MultipleMode.CHECKBOX) {\r\n this.autoSelect = false;\r\n this.noUnselectLast = false;\r\n }\r\n\r\n this.selectionModel = new SelectionModel<McListOption>(this.multiple);\r\n }\r\n\r\n /**\r\n * Function used for comparing an option against the selected value when determining which\r\n * options should appear as selected. The first argument is the value of an options. The second\r\n * one is a value from the selected value. A boolean must be returned.\r\n */\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\r\n\r\n ngAfterContentInit(): void {\r\n this.horizontal = toBoolean(this.horizontal);\r\n\r\n this.keyManager = new FocusKeyManager<McListOption>(this.options)\r\n .withTypeAhead()\r\n .withVerticalOrientation(!this.horizontal)\r\n .withHorizontalOrientation(this.horizontal ? 'ltr' : null);\r\n\r\n this.keyManager.tabOut\r\n .pipe(takeUntil(this.destroyed))\r\n .subscribe(() => {\r\n this._tabIndex = -1;\r\n\r\n setTimeout(() => {\r\n this._tabIndex = this.userTabIndex || 0;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n });\r\n\r\n if (this._value) {\r\n this.setOptionsFromValues(this._value);\r\n }\r\n\r\n this.selectionModel.changed\r\n .pipe(takeUntil(this.destroyed))\r\n .subscribe((event) => {\r\n for (const item of event.added) { item.selected = true; }\r\n\r\n for (const item of event.removed) { item.selected = false; }\r\n });\r\n\r\n this.options.changes\r\n .pipe(startWith(null), takeUntil(this.destroyed))\r\n .subscribe(() => {\r\n this.resetOptions();\r\n\r\n // Check to see if we need to update our tab index\r\n this.updateTabIndex();\r\n });\r\n\r\n this.updateScrollSize();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed.next();\r\n\r\n this.destroyed.complete();\r\n }\r\n\r\n focus(): void {\r\n if (this.options.length === 0) { return; }\r\n\r\n this.keyManager.setFirstItemActive();\r\n }\r\n\r\n blur() {\r\n if (!this.hasFocusedOption()) {\r\n this.keyManager.setActiveItem(-1);\r\n }\r\n\r\n this.onTouched();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n selectAll() {\r\n this.options.forEach((option) => option.setSelected(true));\r\n\r\n this.reportValueChange();\r\n }\r\n\r\n deselectAll() {\r\n this.options.forEach((option) => option.setSelected(false));\r\n\r\n this.reportValueChange();\r\n }\r\n\r\n updateScrollSize(): void {\r\n if (this.horizontal || !this.options.first) { return; }\r\n\r\n this.keyManager.withScrollSize(Math.floor(this.getHeight() / this.options.first.getHeight()));\r\n }\r\n\r\n setSelectedOptionsByClick(option: McListOption, shiftKey: boolean, ctrlKey: boolean): void {\r\n if (shiftKey && this.multiple) {\r\n this.selectActiveOptions();\r\n } else if (ctrlKey) {\r\n if (!this.canDeselectLast(option)) { return; }\r\n\r\n this.selectionModel.toggle(option);\r\n } else if (this.autoSelect) {\r\n this.selectionModel.clear();\r\n this.selectionModel.toggle(option);\r\n } else {\r\n this.selectionModel.toggle(option);\r\n }\r\n\r\n this.emitChangeEvent(option);\r\n this.reportValueChange();\r\n }\r\n\r\n setSelectedOptionsByKey(option: McListOption, shiftKey: boolean, ctrlKey: boolean): void {\r\n if (shiftKey && this.multiple) {\r\n this.selectActiveOptions();\r\n } else if (ctrlKey) {\r\n if (!this.canDeselectLast(option)) { return; }\r\n } else if (this.autoSelect) {\r\n this.options.forEach((item) => item.setSelected(false));\r\n option.setSelected(true);\r\n\r\n this.emitChangeEvent(option);\r\n this.reportValueChange();\r\n }\r\n }\r\n\r\n selectActiveOptions(): void {\r\n const options = this.options.toArray();\r\n let fromIndex = this.keyManager.previousActiveItemIndex;\r\n let toIndex = this.keyManager.previousActiveItemIndex = this.keyManager.activeItemIndex;\r\n const selectedOptionState = options[fromIndex].selected;\r\n\r\n if (toIndex === fromIndex) { return; }\r\n\r\n if (fromIndex > toIndex) {\r\n [fromIndex, toIndex] = [toIndex, fromIndex];\r\n }\r\n\r\n options\r\n .slice(fromIndex, toIndex + 1)\r\n .filter((item) => !item.disabled)\r\n .forEach((renderedOption) => {\r\n if (!selectedOptionState && this.noUnselectLast && this.selectionModel.selected.length === 1) {\r\n return;\r\n }\r\n\r\n renderedOption.setSelected(selectedOptionState);\r\n });\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n writeValue(values: string[]): void {\r\n this._value = values;\r\n\r\n if (this.options) {\r\n this.setOptionsFromValues(values || []);\r\n }\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n // Implemented as a part of ControlValueAccessor.\r\n setDisabledState(isDisabled: boolean): void {\r\n if (this.options) {\r\n this.options.forEach((option) => option.disabled = isDisabled);\r\n }\r\n }\r\n\r\n getSelectedOptionValues(): string[] {\r\n return this.options.filter((option) => option.selected).map((option) => option.value);\r\n }\r\n\r\n // Toggles the selected state of the currently focused option.\r\n toggleFocusedOption(): void {\r\n const focusedIndex = this.keyManager.activeItemIndex;\r\n\r\n if (focusedIndex != null && this.isValidIndex(focusedIndex)) {\r\n const focusedOption: McListOption = this.options.toArray()[focusedIndex];\r\n\r\n if (focusedOption && this.canDeselectLast(focusedOption)) {\r\n focusedOption.toggle();\r\n\r\n // Emit a change event because the focused option changed its state through user interaction.\r\n this.emitChangeEvent(focusedOption);\r\n }\r\n }\r\n }\r\n\r\n canDeselectLast(listOption: McListOption): boolean {\r\n return !(this.noUnselectLast && this.selectionModel.selected.length === 1 && listOption.selected);\r\n }\r\n\r\n getHeight(): number {\r\n const clientRects = this.elementRef.nativeElement.getClientRects();\r\n\r\n return clientRects.length ? clientRects[0].height : 0;\r\n }\r\n\r\n // View to model callback that should be called if the list or its options lost focus.\r\n // tslint:disable-next-line:no-empty\r\n onTouched: () => void = () => {};\r\n\r\n // Removes an option from the selection list and updates the active item.\r\n removeOptionFromList(option: McListOption) {\r\n if (!option.hasFocus) { return; }\r\n\r\n const optionIndex = this.getOptionIndex(option);\r\n\r\n // Check whether the option is the last item\r\n if (optionIndex > 0) {\r\n this.keyManager.setPreviousItemActive();\r\n } else if (optionIndex === 0 && this.options.length > 1) {\r\n this.keyManager.setNextItemActive();\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n // tslint:disable-next-line: deprecation\r\n const keyCode = event.keyCode;\r\n\r\n if ([SPACE, ENTER, LEFT_ARROW, RIGHT_ARROW].includes(keyCode) || isVerticalMovement(event)) {\r\n event.preventDefault();\r\n }\r\n\r\n if (this.multiple && isSelectAll(event)) {\r\n this.selectAllOptions();\r\n event.preventDefault();\r\n\r\n return;\r\n } else if (isCopy(event)) {\r\n this.copyActiveOption();\r\n event.preventDefault();\r\n\r\n return;\r\n } else if ([SPACE, ENTER].includes(keyCode)) {\r\n this.toggleFocusedOption();\r\n\r\n return;\r\n } else if (keyCode === TAB) {\r\n this.keyManager.tabOut.next();\r\n\r\n return;\r\n } else if (keyCode === DOWN_ARROW) {\r\n this.keyManager.setNextItemActive();\r\n } else if (keyCode === UP_ARROW) {\r\n this.keyManager.setPreviousItemActive();\r\n } else if (keyCode === HOME) {\r\n this.keyManager.setFirstItemActive();\r\n } else if (keyCode === END) {\r\n this.keyManager.setLastItemActive();\r\n } else if (keyCode === PAGE_UP) {\r\n this.keyManager.setPreviousPageItemActive();\r\n } else if (keyCode === PAGE_DOWN) {\r\n this.keyManager.setNextPageItemActive();\r\n }\r\n\r\n if (this.keyManager.activeItem && isVerticalMovement(event)) {\r\n this.setSelectedOptionsByKey(\r\n this.keyManager.activeItem as McListOption,\r\n hasModifierKey(event, 'shiftKey'),\r\n hasModifierKey(event, 'ctrlKey')\r\n );\r\n }\r\n }\r\n\r\n // Reports a value change to the ControlValueAccessor\r\n reportValueChange() {\r\n if (this.options) {\r\n const value = this.getSelectedOptionValues();\r\n this.onChange(value);\r\n this._value = value;\r\n }\r\n }\r\n\r\n // Emits a change event if the selected state of an option changed.\r\n emitChangeEvent(option: McListOption) {\r\n this.selectionChange.emit(new McListSelectionChange(this, option));\r\n }\r\n\r\n protected updateTabIndex(): void {\r\n this._tabIndex = this.userTabIndex || (this.options.length === 0 ? -1 : 0);\r\n }\r\n\r\n private onCopyDefaultHandler(): void {\r\n this.clipboard?.copy(this.keyManager.activeItem!.value);\r\n }\r\n\r\n private resetOptions() {\r\n this.dropSubscriptions();\r\n this.listenToOptionsFocus();\r\n }\r\n\r\n private dropSubscriptions() {\r\n if (this.optionFocusSubscription) {\r\n this.optionFocusSubscription.unsubscribe();\r\n this.optionFocusSubscription = null;\r\n }\r\n\r\n if (this.optionBlurSubscription) {\r\n this.optionBlurSubscription.unsubscribe();\r\n this.optionBlurSubscription = null;\r\n }\r\n }\r\n\r\n private listenToOptionsFocus(): void {\r\n this.optionFocusSubscription = this.optionFocusChanges\r\n .subscribe((event) => {\r\n const index: number = this.options.toArray().indexOf(event.option);\r\n\r\n if (this.isValidIndex(index)) {\r\n this.keyManager.updateActiveItem(index);\r\n }\r\n });\r\n\r\n this.optionBlurSubscription = this.optionBlurChanges\r\n .subscribe(() => this.blur());\r\n }\r\n\r\n /** Checks whether any of the options is focused. */\r\n private hasFocusedOption() {\r\n return this.options.some((option) => option.hasFocus);\r\n }\r\n\r\n // Returns the option with the specified value.\r\n private getOptionByValue(value: string): McListOption | undefined {\r\n return this.options.find((option) => option.value === value);\r\n }\r\n\r\n // Sets the selected options based on the specified values.\r\n private setOptionsFromValues(values: string[]) {\r\n this.options.forEach((option) => option.setSelected(false));\r\n\r\n values\r\n .map((value) => this.getOptionByValue(value))\r\n .filter(Boolean)\r\n .forEach((option) => option!.setSelected(true));\r\n }\r\n\r\n /**\r\n * Utility to ensure all indexes are valid.\r\n * @param index The index to be checked.\r\n * @returns True if the index is valid for our list of options.\r\n */\r\n private isValidIndex(index: number): boolean {\r\n return index >= 0 && index < this.options.length;\r\n }\r\n\r\n // Returns the index of the specified list option.\r\n private getOptionIndex(option: McListOption): number {\r\n return this.options.toArray().indexOf(option);\r\n }\r\n\r\n // View to model callback that should be called whenever the selected options change.\r\n private onChange: (value: any) => void = (_: any) => {};\r\n\r\n private selectAllOptions() {\r\n const optionsToSelect = this.options\r\n .filter((option) => !option.disabled);\r\n\r\n optionsToSelect\r\n .forEach((option) => option.setSelected(true));\r\n\r\n this.onSelectAll.emit(new McListSelectAllEvent(this, optionsToSelect));\r\n }\r\n\r\n private copyActiveOption() {\r\n if (this.onCopy.observers.length) {\r\n this.onCopy.emit(new McListCopyEvent(this, this.keyManager.activeItem as McListOption));\r\n } else {\r\n this.onCopyDefaultHandler();\r\n }\r\n }\r\n}\r\n","<mc-pseudo-checkbox\r\n *ngIf=\"showCheckbox\"\r\n [state]=\"selected ? 'checked' : 'unchecked'\"\r\n [disabled]=\"disabled\">\r\n</mc-pseudo-checkbox>\r\n\r\n<ng-content select=\"[mc-icon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\" #text>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-content select=\"mc-option-action\"></ng-content>\r\n","// todo пока не делаем, перенесено из материала, но у нас в доках таких простых списков нет.\r\nimport {\r\n AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { McLine, McLineSetter } from '@ptsecurity/mosaic/core';\r\n\r\n\r\n@Component({\r\n selector: 'mc-list',\r\n host: { class: 'mc-list' },\r\n template: '<ng-content></ng-content>',\r\n styleUrls: ['./list.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class McList {}\r\n\r\n\r\n@Component({\r\n selector: 'mc-list-item, a[mc-list-item]',\r\n host: {\r\n class: 'mc-list-item',\r\n '(focus)': 'handleFocus()',\r\n '(blur)': 'handleBlur()'\r\n },\r\n templateUrl: './list-item.html',\r\n encapsulation: ViewEncapsulation.None,\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McListItem implements AfterContentInit {\r\n @ContentChildren(McLine) lines: QueryList<McLine>;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n ngAfterContentInit() {\r\n // tslint:disable-next-line:no-unused-expression\r\n new McLineSetter(this.lines, this.elementRef);\r\n }\r\n\r\n handleFocus() {\r\n this.elementRef.nativeElement.classList.add('mc-focused');\r\n }\r\n\r\n handleBlur() {\r\n this.elementRef.nativeElement.classList.remove('mc-focused');\r\n }\r\n\r\n getHostElement(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n","<ng-content select=\"[mc-list-icon], [mcListIcon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\">\r\n <ng-content select=\"[mc-line], [mcLine]\"></ng-content>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { McLineModule, McOptionModule, McPseudoCheckboxModule } from '@ptsecurity/mosaic/core';\r\n\r\nimport { McListSelection, McListOption } from './list-selection.component';\r\nimport { McList, McListItem } from './list.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n McPseudoCheckboxModule,\r\n McLineModule,\r\n McOptionModule\r\n ],\r\n exports: [\r\n McList,\r\n McListSelection,\r\n McListItem,\r\n McListOption,\r\n McOptionModule\r\n ],\r\n declarations: [\r\n McList,\r\n McListSelection,\r\n McListItem,\r\n McListOption\r\n ]\r\n})\r\nexport class McListModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -638,8 +638,8 @@ class McSelect extends McSelectMixinBase {
638
638
  const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;
639
639
  // const itemsCounterWidth: number = itemsCounter.getBoundingClientRect().width;
640
640
  const itemsCounterWidth = 86;
641
- const matcherListWidth = matcherList.getBoundingClientRect().width;
642
- const matcherWidth = matcherListWidth + itemsCounterWidth;
641
+ const matcherListWidth = Math.floor(matcherList.getBoundingClientRect().width);
642
+ const matcherWidth = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);
643
643
  if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {
644
644
  this.hiddenItems = 0;
645
645
  }