@sankhyalabs/ezui 7.2.0-dev.1 → 7.2.0-dev.11
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/dist/cjs/{ApplicationUtils-006ca96f.js → ApplicationUtils-88dfe345.js} +1 -1
- package/dist/cjs/{app-globals-5cb12916.js → app-globals-c1d07d68.js} +1 -1
- package/dist/cjs/classic-search-list_7.cjs.entry.js +9 -4
- package/dist/cjs/ez-actions-button.cjs.entry.js +2 -2
- package/dist/cjs/ez-alert-list.cjs.entry.js +1 -1
- package/dist/cjs/ez-avatar.cjs.entry.js +1 -1
- package/dist/cjs/ez-calendar.cjs.entry.js +1 -1
- package/dist/cjs/ez-classic-combo-box.cjs.entry.js +2 -1
- package/dist/cjs/ez-classic-date-input.cjs.entry.js +2 -2
- package/dist/cjs/ez-classic-date-time-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-classic-number-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-classic-search-plus.cjs.entry.js +26 -13
- package/dist/cjs/ez-classic-search.cjs.entry.js +2 -2
- package/dist/cjs/ez-classic-time-input.cjs.entry.js +4 -3
- package/dist/cjs/ez-collapsible-box.cjs.entry.js +2 -2
- package/dist/cjs/ez-combo-box.cjs.entry.js +2 -2
- package/dist/cjs/ez-date-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-date-time-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-dialog.cjs.entry.js +1 -1
- package/dist/cjs/ez-double-list.cjs.entry.js +1 -1
- package/dist/cjs/ez-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/ez-empty-card.cjs.entry.js +1 -1
- package/dist/cjs/ez-file-item.cjs.entry.js +1 -1
- package/dist/cjs/ez-form-view.cjs.entry.js +1 -1
- package/dist/cjs/ez-form.cjs.entry.js +3 -3
- package/dist/cjs/ez-grid-pagination.cjs.entry.js +227 -0
- package/dist/cjs/ez-grid.cjs.entry.js +85 -166
- package/dist/cjs/ez-guide-navigator.cjs.entry.js +1 -1
- package/dist/cjs/ez-icon.cjs.entry.js +1 -1
- package/dist/cjs/ez-link-builder_6.cjs.entry.js +1 -1
- package/dist/cjs/ez-list.cjs.entry.js +1 -1
- package/dist/cjs/ez-modal-container.cjs.entry.js +1 -1
- package/dist/cjs/ez-modal.cjs.entry.js +1 -1
- package/dist/cjs/ez-multi-selection-list.cjs.entry.js +1 -1
- package/dist/cjs/ez-number-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-pagination.cjs.entry.js +1 -1
- package/dist/cjs/ez-popover-core.cjs.entry.js +1 -1
- package/dist/cjs/ez-popup.cjs.entry.js +1 -2
- package/dist/cjs/ez-record-navigation.cjs.entry.js +121 -0
- package/dist/cjs/ez-scroller_2.cjs.entry.js +81 -14
- package/dist/cjs/ez-search-plus.cjs.entry.js +13 -4
- package/dist/cjs/ez-search-result-list.cjs.entry.js +1 -1
- package/dist/cjs/ez-search.cjs.entry.js +3 -3
- package/dist/cjs/ez-sidebar-navigator.cjs.entry.js +1 -1
- package/dist/cjs/ez-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/ez-sortable-list.cjs.entry.js +99 -114
- package/dist/cjs/ez-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ez-split-button.cjs.entry.js +4 -4
- package/dist/cjs/ez-split-item.cjs.entry.js +2 -2
- package/dist/cjs/ez-time-input.cjs.entry.js +1 -1
- package/dist/cjs/ez-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/ez-tree.cjs.entry.js +1 -1
- package/dist/cjs/ez-upload.cjs.entry.js +2 -2
- package/dist/cjs/ezui.cjs.js +3 -3
- package/dist/cjs/filter-column.cjs.entry.js +1 -1
- package/dist/cjs/{floating-ui.dom.esm-f4d87617.js → floating-ui.dom.esm-bea31048.js} +165 -119
- package/dist/cjs/{index-350d0fa0.js → index-9739c242.js} +91 -30
- package/dist/cjs/index-a7b0c73d.js +8 -0
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{search-column-fbf680d7.js → search-column-9612bd3a.js} +4 -7
- package/dist/collection/collection-manifest.json +7 -0
- package/dist/collection/components/ez-classic-combo-box/ez-classic-combo-box.js +2 -1
- package/dist/collection/components/ez-classic-date-input/ez-classic-date-input.js +1 -1
- package/dist/collection/components/ez-classic-search-plus/ez-classic-search-plus.css +22 -0
- package/dist/collection/components/ez-classic-search-plus/ez-classic-search-plus.js +26 -11
- package/dist/collection/components/ez-classic-time-input/ez-classic-time-input.js +3 -2
- package/dist/collection/components/ez-dropdown/ez-dropdown.css +1 -1
- package/dist/collection/components/ez-empty-card/ez-empty-card.js +7 -7
- package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +43 -18
- package/dist/collection/components/ez-grid/controller/ag-grid/gridColumnDefaultWidths.js +23 -0
- package/dist/collection/components/ez-grid/ez-grid.css +1 -60
- package/dist/collection/components/ez-grid/ez-grid.js +52 -150
- package/dist/collection/components/ez-grid/utils/index.js +1 -0
- package/dist/collection/components/ez-grid-pagination/ez-grid-pagination.css +111 -0
- package/dist/collection/components/ez-grid-pagination/ez-grid-pagination.js +410 -0
- package/dist/collection/components/ez-icon/ez-icon.css +5 -5
- package/dist/collection/components/ez-image-input/ez-image-input.css +24 -8
- package/dist/collection/components/ez-image-input/ez-image-input.js +6 -1
- package/dist/collection/components/ez-popup/ez-popup.js +0 -1
- package/dist/collection/components/ez-record-navigation/ez-record-navigation.css +51 -0
- package/dist/collection/components/ez-record-navigation/ez-record-navigation.js +246 -0
- package/dist/collection/components/ez-scroller/EzScrollNavigationMode.js +5 -0
- package/dist/collection/components/ez-scroller/ez-scroller.css +117 -11
- package/dist/collection/components/ez-scroller/ez-scroller.js +118 -13
- package/dist/collection/components/ez-search/ez-search.css +4 -0
- package/dist/collection/components/ez-search-plus/ez-search-plus.js +11 -2
- package/dist/collection/components/ez-sortable-list/ez-sortable-list.css +1 -1
- package/dist/collection/components/ez-split-button/ez-split-button.css +1 -1
- package/dist/collection/components/ez-split-button/ez-split-button.js +2 -2
- package/dist/collection/utils/i18n/locales/en-us.js +27 -4
- package/dist/collection/utils/i18n/locales/es-es.js +27 -4
- package/dist/collection/utils/i18n/locales/pt-br.js +27 -4
- package/dist/collection/utils/searchColumn/search-column.js +2 -5
- package/dist/custom-elements/index.d.ts +12 -0
- package/dist/custom-elements/index.js +904 -464
- package/dist/esm/{ApplicationUtils-0c5cb207.js → ApplicationUtils-f7721533.js} +1 -1
- package/dist/esm/{app-globals-1db10325.js → app-globals-6e258867.js} +1 -1
- package/dist/esm/classic-search-list_7.entry.js +9 -4
- package/dist/esm/ez-actions-button.entry.js +2 -2
- package/dist/esm/ez-alert-list.entry.js +1 -1
- package/dist/esm/ez-avatar.entry.js +1 -1
- package/dist/esm/ez-calendar.entry.js +1 -1
- package/dist/esm/ez-classic-combo-box.entry.js +2 -1
- package/dist/esm/ez-classic-date-input.entry.js +2 -2
- package/dist/esm/ez-classic-date-time-input.entry.js +1 -1
- package/dist/esm/ez-classic-number-input.entry.js +1 -1
- package/dist/esm/ez-classic-search-plus.entry.js +26 -13
- package/dist/esm/ez-classic-search.entry.js +2 -2
- package/dist/esm/ez-classic-time-input.entry.js +4 -3
- package/dist/esm/ez-collapsible-box.entry.js +2 -2
- package/dist/esm/ez-combo-box.entry.js +2 -2
- package/dist/esm/ez-date-input.entry.js +1 -1
- package/dist/esm/ez-date-time-input.entry.js +1 -1
- package/dist/esm/ez-dialog.entry.js +1 -1
- package/dist/esm/ez-double-list.entry.js +1 -1
- package/dist/esm/ez-dropdown.entry.js +1 -1
- package/dist/esm/ez-empty-card.entry.js +1 -1
- package/dist/esm/ez-file-item.entry.js +1 -1
- package/dist/esm/ez-form-view.entry.js +1 -1
- package/dist/esm/ez-form.entry.js +3 -3
- package/dist/esm/ez-grid-pagination.entry.js +223 -0
- package/dist/esm/ez-grid.entry.js +86 -167
- package/dist/esm/ez-guide-navigator.entry.js +1 -1
- package/dist/esm/ez-icon.entry.js +1 -1
- package/dist/esm/ez-link-builder_6.entry.js +1 -1
- package/dist/esm/ez-list.entry.js +1 -1
- package/dist/esm/ez-modal-container.entry.js +1 -1
- package/dist/esm/ez-modal.entry.js +1 -1
- package/dist/esm/ez-multi-selection-list.entry.js +1 -1
- package/dist/esm/ez-number-input.entry.js +1 -1
- package/dist/esm/ez-pagination.entry.js +1 -1
- package/dist/esm/ez-popover-core.entry.js +1 -1
- package/dist/esm/ez-popup.entry.js +1 -2
- package/dist/esm/ez-record-navigation.entry.js +117 -0
- package/dist/esm/ez-scroller_2.entry.js +81 -14
- package/dist/esm/ez-search-plus.entry.js +13 -4
- package/dist/esm/ez-search-result-list.entry.js +1 -1
- package/dist/esm/ez-search.entry.js +3 -3
- package/dist/esm/ez-sidebar-navigator.entry.js +1 -1
- package/dist/esm/ez-skeleton.entry.js +1 -1
- package/dist/esm/ez-sortable-list.entry.js +99 -114
- package/dist/esm/ez-spinner.entry.js +1 -1
- package/dist/esm/ez-split-button.entry.js +4 -4
- package/dist/esm/ez-split-item.entry.js +2 -2
- package/dist/esm/ez-time-input.entry.js +1 -1
- package/dist/esm/ez-tooltip.entry.js +1 -1
- package/dist/esm/ez-tree.entry.js +1 -1
- package/dist/esm/ez-upload.entry.js +2 -2
- package/dist/esm/ezui.js +3 -3
- package/dist/esm/filter-column.entry.js +1 -1
- package/dist/esm/{floating-ui.dom.esm-ad30f2f0.js → floating-ui.dom.esm-2964eae1.js} +165 -119
- package/dist/esm/{index-225aa0c3.js → index-9e6dab5b.js} +91 -30
- package/dist/esm/index-baa5e267.js +8 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{search-column-40a78cac.js → search-column-dba4853a.js} +4 -7
- package/dist/ezui/ezui.esm.js +1 -1
- package/dist/ezui/p-0592535f.entry.js +1 -0
- package/dist/ezui/{p-544605c4.entry.js → p-063bb342.entry.js} +1 -1
- package/dist/ezui/{p-c56ee8c0.entry.js → p-0ac8bd66.entry.js} +1 -1
- package/dist/ezui/p-0d80e3ec.entry.js +1 -0
- package/dist/ezui/{p-729bd1be.entry.js → p-108503ed.entry.js} +1 -1
- package/dist/ezui/{p-e3cd5080.entry.js → p-1166b2d5.entry.js} +1 -1
- package/dist/ezui/p-15873627.js +1 -0
- package/dist/ezui/{p-0625743b.entry.js → p-160a268d.entry.js} +1 -1
- package/dist/ezui/p-178cb9df.entry.js +1 -0
- package/dist/ezui/p-2856c545.entry.js +1 -0
- package/dist/ezui/{p-df802548.entry.js → p-2ae127bc.entry.js} +1 -1
- package/dist/ezui/{p-556bf329.entry.js → p-2ebd7383.entry.js} +1 -1
- package/dist/ezui/{p-b36475f9.entry.js → p-30c5f48a.entry.js} +1 -1
- package/dist/ezui/p-312bd3c6.entry.js +1 -0
- package/dist/ezui/{p-62c149cb.entry.js → p-3fae7072.entry.js} +1 -1
- package/dist/ezui/p-42e1e733.js +1 -0
- package/dist/ezui/{p-4e869617.entry.js → p-45245c32.entry.js} +1 -1
- package/dist/ezui/{p-a872c642.entry.js → p-46b1b2ac.entry.js} +1 -1
- package/dist/ezui/{p-5abb220b.entry.js → p-54af1af0.entry.js} +1 -1
- package/dist/ezui/{p-a4351519.entry.js → p-66455069.entry.js} +1 -1
- package/dist/ezui/p-72e77b45.entry.js +1 -0
- package/dist/ezui/{p-7edc3ef7.entry.js → p-73461028.entry.js} +1 -1
- package/dist/ezui/{p-f5552540.entry.js → p-7424d520.entry.js} +1 -1
- package/dist/ezui/{p-b705b342.entry.js → p-7a07c50f.entry.js} +1 -1
- package/dist/ezui/p-7b078125.entry.js +1 -0
- package/dist/ezui/{p-d5dc6b01.entry.js → p-7dad8018.entry.js} +1 -1
- package/dist/ezui/{p-6a794336.js → p-83bddbbb.js} +1 -1
- package/dist/ezui/{p-b0a716ef.entry.js → p-881abc22.entry.js} +1 -1
- package/dist/ezui/{p-7134726a.entry.js → p-99556756.entry.js} +1 -1
- package/dist/ezui/{p-7953ecb9.entry.js → p-9bd3e28b.entry.js} +1 -1
- package/dist/ezui/{p-97312709.entry.js → p-9bd78d39.entry.js} +1 -1
- package/dist/ezui/{p-351fb12f.entry.js → p-a4735a12.entry.js} +1 -1
- package/dist/ezui/{p-9825c1d2.js → p-ad5e263d.js} +1 -1
- package/dist/ezui/{p-26cd4c2e.entry.js → p-b06294c9.entry.js} +1 -1
- package/dist/ezui/{p-e493ad57.entry.js → p-b493757c.entry.js} +1 -1
- package/dist/ezui/{p-2da9faf1.entry.js → p-b8cd501a.entry.js} +1 -1
- package/dist/ezui/p-b986da95.entry.js +7 -0
- package/dist/ezui/{p-4c2a4435.entry.js → p-c25a4d30.entry.js} +1 -1
- package/dist/ezui/{p-4f7ad3ee.entry.js → p-c37fb359.entry.js} +1 -1
- package/dist/ezui/{p-e2972977.entry.js → p-cb00863d.entry.js} +1 -1
- package/dist/ezui/{p-4d30b703.entry.js → p-cf66ace0.entry.js} +1 -1
- package/dist/ezui/p-d2601b25.js +1 -0
- package/dist/ezui/{p-e3a42f47.entry.js → p-d5684cdc.entry.js} +1 -1
- package/dist/ezui/{p-6ac056d7.entry.js → p-d70805e4.entry.js} +1 -1
- package/dist/ezui/{p-a3bad8f8.entry.js → p-d75f583b.entry.js} +1 -1
- package/dist/ezui/p-d8b69419.entry.js +1 -0
- package/dist/ezui/{p-56565777.entry.js → p-dfced8c7.entry.js} +1 -1
- package/dist/ezui/{p-5a74d132.entry.js → p-dfda027e.entry.js} +46 -46
- package/dist/ezui/{p-0248846f.entry.js → p-e3d6b544.entry.js} +1 -1
- package/dist/ezui/{p-4c76b365.entry.js → p-e692c2a7.entry.js} +1 -1
- package/dist/ezui/{p-8e5f1c74.entry.js → p-e8cd003b.entry.js} +1 -1
- package/dist/ezui/p-ed790867.entry.js +1 -0
- package/dist/ezui/p-f2e0acf5.entry.js +1 -0
- package/dist/ezui/{p-34d459e4.entry.js → p-f498f6b5.entry.js} +1 -1
- package/dist/ezui/{p-4af745e1.entry.js → p-fb27b98d.entry.js} +1 -1
- package/dist/ezui/{p-987185c4.entry.js → p-fc11f5b9.entry.js} +1 -1
- package/dist/ezui/{p-ef8bd3e8.entry.js → p-fc72aeb8.entry.js} +1 -1
- package/dist/types/components/ez-classic-search-plus/ez-classic-search-plus.d.ts +3 -0
- package/dist/types/components/ez-empty-card/ez-empty-card.d.ts +2 -2
- package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +4 -0
- package/dist/types/components/ez-grid/controller/ag-grid/gridColumnDefaultWidths.d.ts +4 -0
- package/dist/types/components/ez-grid/ez-grid.d.ts +10 -27
- package/dist/types/components/ez-grid/utils/index.d.ts +1 -0
- package/dist/types/components/ez-grid-pagination/ez-grid-pagination.d.ts +75 -0
- package/dist/types/components/ez-image-input/ez-image-input.d.ts +1 -0
- package/dist/types/components/ez-record-navigation/ez-record-navigation.d.ts +43 -0
- package/dist/types/components/ez-scroller/EzScrollNavigationMode.d.ts +4 -0
- package/dist/types/components/ez-scroller/ez-scroller.d.ts +16 -2
- package/dist/types/components/ez-search-plus/ez-search-plus.d.ts +1 -0
- package/dist/types/components.d.ts +154 -6
- package/dist/types/utils/i18n/locales/en-us.d.ts +26 -3
- package/dist/types/utils/i18n/locales/es-es.d.ts +26 -3
- package/dist/types/utils/i18n/locales/pt-br.d.ts +26 -3
- package/dist/types/utils/i18n/translations.d.ts +78 -9
- package/package.json +5 -5
- package/react/components.d.ts +2 -0
- package/react/components.js +2 -0
- package/react/components.js.map +1 -1
- package/dist/ezui/p-07fb22c3.entry.js +0 -1
- package/dist/ezui/p-288631d1.entry.js +0 -1
- package/dist/ezui/p-2a806303.js +0 -1
- package/dist/ezui/p-2de94faf.entry.js +0 -1
- package/dist/ezui/p-619225ce.entry.js +0 -1
- package/dist/ezui/p-a813a748.entry.js +0 -1
- package/dist/ezui/p-b8078832.entry.js +0 -1
- package/dist/ezui/p-c0ae79fa.entry.js +0 -1
- package/dist/ezui/p-c178730b.js +0 -1
- package/dist/ezui/p-ce0a0036.entry.js +0 -7
- package/dist/ezui/p-d2645bdf.entry.js +0 -1
- package/dist/ezui/p-ff4312d5.js +0 -1
|
@@ -40,8 +40,9 @@ function getOppositeAxis(axis) {
|
|
|
40
40
|
function getAxisLength(axis) {
|
|
41
41
|
return axis === 'y' ? 'height' : 'width';
|
|
42
42
|
}
|
|
43
|
+
const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
|
|
43
44
|
function getSideAxis(placement) {
|
|
44
|
-
return
|
|
45
|
+
return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
|
|
45
46
|
}
|
|
46
47
|
function getAlignmentAxis(placement) {
|
|
47
48
|
return getOppositeAxis(getSideAxis(placement));
|
|
@@ -66,19 +67,19 @@ function getExpandedPlacements(placement) {
|
|
|
66
67
|
function getOppositeAlignmentPlacement(placement) {
|
|
67
68
|
return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
|
|
68
69
|
}
|
|
70
|
+
const lrPlacement = ['left', 'right'];
|
|
71
|
+
const rlPlacement = ['right', 'left'];
|
|
72
|
+
const tbPlacement = ['top', 'bottom'];
|
|
73
|
+
const btPlacement = ['bottom', 'top'];
|
|
69
74
|
function getSideList(side, isStart, rtl) {
|
|
70
|
-
const lr = ['left', 'right'];
|
|
71
|
-
const rl = ['right', 'left'];
|
|
72
|
-
const tb = ['top', 'bottom'];
|
|
73
|
-
const bt = ['bottom', 'top'];
|
|
74
75
|
switch (side) {
|
|
75
76
|
case 'top':
|
|
76
77
|
case 'bottom':
|
|
77
|
-
if (rtl) return isStart ?
|
|
78
|
-
return isStart ?
|
|
78
|
+
if (rtl) return isStart ? rlPlacement : lrPlacement;
|
|
79
|
+
return isStart ? lrPlacement : rlPlacement;
|
|
79
80
|
case 'left':
|
|
80
81
|
case 'right':
|
|
81
|
-
return isStart ?
|
|
82
|
+
return isStart ? tbPlacement : btPlacement;
|
|
82
83
|
default:
|
|
83
84
|
return [];
|
|
84
85
|
}
|
|
@@ -189,6 +190,71 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
|
|
|
189
190
|
return coords;
|
|
190
191
|
}
|
|
191
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Resolves with an object of overflow side offsets that determine how much the
|
|
195
|
+
* element is overflowing a given clipping boundary on each side.
|
|
196
|
+
* - positive = overflowing the boundary by that number of pixels
|
|
197
|
+
* - negative = how many pixels left before it will overflow
|
|
198
|
+
* - 0 = lies flush with the boundary
|
|
199
|
+
* @see https://floating-ui.com/docs/detectOverflow
|
|
200
|
+
*/
|
|
201
|
+
async function detectOverflow(state, options) {
|
|
202
|
+
var _await$platform$isEle;
|
|
203
|
+
if (options === void 0) {
|
|
204
|
+
options = {};
|
|
205
|
+
}
|
|
206
|
+
const {
|
|
207
|
+
x,
|
|
208
|
+
y,
|
|
209
|
+
platform,
|
|
210
|
+
rects,
|
|
211
|
+
elements,
|
|
212
|
+
strategy
|
|
213
|
+
} = state;
|
|
214
|
+
const {
|
|
215
|
+
boundary = 'clippingAncestors',
|
|
216
|
+
rootBoundary = 'viewport',
|
|
217
|
+
elementContext = 'floating',
|
|
218
|
+
altBoundary = false,
|
|
219
|
+
padding = 0
|
|
220
|
+
} = evaluate(options, state);
|
|
221
|
+
const paddingObject = getPaddingObject(padding);
|
|
222
|
+
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
|
|
223
|
+
const element = elements[altBoundary ? altContext : elementContext];
|
|
224
|
+
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
225
|
+
element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
|
|
226
|
+
boundary,
|
|
227
|
+
rootBoundary,
|
|
228
|
+
strategy
|
|
229
|
+
}));
|
|
230
|
+
const rect = elementContext === 'floating' ? {
|
|
231
|
+
x,
|
|
232
|
+
y,
|
|
233
|
+
width: rects.floating.width,
|
|
234
|
+
height: rects.floating.height
|
|
235
|
+
} : rects.reference;
|
|
236
|
+
const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
|
|
237
|
+
const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
|
|
238
|
+
x: 1,
|
|
239
|
+
y: 1
|
|
240
|
+
} : {
|
|
241
|
+
x: 1,
|
|
242
|
+
y: 1
|
|
243
|
+
};
|
|
244
|
+
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
245
|
+
elements,
|
|
246
|
+
rect,
|
|
247
|
+
offsetParent,
|
|
248
|
+
strategy
|
|
249
|
+
}) : rect);
|
|
250
|
+
return {
|
|
251
|
+
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
252
|
+
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
253
|
+
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
254
|
+
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
|
|
192
258
|
/**
|
|
193
259
|
* Computes the `x` and `y` coordinates that will place the floating element
|
|
194
260
|
* next to a given reference element.
|
|
@@ -218,6 +284,7 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
218
284
|
let middlewareData = {};
|
|
219
285
|
let resetCount = 0;
|
|
220
286
|
for (let i = 0; i < validMiddleware.length; i++) {
|
|
287
|
+
var _platform$detectOverf;
|
|
221
288
|
const {
|
|
222
289
|
name,
|
|
223
290
|
fn
|
|
@@ -235,7 +302,10 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
235
302
|
strategy,
|
|
236
303
|
middlewareData,
|
|
237
304
|
rects,
|
|
238
|
-
platform
|
|
305
|
+
platform: {
|
|
306
|
+
...platform,
|
|
307
|
+
detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
|
|
308
|
+
},
|
|
239
309
|
elements: {
|
|
240
310
|
reference,
|
|
241
311
|
floating
|
|
@@ -280,71 +350,6 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
280
350
|
};
|
|
281
351
|
};
|
|
282
352
|
|
|
283
|
-
/**
|
|
284
|
-
* Resolves with an object of overflow side offsets that determine how much the
|
|
285
|
-
* element is overflowing a given clipping boundary on each side.
|
|
286
|
-
* - positive = overflowing the boundary by that number of pixels
|
|
287
|
-
* - negative = how many pixels left before it will overflow
|
|
288
|
-
* - 0 = lies flush with the boundary
|
|
289
|
-
* @see https://floating-ui.com/docs/detectOverflow
|
|
290
|
-
*/
|
|
291
|
-
async function detectOverflow(state, options) {
|
|
292
|
-
var _await$platform$isEle;
|
|
293
|
-
if (options === void 0) {
|
|
294
|
-
options = {};
|
|
295
|
-
}
|
|
296
|
-
const {
|
|
297
|
-
x,
|
|
298
|
-
y,
|
|
299
|
-
platform,
|
|
300
|
-
rects,
|
|
301
|
-
elements,
|
|
302
|
-
strategy
|
|
303
|
-
} = state;
|
|
304
|
-
const {
|
|
305
|
-
boundary = 'clippingAncestors',
|
|
306
|
-
rootBoundary = 'viewport',
|
|
307
|
-
elementContext = 'floating',
|
|
308
|
-
altBoundary = false,
|
|
309
|
-
padding = 0
|
|
310
|
-
} = evaluate(options, state);
|
|
311
|
-
const paddingObject = getPaddingObject(padding);
|
|
312
|
-
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
|
|
313
|
-
const element = elements[altBoundary ? altContext : elementContext];
|
|
314
|
-
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
315
|
-
element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
|
|
316
|
-
boundary,
|
|
317
|
-
rootBoundary,
|
|
318
|
-
strategy
|
|
319
|
-
}));
|
|
320
|
-
const rect = elementContext === 'floating' ? {
|
|
321
|
-
x,
|
|
322
|
-
y,
|
|
323
|
-
width: rects.floating.width,
|
|
324
|
-
height: rects.floating.height
|
|
325
|
-
} : rects.reference;
|
|
326
|
-
const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
|
|
327
|
-
const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
|
|
328
|
-
x: 1,
|
|
329
|
-
y: 1
|
|
330
|
-
} : {
|
|
331
|
-
x: 1,
|
|
332
|
-
y: 1
|
|
333
|
-
};
|
|
334
|
-
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
335
|
-
elements,
|
|
336
|
-
rect,
|
|
337
|
-
offsetParent,
|
|
338
|
-
strategy
|
|
339
|
-
}) : rect);
|
|
340
|
-
return {
|
|
341
|
-
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
342
|
-
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
343
|
-
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
344
|
-
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
|
|
348
353
|
/**
|
|
349
354
|
* Provides data to position an inner element of the floating element so that it
|
|
350
355
|
* appears centered to the reference element.
|
|
@@ -477,7 +482,7 @@ const flip$1 = function (options) {
|
|
|
477
482
|
fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
|
|
478
483
|
}
|
|
479
484
|
const placements = [initialPlacement, ...fallbackPlacements];
|
|
480
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
485
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
481
486
|
const overflows = [];
|
|
482
487
|
let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
|
|
483
488
|
if (checkMainAxis) {
|
|
@@ -498,16 +503,22 @@ const flip$1 = function (options) {
|
|
|
498
503
|
const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
|
|
499
504
|
const nextPlacement = placements[nextIndex];
|
|
500
505
|
if (nextPlacement) {
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
506
|
+
const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
|
|
507
|
+
if (!ignoreCrossAxisOverflow ||
|
|
508
|
+
// We leave the current main axis only if every placement on that axis
|
|
509
|
+
// overflows the main axis.
|
|
510
|
+
overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
|
|
511
|
+
// Try next placement and re-run the lifecycle.
|
|
512
|
+
return {
|
|
513
|
+
data: {
|
|
514
|
+
index: nextIndex,
|
|
515
|
+
overflows: overflowsData
|
|
516
|
+
},
|
|
517
|
+
reset: {
|
|
518
|
+
placement: nextPlacement
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
}
|
|
511
522
|
}
|
|
512
523
|
|
|
513
524
|
// First, find the candidates that fit on the mainAxis side of overflow,
|
|
@@ -553,6 +564,8 @@ const flip$1 = function (options) {
|
|
|
553
564
|
};
|
|
554
565
|
};
|
|
555
566
|
|
|
567
|
+
const originSides = /*#__PURE__*/new Set(['left', 'top']);
|
|
568
|
+
|
|
556
569
|
// For type backwards-compatibility, the `OffsetOptions` type was also
|
|
557
570
|
// Derivable.
|
|
558
571
|
|
|
@@ -566,7 +579,7 @@ async function convertValueToCoords(state, options) {
|
|
|
566
579
|
const side = getSide(placement);
|
|
567
580
|
const alignment = getAlignment(placement);
|
|
568
581
|
const isVertical = getSideAxis(placement) === 'y';
|
|
569
|
-
const mainAxisMulti =
|
|
582
|
+
const mainAxisMulti = originSides.has(side) ? -1 : 1;
|
|
570
583
|
const crossAxisMulti = rtl && isVertical ? -1 : 1;
|
|
571
584
|
const rawValue = evaluate(options, state);
|
|
572
585
|
|
|
@@ -653,7 +666,8 @@ const shift$1 = function (options) {
|
|
|
653
666
|
const {
|
|
654
667
|
x,
|
|
655
668
|
y,
|
|
656
|
-
placement
|
|
669
|
+
placement,
|
|
670
|
+
platform
|
|
657
671
|
} = state;
|
|
658
672
|
const {
|
|
659
673
|
mainAxis: checkMainAxis = true,
|
|
@@ -676,7 +690,7 @@ const shift$1 = function (options) {
|
|
|
676
690
|
x,
|
|
677
691
|
y
|
|
678
692
|
};
|
|
679
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
693
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
680
694
|
const crossAxis = getSideAxis(getSide(placement));
|
|
681
695
|
const mainAxis = getOppositeAxis(crossAxis);
|
|
682
696
|
let mainAxisCoord = coords[mainAxis];
|
|
@@ -759,34 +773,40 @@ function isShadowRoot(value) {
|
|
|
759
773
|
}
|
|
760
774
|
return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
|
|
761
775
|
}
|
|
776
|
+
const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
|
|
762
777
|
function isOverflowElement(element) {
|
|
763
778
|
const {
|
|
764
779
|
overflow,
|
|
765
780
|
overflowX,
|
|
766
781
|
overflowY,
|
|
767
782
|
display
|
|
768
|
-
} = getComputedStyle(element);
|
|
769
|
-
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !
|
|
783
|
+
} = getComputedStyle$1(element);
|
|
784
|
+
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
|
|
770
785
|
}
|
|
786
|
+
const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
|
|
771
787
|
function isTableElement(element) {
|
|
772
|
-
return
|
|
788
|
+
return tableElements.has(getNodeName(element));
|
|
773
789
|
}
|
|
790
|
+
const topLayerSelectors = [':popover-open', ':modal'];
|
|
774
791
|
function isTopLayer(element) {
|
|
775
|
-
return
|
|
792
|
+
return topLayerSelectors.some(selector => {
|
|
776
793
|
try {
|
|
777
794
|
return element.matches(selector);
|
|
778
|
-
} catch (
|
|
795
|
+
} catch (_e) {
|
|
779
796
|
return false;
|
|
780
797
|
}
|
|
781
798
|
});
|
|
782
799
|
}
|
|
800
|
+
const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
|
|
801
|
+
const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
|
|
802
|
+
const containValues = ['paint', 'layout', 'strict', 'content'];
|
|
783
803
|
function isContainingBlock(elementOrCss) {
|
|
784
804
|
const webkit = isWebKit();
|
|
785
|
-
const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;
|
|
805
|
+
const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
|
|
786
806
|
|
|
787
807
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
|
|
788
808
|
// https://drafts.csswg.org/css-transforms-2/#individual-transforms
|
|
789
|
-
return
|
|
809
|
+
return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
|
|
790
810
|
}
|
|
791
811
|
function getContainingBlock(element) {
|
|
792
812
|
let currentNode = getParentNode(element);
|
|
@@ -804,10 +824,11 @@ function isWebKit() {
|
|
|
804
824
|
if (typeof CSS === 'undefined' || !CSS.supports) return false;
|
|
805
825
|
return CSS.supports('-webkit-backdrop-filter', 'none');
|
|
806
826
|
}
|
|
827
|
+
const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
|
|
807
828
|
function isLastTraversableNode(node) {
|
|
808
|
-
return
|
|
829
|
+
return lastTraversableNodeNames.has(getNodeName(node));
|
|
809
830
|
}
|
|
810
|
-
function getComputedStyle(element) {
|
|
831
|
+
function getComputedStyle$1(element) {
|
|
811
832
|
return getWindow(element).getComputedStyle(element);
|
|
812
833
|
}
|
|
813
834
|
function getNodeScroll(element) {
|
|
@@ -869,7 +890,7 @@ function getFrameElement(win) {
|
|
|
869
890
|
}
|
|
870
891
|
|
|
871
892
|
function getCssDimensions(element) {
|
|
872
|
-
const css = getComputedStyle(element);
|
|
893
|
+
const css = getComputedStyle$1(element);
|
|
873
894
|
// In testing environments, the `width` and `height` properties are empty
|
|
874
895
|
// strings for SVG elements, returning NaN. Fallback to `0` in this case.
|
|
875
896
|
let width = parseFloat(css.width) || 0;
|
|
@@ -974,7 +995,7 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
|
|
|
974
995
|
while (currentIFrame && offsetParent && offsetWin !== currentWin) {
|
|
975
996
|
const iframeScale = getScale(currentIFrame);
|
|
976
997
|
const iframeRect = currentIFrame.getBoundingClientRect();
|
|
977
|
-
const css = getComputedStyle(currentIFrame);
|
|
998
|
+
const css = getComputedStyle$1(currentIFrame);
|
|
978
999
|
const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
|
|
979
1000
|
const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
|
|
980
1001
|
x *= iframeScale.x;
|
|
@@ -1005,14 +1026,9 @@ function getWindowScrollBarX(element, rect) {
|
|
|
1005
1026
|
return rect.left + leftScroll;
|
|
1006
1027
|
}
|
|
1007
1028
|
|
|
1008
|
-
function getHTMLOffset(documentElement, scroll
|
|
1009
|
-
if (ignoreScrollbarX === void 0) {
|
|
1010
|
-
ignoreScrollbarX = false;
|
|
1011
|
-
}
|
|
1029
|
+
function getHTMLOffset(documentElement, scroll) {
|
|
1012
1030
|
const htmlRect = documentElement.getBoundingClientRect();
|
|
1013
|
-
const x = htmlRect.left + scroll.scrollLeft - (
|
|
1014
|
-
// RTL <body> scrollbar.
|
|
1015
|
-
getWindowScrollBarX(documentElement, htmlRect));
|
|
1031
|
+
const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
|
|
1016
1032
|
const y = htmlRect.top + scroll.scrollTop;
|
|
1017
1033
|
return {
|
|
1018
1034
|
x,
|
|
@@ -1051,7 +1067,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
|
|
|
1051
1067
|
offsets.y = offsetRect.y + offsetParent.clientTop;
|
|
1052
1068
|
}
|
|
1053
1069
|
}
|
|
1054
|
-
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll
|
|
1070
|
+
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
|
|
1055
1071
|
return {
|
|
1056
1072
|
width: rect.width * scale.x,
|
|
1057
1073
|
height: rect.height * scale.y,
|
|
@@ -1074,7 +1090,7 @@ function getDocumentRect(element) {
|
|
|
1074
1090
|
const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
|
|
1075
1091
|
let x = -scroll.scrollLeft + getWindowScrollBarX(element);
|
|
1076
1092
|
const y = -scroll.scrollTop;
|
|
1077
|
-
if (getComputedStyle(body).direction === 'rtl') {
|
|
1093
|
+
if (getComputedStyle$1(body).direction === 'rtl') {
|
|
1078
1094
|
x += max(html.clientWidth, body.clientWidth) - width;
|
|
1079
1095
|
}
|
|
1080
1096
|
return {
|
|
@@ -1085,6 +1101,10 @@ function getDocumentRect(element) {
|
|
|
1085
1101
|
};
|
|
1086
1102
|
}
|
|
1087
1103
|
|
|
1104
|
+
// Safety check: ensure the scrollbar space is reasonable in case this
|
|
1105
|
+
// calculation is affected by unusual styles.
|
|
1106
|
+
// Most scrollbars leave 15-18px of space.
|
|
1107
|
+
const SCROLLBAR_MAX = 25;
|
|
1088
1108
|
function getViewportRect(element, strategy) {
|
|
1089
1109
|
const win = getWindow(element);
|
|
1090
1110
|
const html = getDocumentElement(element);
|
|
@@ -1102,6 +1122,24 @@ function getViewportRect(element, strategy) {
|
|
|
1102
1122
|
y = visualViewport.offsetTop;
|
|
1103
1123
|
}
|
|
1104
1124
|
}
|
|
1125
|
+
const windowScrollbarX = getWindowScrollBarX(html);
|
|
1126
|
+
// <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
|
|
1127
|
+
// visual width of the <html> but this is not considered in the size
|
|
1128
|
+
// of `html.clientWidth`.
|
|
1129
|
+
if (windowScrollbarX <= 0) {
|
|
1130
|
+
const doc = html.ownerDocument;
|
|
1131
|
+
const body = doc.body;
|
|
1132
|
+
const bodyStyles = getComputedStyle(body);
|
|
1133
|
+
const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
|
|
1134
|
+
const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
|
|
1135
|
+
if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
|
|
1136
|
+
width -= clippingStableScrollbarWidth;
|
|
1137
|
+
}
|
|
1138
|
+
} else if (windowScrollbarX <= SCROLLBAR_MAX) {
|
|
1139
|
+
// If the <body> scrollbar is on the left, the width needs to be extended
|
|
1140
|
+
// by the scrollbar amount so there isn't extra space on the right.
|
|
1141
|
+
width += windowScrollbarX;
|
|
1142
|
+
}
|
|
1105
1143
|
return {
|
|
1106
1144
|
width,
|
|
1107
1145
|
height,
|
|
@@ -1110,6 +1148,7 @@ function getViewportRect(element, strategy) {
|
|
|
1110
1148
|
};
|
|
1111
1149
|
}
|
|
1112
1150
|
|
|
1151
|
+
const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
|
|
1113
1152
|
// Returns the inner client rect, subtracting scrollbars if present.
|
|
1114
1153
|
function getInnerBoundingClientRect(element, strategy) {
|
|
1115
1154
|
const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
|
|
@@ -1151,7 +1190,7 @@ function hasFixedPositionAncestor(element, stopNode) {
|
|
|
1151
1190
|
if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
|
|
1152
1191
|
return false;
|
|
1153
1192
|
}
|
|
1154
|
-
return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
|
|
1193
|
+
return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
|
|
1155
1194
|
}
|
|
1156
1195
|
|
|
1157
1196
|
// A "clipping ancestor" is an `overflow` element with the characteristic of
|
|
@@ -1164,17 +1203,17 @@ function getClippingElementAncestors(element, cache) {
|
|
|
1164
1203
|
}
|
|
1165
1204
|
let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
|
|
1166
1205
|
let currentContainingBlockComputedStyle = null;
|
|
1167
|
-
const elementIsFixed = getComputedStyle(element).position === 'fixed';
|
|
1206
|
+
const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
|
|
1168
1207
|
let currentNode = elementIsFixed ? getParentNode(element) : element;
|
|
1169
1208
|
|
|
1170
1209
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
|
|
1171
1210
|
while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
|
|
1172
|
-
const computedStyle = getComputedStyle(currentNode);
|
|
1211
|
+
const computedStyle = getComputedStyle$1(currentNode);
|
|
1173
1212
|
const currentNodeIsContaining = isContainingBlock(currentNode);
|
|
1174
1213
|
if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
|
|
1175
1214
|
currentContainingBlockComputedStyle = null;
|
|
1176
1215
|
}
|
|
1177
|
-
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle &&
|
|
1216
|
+
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
|
|
1178
1217
|
if (shouldDropCurrentNode) {
|
|
1179
1218
|
// Drop non-containing blocks.
|
|
1180
1219
|
result = result.filter(ancestor => ancestor !== currentNode);
|
|
@@ -1237,6 +1276,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
|
|
|
1237
1276
|
scrollTop: 0
|
|
1238
1277
|
};
|
|
1239
1278
|
const offsets = createCoords(0);
|
|
1279
|
+
|
|
1280
|
+
// If the <body> scrollbar appears on the left (e.g. RTL systems). Use
|
|
1281
|
+
// Firefox with layout.scrollbar.side = 3 in about:config to test this.
|
|
1282
|
+
function setLeftRTLScrollbarOffset() {
|
|
1283
|
+
offsets.x = getWindowScrollBarX(documentElement);
|
|
1284
|
+
}
|
|
1240
1285
|
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
|
1241
1286
|
if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
|
|
1242
1287
|
scroll = getNodeScroll(offsetParent);
|
|
@@ -1246,11 +1291,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
|
|
|
1246
1291
|
offsets.x = offsetRect.x + offsetParent.clientLeft;
|
|
1247
1292
|
offsets.y = offsetRect.y + offsetParent.clientTop;
|
|
1248
1293
|
} else if (documentElement) {
|
|
1249
|
-
|
|
1250
|
-
// Firefox with layout.scrollbar.side = 3 in about:config to test this.
|
|
1251
|
-
offsets.x = getWindowScrollBarX(documentElement);
|
|
1294
|
+
setLeftRTLScrollbarOffset();
|
|
1252
1295
|
}
|
|
1253
1296
|
}
|
|
1297
|
+
if (isFixed && !isOffsetParentAnElement && documentElement) {
|
|
1298
|
+
setLeftRTLScrollbarOffset();
|
|
1299
|
+
}
|
|
1254
1300
|
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
|
|
1255
1301
|
const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
|
|
1256
1302
|
const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
|
|
@@ -1263,11 +1309,11 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
|
|
|
1263
1309
|
}
|
|
1264
1310
|
|
|
1265
1311
|
function isStaticPositioned(element) {
|
|
1266
|
-
return getComputedStyle(element).position === 'static';
|
|
1312
|
+
return getComputedStyle$1(element).position === 'static';
|
|
1267
1313
|
}
|
|
1268
1314
|
|
|
1269
1315
|
function getTrueOffsetParent(element, polyfill) {
|
|
1270
|
-
if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
|
|
1316
|
+
if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {
|
|
1271
1317
|
return null;
|
|
1272
1318
|
}
|
|
1273
1319
|
if (polyfill) {
|
|
@@ -1328,7 +1374,7 @@ const getElementRects = async function (data) {
|
|
|
1328
1374
|
};
|
|
1329
1375
|
|
|
1330
1376
|
function isRTL(element) {
|
|
1331
|
-
return getComputedStyle(element).direction === 'rtl';
|
|
1377
|
+
return getComputedStyle$1(element).direction === 'rtl';
|
|
1332
1378
|
}
|
|
1333
1379
|
|
|
1334
1380
|
const platform = {
|
|
@@ -1427,7 +1473,7 @@ function observeMove(element, onMove) {
|
|
|
1427
1473
|
// Handle <iframe>s
|
|
1428
1474
|
root: root.ownerDocument
|
|
1429
1475
|
});
|
|
1430
|
-
} catch (
|
|
1476
|
+
} catch (_e) {
|
|
1431
1477
|
io = new IntersectionObserver(handleObserve, options);
|
|
1432
1478
|
}
|
|
1433
1479
|
io.observe(element);
|