@mui/x-data-grid 6.5.0 → 6.7.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/CHANGELOG.md +150 -2
- package/DataGrid/DataGrid.js +10 -3
- package/README.md +2 -2
- package/components/GridColumnHeaders.js +4 -9
- package/components/GridHeader.d.ts +2 -2
- package/components/base/GridBody.d.ts +1 -1
- package/components/base/GridFooterPlaceholder.d.ts +2 -2
- package/components/base/GridOverlays.d.ts +2 -2
- package/components/cell/GridActionsCell.d.ts +3 -3
- package/components/cell/GridActionsCell.js +3 -3
- package/components/cell/GridBooleanCell.d.ts +1 -1
- package/components/cell/GridEditBooleanCell.d.ts +2 -2
- package/components/cell/GridEditDateCell.d.ts +2 -2
- package/components/cell/GridEditInputCell.d.ts +1 -1
- package/components/cell/GridEditSingleSelectCell.d.ts +3 -3
- package/components/cell/GridEditSingleSelectCell.js +5 -5
- package/components/cell/GridSkeletonCell.d.ts +1 -1
- package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
- package/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -2
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +1 -1
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -2
- package/components/columnHeaders/GridColumnHeaderSeparator.d.ts +1 -1
- package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -1
- package/components/columnHeaders/GridColumnHeaderTitle.d.ts +1 -1
- package/components/containers/GridRoot.js +1 -3
- package/components/containers/GridRootStyles.js +8 -1
- package/components/index.d.ts +0 -1
- package/components/index.js +1 -2
- package/components/menu/GridMenu.d.ts +1 -1
- package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.d.ts +2 -2
- package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.d.ts +2 -2
- package/components/panel/GridColumnsPanel.d.ts +16 -2
- package/components/panel/GridColumnsPanel.js +14 -0
- package/components/panel/GridPanelContent.d.ts +1 -1
- package/components/panel/GridPanelFooter.d.ts +1 -1
- package/components/panel/GridPanelHeader.d.ts +1 -1
- package/components/panel/GridPreferencesPanel.js +3 -1
- package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -2
- package/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
- package/components/panel/filterPanel/GridFilterInputDate.d.ts +1 -2
- package/components/panel/filterPanel/GridFilterInputDate.js +1 -6
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
- package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
- package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +1 -2
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +6 -6
- package/components/panel/filterPanel/GridFilterInputValue.d.ts +1 -2
- package/components/panel/filterPanel/GridFilterInputValue.js +1 -6
- package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -0
- package/components/panel/filterPanel/GridFilterPanel.js +8 -0
- package/components/toolbar/GridToolbarColumnsButton.js +11 -6
- package/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/components/toolbar/GridToolbarExport.d.ts +2 -2
- package/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/components/toolbar/GridToolbarFilterButton.js +11 -4
- package/components/toolbar/GridToolbarQuickFilter.d.ts +2 -2
- package/constants/gridClasses.d.ts +4 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +4 -4
- package/context/GridContextProvider.d.ts +1 -1
- package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +10 -2
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
- package/hooks/features/filter/gridFilterSelector.js +2 -2
- package/hooks/features/filter/gridFilterState.d.ts +6 -6
- package/hooks/features/filter/gridFilterState.js +6 -0
- package/hooks/features/filter/useGridFilter.js +31 -10
- package/hooks/features/focus/useGridFocus.js +1 -0
- package/hooks/features/preferencesPanel/gridPreferencePanelState.d.ts +2 -0
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/hooks/features/rows/useGridRowsMeta.js +12 -13
- package/hooks/features/sorting/useGridSorting.js +2 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/index.js +1 -1
- package/internals/utils/useProps.js +21 -1
- package/legacy/DataGrid/DataGrid.js +10 -3
- package/legacy/components/GridColumnHeaders.js +4 -9
- package/legacy/components/cell/GridActionsCell.js +3 -3
- package/legacy/components/cell/GridEditSingleSelectCell.js +5 -5
- package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
- package/legacy/components/containers/GridRoot.js +1 -3
- package/legacy/components/containers/GridRootStyles.js +8 -4
- package/legacy/components/index.js +1 -2
- package/legacy/components/panel/GridColumnsPanel.js +14 -0
- package/legacy/components/panel/GridPreferencesPanel.js +3 -1
- package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +7 -7
- package/legacy/components/panel/filterPanel/GridFilterInputDate.js +1 -5
- package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +7 -6
- package/legacy/components/panel/filterPanel/GridFilterInputValue.js +1 -5
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +8 -0
- package/legacy/components/toolbar/GridToolbarColumnsButton.js +11 -5
- package/legacy/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/legacy/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/legacy/components/toolbar/GridToolbarFilterButton.js +11 -4
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/constants/localeTextConstants.js +4 -4
- package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/legacy/hooks/features/filter/gridFilterSelector.js +4 -4
- package/legacy/hooks/features/filter/gridFilterState.js +6 -0
- package/legacy/hooks/features/filter/useGridFilter.js +31 -10
- package/legacy/hooks/features/focus/useGridFocus.js +1 -0
- package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/legacy/hooks/features/rows/useGridRowsMeta.js +13 -21
- package/legacy/hooks/features/sorting/useGridSorting.js +2 -1
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/utils/useProps.js +23 -1
- package/legacy/locales/arSD.js +12 -12
- package/legacy/locales/beBY.js +12 -12
- package/legacy/locales/bgBG.js +12 -12
- package/legacy/locales/csCZ.js +25 -27
- package/legacy/locales/daDK.js +12 -12
- package/legacy/locales/deDE.js +25 -27
- package/legacy/locales/elGR.js +12 -12
- package/legacy/locales/esES.js +12 -12
- package/legacy/locales/faIR.js +12 -12
- package/legacy/locales/fiFI.js +12 -12
- package/legacy/locales/frFR.js +25 -27
- package/legacy/locales/heIL.js +12 -12
- package/legacy/locales/huHU.js +12 -12
- package/legacy/locales/itIT.js +12 -12
- package/legacy/locales/jaJP.js +12 -12
- package/legacy/locales/koKR.js +12 -12
- package/legacy/locales/nbNO.js +12 -12
- package/legacy/locales/nlNL.js +25 -27
- package/legacy/locales/plPL.js +12 -12
- package/legacy/locales/ptBR.js +12 -12
- package/legacy/locales/roRO.js +12 -12
- package/legacy/locales/ruRU.js +12 -12
- package/legacy/locales/skSK.js +12 -12
- package/legacy/locales/svSE.js +12 -12
- package/legacy/locales/trTR.js +18 -19
- package/legacy/locales/ukUA.js +12 -12
- package/legacy/locales/urPK.js +12 -12
- package/legacy/locales/viVN.js +12 -12
- package/legacy/locales/zhCN.js +12 -12
- package/legacy/locales/zhTW.js +12 -12
- package/legacy/models/gridFilterItem.js +1 -1
- package/legacy/utils/EventManager.js +2 -2
- package/locales/arSD.js +12 -12
- package/locales/beBY.js +12 -12
- package/locales/bgBG.js +12 -12
- package/locales/csCZ.js +25 -27
- package/locales/daDK.js +12 -12
- package/locales/deDE.js +25 -27
- package/locales/elGR.js +12 -12
- package/locales/esES.js +12 -12
- package/locales/faIR.js +12 -12
- package/locales/fiFI.js +12 -12
- package/locales/frFR.js +25 -27
- package/locales/heIL.js +12 -12
- package/locales/huHU.js +12 -12
- package/locales/itIT.js +12 -12
- package/locales/jaJP.js +12 -12
- package/locales/koKR.js +12 -12
- package/locales/nbNO.js +12 -12
- package/locales/nlNL.js +25 -27
- package/locales/plPL.js +12 -12
- package/locales/ptBR.js +12 -12
- package/locales/roRO.js +12 -12
- package/locales/ruRU.js +12 -12
- package/locales/skSK.js +12 -12
- package/locales/svSE.js +12 -12
- package/locales/trTR.js +18 -19
- package/locales/ukUA.js +12 -12
- package/locales/urPK.js +12 -12
- package/locales/viVN.js +12 -12
- package/locales/zhCN.js +12 -12
- package/locales/zhTW.js +12 -12
- package/material/components/MUISelectOption.d.ts +2 -2
- package/models/api/gridFilterApi.d.ts +3 -1
- package/models/api/gridPreferencesPanelApi.d.ts +3 -1
- package/models/events/gridEventLookup.d.ts +8 -0
- package/models/gridFilterItem.d.ts +1 -1
- package/models/gridFilterItem.js +1 -1
- package/models/gridFilterOperator.d.ts +1 -1
- package/models/gridStateCommunity.d.ts +2 -0
- package/models/props/DataGridProps.d.ts +5 -0
- package/modern/DataGrid/DataGrid.js +10 -3
- package/modern/components/GridColumnHeaders.js +4 -9
- package/modern/components/cell/GridActionsCell.js +3 -3
- package/modern/components/cell/GridEditSingleSelectCell.js +5 -5
- package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
- package/modern/components/containers/GridRoot.js +1 -3
- package/modern/components/containers/GridRootStyles.js +8 -1
- package/modern/components/index.js +1 -2
- package/modern/components/panel/GridColumnsPanel.js +14 -0
- package/modern/components/panel/GridPreferencesPanel.js +3 -1
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
- package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -6
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +6 -6
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -6
- package/modern/components/panel/filterPanel/GridFilterPanel.js +8 -0
- package/modern/components/toolbar/GridToolbarColumnsButton.js +11 -6
- package/modern/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/modern/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/modern/components/toolbar/GridToolbarFilterButton.js +11 -4
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +4 -4
- package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/modern/hooks/features/filter/gridFilterSelector.js +2 -2
- package/modern/hooks/features/filter/gridFilterState.js +6 -0
- package/modern/hooks/features/filter/useGridFilter.js +31 -10
- package/modern/hooks/features/focus/useGridFocus.js +1 -0
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/modern/hooks/features/rows/useGridRowsMeta.js +12 -13
- package/modern/hooks/features/sorting/useGridSorting.js +2 -1
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/modern/index.js +1 -1
- package/modern/internals/utils/useProps.js +20 -1
- package/modern/locales/arSD.js +12 -12
- package/modern/locales/beBY.js +12 -12
- package/modern/locales/bgBG.js +12 -12
- package/modern/locales/csCZ.js +25 -27
- package/modern/locales/daDK.js +12 -12
- package/modern/locales/deDE.js +25 -27
- package/modern/locales/elGR.js +12 -12
- package/modern/locales/esES.js +12 -12
- package/modern/locales/faIR.js +12 -12
- package/modern/locales/fiFI.js +12 -12
- package/modern/locales/frFR.js +25 -27
- package/modern/locales/heIL.js +12 -12
- package/modern/locales/huHU.js +12 -12
- package/modern/locales/itIT.js +12 -12
- package/modern/locales/jaJP.js +12 -12
- package/modern/locales/koKR.js +12 -12
- package/modern/locales/nbNO.js +12 -12
- package/modern/locales/nlNL.js +25 -27
- package/modern/locales/plPL.js +12 -12
- package/modern/locales/ptBR.js +12 -12
- package/modern/locales/roRO.js +12 -12
- package/modern/locales/ruRU.js +12 -12
- package/modern/locales/skSK.js +12 -12
- package/modern/locales/svSE.js +12 -12
- package/modern/locales/trTR.js +18 -19
- package/modern/locales/ukUA.js +12 -12
- package/modern/locales/urPK.js +12 -12
- package/modern/locales/viVN.js +12 -12
- package/modern/locales/zhCN.js +12 -12
- package/modern/locales/zhTW.js +12 -12
- package/modern/models/gridFilterItem.js +1 -1
- package/modern/utils/EventManager.js +2 -2
- package/node/DataGrid/DataGrid.js +10 -3
- package/node/components/GridColumnHeaders.js +3 -8
- package/node/components/cell/GridActionsCell.js +3 -3
- package/node/components/cell/GridEditSingleSelectCell.js +5 -5
- package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
- package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +12 -3
- package/node/components/containers/GridRoot.js +1 -3
- package/node/components/containers/GridRootStyles.js +8 -1
- package/node/components/index.js +0 -11
- package/node/components/panel/GridColumnsPanel.js +14 -0
- package/node/components/panel/GridPreferencesPanel.js +3 -1
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
- package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -6
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +6 -6
- package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -6
- package/node/components/panel/filterPanel/GridFilterPanel.js +8 -0
- package/node/components/toolbar/GridToolbarColumnsButton.js +11 -6
- package/node/components/toolbar/GridToolbarDensitySelector.js +2 -2
- package/node/components/toolbar/GridToolbarExportContainer.js +7 -7
- package/node/components/toolbar/GridToolbarFilterButton.js +10 -3
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +4 -4
- package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/node/hooks/features/filter/gridFilterSelector.js +2 -2
- package/node/hooks/features/filter/gridFilterState.js +6 -0
- package/node/hooks/features/filter/useGridFilter.js +35 -14
- package/node/hooks/features/focus/useGridFocus.js +1 -0
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
- package/node/hooks/features/rows/useGridRowsMeta.js +12 -13
- package/node/hooks/features/sorting/useGridSorting.js +2 -1
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/utils/useProps.js +20 -1
- package/node/locales/arSD.js +12 -12
- package/node/locales/beBY.js +12 -12
- package/node/locales/bgBG.js +12 -12
- package/node/locales/csCZ.js +25 -27
- package/node/locales/daDK.js +12 -12
- package/node/locales/deDE.js +25 -27
- package/node/locales/elGR.js +12 -12
- package/node/locales/esES.js +12 -12
- package/node/locales/faIR.js +12 -12
- package/node/locales/fiFI.js +12 -12
- package/node/locales/frFR.js +25 -27
- package/node/locales/heIL.js +12 -12
- package/node/locales/huHU.js +12 -12
- package/node/locales/itIT.js +12 -12
- package/node/locales/jaJP.js +12 -12
- package/node/locales/koKR.js +12 -12
- package/node/locales/nbNO.js +12 -12
- package/node/locales/nlNL.js +25 -27
- package/node/locales/plPL.js +12 -12
- package/node/locales/ptBR.js +12 -12
- package/node/locales/roRO.js +12 -12
- package/node/locales/ruRU.js +12 -12
- package/node/locales/skSK.js +12 -12
- package/node/locales/svSE.js +12 -12
- package/node/locales/trTR.js +18 -19
- package/node/locales/ukUA.js +12 -12
- package/node/locales/urPK.js +12 -12
- package/node/locales/viVN.js +12 -12
- package/node/locales/zhCN.js +12 -12
- package/node/locales/zhTW.js +12 -12
- package/node/models/gridFilterItem.js +1 -1
- package/node/utils/EventManager.js +2 -2
- package/package.json +4 -4
- package/themeAugmentation/overrides.d.ts +1 -1
- package/utils/EventManager.js +2 -2
- package/components/GridScrollArea.d.ts +0 -10
- package/components/GridScrollArea.js +0 -117
- package/legacy/components/GridScrollArea.js +0 -119
- package/legacy/lib/createDetectElementResize/index.js +0 -145
- package/lib/createDetectElementResize/index.d.ts +0 -18
- package/lib/createDetectElementResize/index.js +0 -145
- package/lib/createDetectElementResize/types.d.ts +0 -9
- package/modern/components/GridScrollArea.js +0 -117
- package/modern/lib/createDetectElementResize/index.js +0 -145
- package/node/components/GridScrollArea.js +0 -126
- package/node/lib/createDetectElementResize/index.js +0 -151
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detect Element Resize.
|
|
3
|
-
* https://github.com/sdecima/javascript-detect-element-resize
|
|
4
|
-
* Sebastian Decima
|
|
5
|
-
*
|
|
6
|
-
* Forked from version 0.5.3; includes the following modifications:
|
|
7
|
-
* 1) Guard against unsafe 'window' and 'document' references (to support SSR).
|
|
8
|
-
* 2) Defer initialization code via a top-level function wrapper (to support SSR).
|
|
9
|
-
* 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
|
|
10
|
-
* 4) Add nonce for style element.
|
|
11
|
-
*
|
|
12
|
-
* TODO replace with https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver
|
|
13
|
-
* once browser support allows it.
|
|
14
|
-
**/
|
|
15
|
-
export default function createDetectElementResize(nonce, hostWindow) {
|
|
16
|
-
var resetTriggers = function resetTriggers(element) {
|
|
17
|
-
var triggers = element.__resizeTriggers__,
|
|
18
|
-
expand = triggers.firstElementChild,
|
|
19
|
-
contract = triggers.lastElementChild,
|
|
20
|
-
expandChild = expand.firstElementChild;
|
|
21
|
-
contract.scrollLeft = contract.scrollWidth;
|
|
22
|
-
contract.scrollTop = contract.scrollHeight;
|
|
23
|
-
expandChild.style.width = expand.offsetWidth + 1 + 'px';
|
|
24
|
-
expandChild.style.height = expand.offsetHeight + 1 + 'px';
|
|
25
|
-
expand.scrollLeft = expand.scrollWidth;
|
|
26
|
-
expand.scrollTop = expand.scrollHeight;
|
|
27
|
-
};
|
|
28
|
-
var checkTriggers = function checkTriggers(element) {
|
|
29
|
-
return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
|
|
30
|
-
};
|
|
31
|
-
var scrollListener = function scrollListener(e) {
|
|
32
|
-
// Don't measure (which forces) reflow for scrolls that happen inside of children!
|
|
33
|
-
if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
var element = this;
|
|
37
|
-
resetTriggers(this);
|
|
38
|
-
if (this.__resizeRAF__) {
|
|
39
|
-
hostWindow.cancelAnimationFrame(this.__resizeRAF__);
|
|
40
|
-
}
|
|
41
|
-
this.__resizeRAF__ = hostWindow.requestAnimationFrame(function () {
|
|
42
|
-
if (checkTriggers(element)) {
|
|
43
|
-
element.__resizeLast__.width = element.offsetWidth;
|
|
44
|
-
element.__resizeLast__.height = element.offsetHeight;
|
|
45
|
-
element.__resizeListeners__.forEach(function (fn) {
|
|
46
|
-
fn.call(element, e);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/* Detect CSS Animations support to detect element display/re-attach */
|
|
53
|
-
var animation = false,
|
|
54
|
-
keyframeprefix = '',
|
|
55
|
-
animationstartevent = 'animationstart',
|
|
56
|
-
domPrefixes = 'Webkit Moz O ms'.split(' '),
|
|
57
|
-
startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
|
|
58
|
-
pfx = '';
|
|
59
|
-
{
|
|
60
|
-
var elm = document.createElement('fakeelement');
|
|
61
|
-
if (elm.style.animationName !== undefined) {
|
|
62
|
-
animation = true;
|
|
63
|
-
}
|
|
64
|
-
if (animation === false) {
|
|
65
|
-
for (var i = 0; i < domPrefixes.length; i++) {
|
|
66
|
-
if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
|
|
67
|
-
pfx = domPrefixes[i];
|
|
68
|
-
keyframeprefix = '-' + pfx.toLowerCase() + '-';
|
|
69
|
-
animationstartevent = startEvents[i];
|
|
70
|
-
animation = true;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
var animationName = 'resizeanim';
|
|
77
|
-
var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
|
|
78
|
-
var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
|
|
79
|
-
var createStyles = function createStyles(doc, root) {
|
|
80
|
-
if (!root.getElementById('muiDetectElementResize')) {
|
|
81
|
-
//opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
|
|
82
|
-
var css = (animationKeyframes ? animationKeyframes : '') + '.Mui-resizeTriggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.Mui-resizeTriggers, .Mui-resizeTriggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .Mui-resizeTriggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
|
|
83
|
-
container = root.constructor.name === 'ShadowRoot' ? root : doc.head || doc.getElementsByTagName('head')[0],
|
|
84
|
-
style = doc.createElement('style');
|
|
85
|
-
style.id = 'muiDetectElementResize';
|
|
86
|
-
style.type = 'text/css';
|
|
87
|
-
if (nonce != null) {
|
|
88
|
-
style.setAttribute('nonce', nonce);
|
|
89
|
-
}
|
|
90
|
-
if (style.styleSheet) {
|
|
91
|
-
style.styleSheet.cssText = css;
|
|
92
|
-
} else {
|
|
93
|
-
style.appendChild(doc.createTextNode(css));
|
|
94
|
-
}
|
|
95
|
-
container.appendChild(style);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
var addResizeListener = function addResizeListener(element, fn) {
|
|
99
|
-
if (!element.__resizeTriggers__) {
|
|
100
|
-
var doc = element.ownerDocument;
|
|
101
|
-
var elementStyle = hostWindow.getComputedStyle(element);
|
|
102
|
-
if (elementStyle && elementStyle.position == 'static') {
|
|
103
|
-
element.style.position = 'relative';
|
|
104
|
-
}
|
|
105
|
-
createStyles(doc, element.getRootNode());
|
|
106
|
-
element.__resizeLast__ = {};
|
|
107
|
-
element.__resizeListeners__ = [];
|
|
108
|
-
(element.__resizeTriggers__ = doc.createElement('div')).className = 'Mui-resizeTriggers';
|
|
109
|
-
element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
|
|
110
|
-
element.appendChild(element.__resizeTriggers__);
|
|
111
|
-
resetTriggers(element);
|
|
112
|
-
element.addEventListener('scroll', scrollListener, true);
|
|
113
|
-
|
|
114
|
-
/* Listen for a css animation to detect element display/re-attach */
|
|
115
|
-
if (animationstartevent) {
|
|
116
|
-
element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
|
|
117
|
-
if (e.animationName == animationName) {
|
|
118
|
-
resetTriggers(element);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
element.__resizeListeners__.push(fn);
|
|
125
|
-
};
|
|
126
|
-
var removeResizeListener = function removeResizeListener(element, fn) {
|
|
127
|
-
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
|
|
128
|
-
if (!element.__resizeListeners__.length) {
|
|
129
|
-
element.removeEventListener('scroll', scrollListener, true);
|
|
130
|
-
if (element.__resizeTriggers__.__animationListener__) {
|
|
131
|
-
element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
|
|
132
|
-
element.__resizeTriggers__.__animationListener__ = null;
|
|
133
|
-
}
|
|
134
|
-
try {
|
|
135
|
-
element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
|
|
136
|
-
} catch (e) {
|
|
137
|
-
// Preact compat; see developit/preact-compat/issues/228
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return {
|
|
142
|
-
addResizeListener: addResizeListener,
|
|
143
|
-
removeResizeListener: removeResizeListener
|
|
144
|
-
};
|
|
145
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detect Element Resize.
|
|
3
|
-
* https://github.com/sdecima/javascript-detect-element-resize
|
|
4
|
-
* Sebastian Decima
|
|
5
|
-
*
|
|
6
|
-
* Forked from version 0.5.3; includes the following modifications:
|
|
7
|
-
* 1) Guard against unsafe 'window' and 'document' references (to support SSR).
|
|
8
|
-
* 2) Defer initialization code via a top-level function wrapper (to support SSR).
|
|
9
|
-
* 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
|
|
10
|
-
* 4) Add nonce for style element.
|
|
11
|
-
*
|
|
12
|
-
* TODO replace with https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver
|
|
13
|
-
* once browser support allows it.
|
|
14
|
-
**/
|
|
15
|
-
export default function createDetectElementResize(nonce: any, hostWindow: any): {
|
|
16
|
-
addResizeListener: (element: any, fn: any) => void;
|
|
17
|
-
removeResizeListener: (element: any, fn: any) => void;
|
|
18
|
-
};
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detect Element Resize.
|
|
3
|
-
* https://github.com/sdecima/javascript-detect-element-resize
|
|
4
|
-
* Sebastian Decima
|
|
5
|
-
*
|
|
6
|
-
* Forked from version 0.5.3; includes the following modifications:
|
|
7
|
-
* 1) Guard against unsafe 'window' and 'document' references (to support SSR).
|
|
8
|
-
* 2) Defer initialization code via a top-level function wrapper (to support SSR).
|
|
9
|
-
* 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
|
|
10
|
-
* 4) Add nonce for style element.
|
|
11
|
-
*
|
|
12
|
-
* TODO replace with https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver
|
|
13
|
-
* once browser support allows it.
|
|
14
|
-
**/
|
|
15
|
-
export default function createDetectElementResize(nonce, hostWindow) {
|
|
16
|
-
var resetTriggers = function resetTriggers(element) {
|
|
17
|
-
var triggers = element.__resizeTriggers__,
|
|
18
|
-
expand = triggers.firstElementChild,
|
|
19
|
-
contract = triggers.lastElementChild,
|
|
20
|
-
expandChild = expand.firstElementChild;
|
|
21
|
-
contract.scrollLeft = contract.scrollWidth;
|
|
22
|
-
contract.scrollTop = contract.scrollHeight;
|
|
23
|
-
expandChild.style.width = expand.offsetWidth + 1 + 'px';
|
|
24
|
-
expandChild.style.height = expand.offsetHeight + 1 + 'px';
|
|
25
|
-
expand.scrollLeft = expand.scrollWidth;
|
|
26
|
-
expand.scrollTop = expand.scrollHeight;
|
|
27
|
-
};
|
|
28
|
-
var checkTriggers = function checkTriggers(element) {
|
|
29
|
-
return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
|
|
30
|
-
};
|
|
31
|
-
var scrollListener = function scrollListener(e) {
|
|
32
|
-
// Don't measure (which forces) reflow for scrolls that happen inside of children!
|
|
33
|
-
if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
var element = this;
|
|
37
|
-
resetTriggers(this);
|
|
38
|
-
if (this.__resizeRAF__) {
|
|
39
|
-
hostWindow.cancelAnimationFrame(this.__resizeRAF__);
|
|
40
|
-
}
|
|
41
|
-
this.__resizeRAF__ = hostWindow.requestAnimationFrame(function () {
|
|
42
|
-
if (checkTriggers(element)) {
|
|
43
|
-
element.__resizeLast__.width = element.offsetWidth;
|
|
44
|
-
element.__resizeLast__.height = element.offsetHeight;
|
|
45
|
-
element.__resizeListeners__.forEach(function (fn) {
|
|
46
|
-
fn.call(element, e);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/* Detect CSS Animations support to detect element display/re-attach */
|
|
53
|
-
var animation = false,
|
|
54
|
-
keyframeprefix = '',
|
|
55
|
-
animationstartevent = 'animationstart',
|
|
56
|
-
domPrefixes = 'Webkit Moz O ms'.split(' '),
|
|
57
|
-
startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
|
|
58
|
-
pfx = '';
|
|
59
|
-
{
|
|
60
|
-
var elm = document.createElement('fakeelement');
|
|
61
|
-
if (elm.style.animationName !== undefined) {
|
|
62
|
-
animation = true;
|
|
63
|
-
}
|
|
64
|
-
if (animation === false) {
|
|
65
|
-
for (var i = 0; i < domPrefixes.length; i++) {
|
|
66
|
-
if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
|
|
67
|
-
pfx = domPrefixes[i];
|
|
68
|
-
keyframeprefix = '-' + pfx.toLowerCase() + '-';
|
|
69
|
-
animationstartevent = startEvents[i];
|
|
70
|
-
animation = true;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
var animationName = 'resizeanim';
|
|
77
|
-
var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
|
|
78
|
-
var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
|
|
79
|
-
var createStyles = function createStyles(doc, root) {
|
|
80
|
-
if (!root.getElementById('muiDetectElementResize')) {
|
|
81
|
-
//opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
|
|
82
|
-
var css = (animationKeyframes ? animationKeyframes : '') + '.Mui-resizeTriggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.Mui-resizeTriggers, .Mui-resizeTriggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .Mui-resizeTriggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
|
|
83
|
-
container = root.constructor.name === 'ShadowRoot' ? root : doc.head || doc.getElementsByTagName('head')[0],
|
|
84
|
-
style = doc.createElement('style');
|
|
85
|
-
style.id = 'muiDetectElementResize';
|
|
86
|
-
style.type = 'text/css';
|
|
87
|
-
if (nonce != null) {
|
|
88
|
-
style.setAttribute('nonce', nonce);
|
|
89
|
-
}
|
|
90
|
-
if (style.styleSheet) {
|
|
91
|
-
style.styleSheet.cssText = css;
|
|
92
|
-
} else {
|
|
93
|
-
style.appendChild(doc.createTextNode(css));
|
|
94
|
-
}
|
|
95
|
-
container.appendChild(style);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
var addResizeListener = function addResizeListener(element, fn) {
|
|
99
|
-
if (!element.__resizeTriggers__) {
|
|
100
|
-
var doc = element.ownerDocument;
|
|
101
|
-
var elementStyle = hostWindow.getComputedStyle(element);
|
|
102
|
-
if (elementStyle && elementStyle.position == 'static') {
|
|
103
|
-
element.style.position = 'relative';
|
|
104
|
-
}
|
|
105
|
-
createStyles(doc, element.getRootNode());
|
|
106
|
-
element.__resizeLast__ = {};
|
|
107
|
-
element.__resizeListeners__ = [];
|
|
108
|
-
(element.__resizeTriggers__ = doc.createElement('div')).className = 'Mui-resizeTriggers';
|
|
109
|
-
element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
|
|
110
|
-
element.appendChild(element.__resizeTriggers__);
|
|
111
|
-
resetTriggers(element);
|
|
112
|
-
element.addEventListener('scroll', scrollListener, true);
|
|
113
|
-
|
|
114
|
-
/* Listen for a css animation to detect element display/re-attach */
|
|
115
|
-
if (animationstartevent) {
|
|
116
|
-
element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
|
|
117
|
-
if (e.animationName == animationName) {
|
|
118
|
-
resetTriggers(element);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
element.__resizeListeners__.push(fn);
|
|
125
|
-
};
|
|
126
|
-
var removeResizeListener = function removeResizeListener(element, fn) {
|
|
127
|
-
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
|
|
128
|
-
if (!element.__resizeListeners__.length) {
|
|
129
|
-
element.removeEventListener('scroll', scrollListener, true);
|
|
130
|
-
if (element.__resizeTriggers__.__animationListener__) {
|
|
131
|
-
element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
|
|
132
|
-
element.__resizeTriggers__.__animationListener__ = null;
|
|
133
|
-
}
|
|
134
|
-
try {
|
|
135
|
-
element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
|
|
136
|
-
} catch (e) {
|
|
137
|
-
// Preact compat; see developit/preact-compat/issues/228
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return {
|
|
142
|
-
addResizeListener,
|
|
143
|
-
removeResizeListener
|
|
144
|
-
};
|
|
145
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import PropTypes from 'prop-types';
|
|
4
|
-
import clsx from 'clsx';
|
|
5
|
-
import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
6
|
-
import { styled } from '@mui/system';
|
|
7
|
-
import { useGridApiEventHandler } from '../hooks/utils/useGridApiEventHandler';
|
|
8
|
-
import { useGridApiContext } from '../hooks/utils/useGridApiContext';
|
|
9
|
-
import { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses';
|
|
10
|
-
import { useGridRootProps } from '../hooks/utils/useGridRootProps';
|
|
11
|
-
import { gridDensityFactorSelector } from '../hooks/features/density/densitySelector';
|
|
12
|
-
import { useGridSelector } from '../hooks/utils/useGridSelector';
|
|
13
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
-
const CLIFF = 1;
|
|
15
|
-
const SLOP = 1.5;
|
|
16
|
-
const useUtilityClasses = ownerState => {
|
|
17
|
-
const {
|
|
18
|
-
scrollDirection,
|
|
19
|
-
classes
|
|
20
|
-
} = ownerState;
|
|
21
|
-
const slots = {
|
|
22
|
-
root: ['scrollArea', `scrollArea--${scrollDirection}`]
|
|
23
|
-
};
|
|
24
|
-
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
25
|
-
};
|
|
26
|
-
const GridScrollAreaRawRoot = styled('div', {
|
|
27
|
-
name: 'MuiDataGrid',
|
|
28
|
-
slot: 'ScrollArea',
|
|
29
|
-
overridesResolver: (props, styles) => [{
|
|
30
|
-
[`&.${gridClasses['scrollArea--left']}`]: styles['scrollArea--left']
|
|
31
|
-
}, {
|
|
32
|
-
[`&.${gridClasses['scrollArea--right']}`]: styles['scrollArea--right']
|
|
33
|
-
}, styles.scrollArea]
|
|
34
|
-
})(() => ({
|
|
35
|
-
position: 'absolute',
|
|
36
|
-
top: 0,
|
|
37
|
-
zIndex: 101,
|
|
38
|
-
width: 20,
|
|
39
|
-
bottom: 0,
|
|
40
|
-
[`&.${gridClasses['scrollArea--left']}`]: {
|
|
41
|
-
left: 0
|
|
42
|
-
},
|
|
43
|
-
[`&.${gridClasses['scrollArea--right']}`]: {
|
|
44
|
-
right: 0
|
|
45
|
-
}
|
|
46
|
-
}));
|
|
47
|
-
function GridScrollAreaRaw(props) {
|
|
48
|
-
const {
|
|
49
|
-
scrollDirection
|
|
50
|
-
} = props;
|
|
51
|
-
const rootRef = React.useRef(null);
|
|
52
|
-
const apiRef = useGridApiContext();
|
|
53
|
-
const timeout = React.useRef();
|
|
54
|
-
const [dragging, setDragging] = React.useState(false);
|
|
55
|
-
const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
|
|
56
|
-
const scrollPosition = React.useRef({
|
|
57
|
-
left: 0,
|
|
58
|
-
top: 0
|
|
59
|
-
});
|
|
60
|
-
const rootProps = useGridRootProps();
|
|
61
|
-
const ownerState = _extends({}, rootProps, {
|
|
62
|
-
scrollDirection
|
|
63
|
-
});
|
|
64
|
-
const classes = useUtilityClasses(ownerState);
|
|
65
|
-
const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
|
|
66
|
-
const handleScrolling = React.useCallback(newScrollPosition => {
|
|
67
|
-
scrollPosition.current = newScrollPosition;
|
|
68
|
-
}, []);
|
|
69
|
-
const handleDragOver = React.useCallback(event => {
|
|
70
|
-
let offset;
|
|
71
|
-
if (scrollDirection === 'left') {
|
|
72
|
-
offset = event.clientX - rootRef.current.getBoundingClientRect().right;
|
|
73
|
-
} else if (scrollDirection === 'right') {
|
|
74
|
-
offset = Math.max(1, event.clientX - rootRef.current.getBoundingClientRect().left);
|
|
75
|
-
} else {
|
|
76
|
-
throw new Error('MUI: Wrong drag direction');
|
|
77
|
-
}
|
|
78
|
-
offset = (offset - CLIFF) * SLOP + CLIFF;
|
|
79
|
-
clearTimeout(timeout.current);
|
|
80
|
-
// Avoid freeze and inertia.
|
|
81
|
-
timeout.current = setTimeout(() => {
|
|
82
|
-
apiRef.current.scroll({
|
|
83
|
-
left: scrollPosition.current.left + offset,
|
|
84
|
-
top: scrollPosition.current.top
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
}, [scrollDirection, apiRef]);
|
|
88
|
-
React.useEffect(() => {
|
|
89
|
-
return () => {
|
|
90
|
-
clearTimeout(timeout.current);
|
|
91
|
-
};
|
|
92
|
-
}, []);
|
|
93
|
-
const toggleDragging = React.useCallback(() => {
|
|
94
|
-
setDragging(prevDragging => !prevDragging);
|
|
95
|
-
}, []);
|
|
96
|
-
useGridApiEventHandler(apiRef, 'scrollPositionChange', handleScrolling);
|
|
97
|
-
useGridApiEventHandler(apiRef, 'columnHeaderDragStart', toggleDragging);
|
|
98
|
-
useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', toggleDragging);
|
|
99
|
-
return dragging ? /*#__PURE__*/_jsx(GridScrollAreaRawRoot, {
|
|
100
|
-
ref: rootRef,
|
|
101
|
-
className: clsx(classes.root),
|
|
102
|
-
ownerState: ownerState,
|
|
103
|
-
onDragOver: handleDragOver,
|
|
104
|
-
style: {
|
|
105
|
-
height: headerHeight
|
|
106
|
-
}
|
|
107
|
-
}) : null;
|
|
108
|
-
}
|
|
109
|
-
process.env.NODE_ENV !== "production" ? GridScrollAreaRaw.propTypes = {
|
|
110
|
-
// ----------------------------- Warning --------------------------------
|
|
111
|
-
// | These PropTypes are generated from the TypeScript type definitions |
|
|
112
|
-
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
113
|
-
// ----------------------------------------------------------------------
|
|
114
|
-
scrollDirection: PropTypes.oneOf(['left', 'right']).isRequired
|
|
115
|
-
} : void 0;
|
|
116
|
-
const GridScrollArea = /*#__PURE__*/React.memo(GridScrollAreaRaw);
|
|
117
|
-
export { GridScrollArea };
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detect Element Resize.
|
|
3
|
-
* https://github.com/sdecima/javascript-detect-element-resize
|
|
4
|
-
* Sebastian Decima
|
|
5
|
-
*
|
|
6
|
-
* Forked from version 0.5.3; includes the following modifications:
|
|
7
|
-
* 1) Guard against unsafe 'window' and 'document' references (to support SSR).
|
|
8
|
-
* 2) Defer initialization code via a top-level function wrapper (to support SSR).
|
|
9
|
-
* 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
|
|
10
|
-
* 4) Add nonce for style element.
|
|
11
|
-
*
|
|
12
|
-
* TODO replace with https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver
|
|
13
|
-
* once browser support allows it.
|
|
14
|
-
**/
|
|
15
|
-
export default function createDetectElementResize(nonce, hostWindow) {
|
|
16
|
-
var resetTriggers = function resetTriggers(element) {
|
|
17
|
-
var triggers = element.__resizeTriggers__,
|
|
18
|
-
expand = triggers.firstElementChild,
|
|
19
|
-
contract = triggers.lastElementChild,
|
|
20
|
-
expandChild = expand.firstElementChild;
|
|
21
|
-
contract.scrollLeft = contract.scrollWidth;
|
|
22
|
-
contract.scrollTop = contract.scrollHeight;
|
|
23
|
-
expandChild.style.width = expand.offsetWidth + 1 + 'px';
|
|
24
|
-
expandChild.style.height = expand.offsetHeight + 1 + 'px';
|
|
25
|
-
expand.scrollLeft = expand.scrollWidth;
|
|
26
|
-
expand.scrollTop = expand.scrollHeight;
|
|
27
|
-
};
|
|
28
|
-
var checkTriggers = function checkTriggers(element) {
|
|
29
|
-
return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
|
|
30
|
-
};
|
|
31
|
-
var scrollListener = function scrollListener(e) {
|
|
32
|
-
// Don't measure (which forces) reflow for scrolls that happen inside of children!
|
|
33
|
-
if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
var element = this;
|
|
37
|
-
resetTriggers(this);
|
|
38
|
-
if (this.__resizeRAF__) {
|
|
39
|
-
hostWindow.cancelAnimationFrame(this.__resizeRAF__);
|
|
40
|
-
}
|
|
41
|
-
this.__resizeRAF__ = hostWindow.requestAnimationFrame(function () {
|
|
42
|
-
if (checkTriggers(element)) {
|
|
43
|
-
element.__resizeLast__.width = element.offsetWidth;
|
|
44
|
-
element.__resizeLast__.height = element.offsetHeight;
|
|
45
|
-
element.__resizeListeners__.forEach(function (fn) {
|
|
46
|
-
fn.call(element, e);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/* Detect CSS Animations support to detect element display/re-attach */
|
|
53
|
-
var animation = false,
|
|
54
|
-
keyframeprefix = '',
|
|
55
|
-
animationstartevent = 'animationstart',
|
|
56
|
-
domPrefixes = 'Webkit Moz O ms'.split(' '),
|
|
57
|
-
startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
|
|
58
|
-
pfx = '';
|
|
59
|
-
{
|
|
60
|
-
var elm = document.createElement('fakeelement');
|
|
61
|
-
if (elm.style.animationName !== undefined) {
|
|
62
|
-
animation = true;
|
|
63
|
-
}
|
|
64
|
-
if (animation === false) {
|
|
65
|
-
for (var i = 0; i < domPrefixes.length; i++) {
|
|
66
|
-
if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
|
|
67
|
-
pfx = domPrefixes[i];
|
|
68
|
-
keyframeprefix = '-' + pfx.toLowerCase() + '-';
|
|
69
|
-
animationstartevent = startEvents[i];
|
|
70
|
-
animation = true;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
var animationName = 'resizeanim';
|
|
77
|
-
var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
|
|
78
|
-
var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
|
|
79
|
-
var createStyles = function createStyles(doc, root) {
|
|
80
|
-
if (!root.getElementById('muiDetectElementResize')) {
|
|
81
|
-
//opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
|
|
82
|
-
var css = (animationKeyframes ? animationKeyframes : '') + '.Mui-resizeTriggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.Mui-resizeTriggers, .Mui-resizeTriggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .Mui-resizeTriggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
|
|
83
|
-
container = root.constructor.name === 'ShadowRoot' ? root : doc.head || doc.getElementsByTagName('head')[0],
|
|
84
|
-
style = doc.createElement('style');
|
|
85
|
-
style.id = 'muiDetectElementResize';
|
|
86
|
-
style.type = 'text/css';
|
|
87
|
-
if (nonce != null) {
|
|
88
|
-
style.setAttribute('nonce', nonce);
|
|
89
|
-
}
|
|
90
|
-
if (style.styleSheet) {
|
|
91
|
-
style.styleSheet.cssText = css;
|
|
92
|
-
} else {
|
|
93
|
-
style.appendChild(doc.createTextNode(css));
|
|
94
|
-
}
|
|
95
|
-
container.appendChild(style);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
var addResizeListener = function addResizeListener(element, fn) {
|
|
99
|
-
if (!element.__resizeTriggers__) {
|
|
100
|
-
var doc = element.ownerDocument;
|
|
101
|
-
var elementStyle = hostWindow.getComputedStyle(element);
|
|
102
|
-
if (elementStyle && elementStyle.position == 'static') {
|
|
103
|
-
element.style.position = 'relative';
|
|
104
|
-
}
|
|
105
|
-
createStyles(doc, element.getRootNode());
|
|
106
|
-
element.__resizeLast__ = {};
|
|
107
|
-
element.__resizeListeners__ = [];
|
|
108
|
-
(element.__resizeTriggers__ = doc.createElement('div')).className = 'Mui-resizeTriggers';
|
|
109
|
-
element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
|
|
110
|
-
element.appendChild(element.__resizeTriggers__);
|
|
111
|
-
resetTriggers(element);
|
|
112
|
-
element.addEventListener('scroll', scrollListener, true);
|
|
113
|
-
|
|
114
|
-
/* Listen for a css animation to detect element display/re-attach */
|
|
115
|
-
if (animationstartevent) {
|
|
116
|
-
element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
|
|
117
|
-
if (e.animationName == animationName) {
|
|
118
|
-
resetTriggers(element);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
element.__resizeListeners__.push(fn);
|
|
125
|
-
};
|
|
126
|
-
var removeResizeListener = function removeResizeListener(element, fn) {
|
|
127
|
-
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
|
|
128
|
-
if (!element.__resizeListeners__.length) {
|
|
129
|
-
element.removeEventListener('scroll', scrollListener, true);
|
|
130
|
-
if (element.__resizeTriggers__.__animationListener__) {
|
|
131
|
-
element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
|
|
132
|
-
element.__resizeTriggers__.__animationListener__ = null;
|
|
133
|
-
}
|
|
134
|
-
try {
|
|
135
|
-
element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
|
|
136
|
-
} catch (e) {
|
|
137
|
-
// Preact compat; see developit/preact-compat/issues/228
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return {
|
|
142
|
-
addResizeListener,
|
|
143
|
-
removeResizeListener
|
|
144
|
-
};
|
|
145
|
-
}
|