vira 28.19.4 → 28.19.6
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/package.json +13 -13
- package/src/elements/define-vira-element.ts +29 -0
- package/src/elements/form/vira-form-fields.ts +140 -0
- package/src/elements/form/vira-form.element.ts +204 -0
- package/src/elements/pop-up/pop-up-helpers.ts +85 -0
- package/{dist/elements/pop-up/pop-up-menu-item.d.ts → src/elements/pop-up/pop-up-menu-item.ts} +4 -3
- package/{dist/elements/pop-up/vira-menu-item.element.js → src/elements/pop-up/vira-menu-item.element.ts} +28 -11
- package/src/elements/pop-up/vira-menu-trigger.element.ts +158 -0
- package/{dist/elements/pop-up/vira-menu.element.js → src/elements/pop-up/vira-menu.element.ts} +76 -49
- package/{dist/elements/pop-up/vira-pop-up-menu.element.js → src/elements/pop-up/vira-pop-up-menu.element.ts} +34 -22
- package/{dist/elements/pop-up/vira-pop-up-trigger.element.js → src/elements/pop-up/vira-pop-up-trigger.element.ts} +200 -91
- package/src/elements/shared-text-input-logic.ts +173 -0
- package/{dist/elements/vira-bold-text.element.js → src/elements/vira-bold-text.element.ts} +8 -7
- package/{dist/elements/vira-button.element.js → src/elements/vira-button.element.ts} +64 -33
- package/{dist/elements/vira-card.element.js → src/elements/vira-card.element.ts} +16 -13
- package/{dist/elements/vira-checkbox.element.js → src/elements/vira-checkbox.element.ts} +71 -28
- package/{dist/elements/vira-collapsible-wrapper.element.js → src/elements/vira-collapsible-wrapper.element.ts} +18 -16
- package/{dist/elements/vira-dropdown.element.js → src/elements/vira-dropdown.element.ts} +94 -48
- package/{dist/elements/vira-error.element.js → src/elements/vira-error.element.ts} +6 -5
- package/{dist/elements/vira-icon.element.js → src/elements/vira-icon.element.ts} +13 -6
- package/{dist/elements/vira-image.element.js → src/elements/vira-image.element.ts} +63 -43
- package/{dist/elements/vira-input.element.js → src/elements/vira-input.element.ts} +151 -85
- package/{dist/elements/vira-link.element.js → src/elements/vira-link.element.ts} +62 -11
- package/{dist/elements/vira-modal.element.js → src/elements/vira-modal.element.ts} +89 -50
- package/src/elements/vira-overflow-switch.element.ts +137 -0
- package/{dist/elements/vira-progress.element.js → src/elements/vira-progress.element.ts} +26 -11
- package/{dist/elements/vira-select.element.js → src/elements/vira-select.element.ts} +96 -41
- package/src/icons/icon-color.test-helper.ts +9 -0
- package/{dist/icons/icon-css-vars.js → src/icons/icon-css-vars.ts} +2 -1
- package/src/icons/icon-svg.ts +71 -0
- package/{dist/icons/icon-svgs/bell-24.icon.js → src/icons/icon-svgs/bell-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/chat-24.icon.js → src/icons/icon-svgs/chat-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/check-24.icon.js → src/icons/icon-svgs/check-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/chevron-down-24.icon.js → src/icons/icon-svgs/chevron-down-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/chevron-up-24.icon.js → src/icons/icon-svgs/chevron-up-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/close-x-24.icon.js → src/icons/icon-svgs/close-x-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/commit-24.icon.js → src/icons/icon-svgs/commit-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/copy-24.icon.js → src/icons/icon-svgs/copy-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/document-24.icon.js → src/icons/icon-svgs/document-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/document-search-24.icon.js → src/icons/icon-svgs/document-search-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/double-chevron-24.icon.js → src/icons/icon-svgs/double-chevron-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/element-16.icon.js → src/icons/icon-svgs/element-16.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/element-24.icon.js → src/icons/icon-svgs/element-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/external-link-24.icon.js → src/icons/icon-svgs/external-link-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/eye-closed-24.icon.js → src/icons/icon-svgs/eye-closed-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/eye-open-24.icon.js → src/icons/icon-svgs/eye-open-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/filter-24.icon.js → src/icons/icon-svgs/filter-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/link-24.icon.js → src/icons/icon-svgs/link-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/loader-24.icon.js → src/icons/icon-svgs/loader-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/loader-animated-24.icon.js → src/icons/icon-svgs/loader-animated-24.icon.ts} +8 -6
- package/{dist/icons/icon-svgs/lock-24.icon.js → src/icons/icon-svgs/lock-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/options-24.icon.js → src/icons/icon-svgs/options-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/pencil-24.icon.js → src/icons/icon-svgs/pencil-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/shield-24.icon.js → src/icons/icon-svgs/shield-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/sort-ascending-24.icon.js → src/icons/icon-svgs/sort-ascending-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/sort-descending-24.icon.js → src/icons/icon-svgs/sort-descending-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/speaker-loud-24.icon.js → src/icons/icon-svgs/speaker-loud-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/speaker-medium-24.icon.js → src/icons/icon-svgs/speaker-medium-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/speaker-muted-24.icon.js → src/icons/icon-svgs/speaker-muted-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/speaker-quiet-24.icon.js → src/icons/icon-svgs/speaker-quiet-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/star-24.icon.js → src/icons/icon-svgs/star-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/status-failure-24.icon.js → src/icons/icon-svgs/status-failure-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/status-in-progress-24.icon.js → src/icons/icon-svgs/status-in-progress-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/status-success-24.icon.js → src/icons/icon-svgs/status-success-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/status-unknown-24.icon.js → src/icons/icon-svgs/status-unknown-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/status-warning-24.icon.js → src/icons/icon-svgs/status-warning-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/upload-24.icon.js → src/icons/icon-svgs/upload-24.icon.ts} +5 -4
- package/{dist/icons/icon-svgs/x-24.icon.js → src/icons/icon-svgs/x-24.icon.ts} +5 -4
- package/{dist/icons/index.js → src/icons/index.ts} +43 -39
- package/{dist/styles/border.js → src/styles/border.ts} +2 -1
- package/{dist/styles/disabled.js → src/styles/disabled.ts} +3 -2
- package/{dist/styles/durations.js → src/styles/durations.ts} +2 -1
- package/{dist/styles/focus.js → src/styles/focus.ts} +32 -8
- package/{dist/styles/font.js → src/styles/font.ts} +2 -1
- package/{dist/styles/form-styles.js → src/styles/form-styles.ts} +6 -1
- package/{dist/styles/index.js → src/styles/index.ts} +1 -0
- package/{dist/styles/native-styles.js → src/styles/native-styles.ts} +5 -3
- package/{dist/styles/scrollbar.js → src/styles/scrollbar.ts} +4 -3
- package/{dist/styles/shadows.js → src/styles/shadows.ts} +8 -6
- package/{dist/styles/user-select.js → src/styles/user-select.ts} +3 -2
- package/{dist/styles/vira-color-palette.js → src/styles/vira-color-palette.ts} +11 -1
- package/src/styles/vira-color-theme.ts +1142 -0
- package/src/util/define-table.ts +279 -0
- package/src/util/dynamic-element.ts +129 -0
- package/src/util/pop-up-manager.ts +380 -0
- package/dist/elements/define-vira-element.d.ts +0 -18
- package/dist/elements/define-vira-element.js +0 -19
- package/dist/elements/form/vira-form-fields.d.ts +0 -100
- package/dist/elements/form/vira-form-fields.js +0 -60
- package/dist/elements/form/vira-form.element.d.ts +0 -35
- package/dist/elements/form/vira-form.element.js +0 -151
- package/dist/elements/index.js +0 -25
- package/dist/elements/pop-up/pop-up-helpers.d.ts +0 -33
- package/dist/elements/pop-up/pop-up-helpers.js +0 -58
- package/dist/elements/pop-up/pop-up-menu-item.js +0 -1
- package/dist/elements/pop-up/vira-menu-item.element.d.ts +0 -19
- package/dist/elements/pop-up/vira-menu-trigger.element.d.ts +0 -41
- package/dist/elements/pop-up/vira-menu-trigger.element.js +0 -121
- package/dist/elements/pop-up/vira-menu.element.d.ts +0 -38
- package/dist/elements/pop-up/vira-pop-up-menu.element.d.ts +0 -35
- package/dist/elements/pop-up/vira-pop-up-trigger.element.d.ts +0 -105
- package/dist/elements/shared-text-input-logic.d.ts +0 -63
- package/dist/elements/shared-text-input-logic.js +0 -101
- package/dist/elements/vira-bold-text.element.d.ts +0 -9
- package/dist/elements/vira-button.element.d.ts +0 -31
- package/dist/elements/vira-card.element.d.ts +0 -18
- package/dist/elements/vira-checkbox.element.d.ts +0 -34
- package/dist/elements/vira-collapsible-wrapper.element.d.ts +0 -14
- package/dist/elements/vira-dropdown.element.d.ts +0 -46
- package/dist/elements/vira-error.element.d.ts +0 -7
- package/dist/elements/vira-icon.element.d.ts +0 -13
- package/dist/elements/vira-image.element.d.ts +0 -45
- package/dist/elements/vira-input.element.d.ts +0 -62
- package/dist/elements/vira-link.element.d.ts +0 -73
- package/dist/elements/vira-modal.element.d.ts +0 -39
- package/dist/elements/vira-overflow-switch.element.d.ts +0 -21
- package/dist/elements/vira-overflow-switch.element.js +0 -110
- package/dist/elements/vira-progress.element.d.ts +0 -18
- package/dist/elements/vira-select.element.d.ts +0 -48
- package/dist/icons/icon-color.test-helper.d.ts +0 -6
- package/dist/icons/icon-color.test-helper.js +0 -9
- package/dist/icons/icon-css-vars.d.ts +0 -14
- package/dist/icons/icon-svg.d.ts +0 -27
- package/dist/icons/icon-svg.js +0 -48
- package/dist/icons/icon-svgs/bell-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/chat-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/check-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/chevron-down-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/chevron-up-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/close-x-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/commit-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/copy-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/document-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/document-search-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/double-chevron-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/element-16.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/element-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/external-link-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/eye-closed-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/eye-open-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/filter-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/link-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/loader-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/loader-animated-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/lock-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/options-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/pencil-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/shield-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/sort-ascending-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/sort-descending-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/speaker-loud-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/speaker-medium-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/speaker-muted-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/speaker-quiet-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/star-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/status-failure-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/status-in-progress-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/status-success-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/status-unknown-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/status-warning-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/upload-24.icon.d.ts +0 -8
- package/dist/icons/icon-svgs/x-24.icon.d.ts +0 -8
- package/dist/icons/index.d.ts +0 -86
- package/dist/index.js +0 -4
- package/dist/styles/border.d.ts +0 -9
- package/dist/styles/disabled.d.ts +0 -6
- package/dist/styles/durations.d.ts +0 -22
- package/dist/styles/focus.d.ts +0 -31
- package/dist/styles/font.d.ts +0 -9
- package/dist/styles/form-styles.d.ts +0 -20
- package/dist/styles/index.d.ts +0 -13
- package/dist/styles/native-styles.d.ts +0 -13
- package/dist/styles/scrollbar.d.ts +0 -6
- package/dist/styles/shadows.d.ts +0 -20
- package/dist/styles/user-select.d.ts +0 -6
- package/dist/styles/vira-color-palette.d.ts +0 -95
- package/dist/styles/vira-color-theme.d.ts +0 -1184
- package/dist/styles/vira-color-theme.js +0 -1137
- package/dist/util/define-table.d.ts +0 -110
- package/dist/util/define-table.js +0 -115
- package/dist/util/dynamic-element.d.ts +0 -63
- package/dist/util/dynamic-element.js +0 -61
- package/dist/util/index.js +0 -3
- package/dist/util/pop-up-manager.d.ts +0 -180
- package/dist/util/pop-up-manager.js +0 -203
- /package/{dist/elements/index.d.ts → src/elements/index.ts} +0 -0
- /package/{dist/index.d.ts → src/index.ts} +0 -0
- /package/{dist/util/index.d.ts → src/util/index.ts} +0 -0
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import { assert } from '@augment-vir/assert';
|
|
2
|
-
import { mapObjectValues } from '@augment-vir/common';
|
|
3
|
-
import { findOverflowAncestor } from '@augment-vir/web';
|
|
4
|
-
import { NavActivateEvent, NavDirection } from 'device-navigation';
|
|
5
|
-
import { listenToPageActivation } from 'page-active';
|
|
6
|
-
import { ListenTarget, defineTypedCustomEvent, defineTypedEvent, listenToGlobal, } from 'typed-event-target';
|
|
7
|
-
/**
|
|
8
|
-
* The default empty {@link PositionRect}, with all values set to 0.
|
|
9
|
-
*
|
|
10
|
-
* @category Internal
|
|
11
|
-
*/
|
|
12
|
-
export const emptyPositionRect = {
|
|
13
|
-
top: 0,
|
|
14
|
-
left: 0,
|
|
15
|
-
right: 0,
|
|
16
|
-
bottom: 0,
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* An event fired from {@link PopUpManager} when the pop up should be hidden.
|
|
20
|
-
*
|
|
21
|
-
* @category PopUp
|
|
22
|
-
*/
|
|
23
|
-
export class HidePopUpEvent extends defineTypedEvent('hide-pop-up') {
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* An event fired from {@link PopUpManager} when an individual item in the pop up has been selected
|
|
27
|
-
* by the user.
|
|
28
|
-
*
|
|
29
|
-
* @category PopUp
|
|
30
|
-
*/
|
|
31
|
-
export class NavSelectEvent extends defineTypedCustomEvent()('nav-select') {
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* A "pop up" manager for items that pop up from the HTML page, like dropdowns or menus.
|
|
35
|
-
*
|
|
36
|
-
* @category PopUp
|
|
37
|
-
*/
|
|
38
|
-
export class PopUpManager {
|
|
39
|
-
navController;
|
|
40
|
-
listenTarget = new ListenTarget();
|
|
41
|
-
options = {
|
|
42
|
-
minDownSpace: 200,
|
|
43
|
-
minRightSpace: 400,
|
|
44
|
-
verticalDiffThreshold: 20,
|
|
45
|
-
horizontalDiffThreshold: 100,
|
|
46
|
-
supportNavigation: true,
|
|
47
|
-
};
|
|
48
|
-
cleanupCallbacks = [];
|
|
49
|
-
lastRootElement;
|
|
50
|
-
constructor(navController, options) {
|
|
51
|
-
this.navController = navController;
|
|
52
|
-
this.options = { ...this.options, ...options };
|
|
53
|
-
}
|
|
54
|
-
attachGlobalListeners() {
|
|
55
|
-
this.cleanupCallbacks = [
|
|
56
|
-
listenToPageActivation(false, (isPageActive) => {
|
|
57
|
-
if (!isPageActive) {
|
|
58
|
-
this.removePopUp();
|
|
59
|
-
}
|
|
60
|
-
}),
|
|
61
|
-
this.navController.listen(NavActivateEvent, (event) => {
|
|
62
|
-
if (event.detail.success) {
|
|
63
|
-
this.listenTarget.dispatch(new NavSelectEvent({ detail: event.detail.coords }));
|
|
64
|
-
this.navController.currentNavEntry?.entry.focus(true);
|
|
65
|
-
event.stopImmediatePropagation();
|
|
66
|
-
event.preventDefault();
|
|
67
|
-
}
|
|
68
|
-
}),
|
|
69
|
-
listenToGlobal('mousedown', (event) => {
|
|
70
|
-
if (this.lastRootElement &&
|
|
71
|
-
event.composedPath().includes(this.lastRootElement)) {
|
|
72
|
-
/** Ignore clicks that came from the pop up host itself. */
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
this.removePopUp();
|
|
76
|
-
}, { passive: true }),
|
|
77
|
-
listenToGlobal('keydown', (event) => {
|
|
78
|
-
const keyCode = event.code;
|
|
79
|
-
if (keyCode === 'Escape') {
|
|
80
|
-
this.removePopUp();
|
|
81
|
-
}
|
|
82
|
-
else if (this.options.supportNavigation) {
|
|
83
|
-
const target = event.composedPath()[0];
|
|
84
|
-
const isTextInput = (target instanceof HTMLInputElement &&
|
|
85
|
-
(target.type === 'text' ||
|
|
86
|
-
target.type === 'search' ||
|
|
87
|
-
target.type === 'email' ||
|
|
88
|
-
target.type === 'url' ||
|
|
89
|
-
target.type === 'tel' ||
|
|
90
|
-
target.type === 'password' ||
|
|
91
|
-
target.type === 'number')) ||
|
|
92
|
-
target instanceof HTMLTextAreaElement ||
|
|
93
|
-
(target instanceof HTMLElement && target.isContentEditable);
|
|
94
|
-
if (isTextInput) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (keyCode === 'ArrowDown') {
|
|
98
|
-
event.stopImmediatePropagation();
|
|
99
|
-
event.preventDefault();
|
|
100
|
-
this.navController.navigate({
|
|
101
|
-
direction: NavDirection.Down,
|
|
102
|
-
allowWrapping: false,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
else if (keyCode === 'ArrowUp') {
|
|
106
|
-
event.stopImmediatePropagation();
|
|
107
|
-
event.preventDefault();
|
|
108
|
-
this.navController.navigate({
|
|
109
|
-
direction: NavDirection.Up,
|
|
110
|
-
allowWrapping: false,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
else if (keyCode === 'ArrowLeft') {
|
|
114
|
-
event.stopImmediatePropagation();
|
|
115
|
-
event.preventDefault();
|
|
116
|
-
this.navController.navigate({
|
|
117
|
-
direction: NavDirection.Left,
|
|
118
|
-
allowWrapping: false,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
else if (keyCode === 'ArrowRight') {
|
|
122
|
-
event.stopImmediatePropagation();
|
|
123
|
-
event.preventDefault();
|
|
124
|
-
this.navController.navigate({
|
|
125
|
-
direction: NavDirection.Right,
|
|
126
|
-
allowWrapping: false,
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
else if ((keyCode === 'Enter' || keyCode === 'Return' || keyCode === 'Space') &&
|
|
130
|
-
this.navController.enterInto({ fallbackToActivate: true }).success) {
|
|
131
|
-
event.stopImmediatePropagation();
|
|
132
|
-
event.preventDefault();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}),
|
|
136
|
-
];
|
|
137
|
-
}
|
|
138
|
-
/** Listen to events emitted from a {@link PopUpManager} instance. */
|
|
139
|
-
listen(event, listener, options) {
|
|
140
|
-
return this.listenTarget.listen(event, listener, options);
|
|
141
|
-
}
|
|
142
|
-
/** Trigger removal or hiding of the pop up. */
|
|
143
|
-
removePopUp() {
|
|
144
|
-
this.cleanupCallbacks.forEach((callback) => callback());
|
|
145
|
-
this.listenTarget.dispatch(new HidePopUpEvent());
|
|
146
|
-
}
|
|
147
|
-
/** Trigger showing the pop up. */
|
|
148
|
-
showPopUp(rootElement, options) {
|
|
149
|
-
this.lastRootElement = rootElement;
|
|
150
|
-
const currentOptions = { ...this.options, ...options };
|
|
151
|
-
const container = findOverflowAncestor(rootElement);
|
|
152
|
-
assert.instanceOf(container, HTMLElement);
|
|
153
|
-
const rootRect = rootElement.getBoundingClientRect();
|
|
154
|
-
const containerRect = container.getBoundingClientRect();
|
|
155
|
-
const containerScrollbarWidth = container.offsetWidth - container.clientWidth;
|
|
156
|
-
const containerScrollbarHeight = container.offsetHeight - container.clientHeight;
|
|
157
|
-
const containerPosition = container === document.body
|
|
158
|
-
? {
|
|
159
|
-
top: 0,
|
|
160
|
-
left: 0,
|
|
161
|
-
right: containerRect.width,
|
|
162
|
-
bottom: containerRect.height,
|
|
163
|
-
}
|
|
164
|
-
: {
|
|
165
|
-
top: containerRect.top,
|
|
166
|
-
left: containerRect.left,
|
|
167
|
-
right: containerRect.right - containerScrollbarWidth,
|
|
168
|
-
bottom: containerRect.bottom - containerScrollbarHeight,
|
|
169
|
-
};
|
|
170
|
-
const rootPosition = mapObjectValues(emptyPositionRect, (key) => {
|
|
171
|
-
return rootRect[key];
|
|
172
|
-
});
|
|
173
|
-
const diff = mapObjectValues(emptyPositionRect, (key) => {
|
|
174
|
-
const containerDimension = containerPosition[key];
|
|
175
|
-
const hostDimension = rootPosition[key];
|
|
176
|
-
return Math.abs(containerDimension - hostDimension);
|
|
177
|
-
});
|
|
178
|
-
const useUp = diff.top > diff.bottom + currentOptions.verticalDiffThreshold &&
|
|
179
|
-
diff.bottom < currentOptions.minDownSpace;
|
|
180
|
-
const useLeft = diff.left > diff.right + currentOptions.horizontalDiffThreshold &&
|
|
181
|
-
diff.right < currentOptions.minRightSpace;
|
|
182
|
-
this.attachGlobalListeners();
|
|
183
|
-
return {
|
|
184
|
-
popDown: !useUp,
|
|
185
|
-
popRight: !useLeft,
|
|
186
|
-
positions: {
|
|
187
|
-
container: containerPosition,
|
|
188
|
-
root: rootPosition,
|
|
189
|
-
diff,
|
|
190
|
-
},
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Cleanup and destroy the {@link PopUpManager} instance. This:
|
|
195
|
-
*
|
|
196
|
-
* - Removes the existing pop up
|
|
197
|
-
* - Cleans up all internal and external listeners
|
|
198
|
-
*/
|
|
199
|
-
destroy() {
|
|
200
|
-
this.removePopUp();
|
|
201
|
-
this.listenTarget.destroy();
|
|
202
|
-
}
|
|
203
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|