@shortfuse/materialdesignweb 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -24
- package/bin/mdw-css.js +1 -1
- package/components/Badge.js +12 -5
- package/components/Body.js +3 -0
- package/components/BottomAppBar.js +1 -8
- package/components/BottomSheet.js +424 -0
- package/components/Box.js +11 -49
- package/components/Button.js +61 -82
- package/components/Card.js +56 -61
- package/components/Checkbox.js +7 -25
- package/components/CheckboxIcon.js +10 -28
- package/components/Chip.js +13 -11
- package/components/Dialog.js +49 -98
- package/components/Display.js +55 -0
- package/components/Fab.js +83 -17
- package/components/FabContainer.js +48 -0
- package/components/FilterChip.js +34 -32
- package/components/Grid.js +176 -0
- package/components/Headline.js +5 -28
- package/components/Icon.js +54 -69
- package/components/IconButton.js +71 -120
- package/components/Input.js +669 -83
- package/components/InputChip.js +161 -0
- package/components/Label.js +3 -0
- package/components/List.js +1 -5
- package/components/ListItem.js +39 -23
- package/components/ListOption.js +79 -62
- package/components/Listbox.js +19 -10
- package/components/Menu.js +8 -18
- package/components/MenuItem.js +25 -26
- package/components/NavBar.js +53 -19
- package/components/NavDrawer.js +15 -15
- package/components/NavDrawerItem.js +2 -4
- package/components/NavItem.js +40 -33
- package/components/NavRail.js +23 -21
- package/components/NavRailItem.js +5 -2
- package/components/Page.js +105 -0
- package/components/Pane.js +18 -0
- package/components/Popup.js +17 -8
- package/components/Radio.js +2 -5
- package/components/RadioIcon.js +10 -14
- package/components/Ripple.js +11 -7
- package/components/Root.js +209 -0
- package/components/Scrim.js +87 -0
- package/components/Search.js +12 -20
- package/components/SegmentedButton.js +33 -36
- package/components/SegmentedButtonGroup.js +9 -3
- package/components/Select.js +6 -7
- package/components/Shape.js +5 -65
- package/components/SideSheet.js +308 -0
- package/components/Slider.js +71 -34
- package/components/Snackbar.js +22 -16
- package/components/SnackbarContainer.js +42 -0
- package/components/Surface.js +15 -10
- package/components/Switch.js +3 -16
- package/components/SwitchIcon.js +40 -32
- package/components/Tab.js +57 -38
- package/components/TabContent.js +1 -0
- package/components/TabList.js +60 -32
- package/components/TabPanel.js +1 -1
- package/components/Table.js +116 -0
- package/components/TextArea.js +16 -15
- package/components/Title.js +4 -9
- package/components/Tooltip.js +43 -21
- package/components/TopAppBar.js +56 -78
- package/constants/shapes.js +36 -0
- package/constants/typography.js +127 -0
- package/core/Composition.js +354 -192
- package/core/CompositionAdapter.js +11 -12
- package/core/CustomElement.js +588 -236
- package/core/css.js +117 -12
- package/core/customTypes.js +120 -25
- package/core/dom.js +17 -11
- package/core/jsonMergePatch.js +12 -10
- package/core/observe.js +298 -253
- package/core/optimizations.js +9 -9
- package/core/template.js +14 -57
- package/dist/index.min.js +85 -115
- package/dist/index.min.js.map +4 -4
- package/dist/meta.json +1 -1
- package/dom/HTMLOptionsCollectionProxy.js +106 -0
- package/{theming/themableMixinLoader.js → loaders/palette.js} +4 -3
- package/loaders/theme.js +12 -0
- package/mixins/AriaReflectorMixin.js +53 -13
- package/mixins/AriaToolbarMixin.js +3 -0
- package/mixins/ControlMixin.js +76 -33
- package/mixins/DelegatesFocusMixin.js +54 -0
- package/mixins/DensityMixin.js +2 -2
- package/mixins/ElevationMixin.js +62 -0
- package/mixins/FlexableMixin.js +66 -37
- package/mixins/FormAssociatedMixin.js +60 -8
- package/mixins/HyperlinkMixin.js +66 -0
- package/mixins/InputMixin.js +205 -32
- package/mixins/KeyboardNavMixin.js +8 -6
- package/mixins/NavigationListenerMixin.js +33 -0
- package/mixins/PopupMixin.js +176 -208
- package/mixins/ResizeObserverMixin.js +16 -4
- package/mixins/RippleMixin.js +8 -6
- package/mixins/ScrollListenerMixin.js +1 -1
- package/mixins/SemiStickyMixin.js +44 -98
- package/mixins/ShapeMaskedMixin.js +117 -0
- package/mixins/ShapeMixin.js +22 -204
- package/mixins/StateMixin.js +70 -34
- package/mixins/TextFieldMixin.js +107 -143
- package/mixins/ThemableMixin.js +44 -56
- package/mixins/TooltipTriggerMixin.js +291 -359
- package/mixins/TouchTargetMixin.js +1 -1
- package/mixins/TypographyMixin.js +121 -0
- package/package.json +110 -74
- package/services/rtl.js +10 -0
- package/services/svgAlias.js +17 -0
- package/{theming/index.js → services/theme.js} +24 -174
- package/types/bin/mdw-css.d.ts +3 -0
- package/types/bin/mdw-css.d.ts.map +1 -0
- package/types/components/Badge.d.ts +39 -0
- package/types/components/Badge.d.ts.map +1 -0
- package/types/components/Body.d.ts +29 -0
- package/types/components/Body.d.ts.map +1 -0
- package/types/components/BottomAppBar.d.ts +73 -0
- package/types/components/BottomAppBar.d.ts.map +1 -0
- package/types/components/BottomSheet.d.ts +109 -0
- package/types/components/BottomSheet.d.ts.map +1 -0
- package/types/components/Box.d.ts +16 -0
- package/types/components/Box.d.ts.map +1 -0
- package/types/components/Button.d.ts +714 -0
- package/types/components/Button.d.ts.map +1 -0
- package/types/components/Card.d.ts +412 -0
- package/types/components/Card.d.ts.map +1 -0
- package/types/components/Checkbox.d.ts +205 -0
- package/types/components/Checkbox.d.ts.map +1 -0
- package/types/components/CheckboxIcon.d.ts +44 -0
- package/types/components/CheckboxIcon.d.ts.map +1 -0
- package/types/components/Chip.d.ts +1425 -0
- package/types/components/Chip.d.ts.map +1 -0
- package/types/components/Dialog.d.ts +286 -0
- package/types/components/Dialog.d.ts.map +1 -0
- package/types/components/DialogActions.d.ts +4 -0
- package/types/components/DialogActions.d.ts.map +1 -0
- package/types/components/Display.d.ts +45 -0
- package/types/components/Display.d.ts.map +1 -0
- package/types/components/Divider.d.ts +10 -0
- package/types/components/Divider.d.ts.map +1 -0
- package/types/components/Fab.d.ts +741 -0
- package/types/components/Fab.d.ts.map +1 -0
- package/types/components/FabContainer.d.ts +10 -0
- package/types/components/FabContainer.d.ts.map +1 -0
- package/types/components/FilterChip.d.ts +4283 -0
- package/types/components/FilterChip.d.ts.map +1 -0
- package/types/components/Grid.d.ts +37 -0
- package/types/components/Grid.d.ts.map +1 -0
- package/types/components/Headline.d.ts +47 -0
- package/types/components/Headline.d.ts.map +1 -0
- package/types/components/Icon.d.ts +103 -0
- package/types/components/Icon.d.ts.map +1 -0
- package/types/components/IconButton.d.ts +1486 -0
- package/types/components/IconButton.d.ts.map +1 -0
- package/types/components/Input.d.ts +51288 -0
- package/types/components/Input.d.ts.map +1 -0
- package/types/components/InputChip.d.ts +243 -0
- package/types/components/InputChip.d.ts.map +1 -0
- package/types/components/Label.d.ts +29 -0
- package/types/components/Label.d.ts.map +1 -0
- package/types/components/List.d.ts +31 -0
- package/types/components/List.d.ts.map +1 -0
- package/types/components/ListItem.d.ts +349 -0
- package/types/components/ListItem.d.ts.map +1 -0
- package/types/components/ListOption.d.ts +1493 -0
- package/types/components/ListOption.d.ts.map +1 -0
- package/types/components/Listbox.d.ts +12012 -0
- package/types/components/Listbox.d.ts.map +1 -0
- package/types/components/Menu.d.ts +119 -0
- package/types/components/Menu.d.ts.map +1 -0
- package/types/components/MenuItem.d.ts +3109 -0
- package/types/components/MenuItem.d.ts.map +1 -0
- package/types/components/NavBar.d.ts +18 -0
- package/types/components/NavBar.d.ts.map +1 -0
- package/types/components/NavBarItem.d.ts +186 -0
- package/types/components/NavBarItem.d.ts.map +1 -0
- package/types/components/NavDrawer.d.ts +108 -0
- package/types/components/NavDrawer.d.ts.map +1 -0
- package/types/components/NavDrawerItem.d.ts +186 -0
- package/types/components/NavDrawerItem.d.ts.map +1 -0
- package/types/components/NavItem.d.ts +190 -0
- package/types/components/NavItem.d.ts.map +1 -0
- package/types/components/NavRail.d.ts +109 -0
- package/types/components/NavRail.d.ts.map +1 -0
- package/types/components/NavRailItem.d.ts +186 -0
- package/types/components/NavRailItem.d.ts.map +1 -0
- package/types/components/Page.d.ts +24 -0
- package/types/components/Page.d.ts.map +1 -0
- package/types/components/Pane.d.ts +44 -0
- package/types/components/Pane.d.ts.map +1 -0
- package/types/components/Popup.d.ts +76 -0
- package/types/components/Popup.d.ts.map +1 -0
- package/types/components/Progress.d.ts +19 -0
- package/types/components/Progress.d.ts.map +1 -0
- package/types/components/Radio.d.ts +199 -0
- package/types/components/Radio.d.ts.map +1 -0
- package/types/components/RadioIcon.d.ts +46 -0
- package/types/components/RadioIcon.d.ts.map +1 -0
- package/types/components/Ripple.d.ts +34 -0
- package/types/components/Ripple.d.ts.map +1 -0
- package/types/components/Root.d.ts +68 -0
- package/types/components/Root.d.ts.map +1 -0
- package/types/components/Scrim.d.ts +6 -0
- package/types/components/Scrim.d.ts.map +1 -0
- package/types/components/Search.d.ts +16 -0
- package/types/components/Search.d.ts.map +1 -0
- package/types/components/SegmentedButton.d.ts +718 -0
- package/types/components/SegmentedButton.d.ts.map +1 -0
- package/types/components/SegmentedButtonGroup.d.ts +44 -0
- package/types/components/SegmentedButtonGroup.d.ts.map +1 -0
- package/types/components/Select.d.ts +1361 -0
- package/types/components/Select.d.ts.map +1 -0
- package/types/components/Shape.d.ts +10 -0
- package/types/components/Shape.d.ts.map +1 -0
- package/types/components/SideSheet.d.ts +106 -0
- package/types/components/SideSheet.d.ts.map +1 -0
- package/types/components/Slider.d.ts +382 -0
- package/types/components/Slider.d.ts.map +1 -0
- package/types/components/Snackbar.d.ts +65 -0
- package/types/components/Snackbar.d.ts.map +1 -0
- package/types/components/SnackbarContainer.d.ts +6 -0
- package/types/components/SnackbarContainer.d.ts.map +1 -0
- package/types/components/Surface.d.ts +45 -0
- package/types/components/Surface.d.ts.map +1 -0
- package/types/components/Switch.d.ts +183 -0
- package/types/components/Switch.d.ts.map +1 -0
- package/types/components/SwitchIcon.d.ts +169 -0
- package/types/components/SwitchIcon.d.ts.map +1 -0
- package/types/components/Tab.d.ts +879 -0
- package/types/components/Tab.d.ts.map +1 -0
- package/types/components/TabContent.d.ts +122 -0
- package/types/components/TabContent.d.ts.map +1 -0
- package/types/components/TabList.d.ts +6266 -0
- package/types/components/TabList.d.ts.map +1 -0
- package/types/components/TabPanel.d.ts +28 -0
- package/types/components/TabPanel.d.ts.map +1 -0
- package/types/components/Table.d.ts +2 -0
- package/types/components/Table.d.ts.map +1 -0
- package/types/components/TextArea.d.ts +1394 -0
- package/types/components/TextArea.d.ts.map +1 -0
- package/types/components/Title.d.ts +47 -0
- package/types/components/Title.d.ts.map +1 -0
- package/types/components/Tooltip.d.ts +49 -0
- package/types/components/Tooltip.d.ts.map +1 -0
- package/types/components/TopAppBar.d.ts +130 -0
- package/types/components/TopAppBar.d.ts.map +1 -0
- package/types/constants/colorKeywords.d.ts +2 -0
- package/types/constants/colorKeywords.d.ts.map +1 -0
- package/types/constants/shapes.d.ts +38 -0
- package/types/constants/shapes.d.ts.map +1 -0
- package/types/constants/typography.d.ts +212 -0
- package/types/constants/typography.d.ts.map +1 -0
- package/types/core/Composition.d.ts +252 -0
- package/types/core/Composition.d.ts.map +1 -0
- package/types/core/CompositionAdapter.d.ts +92 -0
- package/types/core/CompositionAdapter.d.ts.map +1 -0
- package/types/core/CustomElement.d.ts +302 -0
- package/types/core/CustomElement.d.ts.map +1 -0
- package/types/core/css.d.ts +44 -0
- package/types/core/css.d.ts.map +1 -0
- package/types/core/customTypes.d.ts +26 -0
- package/types/core/customTypes.d.ts.map +1 -0
- package/types/core/dom.d.ts +32 -0
- package/types/core/dom.d.ts.map +1 -0
- package/types/core/jsonMergePatch.d.ts +31 -0
- package/types/core/jsonMergePatch.d.ts.map +1 -0
- package/types/core/observe.d.ts +113 -0
- package/types/core/observe.d.ts.map +1 -0
- package/types/core/optimizations.d.ts +7 -0
- package/types/core/optimizations.d.ts.map +1 -0
- package/types/core/template.d.ts +47 -0
- package/types/core/template.d.ts.map +1 -0
- package/types/core/uid.d.ts +6 -0
- package/types/core/uid.d.ts.map +1 -0
- package/types/dom/HTMLOptionsCollectionProxy.d.ts +18 -0
- package/types/dom/HTMLOptionsCollectionProxy.d.ts.map +1 -0
- package/types/index.d.ts +88 -0
- package/types/index.d.ts.map +1 -0
- package/types/loaders/palette.d.ts +2 -0
- package/types/loaders/palette.d.ts.map +1 -0
- package/types/loaders/theme.d.ts +2 -0
- package/types/loaders/theme.d.ts.map +1 -0
- package/types/mixins/AriaReflectorMixin.d.ts +23 -0
- package/types/mixins/AriaReflectorMixin.d.ts.map +1 -0
- package/types/mixins/AriaToolbarMixin.d.ts +32 -0
- package/types/mixins/AriaToolbarMixin.d.ts.map +1 -0
- package/types/mixins/ControlMixin.d.ts +124 -0
- package/types/mixins/ControlMixin.d.ts.map +1 -0
- package/types/mixins/DelegatesFocusMixin.d.ts +5 -0
- package/types/mixins/DelegatesFocusMixin.d.ts.map +1 -0
- package/types/mixins/DensityMixin.d.ts +5 -0
- package/types/mixins/DensityMixin.d.ts.map +1 -0
- package/types/mixins/ElevationMixin.d.ts +33 -0
- package/types/mixins/ElevationMixin.d.ts.map +1 -0
- package/types/mixins/FlexableMixin.d.ts +13 -0
- package/types/mixins/FlexableMixin.d.ts.map +1 -0
- package/types/mixins/FormAssociatedMixin.d.ts +122 -0
- package/types/mixins/FormAssociatedMixin.d.ts.map +1 -0
- package/types/mixins/HyperlinkMixin.d.ts +22 -0
- package/types/mixins/HyperlinkMixin.d.ts.map +1 -0
- package/types/mixins/InputMixin.d.ts +179 -0
- package/types/mixins/InputMixin.d.ts.map +1 -0
- package/types/mixins/KeyboardNavMixin.d.ts +47 -0
- package/types/mixins/KeyboardNavMixin.d.ts.map +1 -0
- package/types/mixins/NavigationListenerMixin.d.ts +8 -0
- package/types/mixins/NavigationListenerMixin.d.ts.map +1 -0
- package/types/mixins/PopupMixin.d.ts +82 -0
- package/types/mixins/PopupMixin.d.ts.map +1 -0
- package/types/mixins/RTLObserverMixin.d.ts +7 -0
- package/types/mixins/RTLObserverMixin.d.ts.map +1 -0
- package/types/mixins/ResizeObserverMixin.d.ts +12 -0
- package/types/mixins/ResizeObserverMixin.d.ts.map +1 -0
- package/types/mixins/RippleMixin.d.ts +92 -0
- package/types/mixins/RippleMixin.d.ts.map +1 -0
- package/types/mixins/ScrollListenerMixin.d.ts +41 -0
- package/types/mixins/ScrollListenerMixin.d.ts.map +1 -0
- package/types/mixins/SemiStickyMixin.d.ts +50 -0
- package/types/mixins/SemiStickyMixin.d.ts.map +1 -0
- package/types/mixins/ShapeMaskedMixin.d.ts +9 -0
- package/types/mixins/ShapeMaskedMixin.d.ts.map +1 -0
- package/types/mixins/ShapeMixin.d.ts +38 -0
- package/types/mixins/ShapeMixin.d.ts.map +1 -0
- package/types/mixins/StateMixin.d.ts +27 -0
- package/types/mixins/StateMixin.d.ts.map +1 -0
- package/types/mixins/TextFieldMixin.d.ts +1354 -0
- package/types/mixins/TextFieldMixin.d.ts.map +1 -0
- package/types/mixins/ThemableMixin.d.ts +9 -0
- package/types/mixins/ThemableMixin.d.ts.map +1 -0
- package/types/mixins/TooltipTriggerMixin.d.ts +106 -0
- package/types/mixins/TooltipTriggerMixin.d.ts.map +1 -0
- package/types/mixins/TouchTargetMixin.d.ts +3 -0
- package/types/mixins/TouchTargetMixin.d.ts.map +1 -0
- package/types/mixins/TypographyMixin.d.ts +17 -0
- package/types/mixins/TypographyMixin.d.ts.map +1 -0
- package/types/services/rtl.d.ts +3 -0
- package/types/services/rtl.d.ts.map +1 -0
- package/types/services/svgAlias.d.ts +13 -0
- package/types/services/svgAlias.d.ts.map +1 -0
- package/types/services/theme.d.ts +45 -0
- package/types/services/theme.d.ts.map +1 -0
- package/types/utils/cli.d.ts +3 -0
- package/types/utils/cli.d.ts.map +1 -0
- package/types/utils/function.d.ts +3 -0
- package/types/utils/function.d.ts.map +1 -0
- package/types/utils/jsx-runtime.d.ts +20 -0
- package/types/utils/jsx-runtime.d.ts.map +1 -0
- package/types/utils/material-color/blend.d.ts +34 -0
- package/types/utils/material-color/blend.d.ts.map +1 -0
- package/types/utils/material-color/hct/Cam16.d.ts +142 -0
- package/types/utils/material-color/hct/Cam16.d.ts.map +1 -0
- package/types/utils/material-color/hct/Hct.d.ts +93 -0
- package/types/utils/material-color/hct/Hct.d.ts.map +1 -0
- package/types/utils/material-color/hct/ViewingConditions.d.ts +69 -0
- package/types/utils/material-color/hct/ViewingConditions.d.ts.map +1 -0
- package/types/utils/material-color/hct/hctSolver.d.ts +30 -0
- package/types/utils/material-color/hct/hctSolver.d.ts.map +1 -0
- package/types/utils/material-color/helper.d.ts +8 -0
- package/types/utils/material-color/helper.d.ts.map +1 -0
- package/types/utils/material-color/palettes/CorePalette.d.ts +75 -0
- package/types/utils/material-color/palettes/CorePalette.d.ts.map +1 -0
- package/types/utils/material-color/palettes/TonalPalette.d.ts +38 -0
- package/types/utils/material-color/palettes/TonalPalette.d.ts.map +1 -0
- package/types/utils/material-color/scheme/Scheme.d.ts +264 -0
- package/types/utils/material-color/scheme/Scheme.d.ts.map +1 -0
- package/types/utils/material-color/utils/color.d.ts +172 -0
- package/types/utils/material-color/utils/color.d.ts.map +1 -0
- package/types/utils/material-color/utils/math.d.ts +94 -0
- package/types/utils/material-color/utils/math.d.ts.map +1 -0
- package/types/utils/pixelmatch.d.ts +22 -0
- package/types/utils/pixelmatch.d.ts.map +1 -0
- package/types/utils/popup.d.ts +106 -0
- package/types/utils/popup.d.ts.map +1 -0
- package/types/utils/searchParams.d.ts +3 -0
- package/types/utils/searchParams.d.ts.map +1 -0
- package/types/utils/svg.d.ts +7 -0
- package/types/utils/svg.d.ts.map +1 -0
- package/utils/material-color/scheme/Scheme.js +1 -1
- package/utils/pixelmatch.js +360 -0
- package/utils/popup.js +86 -10
- package/utils/searchParams.js +19 -0
- package/components/ExtendedFab.js +0 -32
- package/components/Layout.js +0 -504
- package/components/Nav.js +0 -38
- package/core/DomAdapter.js +0 -586
- package/core/ICustomElement.d.ts +0 -291
- package/core/ICustomElement.js +0 -1
- package/core/test.js +0 -126
- package/core/typings.d.ts +0 -142
- package/core/typings.js +0 -1
- package/mixins/SurfaceMixin.js +0 -127
- package/theming/loader.js +0 -22
- /package/{utils/color_keywords.js → constants/colorKeywords.js} +0 -0
package/utils/popup.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} DOMRectLike
|
|
3
|
+
* @prop {number} left
|
|
4
|
+
* @prop {number} right
|
|
5
|
+
* @prop {number} top
|
|
6
|
+
* @prop {number} bottom
|
|
7
|
+
* @prop {number} width
|
|
8
|
+
* @prop {number} height
|
|
9
|
+
*/
|
|
10
|
+
|
|
1
11
|
/**
|
|
2
12
|
* @typedef {Object} CanAnchorPopUpOptions
|
|
3
|
-
* @prop {Element|
|
|
13
|
+
* @prop {Element|DOMRectLike} [anchor]
|
|
4
14
|
* @prop {number|'left'|'center'|'right'} [clientX]
|
|
5
15
|
* @prop {number|'top'|'center'|'bottom'} [clientY]
|
|
6
16
|
* @prop {number} [pageX]
|
|
7
17
|
* @prop {number} [pageY]
|
|
8
|
-
* @prop {Element|
|
|
18
|
+
* @prop {Element|{width:number, height:number}} [popup]
|
|
9
19
|
* @prop {number} [width]
|
|
10
20
|
* @prop {number} [height]
|
|
11
21
|
* @prop {number} [offsetX] Offset from anchor
|
|
@@ -19,9 +29,24 @@
|
|
|
19
29
|
/** @param {CanAnchorPopUpOptions} options */
|
|
20
30
|
export function canAnchorPopup(options) {
|
|
21
31
|
let { pageX, pageY, directionX, directionY } = options;
|
|
32
|
+
const pageWidth = document.documentElement.clientWidth;
|
|
33
|
+
const pageHeight = document.documentElement.clientHeight;
|
|
22
34
|
if (pageX == null || pageY == null) {
|
|
23
35
|
const { clientX, clientY, anchor } = options;
|
|
24
|
-
|
|
36
|
+
let rect;
|
|
37
|
+
if (anchor) {
|
|
38
|
+
rect = anchor instanceof Element ? anchor.getBoundingClientRect() : anchor;
|
|
39
|
+
} else {
|
|
40
|
+
rect = {
|
|
41
|
+
left: 0,
|
|
42
|
+
width: pageWidth,
|
|
43
|
+
right: pageWidth,
|
|
44
|
+
top: 0,
|
|
45
|
+
bottom: pageHeight,
|
|
46
|
+
height: pageHeight,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
25
50
|
if (pageX == null) {
|
|
26
51
|
switch (clientX) {
|
|
27
52
|
case 'left':
|
|
@@ -72,7 +97,7 @@ export function canAnchorPopup(options) {
|
|
|
72
97
|
height = popup.clientHeight;
|
|
73
98
|
} else {
|
|
74
99
|
width = popup.width;
|
|
75
|
-
height = popup.
|
|
100
|
+
height = popup.height;
|
|
76
101
|
}
|
|
77
102
|
}
|
|
78
103
|
|
|
@@ -81,42 +106,84 @@ export function canAnchorPopup(options) {
|
|
|
81
106
|
let bottom;
|
|
82
107
|
let left;
|
|
83
108
|
const margin = options.margin ?? 0;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
|
|
110
|
+
let pageTop = margin;
|
|
111
|
+
let pageBottom = -margin;
|
|
112
|
+
let pageLeft = margin;
|
|
113
|
+
let pageRight = -margin;
|
|
114
|
+
|
|
115
|
+
if (window.visualViewport) {
|
|
116
|
+
pageTop += window.visualViewport.offsetTop;
|
|
117
|
+
pageBottom += window.visualViewport.offsetTop + window.visualViewport.height;
|
|
118
|
+
pageLeft += window.visualViewport.offsetLeft;
|
|
119
|
+
pageRight += window.visualViewport.offsetLeft + window.visualViewport.width;
|
|
120
|
+
} else {
|
|
121
|
+
pageBottom += pageHeight;
|
|
122
|
+
pageRight += pageWidth;
|
|
123
|
+
}
|
|
88
124
|
|
|
89
125
|
const offsetX = options.offsetX ?? 0;
|
|
90
126
|
const offsetY = options.offsetY ?? 0;
|
|
91
127
|
pageX += offsetX;
|
|
92
128
|
pageY += offsetY;
|
|
93
129
|
|
|
130
|
+
let cssTop = 'auto';
|
|
131
|
+
let cssRight = 'auto';
|
|
132
|
+
let cssBottom = 'auto';
|
|
133
|
+
let cssLeft = 'auto';
|
|
134
|
+
let maxHeight = null;
|
|
135
|
+
let maxWidth = null;
|
|
136
|
+
|
|
94
137
|
switch (directionY) {
|
|
95
138
|
case 'up':
|
|
96
139
|
bottom = Math.min(pageY, pageBottom);
|
|
97
140
|
top = Math.max(bottom - height, pageTop);
|
|
141
|
+
cssBottom = `${pageHeight - bottom}px`;
|
|
142
|
+
if (top === pageTop) {
|
|
143
|
+
maxHeight = `${bottom - pageTop}px`;
|
|
144
|
+
}
|
|
98
145
|
break;
|
|
99
146
|
case 'center':
|
|
100
147
|
top = Math.max(pageY - height / 2, pageTop);
|
|
101
148
|
bottom = Math.min(pageY + height / 2, pageBottom);
|
|
149
|
+
cssTop = `${top}px`;
|
|
150
|
+
if (bottom === pageBottom) {
|
|
151
|
+
maxHeight = `${pageBottom - pageTop}px`;
|
|
152
|
+
}
|
|
102
153
|
break;
|
|
103
154
|
default:
|
|
104
155
|
top = Math.max(pageY, pageTop);
|
|
105
156
|
bottom = Math.min(top + height, pageBottom);
|
|
157
|
+
cssTop = `${top}px`;
|
|
158
|
+
if (bottom === pageBottom) {
|
|
159
|
+
maxHeight = `${pageBottom - top}px`;
|
|
160
|
+
}
|
|
106
161
|
}
|
|
107
162
|
|
|
108
163
|
switch (directionX) {
|
|
109
164
|
case 'left':
|
|
110
165
|
right = Math.min(pageX, pageRight);
|
|
111
166
|
left = Math.max(right - width, pageLeft);
|
|
167
|
+
cssRight = `${pageWidth - right}px`;
|
|
168
|
+
if (left === pageLeft) {
|
|
169
|
+
maxWidth = `${right - pageLeft}px`;
|
|
170
|
+
}
|
|
112
171
|
break;
|
|
113
172
|
case 'center':
|
|
114
173
|
left = Math.max(pageX - width / 2, pageLeft);
|
|
115
174
|
right = Math.min(pageX + width / 2, pageRight);
|
|
175
|
+
cssLeft = `${left}px`;
|
|
176
|
+
if (right === pageRight) {
|
|
177
|
+
maxWidth = `${pageRight - pageLeft}px`;
|
|
178
|
+
}
|
|
116
179
|
break;
|
|
117
180
|
default:
|
|
118
181
|
left = Math.max(pageX, pageLeft);
|
|
119
182
|
right = Math.min(left + width, pageRight);
|
|
183
|
+
cssLeft = `${left}px`;
|
|
184
|
+
if (right === pageRight) {
|
|
185
|
+
maxWidth = `${pageRight - left}px`;
|
|
186
|
+
}
|
|
120
187
|
}
|
|
121
188
|
|
|
122
189
|
// compute area
|
|
@@ -125,6 +192,8 @@ export function canAnchorPopup(options) {
|
|
|
125
192
|
|
|
126
193
|
const visibility = realSize / fullSize;
|
|
127
194
|
|
|
195
|
+
const transformOriginX = directionX === 'center' ? 'center' : (directionX === 'left' ? 'right' : 'left');
|
|
196
|
+
const transformOriginY = directionY === 'center' ? 'center' : (directionY === 'up' ? 'bottom' : 'top');
|
|
128
197
|
return {
|
|
129
198
|
...options,
|
|
130
199
|
top,
|
|
@@ -132,7 +201,14 @@ export function canAnchorPopup(options) {
|
|
|
132
201
|
bottom,
|
|
133
202
|
left,
|
|
134
203
|
visibility,
|
|
135
|
-
|
|
136
|
-
|
|
204
|
+
styles: {
|
|
205
|
+
top: cssTop,
|
|
206
|
+
bottom: cssBottom,
|
|
207
|
+
left: cssLeft,
|
|
208
|
+
right: cssRight,
|
|
209
|
+
maxWidth,
|
|
210
|
+
maxHeight,
|
|
211
|
+
transformOrigin: `${transformOriginY} ${transformOriginX}`,
|
|
212
|
+
},
|
|
137
213
|
};
|
|
138
214
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** @type {URLSearchParams} */
|
|
2
|
+
let currentSearchParams = null;
|
|
3
|
+
|
|
4
|
+
/** @return {URLSearchParams} */
|
|
5
|
+
export function getCurrentSearchParams() {
|
|
6
|
+
if (!currentSearchParams) {
|
|
7
|
+
let url;
|
|
8
|
+
try {
|
|
9
|
+
url = import.meta.url;
|
|
10
|
+
} catch {}
|
|
11
|
+
if (!url) {
|
|
12
|
+
try {
|
|
13
|
+
url = /** @type {HTMLScriptElement} */ (document.currentScript).src;
|
|
14
|
+
} catch {}
|
|
15
|
+
}
|
|
16
|
+
currentSearchParams = new URL(url).searchParams;
|
|
17
|
+
}
|
|
18
|
+
return currentSearchParams;
|
|
19
|
+
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import Button from './Button.js';
|
|
2
|
-
|
|
3
|
-
export default Button
|
|
4
|
-
.extend()
|
|
5
|
-
.css`
|
|
6
|
-
/* https://m3.material.io/components/extended-fab/specs */
|
|
7
|
-
|
|
8
|
-
:host {
|
|
9
|
-
--mdw-bg: var(--mdw-color__surface-container-high);
|
|
10
|
-
--mdw-ink: var(--mdw-color__primary);
|
|
11
|
-
--mdw-shape__size: 16px;
|
|
12
|
-
--mdw-surface__shadow__resting: var(--mdw-surface__shadow__3);
|
|
13
|
-
--mdw-surface__shadow__raised: var(--mdw-surface__shadow__4);
|
|
14
|
-
min-inline-size: 48px;
|
|
15
|
-
padding: calc(16px + (var(--mdw-density) * 2px));
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
#icon {
|
|
19
|
-
font-size: 24px;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
:host(:where([lowered])) {
|
|
23
|
-
--mdw-bg: var(--mdw-color__surface-container-low);
|
|
24
|
-
--mdw-surface__shadow__resting: var(--mdw-surface__shadow__1);
|
|
25
|
-
--mdw-surface__shadow__raised: var(--mdw-surface__shadow__2);
|
|
26
|
-
}
|
|
27
|
-
`
|
|
28
|
-
.observe({
|
|
29
|
-
filled: { empty: 'tonal' },
|
|
30
|
-
elevated: { type: 'boolean', empty: true },
|
|
31
|
-
})
|
|
32
|
-
.autoRegister('mdw-extended-fab');
|