carbon-components-angular 5.56.6 → 5.57.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.
- package/README.md +23 -6
- package/combo-button/combo-button.component.d.ts +99 -0
- package/combo-button/combo-button.module.d.ts +31 -0
- package/combo-button/index.d.ts +22 -0
- package/context-menu/context-menu-divider.component.d.ts +1 -1
- package/context-menu/context-menu-group.component.d.ts +1 -1
- package/context-menu/context-menu-item.component.d.ts +6 -1
- package/context-menu/context-menu.component.d.ts +11 -7
- package/context-menu/context-menu.types.d.ts +27 -0
- package/context-menu/index.d.ts +1 -0
- package/docs/documentation/components/Accordion.html +1 -1
- package/docs/documentation/components/AccordionItem.html +1 -1
- package/docs/documentation/components/ActionableNotification.html +1 -1
- package/docs/documentation/components/AlertModal.html +1 -1
- package/docs/documentation/components/BaseIconButton.html +1 -1
- package/docs/documentation/components/BaseNotification.html +1 -1
- package/docs/documentation/components/BaseTabHeader.html +1 -1
- package/docs/documentation/components/Breadcrumb.html +1 -1
- package/docs/documentation/components/BreadcrumbItemComponent.html +1 -1
- package/docs/documentation/components/ButtonSet.html +1 -1
- package/docs/documentation/components/Checkbox.html +1 -1
- package/docs/documentation/components/ClickableTile.html +1 -1
- package/docs/documentation/components/CodeSnippet.html +1 -1
- package/docs/documentation/components/ComboBox.html +1 -1
- package/docs/documentation/components/ComboButtonComponent.html +2264 -0
- package/docs/documentation/components/ContainedList.html +1 -1
- package/docs/documentation/components/ContainedListItem.html +1 -1
- package/docs/documentation/components/ContentSwitcher.html +1 -1
- package/docs/documentation/components/ContextMenuComponent.html +147 -164
- package/docs/documentation/components/ContextMenuDividerComponent.html +3 -3
- package/docs/documentation/components/ContextMenuGroupComponent.html +4 -4
- package/docs/documentation/components/ContextMenuItemComponent.html +218 -66
- package/docs/documentation/components/DatePicker.html +1 -1
- package/docs/documentation/components/DatePickerInput.html +1 -1
- package/docs/documentation/components/Dialog.html +1 -1
- package/docs/documentation/components/Documentation.html +1 -1
- package/docs/documentation/components/Dropdown.html +1 -1
- package/docs/documentation/components/DropdownList.html +1 -1
- package/docs/documentation/components/ExpandableTile.html +1 -1
- package/docs/documentation/components/FileComponent.html +1 -1
- package/docs/documentation/components/FileUploader.html +1 -1
- package/docs/documentation/components/Hamburger.html +1 -1
- package/docs/documentation/components/Header.html +1 -1
- package/docs/documentation/components/HeaderAction.html +1 -1
- package/docs/documentation/components/HeaderGlobal.html +1 -1
- package/docs/documentation/components/HeaderItem.html +1 -1
- package/docs/documentation/components/HeaderMenu.html +1 -1
- package/docs/documentation/components/HeaderNavigation.html +1 -1
- package/docs/documentation/components/IconButton.html +1 -1
- package/docs/documentation/components/InlineLoading.html +1 -1
- package/docs/documentation/components/Label.html +1 -1
- package/docs/documentation/components/ListColumn.html +1 -1
- package/docs/documentation/components/ListHeader.html +1 -1
- package/docs/documentation/components/ListRow.html +1 -1
- package/docs/documentation/components/Loading.html +1 -1
- package/docs/documentation/components/MenuButtonComponent.html +1931 -0
- package/docs/documentation/components/Modal.html +1 -1
- package/docs/documentation/components/ModalFooter.html +1 -1
- package/docs/documentation/components/ModalHeader.html +1 -1
- package/docs/documentation/components/Notification.html +1 -1
- package/docs/documentation/components/NumberComponent.html +1 -1
- package/docs/documentation/components/OverflowMenu.html +1 -1
- package/docs/documentation/components/OverflowMenuCustomPane.html +1 -1
- package/docs/documentation/components/OverflowMenuOption.html +1 -1
- package/docs/documentation/components/OverflowMenuPane.html +1 -1
- package/docs/documentation/components/Overlay.html +1 -1
- package/docs/documentation/components/Pagination.html +1 -1
- package/docs/documentation/components/PaginationNav.html +1 -1
- package/docs/documentation/components/PaginationNavItem.html +1 -1
- package/docs/documentation/components/PaginationOverflow.html +1 -1
- package/docs/documentation/components/Panel.html +1 -1
- package/docs/documentation/components/PasswordInputLabelComponent.html +1 -1
- package/docs/documentation/components/Placeholder.html +1 -1
- package/docs/documentation/components/PopoverContent.html +1 -1
- package/docs/documentation/components/ProgressBar.html +1 -1
- package/docs/documentation/components/ProgressIndicator.html +1 -1
- package/docs/documentation/components/Radio.html +1 -1
- package/docs/documentation/components/RadioGroup.html +1 -1
- package/docs/documentation/components/Search.html +1 -1
- package/docs/documentation/components/Select.html +1 -1
- package/docs/documentation/components/SelectionTile.html +1 -1
- package/docs/documentation/components/SideNav.html +1 -1
- package/docs/documentation/components/SideNavItem.html +1 -1
- package/docs/documentation/components/SideNavMenu.html +1 -1
- package/docs/documentation/components/SkeletonPlaceholder.html +1 -1
- package/docs/documentation/components/SkeletonText.html +1 -1
- package/docs/documentation/components/Slider.html +1 -1
- package/docs/documentation/components/StructuredList.html +1 -1
- package/docs/documentation/components/SwitcherList.html +1 -1
- package/docs/documentation/components/SwitcherListItem.html +1 -1
- package/docs/documentation/components/Tab.html +1 -1
- package/docs/documentation/components/TabHeaderGroup.html +1 -1
- package/docs/documentation/components/TabHeaders.html +1 -1
- package/docs/documentation/components/TabSkeleton.html +1 -1
- package/docs/documentation/components/Table.html +1 -1
- package/docs/documentation/components/TableBody.html +1 -1
- package/docs/documentation/components/TableCheckbox.html +1 -1
- package/docs/documentation/components/TableContainer.html +1 -1
- package/docs/documentation/components/TableData.html +1 -1
- package/docs/documentation/components/TableExpandButton.html +1 -1
- package/docs/documentation/components/TableExpandedRow.html +1 -1
- package/docs/documentation/components/TableHead.html +1 -1
- package/docs/documentation/components/TableHeadCell.html +1 -1
- package/docs/documentation/components/TableHeadCheckbox.html +1 -1
- package/docs/documentation/components/TableHeadExpand.html +1 -1
- package/docs/documentation/components/TableHeader.html +1 -1
- package/docs/documentation/components/TableRadio.html +1 -1
- package/docs/documentation/components/TableRowComponent.html +1 -1
- package/docs/documentation/components/TableToolbar.html +1 -1
- package/docs/documentation/components/TableToolbarActions.html +1 -1
- package/docs/documentation/components/TableToolbarContent.html +1 -1
- package/docs/documentation/components/TableToolbarSearch.html +1 -1
- package/docs/documentation/components/Tabs.html +1 -1
- package/docs/documentation/components/Tag.html +1 -1
- package/docs/documentation/components/TagFilter.html +1 -1
- package/docs/documentation/components/TagOperationalComponent.html +1 -1
- package/docs/documentation/components/TagSelectableComponent.html +1 -1
- package/docs/documentation/components/TextInputLabelComponent.html +1 -1
- package/docs/documentation/components/TextareaLabelComponent.html +1 -1
- package/docs/documentation/components/Tile.html +1 -1
- package/docs/documentation/components/TileGroup.html +1 -1
- package/docs/documentation/components/TimePicker.html +1 -1
- package/docs/documentation/components/TimePickerSelect.html +1 -1
- package/docs/documentation/components/Toast.html +1 -1
- package/docs/documentation/components/Toggle.html +1 -1
- package/docs/documentation/components/Toggletip.html +1 -1
- package/docs/documentation/components/Tooltip.html +1 -1
- package/docs/documentation/components/TooltipDefinition.html +1 -1
- package/docs/documentation/components/TreeNodeComponent.html +1 -1
- package/docs/documentation/components/TreeViewComponent.html +1 -1
- package/docs/documentation/coverage.html +40 -4
- package/docs/documentation/dependencies.html +1 -1
- package/docs/documentation/graph/dependencies.svg +3058 -2934
- package/docs/documentation/index.html +17 -6
- package/docs/documentation/interfaces/ItemClickEvent.html +437 -0
- package/docs/documentation/js/menu-wc.js +37 -0
- package/docs/documentation/js/menu-wc_es5.js +1 -1
- package/docs/documentation/js/search/search_index.js +2 -2
- package/docs/documentation/miscellaneous/typealiases.html +42 -0
- package/docs/documentation/modules/ComboBoxModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ComboBoxModule.html +4 -4
- package/docs/documentation/modules/ComboButtonModule/dependencies.svg +106 -0
- package/docs/documentation/modules/ComboButtonModule.html +397 -0
- package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +34 -38
- package/docs/documentation/modules/DatePickerInputModule.html +34 -38
- package/docs/documentation/modules/DatePickerModule/dependencies.svg +4 -4
- package/docs/documentation/modules/DatePickerModule.html +4 -4
- package/docs/documentation/modules/DialogModule/dependencies.svg +34 -34
- package/docs/documentation/modules/DialogModule.html +34 -34
- package/docs/documentation/modules/FileUploaderModule/dependencies.svg +36 -36
- package/docs/documentation/modules/FileUploaderModule.html +36 -36
- package/docs/documentation/modules/GridModule/dependencies.svg +60 -60
- package/docs/documentation/modules/GridModule.html +60 -60
- package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
- package/docs/documentation/modules/LoadingModule.html +4 -4
- package/docs/documentation/modules/MenuButtonModule/dependencies.svg +106 -0
- package/docs/documentation/modules/MenuButtonModule.html +398 -0
- package/docs/documentation/modules/ProgressIndicatorModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ProgressIndicatorModule.html +4 -4
- package/docs/documentation/modules/RadioModule/dependencies.svg +46 -42
- package/docs/documentation/modules/RadioModule.html +46 -42
- package/docs/documentation/modules/SearchModule/dependencies.svg +4 -4
- package/docs/documentation/modules/SearchModule.html +4 -4
- package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
- package/docs/documentation/modules/SliderModule.html +4 -4
- package/docs/documentation/modules/TabsModule/dependencies.svg +69 -69
- package/docs/documentation/modules/TabsModule.html +69 -69
- package/docs/documentation/modules/TagModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TagModule.html +4 -4
- package/docs/documentation/modules/ThemeModule/dependencies.svg +14 -14
- package/docs/documentation/modules/ThemeModule.html +14 -14
- package/docs/documentation/modules/TilesModule/dependencies.svg +93 -93
- package/docs/documentation/modules/TilesModule.html +93 -93
- package/docs/documentation/modules/TimePickerModule/dependencies.svg +18 -18
- package/docs/documentation/modules/TimePickerModule.html +18 -18
- package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +30 -30
- package/docs/documentation/modules/TimePickerSelectModule.html +30 -30
- package/docs/documentation/modules/ToggleModule/dependencies.svg +45 -41
- package/docs/documentation/modules/ToggleModule.html +45 -41
- package/docs/documentation/modules/ToggletipModule/dependencies.svg +39 -39
- package/docs/documentation/modules/ToggletipModule.html +39 -39
- package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TooltipModule.html +4 -4
- package/docs/documentation/modules/TreeviewModule/dependencies.svg +31 -31
- package/docs/documentation/modules/TreeviewModule.html +31 -31
- package/docs/documentation/modules/UIShellModule/dependencies.svg +4 -4
- package/docs/documentation/modules/UIShellModule.html +4 -4
- package/docs/documentation/modules.html +34 -0
- package/docs/documentation/overview.html +3061 -2937
- package/docs/documentation.json +1710 -271
- package/docs/storybook/1125.37c137fa.iframe.bundle.js +1 -0
- package/docs/storybook/4292.3a543fed.iframe.bundle.js +1 -0
- package/docs/storybook/6702.f2acb76e.iframe.bundle.js +1 -0
- package/docs/storybook/combo-button-combo-button-stories.17bfb9ad.iframe.bundle.js +1 -0
- package/docs/storybook/context-menu-context-menu-stories.eb5edb41.iframe.bundle.js +1 -0
- package/docs/storybook/iframe.html +2 -2
- package/docs/storybook/index.json +1 -1
- package/docs/storybook/main.625b3296.iframe.bundle.js +1 -0
- package/docs/storybook/menu-button-menu-button-stories.869bfd47.iframe.bundle.js +1 -0
- package/docs/storybook/popover-popover-stories.ea5149e0.iframe.bundle.js +1 -0
- package/docs/storybook/project.json +1 -1
- package/docs/storybook/runtime~main.61967556.iframe.bundle.js +1 -0
- package/docs/storybook/stories.json +1 -1
- package/docs/storybook/tag-tag-stories.7b925787.iframe.bundle.js +1 -0
- package/esm2020/combo-button/carbon-components-angular-combo-button.mjs +5 -0
- package/esm2020/combo-button/combo-button.component.mjs +302 -0
- package/esm2020/combo-button/combo-button.module.mjs +32 -0
- package/esm2020/combo-button/index.mjs +3 -0
- package/esm2020/context-menu/context-menu-divider.component.mjs +3 -3
- package/esm2020/context-menu/context-menu-group.component.mjs +3 -3
- package/esm2020/context-menu/context-menu-item.component.mjs +33 -3
- package/esm2020/context-menu/context-menu.component.mjs +27 -20
- package/esm2020/context-menu/context-menu.types.mjs +2 -0
- package/esm2020/context-menu/index.mjs +2 -1
- package/esm2020/index.mjs +2 -1
- package/esm2020/menu-button/carbon-components-angular-menu-button.mjs +5 -0
- package/esm2020/menu-button/index.mjs +3 -0
- package/esm2020/menu-button/menu-button.component.mjs +265 -0
- package/esm2020/menu-button/menu-button.module.mjs +33 -0
- package/fesm2015/carbon-components-angular-combo-button.mjs +338 -0
- package/fesm2015/carbon-components-angular-combo-button.mjs.map +1 -0
- package/fesm2015/carbon-components-angular-context-menu.mjs +62 -25
- package/fesm2015/carbon-components-angular-context-menu.mjs.map +1 -1
- package/fesm2015/carbon-components-angular-menu-button.mjs +302 -0
- package/fesm2015/carbon-components-angular-menu-button.mjs.map +1 -0
- package/fesm2015/carbon-components-angular.mjs +1 -0
- package/fesm2015/carbon-components-angular.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-combo-button.mjs +337 -0
- package/fesm2020/carbon-components-angular-combo-button.mjs.map +1 -0
- package/fesm2020/carbon-components-angular-context-menu.mjs +62 -25
- package/fesm2020/carbon-components-angular-context-menu.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-menu-button.mjs +301 -0
- package/fesm2020/carbon-components-angular-menu-button.mjs.map +1 -0
- package/fesm2020/carbon-components-angular.mjs +1 -0
- package/fesm2020/carbon-components-angular.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/menu-button/index.d.ts +22 -0
- package/menu-button/menu-button.component.d.ts +88 -0
- package/menu-button/menu-button.module.d.ts +31 -0
- package/package.json +18 -2
- package/docs/storybook/1562.1e6a79b6.iframe.bundle.js +0 -1
- package/docs/storybook/6702.8b6fb391.iframe.bundle.js +0 -1
- package/docs/storybook/context-menu-context-menu-stories.7c62ce72.iframe.bundle.js +0 -1
- package/docs/storybook/main.9bc55d67.iframe.bundle.js +0 -1
- package/docs/storybook/popover-popover-stories.a91784a3.iframe.bundle.js +0 -1
- package/docs/storybook/runtime~main.31991a82.iframe.bundle.js +0 -1
- package/docs/storybook/tag-tag-stories.c5c2cc86.iframe.bundle.js +0 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, HostBinding, Input, ViewChild } from "@angular/core";
|
|
2
|
+
import { autoUpdate, computePosition, flip } from "@floating-ui/dom";
|
|
3
|
+
import { ContextMenuItemComponent } from "carbon-components-angular/context-menu";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "carbon-components-angular/button";
|
|
7
|
+
import * as i3 from "carbon-components-angular/icon";
|
|
8
|
+
import * as i4 from "carbon-components-angular/context-menu";
|
|
9
|
+
export class MenuButtonComponent {
|
|
10
|
+
constructor(ngZone, renderer, hostElement, viewContainerRef, changeDetectorRef) {
|
|
11
|
+
this.ngZone = ngZone;
|
|
12
|
+
this.renderer = renderer;
|
|
13
|
+
this.hostElement = hostElement;
|
|
14
|
+
this.viewContainerRef = viewContainerRef;
|
|
15
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
16
|
+
this.menuId = `menu-button-${MenuButtonComponent.menuButtonCounter++}`;
|
|
17
|
+
this.containerClass = true;
|
|
18
|
+
this.kind = "primary";
|
|
19
|
+
this.size = "lg";
|
|
20
|
+
this.menuAlignment = "bottom";
|
|
21
|
+
this.buttonTabIndex = "0";
|
|
22
|
+
this.disabled = false;
|
|
23
|
+
this.open = false;
|
|
24
|
+
this.documentClick = this.handleFocusOut.bind(this);
|
|
25
|
+
this.subscriptions = [];
|
|
26
|
+
this._alignment = "bottom";
|
|
27
|
+
}
|
|
28
|
+
// Listen for click & determine if menu should close
|
|
29
|
+
set projectedMenuItems(itemList) {
|
|
30
|
+
// Reset in case user dynamically updates menu item
|
|
31
|
+
this.subscriptions.forEach((sub) => sub?.unsubscribe());
|
|
32
|
+
this.subscriptions = [];
|
|
33
|
+
itemList.forEach((item) => {
|
|
34
|
+
this.subscriptions.push(item.itemClick.subscribe((clickEvent) => this.handleMenuItemClick(clickEvent)));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* In case user updates alignment, store initial value.
|
|
39
|
+
* This allows us to test user passed alignment on each open
|
|
40
|
+
*/
|
|
41
|
+
ngOnChanges(changes) {
|
|
42
|
+
if (changes.menuAlignment) {
|
|
43
|
+
this._alignment = changes.menuAlignment.currentValue;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* If user has passed in true for open, we dynamically open the menu
|
|
48
|
+
*/
|
|
49
|
+
ngAfterViewInit() {
|
|
50
|
+
if (this.open) {
|
|
51
|
+
this.open = !this.open;
|
|
52
|
+
this.toggleMenu();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Clean up Floating-ui & subscriptions
|
|
57
|
+
*/
|
|
58
|
+
ngOnDestroy() {
|
|
59
|
+
this.cleanUp();
|
|
60
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* As of now, menu button does not support nexted menu, on button click it should close
|
|
64
|
+
*/
|
|
65
|
+
handleMenuItemClick(event) {
|
|
66
|
+
// If event is not type radio/checkbox, we close the menu
|
|
67
|
+
if (!event.type) {
|
|
68
|
+
this.toggleMenu();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* On body click, close the menu
|
|
73
|
+
* @param event
|
|
74
|
+
*/
|
|
75
|
+
handleFocusOut(event) {
|
|
76
|
+
if (!this.hostElement.nativeElement.contains(event.target)) {
|
|
77
|
+
this.toggleMenu();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Clean up `autoUpdate` if auto alignment is enabled
|
|
82
|
+
*/
|
|
83
|
+
cleanUp() {
|
|
84
|
+
document.removeEventListener("click", this.documentClick);
|
|
85
|
+
if (this.unmountFloatingElement) {
|
|
86
|
+
this.menuRef.remove();
|
|
87
|
+
this.viewContainerRef.clear();
|
|
88
|
+
this.unmountFloatingElement();
|
|
89
|
+
}
|
|
90
|
+
this.unmountFloatingElement = undefined;
|
|
91
|
+
// On all instances of menu closing, make sure icon direction is correct
|
|
92
|
+
this.changeDetectorRef.markForCheck();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Handles emitting open/close event
|
|
96
|
+
*/
|
|
97
|
+
toggleMenu() {
|
|
98
|
+
this.open = !this.open;
|
|
99
|
+
if (this.open) {
|
|
100
|
+
// Render the template & append to view
|
|
101
|
+
const view = this.viewContainerRef.createEmbeddedView(this.menuTemplate);
|
|
102
|
+
this.menuRef = document.body.appendChild(view.rootNodes[0]);
|
|
103
|
+
// Assign button width to the menu ref to align with button
|
|
104
|
+
Object.assign(this.menuRef.style, {
|
|
105
|
+
width: `${this.referenceElement.nativeElement.clientWidth}px`,
|
|
106
|
+
top: "0",
|
|
107
|
+
left: "0"
|
|
108
|
+
});
|
|
109
|
+
// Reset & test alignment every open
|
|
110
|
+
this.menuAlignment = this._alignment;
|
|
111
|
+
document.addEventListener("click", this.documentClick);
|
|
112
|
+
// Listen for events such as scrolling to keep menu aligned
|
|
113
|
+
this.unmountFloatingElement = autoUpdate(this.referenceElement.nativeElement, this.menuRef, this.recomputePosition.bind(this));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.cleanUp();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
roundByDPR(value) {
|
|
120
|
+
const dpr = window.devicePixelRatio || 1;
|
|
121
|
+
return Math.round(value * dpr) / dpr;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Compute position of menu
|
|
125
|
+
*/
|
|
126
|
+
recomputePosition() {
|
|
127
|
+
if (this.menuTemplate && this.referenceElement) {
|
|
128
|
+
// Run outside of angular zone to avoid unnecessary change detection and rely on floating-ui
|
|
129
|
+
this.ngZone.runOutsideAngular(async () => {
|
|
130
|
+
const { x, y, placement } = await computePosition(this.referenceElement.nativeElement, this.menuRef, {
|
|
131
|
+
placement: this.menuAlignment,
|
|
132
|
+
strategy: "fixed",
|
|
133
|
+
middleware: [
|
|
134
|
+
flip({ crossAxis: false })
|
|
135
|
+
]
|
|
136
|
+
});
|
|
137
|
+
this.menuAlignment = placement;
|
|
138
|
+
// Using CSSOM to manipulate CSS to avoid content security policy inline-src
|
|
139
|
+
// https://github.com/w3c/webappsec-csp/issues/212
|
|
140
|
+
Object.assign(this.menuRef.style, {
|
|
141
|
+
position: "fixed",
|
|
142
|
+
// Using transform instead of top/left position to improve performance
|
|
143
|
+
transform: `translate(${this.roundByDPR(x)}px,${this.roundByDPR(y)}px)`
|
|
144
|
+
});
|
|
145
|
+
this.changeDetectorRef.markForCheck();
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
MenuButtonComponent.menuButtonCounter = 0;
|
|
151
|
+
MenuButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuButtonComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
+
MenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuButtonComponent, selector: "cds-menu-button", inputs: { menuId: "menuId", kind: "kind", size: "size", menuAlignment: "menuAlignment", buttonTabIndex: "buttonTabIndex", disabled: "disabled", open: "open", label: "label" }, host: { properties: { "class.cds--menu-button__container": "this.containerClass" } }, queries: [{ propertyName: "projectedMenuItems", predicate: ContextMenuItemComponent }], viewQueries: [{ propertyName: "referenceElement", first: true, predicate: ["reference"], descendants: true, static: true }, { propertyName: "menuTemplate", first: true, predicate: ["menuTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
153
|
+
<button
|
|
154
|
+
#reference
|
|
155
|
+
class="cds--menu-button__trigger"
|
|
156
|
+
[ngClass]="{'cds--menu-button__trigger--open': open}"
|
|
157
|
+
[cdsButton]="kind"
|
|
158
|
+
[size]="size"
|
|
159
|
+
[attr.tabindex]="buttonTabIndex"
|
|
160
|
+
[disabled]="disabled"
|
|
161
|
+
type="button"
|
|
162
|
+
[attr.aria-haspopup]="true"
|
|
163
|
+
[attr.aria-expanded]="open"
|
|
164
|
+
[attr.aria-controls]="open ? menuId : undefined"
|
|
165
|
+
(click)="toggleMenu()">
|
|
166
|
+
{{label}}
|
|
167
|
+
<svg
|
|
168
|
+
cdsIcon="chevron--down"
|
|
169
|
+
size="16"
|
|
170
|
+
class="cds--btn__icon">
|
|
171
|
+
</svg>
|
|
172
|
+
</button>
|
|
173
|
+
<ng-template #menuTemplate>
|
|
174
|
+
<cds-menu
|
|
175
|
+
mode="basic"
|
|
176
|
+
[size]="size"
|
|
177
|
+
[open]="open"
|
|
178
|
+
[attr.id]="menuId"
|
|
179
|
+
[ngClass]="{
|
|
180
|
+
'cds--menu-button__bottom': this.menuAlignment === 'bottom',
|
|
181
|
+
'cds--menu-button__bottom-start': this.menuAlignment === 'bottom-start',
|
|
182
|
+
'cds--menu-button__bottom-end': this.menuAlignment === 'bottom-end',
|
|
183
|
+
'cds--menu-top': this.menuAlignment === 'top',
|
|
184
|
+
'cds--menu-top-start': this.menuAlignment === 'top-start',
|
|
185
|
+
'cds--menu-top-end': this.menuAlignment === 'top-end'
|
|
186
|
+
}">
|
|
187
|
+
<ng-content select="cds-menu-item, cds-menu-divider"></ng-content>
|
|
188
|
+
</cds-menu>
|
|
189
|
+
</ng-template>
|
|
190
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.ContextMenuComponent, selector: "cds-menu, cds-context-menu, ibm-context-menu", inputs: ["open", "position", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuButtonComponent, decorators: [{
|
|
192
|
+
type: Component,
|
|
193
|
+
args: [{
|
|
194
|
+
selector: "cds-menu-button",
|
|
195
|
+
template: `
|
|
196
|
+
<button
|
|
197
|
+
#reference
|
|
198
|
+
class="cds--menu-button__trigger"
|
|
199
|
+
[ngClass]="{'cds--menu-button__trigger--open': open}"
|
|
200
|
+
[cdsButton]="kind"
|
|
201
|
+
[size]="size"
|
|
202
|
+
[attr.tabindex]="buttonTabIndex"
|
|
203
|
+
[disabled]="disabled"
|
|
204
|
+
type="button"
|
|
205
|
+
[attr.aria-haspopup]="true"
|
|
206
|
+
[attr.aria-expanded]="open"
|
|
207
|
+
[attr.aria-controls]="open ? menuId : undefined"
|
|
208
|
+
(click)="toggleMenu()">
|
|
209
|
+
{{label}}
|
|
210
|
+
<svg
|
|
211
|
+
cdsIcon="chevron--down"
|
|
212
|
+
size="16"
|
|
213
|
+
class="cds--btn__icon">
|
|
214
|
+
</svg>
|
|
215
|
+
</button>
|
|
216
|
+
<ng-template #menuTemplate>
|
|
217
|
+
<cds-menu
|
|
218
|
+
mode="basic"
|
|
219
|
+
[size]="size"
|
|
220
|
+
[open]="open"
|
|
221
|
+
[attr.id]="menuId"
|
|
222
|
+
[ngClass]="{
|
|
223
|
+
'cds--menu-button__bottom': this.menuAlignment === 'bottom',
|
|
224
|
+
'cds--menu-button__bottom-start': this.menuAlignment === 'bottom-start',
|
|
225
|
+
'cds--menu-button__bottom-end': this.menuAlignment === 'bottom-end',
|
|
226
|
+
'cds--menu-top': this.menuAlignment === 'top',
|
|
227
|
+
'cds--menu-top-start': this.menuAlignment === 'top-start',
|
|
228
|
+
'cds--menu-top-end': this.menuAlignment === 'top-end'
|
|
229
|
+
}">
|
|
230
|
+
<ng-content select="cds-menu-item, cds-menu-divider"></ng-content>
|
|
231
|
+
</cds-menu>
|
|
232
|
+
</ng-template>
|
|
233
|
+
`,
|
|
234
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
235
|
+
}]
|
|
236
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { menuId: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], projectedMenuItems: [{
|
|
239
|
+
type: ContentChildren,
|
|
240
|
+
args: [ContextMenuItemComponent]
|
|
241
|
+
}], containerClass: [{
|
|
242
|
+
type: HostBinding,
|
|
243
|
+
args: ["class.cds--menu-button__container"]
|
|
244
|
+
}], kind: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], size: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}], menuAlignment: [{
|
|
249
|
+
type: Input
|
|
250
|
+
}], buttonTabIndex: [{
|
|
251
|
+
type: Input
|
|
252
|
+
}], disabled: [{
|
|
253
|
+
type: Input
|
|
254
|
+
}], open: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], label: [{
|
|
257
|
+
type: Input
|
|
258
|
+
}], referenceElement: [{
|
|
259
|
+
type: ViewChild,
|
|
260
|
+
args: ["reference", { static: true }]
|
|
261
|
+
}], menuTemplate: [{
|
|
262
|
+
type: ViewChild,
|
|
263
|
+
args: ["menuTemplate"]
|
|
264
|
+
}] } });
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbnUtYnV0dG9uL21lbnUtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBR2YsV0FBVyxFQUNYLEtBQUssRUFRTCxTQUFTLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNOLFVBQVUsRUFDVixlQUFlLEVBQ2YsSUFBSSxFQUNKLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHdCQUF3QixFQUFrQixNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7QUFnRGxHLE1BQU0sT0FBTyxtQkFBbUI7SUFvQy9CLFlBQ1csTUFBYyxFQUNkLFFBQW1CLEVBQ25CLFdBQXVCLEVBQ3ZCLGdCQUFrQyxFQUNsQyxpQkFBb0M7UUFKcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBdkN0QyxXQUFNLEdBQUcsZUFBZSxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFjekIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFFL0QsU0FBSSxHQUFxQyxTQUFTLENBQUM7UUFDbkQsU0FBSSxHQUF1QixJQUFJLENBQUM7UUFDaEMsa0JBQWEsR0FBd0IsUUFBUSxDQUFDO1FBQzlDLG1CQUFjLEdBQThCLEdBQUcsQ0FBQztRQUNoRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFNWixrQkFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBR2pE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QVc7dUJBQUMsbUNBQW1DO2dCQUV2QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRW9DLGdCQUFnQjtzQkFBekQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNiLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyVmlld0luaXQsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdEVsZW1lbnRSZWYsXG5cdGZvcndhcmRSZWYsXG5cdEhvc3RCaW5kaW5nLFxuXHRJbnB1dCxcblx0Tmdab25lLFxuXHRPbkNoYW5nZXMsXG5cdE9uRGVzdHJveSxcblx0UXVlcnlMaXN0LFxuXHRSZW5kZXJlcjIsXG5cdFNpbXBsZUNoYW5nZXMsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHtcblx0YXV0b1VwZGF0ZSxcblx0Y29tcHV0ZVBvc2l0aW9uLFxuXHRmbGlwXG59IGZyb20gXCJAZmxvYXRpbmctdWkvZG9tXCI7XG5pbXBvcnQgeyBDb250ZXh0TWVudUl0ZW1Db21wb25lbnQsIEl0ZW1DbGlja0V2ZW50IH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvY29udGV4dC1tZW51XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG50eXBlIE1lbnVCdXR0b25QbGFjZW1lbnQgPSBcInRvcFwiIHwgXCJ0b3Atc3RhcnRcIiB8IFwidG9wLWVuZFwiIHwgXCJib3R0b21cIiB8IFwiYm90dG9tLXN0YXJ0XCIgfCBcImJvdHRvbS1lbmRcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1tZW51LWJ1dHRvblwiLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxidXR0b25cblx0XHRcdCNyZWZlcmVuY2Vcblx0XHRcdGNsYXNzPVwiY2RzLS1tZW51LWJ1dHRvbl9fdHJpZ2dlclwiXG5cdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tbWVudS1idXR0b25fX3RyaWdnZXItLW9wZW4nOiBvcGVufVwiXG5cdFx0XHRbY2RzQnV0dG9uXT1cImtpbmRcIlxuXHRcdFx0W3NpemVdPVwic2l6ZVwiXG5cdFx0XHRbYXR0ci50YWJpbmRleF09XCJidXR0b25UYWJJbmRleFwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRbYXR0ci5hcmlhLWhhc3BvcHVwXT1cInRydWVcIlxuXHRcdFx0W2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcblx0XHRcdFthdHRyLmFyaWEtY29udHJvbHNdPVwib3BlbiA/IG1lbnVJZCA6IHVuZGVmaW5lZFwiXG5cdFx0XHQoY2xpY2spPVwidG9nZ2xlTWVudSgpXCI+XG5cdFx0XHR7e2xhYmVsfX1cblx0XHRcdDxzdmdcblx0XHRcdFx0Y2RzSWNvbj1cImNoZXZyb24tLWRvd25cIlxuXHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+XG5cdFx0XHQ8L3N2Zz5cblx0XHQ8L2J1dHRvbj5cblx0XHQ8bmctdGVtcGxhdGUgI21lbnVUZW1wbGF0ZT5cblx0XHRcdDxjZHMtbWVudVxuXHRcdFx0XHRtb2RlPVwiYmFzaWNcIlxuXHRcdFx0XHRbc2l6ZV09XCJzaXplXCJcblx0XHRcdFx0W29wZW5dPVwib3BlblwiXG5cdFx0XHRcdFthdHRyLmlkXT1cIm1lbnVJZFwiXG5cdFx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0XHQnY2RzLS1tZW51LWJ1dHRvbl9fYm90dG9tJzogdGhpcy5tZW51QWxpZ25tZW50ID09PSAnYm90dG9tJyxcblx0XHRcdFx0XHQnY2RzLS1tZW51LWJ1dHRvbl9fYm90dG9tLXN0YXJ0JzogdGhpcy5tZW51QWxpZ25tZW50ID09PSAnYm90dG9tLXN0YXJ0Jyxcblx0XHRcdFx0XHQnY2RzLS1tZW51LWJ1dHRvbl9fYm90dG9tLWVuZCc6IHRoaXMubWVudUFsaWdubWVudCA9PT0gJ2JvdHRvbS1lbmQnLFxuXHRcdFx0XHRcdCdjZHMtLW1lbnUtdG9wJzogdGhpcy5tZW51QWxpZ25tZW50ID09PSAndG9wJyxcblx0XHRcdFx0XHQnY2RzLS1tZW51LXRvcC1zdGFydCc6IHRoaXMubWVudUFsaWdubWVudCA9PT0gJ3RvcC1zdGFydCcsXG5cdFx0XHRcdFx0J2Nkcy0tbWVudS10b3AtZW5kJzogdGhpcy5tZW51QWxpZ25tZW50ID09PSAndG9wLWVuZCdcblx0XHRcdFx0fVwiPlxuXHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJjZHMtbWVudS1pdGVtLCBjZHMtbWVudS1kaXZpZGVyXCI+PC9uZy1jb250ZW50PlxuXHRcdFx0PC9jZHMtbWVudT5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNZW51QnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRzdGF0aWMgbWVudUJ1dHRvbkNvdW50ZXIgPSAwO1xuXHRASW5wdXQoKSBtZW51SWQgPSBgbWVudS1idXR0b24tJHtNZW51QnV0dG9uQ29tcG9uZW50Lm1lbnVCdXR0b25Db3VudGVyKyt9YDtcblxuXHQvLyBMaXN0ZW4gZm9yIGNsaWNrICYgZGV0ZXJtaW5lIGlmIG1lbnUgc2hvdWxkIGNsb3NlXG5cdEBDb250ZW50Q2hpbGRyZW4oQ29udGV4dE1lbnVJdGVtQ29tcG9uZW50KSBzZXQgcHJvamVjdGVkTWVudUl0ZW1zKGl0ZW1MaXN0OiBRdWVyeUxpc3Q8Q29udGV4dE1lbnVJdGVtQ29tcG9uZW50Pikge1xuXHRcdC8vIFJlc2V0IGluIGNhc2UgdXNlciBkeW5hbWljYWxseSB1cGRhdGVzIG1lbnUgaXRlbVxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWIpID0+IHN1Yj8udW5zdWJzY3JpYmUoKSk7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zID0gW107XG5cdFx0aXRlbUxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG5cdFx0XHRcdGl0ZW0uaXRlbUNsaWNrLnN1YnNjcmliZSgoY2xpY2tFdmVudCkgPT4gdGhpcy5oYW5kbGVNZW51SXRlbUNsaWNrKGNsaWNrRXZlbnQpKVxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tbWVudS1idXR0b25fX2NvbnRhaW5lclwiKSBjb250YWluZXJDbGFzcyA9IHRydWU7XG5cblx0QElucHV0KCkga2luZDogXCJwcmltYXJ5XCIgfCBcInRlcnRpYXJ5XCIgfCBcImdob3N0XCIgPSBcInByaW1hcnlcIjtcblx0QElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJsZ1wiO1xuXHRASW5wdXQoKSBtZW51QWxpZ25tZW50OiBNZW51QnV0dG9uUGxhY2VtZW50ID0gXCJib3R0b21cIjtcblx0QElucHV0KCkgYnV0dG9uVGFiSW5kZXg6IFwiMFwiIHwgXCIxXCIgfCBcIi0xXCIgfCBzdHJpbmcgPSBcIjBcIjtcblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0QElucHV0KCkgb3BlbiA9IGZhbHNlO1xuXHRASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG5cdEBWaWV3Q2hpbGQoXCJyZWZlcmVuY2VcIiwgeyBzdGF0aWM6IHRydWUgfSkgcmVmZXJlbmNlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cdEBWaWV3Q2hpbGQoXCJtZW51VGVtcGxhdGVcIikgbWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdHByb3RlY3RlZCBkb2N1bWVudENsaWNrID0gdGhpcy5oYW5kbGVGb2N1c091dC5iaW5kKHRoaXMpO1xuXHRwcm90ZWN0ZWQgdW5tb3VudEZsb2F0aW5nRWxlbWVudDogRnVuY3Rpb247XG5cblx0cHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXHRwcml2YXRlIF9hbGlnbm1lbnQ6IE1lbnVCdXR0b25QbGFjZW1lbnQgPSBcImJvdHRvbVwiO1xuXHRwcml2YXRlIG1lbnVSZWY6IEhUTUxFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSxcblx0XHRwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcblx0XHRwcm90ZWN0ZWQgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYsXG5cdFx0cHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG5cdFx0cHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuXHQpIHsgfVxuXG5cblx0LyoqXG5cdCAqIEluIGNhc2UgdXNlciB1cGRhdGVzIGFsaWdubWVudCwgc3RvcmUgaW5pdGlhbCB2YWx1ZS5cblx0ICogVGhpcyBhbGxvd3MgdXMgdG8gdGVzdCB1c2VyIHBhc3NlZCBhbGlnbm1lbnQgb24gZWFjaCBvcGVuXG5cdCAqL1xuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZXMubWVudUFsaWdubWVudCkge1xuXHRcdFx0dGhpcy5fYWxpZ25tZW50ID0gY2hhbmdlcy5tZW51QWxpZ25tZW50LmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdH1cblxuXG5cblx0LyoqXG5cdCAqIElmIHVzZXIgaGFzIHBhc3NlZCBpbiB0cnVlIGZvciBvcGVuLCB3ZSBkeW5hbWljYWxseSBvcGVuIHRoZSBtZW51XG5cdCAqL1xuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMub3Blbikge1xuXHRcdFx0dGhpcy5vcGVuID0gIXRoaXMub3Blbjtcblx0XHRcdHRoaXMudG9nZ2xlTWVudSgpO1xuXHRcdH1cblx0fVxuXG5cblxuXHQvKipcblx0KiBDbGVhbiB1cCBGbG9hdGluZy11aSAmIHN1YnNjcmlwdGlvbnNcblx0Ki9cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5jbGVhblVwKCk7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuXHR9XG5cblxuXHQvKipcblx0ICogQXMgb2Ygbm93LCBtZW51IGJ1dHRvbiBkb2VzIG5vdCBzdXBwb3J0IG5leHRlZCBtZW51LCBvbiBidXR0b24gY2xpY2sgaXQgc2hvdWxkIGNsb3NlXG5cdCAqL1xuXHRoYW5kbGVNZW51SXRlbUNsaWNrKGV2ZW50OiBJdGVtQ2xpY2tFdmVudCkge1xuXHRcdC8vIElmIGV2ZW50IGlzIG5vdCB0eXBlIHJhZGlvL2NoZWNrYm94LCB3ZSBjbG9zZSB0aGUgbWVudVxuXHRcdGlmICghZXZlbnQudHlwZSkge1xuXHRcdFx0dGhpcy50b2dnbGVNZW51KCk7XG5cdFx0fVxuXHR9XG5cblxuXG5cdC8qKlxuXHQgKiBPbiBib2R5IGNsaWNrLCBjbG9zZSB0aGUgbWVudVxuXHQgKiBAcGFyYW0gZXZlbnRcblx0ICovXG5cdGhhbmRsZUZvY3VzT3V0KGV2ZW50KSB7XG5cdFx0aWYgKCF0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuXHRcdFx0dGhpcy50b2dnbGVNZW51KCk7XG5cdFx0fVxuXHR9XG5cblxuXG5cdC8qKlxuXHQgKiBDbGVhbiB1cCBgYXV0b1VwZGF0ZWAgaWYgYXV0byBhbGlnbm1lbnQgaXMgZW5hYmxlZFxuXHQgKi9cblx0Y2xlYW5VcCgpIHtcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5kb2N1bWVudENsaWNrKTtcblx0XHRpZiAodGhpcy51bm1vdW50RmxvYXRpbmdFbGVtZW50KSB7XG5cdFx0XHR0aGlzLm1lbnVSZWYucmVtb3ZlKCk7XG5cdFx0XHR0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcblx0XHRcdHRoaXMudW5tb3VudEZsb2F0aW5nRWxlbWVudCgpO1xuXHRcdH1cblx0XHR0aGlzLnVubW91bnRGbG9hdGluZ0VsZW1lbnQgPSB1bmRlZmluZWQ7XG5cdFx0Ly8gT24gYWxsIGluc3RhbmNlcyBvZiBtZW51IGNsb3NpbmcsIG1ha2Ugc3VyZSBpY29uIGRpcmVjdGlvbiBpcyBjb3JyZWN0XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXG5cblxuXHQvKipcblx0ICogSGFuZGxlcyBlbWl0dGluZyBvcGVuL2Nsb3NlIGV2ZW50XG5cdCAqL1xuXHR0b2dnbGVNZW51KCkge1xuXHRcdHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG5cdFx0aWYgKHRoaXMub3Blbikge1xuXHRcdFx0Ly8gUmVuZGVyIHRoZSB0ZW1wbGF0ZSAmIGFwcGVuZCB0byB2aWV3XG5cdFx0XHRjb25zdCB2aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm1lbnVUZW1wbGF0ZSk7XG5cdFx0XHR0aGlzLm1lbnVSZWYgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZXcucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50KTtcblx0XHRcdC8vIEFzc2lnbiBidXR0b24gd2lkdGggdG8gdGhlIG1lbnUgcmVmIHRvIGFsaWduIHdpdGggYnV0dG9uXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMubWVudVJlZi5zdHlsZSwge1xuXHRcdFx0XHR3aWR0aDogYCR7dGhpcy5yZWZlcmVuY2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGh9cHhgLFxuXHRcdFx0XHR0b3A6IFwiMFwiLFxuXHRcdFx0XHRsZWZ0OiBcIjBcIlxuXHRcdFx0fSk7XG5cblx0XHRcdC8vIFJlc2V0ICYgdGVzdCBhbGlnbm1lbnQgZXZlcnkgb3BlblxuXHRcdFx0dGhpcy5tZW51QWxpZ25tZW50ID0gdGhpcy5fYWxpZ25tZW50O1xuXG5cdFx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5kb2N1bWVudENsaWNrKTtcblxuXHRcdFx0Ly8gTGlzdGVuIGZvciBldmVudHMgc3VjaCBhcyBzY3JvbGxpbmcgdG8ga2VlcCBtZW51IGFsaWduZWRcblx0XHRcdHRoaXMudW5tb3VudEZsb2F0aW5nRWxlbWVudCA9IGF1dG9VcGRhdGUoXG5cdFx0XHRcdHRoaXMucmVmZXJlbmNlRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLm1lbnVSZWYsXG5cdFx0XHRcdHRoaXMucmVjb21wdXRlUG9zaXRpb24uYmluZCh0aGlzKVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jbGVhblVwKCk7XG5cdFx0fVxuXHR9XG5cblxuXG5cdHJvdW5kQnlEUFIodmFsdWUpIHtcblx0XHRjb25zdCBkcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuXHRcdHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcblx0fVxuXG5cblxuXHQvKipcblx0ICogQ29tcHV0ZSBwb3NpdGlvbiBvZiBtZW51XG5cdCAqL1xuXHRyZWNvbXB1dGVQb3NpdGlvbigpIHtcblx0XHRpZiAodGhpcy5tZW51VGVtcGxhdGUgJiYgdGhpcy5yZWZlcmVuY2VFbGVtZW50KSB7XG5cdFx0XHQvLyBSdW4gb3V0c2lkZSBvZiBhbmd1bGFyIHpvbmUgdG8gYXZvaWQgdW5uZWNlc3NhcnkgY2hhbmdlIGRldGVjdGlvbiBhbmQgcmVseSBvbiBmbG9hdGluZy11aVxuXHRcdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB7IHgsIHksIHBsYWNlbWVudCB9ID0gYXdhaXQgY29tcHV0ZVBvc2l0aW9uKFxuXHRcdFx0XHRcdHRoaXMucmVmZXJlbmNlRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHRcdHRoaXMubWVudVJlZixcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IHRoaXMubWVudUFsaWdubWVudCxcblx0XHRcdFx0XHRcdHN0cmF0ZWd5OiBcImZpeGVkXCIsXG5cdFx0XHRcdFx0XHRtaWRkbGV3YXJlOiBbXG5cdFx0XHRcdFx0XHRcdGZsaXAoeyBjcm9zc0F4aXM6IGZhbHNlIH0pXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0dGhpcy5tZW51QWxpZ25tZW50ID0gcGxhY2VtZW50IGFzIE1lbnVCdXR0b25QbGFjZW1lbnQ7XG5cblx0XHRcdFx0Ly8gVXNpbmcgQ1NTT00gdG8gbWFuaXB1bGF0ZSBDU1MgdG8gYXZvaWQgY29udGVudCBzZWN1cml0eSBwb2xpY3kgaW5saW5lLXNyY1xuXHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYmFwcHNlYy1jc3AvaXNzdWVzLzIxMlxuXHRcdFx0XHRPYmplY3QuYXNzaWduKHRoaXMubWVudVJlZi5zdHlsZSwge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBcImZpeGVkXCIsXG5cdFx0XHRcdFx0Ly8gVXNpbmcgdHJhbnNmb3JtIGluc3RlYWQgb2YgdG9wL2xlZnQgcG9zaXRpb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuXHRcdFx0XHRcdHRyYW5zZm9ybTogYHRyYW5zbGF0ZSgke3RoaXMucm91bmRCeURQUih4KX1weCwke3RoaXMucm91bmRCeURQUih5KX1weClgXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { ButtonModule } from "carbon-components-angular/button";
|
|
4
|
+
import { IconModule } from "carbon-components-angular/icon";
|
|
5
|
+
import { ContextMenuModule } from "carbon-components-angular/context-menu";
|
|
6
|
+
import { MenuButtonComponent } from "./menu-button.component";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class MenuButtonModule {
|
|
9
|
+
}
|
|
10
|
+
MenuButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
MenuButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: MenuButtonModule, declarations: [MenuButtonComponent], imports: [CommonModule,
|
|
12
|
+
ButtonModule,
|
|
13
|
+
IconModule,
|
|
14
|
+
ContextMenuModule], exports: [MenuButtonComponent] });
|
|
15
|
+
MenuButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuButtonModule, imports: [CommonModule,
|
|
16
|
+
ButtonModule,
|
|
17
|
+
IconModule,
|
|
18
|
+
ContextMenuModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuButtonModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [
|
|
23
|
+
CommonModule,
|
|
24
|
+
ButtonModule,
|
|
25
|
+
IconModule,
|
|
26
|
+
ContextMenuModule
|
|
27
|
+
],
|
|
28
|
+
exports: [MenuButtonComponent],
|
|
29
|
+
declarations: [MenuButtonComponent],
|
|
30
|
+
providers: []
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1idXR0b24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbnUtYnV0dG9uL21lbnUtYnV0dG9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWE5RCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBSGIsbUJBQW1CLGFBTmpDLFlBQVk7UUFDWixZQUFZO1FBQ1osVUFBVTtRQUNWLGlCQUFpQixhQUVSLG1CQUFtQjs4R0FJakIsZ0JBQWdCLFlBVDNCLFlBQVk7UUFDWixZQUFZO1FBQ1osVUFBVTtRQUNWLGlCQUFpQjsyRkFNTixnQkFBZ0I7a0JBWDVCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixVQUFVO3dCQUNWLGlCQUFpQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxTQUFTLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvYnV0dG9uXCI7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaWNvblwiO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jb250ZXh0LW1lbnVcIjtcblxuaW1wb3J0IHsgTWVudUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuL21lbnUtYnV0dG9uLmNvbXBvbmVudFwiO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdEJ1dHRvbk1vZHVsZSxcblx0XHRJY29uTW9kdWxlLFxuXHRcdENvbnRleHRNZW51TW9kdWxlXG5cdF0sXG5cdGV4cG9ydHM6IFtNZW51QnV0dG9uQ29tcG9uZW50XSxcblx0ZGVjbGFyYXRpb25zOiBbTWVudUJ1dHRvbkNvbXBvbmVudF0sXG5cdHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgTWVudUJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EventEmitter, Component, ChangeDetectionStrategy, Input, ContentChildren, HostBinding, Output, ViewChild, NgModule } from '@angular/core';
|
|
4
|
+
import { autoUpdate, computePosition, flip } from '@floating-ui/dom';
|
|
5
|
+
import * as i3 from 'carbon-components-angular/context-menu';
|
|
6
|
+
import { ContextMenuItemComponent, ContextMenuModule } from 'carbon-components-angular/context-menu';
|
|
7
|
+
import * as i1 from 'carbon-components-angular/button';
|
|
8
|
+
import { ButtonModule } from 'carbon-components-angular/button';
|
|
9
|
+
import * as i2 from 'carbon-components-angular/icon';
|
|
10
|
+
import { IconModule } from 'carbon-components-angular/icon';
|
|
11
|
+
import { CommonModule } from '@angular/common';
|
|
12
|
+
|
|
13
|
+
class ComboButtonComponent {
|
|
14
|
+
constructor(ngZone, renderer, hostElement, viewContainerRef, changeDetectorRef) {
|
|
15
|
+
this.ngZone = ngZone;
|
|
16
|
+
this.renderer = renderer;
|
|
17
|
+
this.hostElement = hostElement;
|
|
18
|
+
this.viewContainerRef = viewContainerRef;
|
|
19
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
20
|
+
this.comboId = `combo-button-${ComboButtonComponent.comboButtonCounter++}`;
|
|
21
|
+
this.size = "lg";
|
|
22
|
+
this.disabled = false;
|
|
23
|
+
this.menuAlignment = "bottom";
|
|
24
|
+
this.tooltipAutoAlign = false;
|
|
25
|
+
this.tooltipPlacement = "bottom";
|
|
26
|
+
this.open = false;
|
|
27
|
+
this.actionClick = new EventEmitter();
|
|
28
|
+
this.comboButtonContainer = true;
|
|
29
|
+
this.documentClick = this.handleFocusOut.bind(this);
|
|
30
|
+
this.subscriptions = [];
|
|
31
|
+
this._alignment = "bottom";
|
|
32
|
+
}
|
|
33
|
+
// Listen for click & determine if menu should close
|
|
34
|
+
set projectedMenuItems(itemList) {
|
|
35
|
+
// Reset in case user dynamically updates menu item
|
|
36
|
+
this.subscriptions.forEach((sub) => sub === null || sub === void 0 ? void 0 : sub.unsubscribe());
|
|
37
|
+
this.subscriptions = [];
|
|
38
|
+
itemList.forEach((item) => {
|
|
39
|
+
this.subscriptions.push(item.itemClick.subscribe((clickEvent) => this.handleMenuItemClick(clickEvent)));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
get sizeLg() { return this.size === "lg"; }
|
|
43
|
+
get sizeMd() { return this.size === "md"; }
|
|
44
|
+
get sizeSm() { return this.size === "sm"; }
|
|
45
|
+
get ariaOwns() {
|
|
46
|
+
return this.open ? this.comboId : undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* In case user updates alignment, store initial value.
|
|
50
|
+
* This allows us to test user passed alignment on each open
|
|
51
|
+
*/
|
|
52
|
+
ngOnChanges(changes) {
|
|
53
|
+
if (changes.menuAlignment) {
|
|
54
|
+
this._alignment = changes.menuAlignment.currentValue;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* If user has passed in true for open, we dynamically open the menu
|
|
59
|
+
*/
|
|
60
|
+
ngAfterViewInit() {
|
|
61
|
+
if (this.open) {
|
|
62
|
+
this.open = !this.open;
|
|
63
|
+
this.toggleMenu();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Clean up Floating-ui & subscriptions
|
|
68
|
+
*/
|
|
69
|
+
ngOnDestroy() {
|
|
70
|
+
this.cleanUp();
|
|
71
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* As of now, menu button does not support nexted menu, on button click it should close
|
|
75
|
+
*/
|
|
76
|
+
handleMenuItemClick(event) {
|
|
77
|
+
// If event is not type radio/checkbox, we close the menu
|
|
78
|
+
if (!event.type) {
|
|
79
|
+
this.toggleMenu();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* On body click, close the menu
|
|
84
|
+
* @param event
|
|
85
|
+
*/
|
|
86
|
+
handleFocusOut(event) {
|
|
87
|
+
if (!this.hostElement.nativeElement.contains(event.target)) {
|
|
88
|
+
this.toggleMenu();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Clean up `autoUpdate` if auto alignment is enabled
|
|
93
|
+
*/
|
|
94
|
+
cleanUp() {
|
|
95
|
+
document.removeEventListener("click", this.documentClick);
|
|
96
|
+
if (this.unmountFloatingElement) {
|
|
97
|
+
this.menuRef.remove();
|
|
98
|
+
this.viewContainerRef.clear();
|
|
99
|
+
this.unmountFloatingElement();
|
|
100
|
+
}
|
|
101
|
+
this.unmountFloatingElement = undefined;
|
|
102
|
+
// On all instances of menu closing, make sure icon direction is correct
|
|
103
|
+
this.changeDetectorRef.markForCheck();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* On action click, notify user
|
|
107
|
+
* If the menu is open, close the menu
|
|
108
|
+
* @param event
|
|
109
|
+
*/
|
|
110
|
+
onActionClick(event) {
|
|
111
|
+
if (this.open) {
|
|
112
|
+
this.toggleMenu();
|
|
113
|
+
}
|
|
114
|
+
this.actionClick.emit(event);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Handles emitting open/close event
|
|
118
|
+
*/
|
|
119
|
+
toggleMenu() {
|
|
120
|
+
this.open = !this.open;
|
|
121
|
+
if (this.open) {
|
|
122
|
+
// Render the template & append to view
|
|
123
|
+
const view = this.viewContainerRef.createEmbeddedView(this.menuTemplate);
|
|
124
|
+
this.menuRef = document.body.appendChild(view.rootNodes[0]);
|
|
125
|
+
// Assign button width to the menu ref to align with button
|
|
126
|
+
Object.assign(this.menuRef.style, {
|
|
127
|
+
width: `${this.hostElement.nativeElement.clientWidth}px`,
|
|
128
|
+
top: "0",
|
|
129
|
+
left: "0"
|
|
130
|
+
});
|
|
131
|
+
// Reset & test alignment every open
|
|
132
|
+
this.menuAlignment = this._alignment;
|
|
133
|
+
document.addEventListener("click", this.documentClick);
|
|
134
|
+
// Listen for events such as scrolling to keep menu aligned
|
|
135
|
+
this.unmountFloatingElement = autoUpdate(this.hostElement.nativeElement, this.menuRef, this.recomputePosition.bind(this));
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.cleanUp();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
roundByDPR(value) {
|
|
142
|
+
const dpr = window.devicePixelRatio || 1;
|
|
143
|
+
return Math.round(value * dpr) / dpr;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Compute position of menu
|
|
147
|
+
*/
|
|
148
|
+
recomputePosition() {
|
|
149
|
+
if (this.menuTemplate && this.hostElement) {
|
|
150
|
+
// Run outside of angular zone to avoid unnecessary change detection and rely on floating-ui
|
|
151
|
+
this.ngZone.runOutsideAngular(() => __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
const { x, y, placement } = yield computePosition(this.hostElement.nativeElement, this.menuRef, {
|
|
153
|
+
placement: this.menuAlignment,
|
|
154
|
+
strategy: "fixed",
|
|
155
|
+
middleware: [
|
|
156
|
+
flip({ crossAxis: false })
|
|
157
|
+
]
|
|
158
|
+
});
|
|
159
|
+
this.menuAlignment = placement;
|
|
160
|
+
// Using CSSOM to manipulate CSS to avoid content security policy inline-src
|
|
161
|
+
// https://github.com/w3c/webappsec-csp/issues/212
|
|
162
|
+
Object.assign(this.menuRef.style, {
|
|
163
|
+
position: "fixed",
|
|
164
|
+
// Using transform instead of top/left position to improve performance
|
|
165
|
+
transform: `translate(${this.roundByDPR(x)}px,${this.roundByDPR(y)}px)`
|
|
166
|
+
});
|
|
167
|
+
this.changeDetectorRef.markForCheck();
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
ComboButtonComponent.comboButtonCounter = 0;
|
|
173
|
+
ComboButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComboButtonComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
+
ComboButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ComboButtonComponent, selector: "cds-combo-button", inputs: { comboId: "comboId", size: "size", label: "label", disabled: "disabled", menuAlignment: "menuAlignment", description: "description", tooltipAutoAlign: "tooltipAutoAlign", tooltipPlacement: "tooltipPlacement", open: "open" }, outputs: { actionClick: "actionClick" }, host: { properties: { "class.cds--combo-button__container--open": "this.open", "class.cds--combo-button__container": "this.comboButtonContainer", "class.cds--combo-button__container--lg": "this.sizeLg", "class.cds--combo-button__container--md": "this.sizeMd", "class.cds--combo-button__container--sm": "this.sizeSm", "attr.aria-owns": "this.ariaOwns" } }, queries: [{ propertyName: "projectedMenuItems", predicate: ContextMenuItemComponent }], viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menuTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
175
|
+
<div class="cds--combo-button__primary-action" [attr.aria-owns]="open ? comboId : undefined">
|
|
176
|
+
<button
|
|
177
|
+
cdsButton="primary"
|
|
178
|
+
[size]="size"
|
|
179
|
+
[attr.title]="label"
|
|
180
|
+
[disabled]="disabled"
|
|
181
|
+
type="button"
|
|
182
|
+
(click)="onActionClick($event)">
|
|
183
|
+
{{label}}
|
|
184
|
+
</button>
|
|
185
|
+
</div>
|
|
186
|
+
<cds-icon-button
|
|
187
|
+
[buttonNgClass]="{ 'cds--combo-button__trigger': true }"
|
|
188
|
+
[buttonAttributes]="{
|
|
189
|
+
'aria-haspopup': true,
|
|
190
|
+
'aria-expanded': open,
|
|
191
|
+
'aria-controls': open ? comboId : undefined
|
|
192
|
+
}"
|
|
193
|
+
[size]="size"
|
|
194
|
+
[description]="description"
|
|
195
|
+
[disabled]="disabled"
|
|
196
|
+
[autoAlign]="tooltipAutoAlign"
|
|
197
|
+
[align]="tooltipPlacement"
|
|
198
|
+
(click)="toggleMenu()">
|
|
199
|
+
<svg
|
|
200
|
+
cdsIcon="chevron--down"
|
|
201
|
+
size="16">
|
|
202
|
+
</svg>
|
|
203
|
+
</cds-icon-button>
|
|
204
|
+
|
|
205
|
+
<ng-template #menuTemplate>
|
|
206
|
+
<cds-menu
|
|
207
|
+
mode="basic"
|
|
208
|
+
[size]="size"
|
|
209
|
+
[open]="open"
|
|
210
|
+
[attr.id]="comboId">
|
|
211
|
+
<ng-content select="cds-menu-item, cds-menu-divider"></ng-content>
|
|
212
|
+
</cds-menu>
|
|
213
|
+
</ng-template>
|
|
214
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i1.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description", "showTooltipWhenDisabled"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.ContextMenuComponent, selector: "cds-menu, cds-context-menu, ibm-context-menu", inputs: ["open", "position", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComboButtonComponent, decorators: [{
|
|
216
|
+
type: Component,
|
|
217
|
+
args: [{
|
|
218
|
+
selector: "cds-combo-button",
|
|
219
|
+
template: `
|
|
220
|
+
<div class="cds--combo-button__primary-action" [attr.aria-owns]="open ? comboId : undefined">
|
|
221
|
+
<button
|
|
222
|
+
cdsButton="primary"
|
|
223
|
+
[size]="size"
|
|
224
|
+
[attr.title]="label"
|
|
225
|
+
[disabled]="disabled"
|
|
226
|
+
type="button"
|
|
227
|
+
(click)="onActionClick($event)">
|
|
228
|
+
{{label}}
|
|
229
|
+
</button>
|
|
230
|
+
</div>
|
|
231
|
+
<cds-icon-button
|
|
232
|
+
[buttonNgClass]="{ 'cds--combo-button__trigger': true }"
|
|
233
|
+
[buttonAttributes]="{
|
|
234
|
+
'aria-haspopup': true,
|
|
235
|
+
'aria-expanded': open,
|
|
236
|
+
'aria-controls': open ? comboId : undefined
|
|
237
|
+
}"
|
|
238
|
+
[size]="size"
|
|
239
|
+
[description]="description"
|
|
240
|
+
[disabled]="disabled"
|
|
241
|
+
[autoAlign]="tooltipAutoAlign"
|
|
242
|
+
[align]="tooltipPlacement"
|
|
243
|
+
(click)="toggleMenu()">
|
|
244
|
+
<svg
|
|
245
|
+
cdsIcon="chevron--down"
|
|
246
|
+
size="16">
|
|
247
|
+
</svg>
|
|
248
|
+
</cds-icon-button>
|
|
249
|
+
|
|
250
|
+
<ng-template #menuTemplate>
|
|
251
|
+
<cds-menu
|
|
252
|
+
mode="basic"
|
|
253
|
+
[size]="size"
|
|
254
|
+
[open]="open"
|
|
255
|
+
[attr.id]="comboId">
|
|
256
|
+
<ng-content select="cds-menu-item, cds-menu-divider"></ng-content>
|
|
257
|
+
</cds-menu>
|
|
258
|
+
</ng-template>
|
|
259
|
+
`,
|
|
260
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
261
|
+
}]
|
|
262
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { comboId: [{
|
|
263
|
+
type: Input
|
|
264
|
+
}], projectedMenuItems: [{
|
|
265
|
+
type: ContentChildren,
|
|
266
|
+
args: [ContextMenuItemComponent]
|
|
267
|
+
}], size: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], label: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], disabled: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], menuAlignment: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], description: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], tooltipAutoAlign: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], tooltipPlacement: [{
|
|
280
|
+
type: Input
|
|
281
|
+
}], open: [{
|
|
282
|
+
type: Input
|
|
283
|
+
}, {
|
|
284
|
+
type: HostBinding,
|
|
285
|
+
args: ["class.cds--combo-button__container--open"]
|
|
286
|
+
}], actionClick: [{
|
|
287
|
+
type: Output
|
|
288
|
+
}], comboButtonContainer: [{
|
|
289
|
+
type: HostBinding,
|
|
290
|
+
args: ["class.cds--combo-button__container"]
|
|
291
|
+
}], sizeLg: [{
|
|
292
|
+
type: HostBinding,
|
|
293
|
+
args: ["class.cds--combo-button__container--lg"]
|
|
294
|
+
}], sizeMd: [{
|
|
295
|
+
type: HostBinding,
|
|
296
|
+
args: ["class.cds--combo-button__container--md"]
|
|
297
|
+
}], sizeSm: [{
|
|
298
|
+
type: HostBinding,
|
|
299
|
+
args: ["class.cds--combo-button__container--sm"]
|
|
300
|
+
}], ariaOwns: [{
|
|
301
|
+
type: HostBinding,
|
|
302
|
+
args: ["attr.aria-owns"]
|
|
303
|
+
}], menuTemplate: [{
|
|
304
|
+
type: ViewChild,
|
|
305
|
+
args: ["menuTemplate"]
|
|
306
|
+
}] } });
|
|
307
|
+
|
|
308
|
+
class ComboButtonModule {
|
|
309
|
+
}
|
|
310
|
+
ComboButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComboButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
311
|
+
ComboButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ComboButtonModule, declarations: [ComboButtonComponent], imports: [CommonModule,
|
|
312
|
+
ButtonModule,
|
|
313
|
+
IconModule,
|
|
314
|
+
ContextMenuModule], exports: [ComboButtonComponent] });
|
|
315
|
+
ComboButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComboButtonModule, imports: [CommonModule,
|
|
316
|
+
ButtonModule,
|
|
317
|
+
IconModule,
|
|
318
|
+
ContextMenuModule] });
|
|
319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ComboButtonModule, decorators: [{
|
|
320
|
+
type: NgModule,
|
|
321
|
+
args: [{
|
|
322
|
+
imports: [
|
|
323
|
+
CommonModule,
|
|
324
|
+
ButtonModule,
|
|
325
|
+
IconModule,
|
|
326
|
+
ContextMenuModule
|
|
327
|
+
],
|
|
328
|
+
exports: [ComboButtonComponent],
|
|
329
|
+
declarations: [ComboButtonComponent]
|
|
330
|
+
}]
|
|
331
|
+
}] });
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Generated bundle index. Do not edit.
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
export { ComboButtonComponent, ComboButtonModule };
|
|
338
|
+
//# sourceMappingURL=carbon-components-angular-combo-button.mjs.map
|