@refinitiv-ui/elements 5.3.3 → 5.3.4
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/lib/accordion/custom-elements.json +49 -0
- package/lib/accordion/index.d.ts +76 -0
- package/lib/accordion/index.js +139 -0
- package/lib/accordion/themes/halo/dark/index.js +3 -0
- package/lib/accordion/themes/halo/light/index.js +3 -0
- package/lib/accordion/themes/solar/charcoal/index.js +3 -0
- package/lib/accordion/themes/solar/pearl/index.js +3 -0
- package/lib/appstate-bar/custom-elements.json +49 -0
- package/lib/appstate-bar/index.d.ts +65 -0
- package/lib/appstate-bar/index.js +103 -0
- package/lib/appstate-bar/themes/halo/dark/index.js +3 -0
- package/lib/appstate-bar/themes/halo/light/index.js +3 -0
- package/lib/appstate-bar/themes/solar/charcoal/index.js +3 -0
- package/lib/appstate-bar/themes/solar/pearl/index.js +3 -0
- package/lib/autosuggest/custom-elements.json +223 -0
- package/lib/autosuggest/helpers/const.d.ts +2 -0
- package/lib/autosuggest/helpers/const.js +3 -0
- package/lib/autosuggest/helpers/types.d.ts +54 -0
- package/lib/autosuggest/helpers/types.js +1 -0
- package/lib/autosuggest/helpers/utils.d.ts +39 -0
- package/lib/autosuggest/helpers/utils.js +76 -0
- package/lib/autosuggest/index.d.ts +533 -0
- package/lib/autosuggest/index.js +1248 -0
- package/lib/autosuggest/themes/halo/dark/index.js +5 -0
- package/lib/autosuggest/themes/halo/light/index.js +5 -0
- package/lib/autosuggest/themes/solar/charcoal/index.js +5 -0
- package/lib/autosuggest/themes/solar/pearl/index.js +5 -0
- package/lib/button/custom-elements.json +119 -0
- package/lib/button/index.d.ts +132 -0
- package/lib/button/index.js +213 -0
- package/lib/button/themes/halo/dark/index.js +3 -0
- package/lib/button/themes/halo/light/index.js +3 -0
- package/lib/button/themes/solar/charcoal/index.js +3 -0
- package/lib/button/themes/solar/pearl/index.js +3 -0
- package/lib/button-bar/custom-elements.json +26 -0
- package/lib/button-bar/index.d.ts +76 -0
- package/lib/button-bar/index.js +157 -0
- package/lib/button-bar/themes/halo/dark/index.js +3 -0
- package/lib/button-bar/themes/halo/light/index.js +3 -0
- package/lib/button-bar/themes/solar/charcoal/index.js +3 -0
- package/lib/button-bar/themes/solar/pearl/index.js +3 -0
- package/lib/calendar/custom-elements.json +199 -0
- package/lib/calendar/index.d.ts +321 -0
- package/lib/calendar/index.js +926 -0
- package/lib/calendar/locales.d.ts +31 -0
- package/lib/calendar/locales.js +144 -0
- package/lib/calendar/themes/halo/dark/index.js +3 -0
- package/lib/calendar/themes/halo/light/index.js +3 -0
- package/lib/calendar/themes/solar/charcoal/index.js +3 -0
- package/lib/calendar/themes/solar/pearl/index.js +3 -0
- package/lib/calendar/types.d.ts +33 -0
- package/lib/calendar/types.js +6 -0
- package/lib/calendar/utils.d.ts +12 -0
- package/lib/calendar/utils.js +17 -0
- package/lib/canvas/custom-elements.json +69 -0
- package/lib/canvas/index.d.ts +100 -0
- package/lib/canvas/index.js +175 -0
- package/lib/canvas/themes/halo/dark/index.js +2 -0
- package/lib/canvas/themes/halo/light/index.js +2 -0
- package/lib/canvas/themes/solar/charcoal/index.js +2 -0
- package/lib/canvas/themes/solar/pearl/index.js +2 -0
- package/lib/card/custom-elements.json +59 -0
- package/lib/card/helpers/types.d.ts +12 -0
- package/lib/card/helpers/types.js +1 -0
- package/lib/card/index.d.ts +140 -0
- package/lib/card/index.js +247 -0
- package/lib/card/themes/halo/dark/index.js +5 -0
- package/lib/card/themes/halo/light/index.js +5 -0
- package/lib/card/themes/solar/charcoal/index.js +5 -0
- package/lib/card/themes/solar/pearl/index.js +5 -0
- package/lib/chart/custom-elements.json +42 -0
- package/lib/chart/helpers/index.d.ts +2 -0
- package/lib/chart/helpers/index.js +2 -0
- package/lib/chart/helpers/legend.d.ts +5 -0
- package/lib/chart/helpers/legend.js +78 -0
- package/lib/chart/helpers/merge.d.ts +15 -0
- package/lib/chart/helpers/merge.js +28 -0
- package/lib/chart/helpers/types.d.ts +69 -0
- package/lib/chart/helpers/types.js +1 -0
- package/lib/chart/index.d.ts +187 -0
- package/lib/chart/index.js +493 -0
- package/lib/chart/plugins/doughnut-center-label.d.ts +3 -0
- package/lib/chart/plugins/doughnut-center-label.js +196 -0
- package/lib/chart/themes/halo/dark/index.js +4 -0
- package/lib/chart/themes/halo/light/index.js +4 -0
- package/lib/chart/themes/solar/charcoal/index.js +4 -0
- package/lib/chart/themes/solar/pearl/index.js +4 -0
- package/lib/checkbox/custom-elements.json +71 -0
- package/lib/checkbox/index.d.ts +89 -0
- package/lib/checkbox/index.js +170 -0
- package/lib/checkbox/themes/halo/dark/index.js +4 -0
- package/lib/checkbox/themes/halo/light/index.js +4 -0
- package/lib/checkbox/themes/solar/charcoal/index.js +4 -0
- package/lib/checkbox/themes/solar/pearl/index.js +4 -0
- package/lib/clock/custom-elements.json +108 -0
- package/lib/clock/index.d.ts +309 -0
- package/lib/clock/index.js +564 -0
- package/lib/clock/themes/halo/dark/index.js +2 -0
- package/lib/clock/themes/halo/light/index.js +2 -0
- package/lib/clock/themes/solar/charcoal/index.js +2 -0
- package/lib/clock/themes/solar/pearl/index.js +2 -0
- package/lib/clock/utils/TickManager.d.ts +14 -0
- package/lib/clock/utils/TickManager.js +66 -0
- package/lib/clock/utils/timestamps.d.ts +6 -0
- package/lib/clock/utils/timestamps.js +6 -0
- package/lib/collapse/custom-elements.json +79 -0
- package/lib/collapse/index.d.ts +119 -0
- package/lib/collapse/index.js +199 -0
- package/lib/collapse/themes/halo/dark/index.js +5 -0
- package/lib/collapse/themes/halo/light/index.js +5 -0
- package/lib/collapse/themes/solar/charcoal/index.js +5 -0
- package/lib/collapse/themes/solar/pearl/index.js +5 -0
- package/lib/color-dialog/custom-elements.json +193 -0
- package/lib/color-dialog/elements/color-palettes.d.ts +52 -0
- package/lib/color-dialog/elements/color-palettes.js +105 -0
- package/lib/color-dialog/elements/grayscale-palettes.d.ts +67 -0
- package/lib/color-dialog/elements/grayscale-palettes.js +164 -0
- package/lib/color-dialog/elements/palettes.d.ts +58 -0
- package/lib/color-dialog/elements/palettes.js +119 -0
- package/lib/color-dialog/helpers/color-helpers.d.ts +62 -0
- package/lib/color-dialog/helpers/color-helpers.js +258 -0
- package/lib/color-dialog/helpers/value-model.d.ts +75 -0
- package/lib/color-dialog/helpers/value-model.js +139 -0
- package/lib/color-dialog/index.d.ts +232 -0
- package/lib/color-dialog/index.js +457 -0
- package/lib/color-dialog/themes/halo/dark/index.js +7 -0
- package/lib/color-dialog/themes/halo/light/index.js +7 -0
- package/lib/color-dialog/themes/solar/charcoal/index.js +7 -0
- package/lib/color-dialog/themes/solar/pearl/index.js +7 -0
- package/lib/combo-box/custom-elements.json +207 -0
- package/lib/combo-box/helpers/filter.d.ts +10 -0
- package/lib/combo-box/helpers/filter.js +29 -0
- package/lib/combo-box/helpers/keyboard-event.d.ts +17 -0
- package/lib/combo-box/helpers/keyboard-event.js +19 -0
- package/lib/combo-box/helpers/types.d.ts +11 -0
- package/lib/combo-box/helpers/types.js +1 -0
- package/lib/combo-box/index.d.ts +523 -0
- package/lib/combo-box/index.js +1146 -0
- package/lib/combo-box/themes/halo/dark/index.js +8 -0
- package/lib/combo-box/themes/halo/light/index.js +8 -0
- package/lib/combo-box/themes/solar/charcoal/index.js +8 -0
- package/lib/combo-box/themes/solar/pearl/index.js +8 -0
- package/lib/counter/custom-elements.json +35 -0
- package/lib/counter/index.d.ts +89 -0
- package/lib/counter/index.js +155 -0
- package/lib/counter/themes/halo/dark/index.js +3 -0
- package/lib/counter/themes/halo/light/index.js +3 -0
- package/lib/counter/themes/solar/charcoal/index.js +3 -0
- package/lib/counter/themes/solar/pearl/index.js +3 -0
- package/lib/counter/utils.d.ts +13 -0
- package/lib/counter/utils.js +52 -0
- package/lib/datetime-picker/custom-elements.json +333 -0
- package/lib/datetime-picker/index.d.ts +498 -0
- package/lib/datetime-picker/index.js +1164 -0
- package/lib/datetime-picker/locales.d.ts +8 -0
- package/lib/datetime-picker/locales.js +46 -0
- package/lib/datetime-picker/themes/halo/dark/index.js +7 -0
- package/lib/datetime-picker/themes/halo/light/index.js +7 -0
- package/lib/datetime-picker/themes/solar/charcoal/index.js +7 -0
- package/lib/datetime-picker/themes/solar/pearl/index.js +7 -0
- package/lib/datetime-picker/types.d.ts +3 -0
- package/lib/datetime-picker/types.js +1 -0
- package/lib/datetime-picker/utils.d.ts +55 -0
- package/lib/datetime-picker/utils.js +92 -0
- package/lib/dialog/custom-elements.json +136 -0
- package/lib/dialog/draggable-element.d.ts +14 -0
- package/lib/dialog/draggable-element.js +221 -0
- package/lib/dialog/index.d.ts +199 -0
- package/lib/dialog/index.js +331 -0
- package/lib/dialog/themes/halo/dark/index.js +7 -0
- package/lib/dialog/themes/halo/light/index.js +7 -0
- package/lib/dialog/themes/solar/charcoal/index.js +7 -0
- package/lib/dialog/themes/solar/pearl/index.js +7 -0
- package/lib/email-field/custom-elements.json +199 -0
- package/lib/email-field/index.d.ts +152 -0
- package/lib/email-field/index.js +287 -0
- package/lib/email-field/themes/halo/dark/index.js +3 -0
- package/lib/email-field/themes/halo/light/index.js +3 -0
- package/lib/email-field/themes/solar/charcoal/index.js +3 -0
- package/lib/email-field/themes/solar/pearl/index.js +3 -0
- package/lib/events.d.ts +121 -0
- package/lib/events.js +2 -0
- package/lib/flag/custom-elements.json +35 -0
- package/lib/flag/index.d.ts +94 -0
- package/lib/flag/index.js +168 -0
- package/lib/flag/themes/halo/dark/index.js +2 -0
- package/lib/flag/themes/halo/light/index.js +2 -0
- package/lib/flag/themes/solar/charcoal/index.js +2 -0
- package/lib/flag/themes/solar/pearl/index.js +2 -0
- package/lib/flag/utils/FlagLoader.d.ts +47 -0
- package/lib/flag/utils/FlagLoader.js +86 -0
- package/lib/header/custom-elements.json +36 -0
- package/lib/header/index.d.ts +46 -0
- package/lib/header/index.js +76 -0
- package/lib/header/themes/halo/dark/index.js +2 -0
- package/lib/header/themes/halo/light/index.js +2 -0
- package/lib/header/themes/solar/charcoal/index.js +2 -0
- package/lib/header/themes/solar/pearl/index.js +2 -0
- package/lib/heatmap/custom-elements.json +151 -0
- package/lib/heatmap/helpers/color.d.ts +30 -0
- package/lib/heatmap/helpers/color.js +68 -0
- package/lib/heatmap/helpers/text.d.ts +26 -0
- package/lib/heatmap/helpers/text.js +91 -0
- package/lib/heatmap/helpers/track.d.ts +102 -0
- package/lib/heatmap/helpers/track.js +160 -0
- package/lib/heatmap/helpers/types.d.ts +40 -0
- package/lib/heatmap/helpers/types.js +1 -0
- package/lib/heatmap/index.d.ts +453 -0
- package/lib/heatmap/index.js +1104 -0
- package/lib/heatmap/themes/halo/dark/index.js +4 -0
- package/lib/heatmap/themes/halo/light/index.js +4 -0
- package/lib/heatmap/themes/solar/charcoal/index.js +4 -0
- package/lib/heatmap/themes/solar/pearl/index.js +4 -0
- package/lib/icon/custom-elements.json +34 -0
- package/lib/icon/index.d.ts +87 -0
- package/lib/icon/index.js +161 -0
- package/lib/icon/themes/halo/dark/index.js +2 -0
- package/lib/icon/themes/halo/light/index.js +2 -0
- package/lib/icon/themes/solar/charcoal/index.js +2 -0
- package/lib/icon/themes/solar/pearl/index.js +2 -0
- package/lib/icon/utils/IconLoader.d.ts +47 -0
- package/lib/icon/utils/IconLoader.js +86 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/interactive-chart/custom-elements.json +86 -0
- package/lib/interactive-chart/helpers/merge.d.ts +15 -0
- package/lib/interactive-chart/helpers/merge.js +28 -0
- package/lib/interactive-chart/helpers/types.d.ts +45 -0
- package/lib/interactive-chart/helpers/types.js +6 -0
- package/lib/interactive-chart/index.d.ts +380 -0
- package/lib/interactive-chart/index.js +1093 -0
- package/lib/interactive-chart/themes/halo/dark/index.js +3 -0
- package/lib/interactive-chart/themes/halo/light/index.js +3 -0
- package/lib/interactive-chart/themes/solar/charcoal/index.js +3 -0
- package/lib/interactive-chart/themes/solar/pearl/index.js +3 -0
- package/lib/item/custom-elements.json +153 -0
- package/lib/item/helpers/types.d.ts +57 -0
- package/lib/item/helpers/types.js +1 -0
- package/lib/item/index.d.ts +149 -0
- package/lib/item/index.js +252 -0
- package/lib/item/themes/halo/dark/index.js +4 -0
- package/lib/item/themes/halo/light/index.js +4 -0
- package/lib/item/themes/solar/charcoal/index.js +4 -0
- package/lib/item/themes/solar/pearl/index.js +4 -0
- package/lib/jsx.d.ts +223 -0
- package/lib/label/custom-elements.json +52 -0
- package/lib/label/index.d.ts +102 -0
- package/lib/label/index.js +252 -0
- package/lib/label/themes/halo/dark/index.js +3 -0
- package/lib/label/themes/halo/light/index.js +3 -0
- package/lib/label/themes/solar/charcoal/index.js +3 -0
- package/lib/label/themes/solar/pearl/index.js +3 -0
- package/lib/layout/custom-elements.json +163 -0
- package/lib/layout/index.d.ts +107 -0
- package/lib/layout/index.js +215 -0
- package/lib/layout/themes/halo/dark/index.js +2 -0
- package/lib/layout/themes/halo/light/index.js +2 -0
- package/lib/layout/themes/solar/charcoal/index.js +2 -0
- package/lib/layout/themes/solar/pearl/index.js +2 -0
- package/lib/led-gauge/custom-elements.json +113 -0
- package/lib/led-gauge/index.d.ts +143 -0
- package/lib/led-gauge/index.js +440 -0
- package/lib/led-gauge/themes/halo/dark/index.js +3 -0
- package/lib/led-gauge/themes/halo/light/index.js +3 -0
- package/lib/led-gauge/themes/solar/charcoal/index.js +3 -0
- package/lib/led-gauge/themes/solar/pearl/index.js +3 -0
- package/lib/list/custom-elements.json +111 -0
- package/lib/list/extensible-function.d.ts +8 -0
- package/lib/list/extensible-function.js +13 -0
- package/lib/list/helpers/list-renderer.d.ts +9 -0
- package/lib/list/helpers/list-renderer.js +35 -0
- package/lib/list/helpers/types.d.ts +3 -0
- package/lib/list/helpers/types.js +1 -0
- package/lib/list/index.d.ts +292 -0
- package/lib/list/index.js +604 -0
- package/lib/list/renderer.d.ts +36 -0
- package/lib/list/renderer.js +9 -0
- package/lib/list/themes/halo/dark/index.js +3 -0
- package/lib/list/themes/halo/light/index.js +3 -0
- package/lib/list/themes/solar/charcoal/index.js +3 -0
- package/lib/list/themes/solar/pearl/index.js +3 -0
- package/lib/loader/custom-elements.json +9 -0
- package/lib/loader/index.d.ts +41 -0
- package/lib/loader/index.js +65 -0
- package/lib/loader/themes/halo/dark/index.js +2 -0
- package/lib/loader/themes/halo/light/index.js +2 -0
- package/lib/loader/themes/solar/charcoal/index.js +2 -0
- package/lib/loader/themes/solar/pearl/index.js +2 -0
- package/lib/multi-input/custom-elements.json +238 -0
- package/lib/multi-input/helpers/types.d.ts +11 -0
- package/lib/multi-input/helpers/types.js +1 -0
- package/lib/multi-input/index.d.ts +297 -0
- package/lib/multi-input/index.js +591 -0
- package/lib/multi-input/themes/halo/dark/index.js +4 -0
- package/lib/multi-input/themes/halo/light/index.js +4 -0
- package/lib/multi-input/themes/solar/charcoal/index.js +4 -0
- package/lib/multi-input/themes/solar/pearl/index.js +4 -0
- package/lib/notification/custom-elements.json +95 -0
- package/lib/notification/elements/notification-tray.d.ts +97 -0
- package/lib/notification/elements/notification-tray.js +170 -0
- package/lib/notification/elements/notification.d.ts +90 -0
- package/lib/notification/elements/notification.js +157 -0
- package/lib/notification/helpers/status.d.ts +30 -0
- package/lib/notification/helpers/status.js +130 -0
- package/lib/notification/helpers/types.d.ts +10 -0
- package/lib/notification/helpers/types.js +1 -0
- package/lib/notification/index.d.ts +2 -0
- package/lib/notification/index.js +2 -0
- package/lib/notification/themes/halo/dark/index.js +5 -0
- package/lib/notification/themes/halo/light/index.js +5 -0
- package/lib/notification/themes/solar/charcoal/index.js +5 -0
- package/lib/notification/themes/solar/pearl/index.js +5 -0
- package/lib/number-field/custom-elements.json +200 -0
- package/lib/number-field/index.d.ts +294 -0
- package/lib/number-field/index.js +708 -0
- package/lib/number-field/themes/halo/dark/index.js +3 -0
- package/lib/number-field/themes/halo/light/index.js +3 -0
- package/lib/number-field/themes/solar/charcoal/index.js +3 -0
- package/lib/number-field/themes/solar/pearl/index.js +3 -0
- package/lib/overlay/custom-elements.json +342 -0
- package/lib/overlay/elements/overlay-backdrop.d.ts +46 -0
- package/lib/overlay/elements/overlay-backdrop.js +67 -0
- package/lib/overlay/elements/overlay-viewport.d.ts +40 -0
- package/lib/overlay/elements/overlay-viewport.js +56 -0
- package/lib/overlay/elements/overlay.d.ts +403 -0
- package/lib/overlay/elements/overlay.js +1427 -0
- package/lib/overlay/helpers/functions.d.ts +13 -0
- package/lib/overlay/helpers/functions.js +16 -0
- package/lib/overlay/helpers/types.d.ts +97 -0
- package/lib/overlay/helpers/types.js +16 -0
- package/lib/overlay/index.d.ts +2 -0
- package/lib/overlay/index.js +1 -0
- package/lib/overlay/managers/backdrop-manager.d.ts +45 -0
- package/lib/overlay/managers/backdrop-manager.js +96 -0
- package/lib/overlay/managers/close-manager.d.ts +54 -0
- package/lib/overlay/managers/close-manager.js +138 -0
- package/lib/overlay/managers/focus-manager.d.ts +71 -0
- package/lib/overlay/managers/focus-manager.js +228 -0
- package/lib/overlay/managers/interaction-lock-manager.d.ts +138 -0
- package/lib/overlay/managers/interaction-lock-manager.js +375 -0
- package/lib/overlay/managers/viewport-manager.d.ts +93 -0
- package/lib/overlay/managers/viewport-manager.js +207 -0
- package/lib/overlay/managers/zindex-manager.d.ts +80 -0
- package/lib/overlay/managers/zindex-manager.js +195 -0
- package/lib/overlay/themes/halo/dark/index.js +4 -0
- package/lib/overlay/themes/halo/light/index.js +4 -0
- package/lib/overlay/themes/solar/charcoal/index.js +4 -0
- package/lib/overlay/themes/solar/pearl/index.js +4 -0
- package/lib/overlay-menu/custom-elements.json +196 -0
- package/lib/overlay-menu/helpers/types.d.ts +8 -0
- package/lib/overlay-menu/helpers/types.js +1 -0
- package/lib/overlay-menu/helpers/uuid.d.ts +7 -0
- package/lib/overlay-menu/helpers/uuid.js +13 -0
- package/lib/overlay-menu/index.d.ts +380 -0
- package/lib/overlay-menu/index.js +921 -0
- package/lib/overlay-menu/managers/menu-manager.d.ts +98 -0
- package/lib/overlay-menu/managers/menu-manager.js +240 -0
- package/lib/overlay-menu/themes/halo/dark/index.js +5 -0
- package/lib/overlay-menu/themes/halo/light/index.js +5 -0
- package/lib/overlay-menu/themes/solar/charcoal/index.js +5 -0
- package/lib/overlay-menu/themes/solar/pearl/index.js +5 -0
- package/lib/pagination/custom-elements.json +93 -0
- package/lib/pagination/helpers/types.d.ts +9 -0
- package/lib/pagination/helpers/types.js +1 -0
- package/lib/pagination/index.d.ts +207 -0
- package/lib/pagination/index.js +400 -0
- package/lib/pagination/themes/halo/dark/index.js +6 -0
- package/lib/pagination/themes/halo/light/index.js +6 -0
- package/lib/pagination/themes/solar/charcoal/index.js +6 -0
- package/lib/pagination/themes/solar/pearl/index.js +6 -0
- package/lib/panel/custom-elements.json +39 -0
- package/lib/panel/index.d.ts +48 -0
- package/lib/panel/index.js +77 -0
- package/lib/panel/themes/halo/dark/index.js +2 -0
- package/lib/panel/themes/halo/light/index.js +2 -0
- package/lib/panel/themes/solar/charcoal/index.js +2 -0
- package/lib/panel/themes/solar/pearl/index.js +2 -0
- package/lib/password-field/custom-elements.json +156 -0
- package/lib/password-field/index.d.ts +140 -0
- package/lib/password-field/index.js +258 -0
- package/lib/password-field/themes/halo/dark/index.js +3 -0
- package/lib/password-field/themes/halo/light/index.js +3 -0
- package/lib/password-field/themes/solar/charcoal/index.js +3 -0
- package/lib/password-field/themes/solar/pearl/index.js +3 -0
- package/lib/pill/custom-elements.json +95 -0
- package/lib/pill/index.d.ts +97 -0
- package/lib/pill/index.js +162 -0
- package/lib/pill/themes/halo/dark/index.js +3 -0
- package/lib/pill/themes/halo/light/index.js +3 -0
- package/lib/pill/themes/solar/charcoal/index.js +3 -0
- package/lib/pill/themes/solar/pearl/index.js +3 -0
- package/lib/progress-bar/custom-elements.json +58 -0
- package/lib/progress-bar/index.d.ts +82 -0
- package/lib/progress-bar/index.js +159 -0
- package/lib/progress-bar/themes/halo/dark/index.js +2 -0
- package/lib/progress-bar/themes/halo/light/index.js +2 -0
- package/lib/progress-bar/themes/solar/charcoal/index.js +2 -0
- package/lib/progress-bar/themes/solar/pearl/index.js +2 -0
- package/lib/radio-button/custom-elements.json +84 -0
- package/lib/radio-button/index.d.ts +106 -0
- package/lib/radio-button/index.js +195 -0
- package/lib/radio-button/radio-button-registry.d.ts +21 -0
- package/lib/radio-button/radio-button-registry.js +40 -0
- package/lib/radio-button/themes/halo/dark/index.js +3 -0
- package/lib/radio-button/themes/halo/light/index.js +3 -0
- package/lib/radio-button/themes/solar/charcoal/index.js +3 -0
- package/lib/radio-button/themes/solar/pearl/index.js +3 -0
- package/lib/rating/custom-elements.json +58 -0
- package/lib/rating/index.d.ts +91 -0
- package/lib/rating/index.js +158 -0
- package/lib/rating/themes/halo/dark/index.js +2 -0
- package/lib/rating/themes/halo/light/index.js +2 -0
- package/lib/rating/themes/solar/charcoal/index.js +2 -0
- package/lib/rating/themes/solar/pearl/index.js +2 -0
- package/lib/search-field/custom-elements.json +173 -0
- package/lib/search-field/index.d.ts +134 -0
- package/lib/search-field/index.js +254 -0
- package/lib/search-field/themes/halo/dark/index.js +3 -0
- package/lib/search-field/themes/halo/light/index.js +3 -0
- package/lib/search-field/themes/solar/charcoal/index.js +3 -0
- package/lib/search-field/themes/solar/pearl/index.js +3 -0
- package/lib/select/custom-elements.json +103 -0
- package/lib/select/helpers/types.d.ts +3 -0
- package/lib/select/helpers/types.js +1 -0
- package/lib/select/index.d.ts +388 -0
- package/lib/select/index.js +942 -0
- package/lib/select/themes/halo/dark/index.js +5 -0
- package/lib/select/themes/halo/light/index.js +5 -0
- package/lib/select/themes/solar/charcoal/index.js +5 -0
- package/lib/select/themes/solar/pearl/index.js +5 -0
- package/lib/sidebar-layout/custom-elements.json +72 -0
- package/lib/sidebar-layout/index.d.ts +69 -0
- package/lib/sidebar-layout/index.js +135 -0
- package/lib/sidebar-layout/themes/halo/dark/index.js +3 -0
- package/lib/sidebar-layout/themes/halo/light/index.js +3 -0
- package/lib/sidebar-layout/themes/solar/charcoal/index.js +3 -0
- package/lib/sidebar-layout/themes/solar/pearl/index.js +3 -0
- package/lib/slider/custom-elements.json +181 -0
- package/lib/slider/index.d.ts +409 -0
- package/lib/slider/index.js +1188 -0
- package/lib/slider/themes/halo/dark/index.js +3 -0
- package/lib/slider/themes/halo/light/index.js +3 -0
- package/lib/slider/themes/solar/charcoal/index.js +3 -0
- package/lib/slider/themes/solar/pearl/index.js +3 -0
- package/lib/sparkline/custom-elements.json +59 -0
- package/lib/sparkline/index.d.ts +107 -0
- package/lib/sparkline/index.js +188 -0
- package/lib/sparkline/themes/halo/dark/index.js +2 -0
- package/lib/sparkline/themes/halo/light/index.js +2 -0
- package/lib/sparkline/themes/solar/charcoal/index.js +2 -0
- package/lib/sparkline/themes/solar/pearl/index.js +2 -0
- package/lib/swing-gauge/const.d.ts +22 -0
- package/lib/swing-gauge/const.js +26 -0
- package/lib/swing-gauge/custom-elements.json +109 -0
- package/lib/swing-gauge/helpers.d.ts +8 -0
- package/lib/swing-gauge/helpers.js +105 -0
- package/lib/swing-gauge/index.d.ts +294 -0
- package/lib/swing-gauge/index.js +762 -0
- package/lib/swing-gauge/themes/halo/dark/index.js +3 -0
- package/lib/swing-gauge/themes/halo/light/index.js +3 -0
- package/lib/swing-gauge/themes/solar/charcoal/index.js +3 -0
- package/lib/swing-gauge/themes/solar/pearl/index.js +3 -0
- package/lib/swing-gauge/types.d.ts +34 -0
- package/lib/swing-gauge/types.js +1 -0
- package/lib/tab/custom-elements.json +123 -0
- package/lib/tab/index.d.ts +118 -0
- package/lib/tab/index.js +211 -0
- package/lib/tab/themes/halo/dark/index.js +4 -0
- package/lib/tab/themes/halo/light/index.js +4 -0
- package/lib/tab/themes/solar/charcoal/index.js +4 -0
- package/lib/tab/themes/solar/pearl/index.js +4 -0
- package/lib/tab-bar/custom-elements.json +52 -0
- package/lib/tab-bar/helpers/animate.d.ts +16 -0
- package/lib/tab-bar/helpers/animate.js +53 -0
- package/lib/tab-bar/index.d.ts +108 -0
- package/lib/tab-bar/index.js +220 -0
- package/lib/tab-bar/themes/halo/dark/index.js +4 -0
- package/lib/tab-bar/themes/halo/light/index.js +4 -0
- package/lib/tab-bar/themes/solar/charcoal/index.js +4 -0
- package/lib/tab-bar/themes/solar/pearl/index.js +4 -0
- package/lib/text-field/custom-elements.json +210 -0
- package/lib/text-field/index.d.ts +171 -0
- package/lib/text-field/index.js +319 -0
- package/lib/text-field/themes/halo/dark/index.js +3 -0
- package/lib/text-field/themes/halo/light/index.js +3 -0
- package/lib/text-field/themes/solar/charcoal/index.js +3 -0
- package/lib/text-field/themes/solar/pearl/index.js +3 -0
- package/lib/time-picker/custom-elements.json +124 -0
- package/lib/time-picker/index.d.ts +379 -0
- package/lib/time-picker/index.js +777 -0
- package/lib/time-picker/themes/halo/dark/index.js +4 -0
- package/lib/time-picker/themes/halo/light/index.js +4 -0
- package/lib/time-picker/themes/solar/charcoal/index.js +4 -0
- package/lib/time-picker/themes/solar/pearl/index.js +4 -0
- package/lib/toggle/custom-elements.json +84 -0
- package/lib/toggle/index.d.ts +77 -0
- package/lib/toggle/index.js +134 -0
- package/lib/toggle/themes/halo/dark/index.js +2 -0
- package/lib/toggle/themes/halo/light/index.js +2 -0
- package/lib/toggle/themes/solar/charcoal/index.js +2 -0
- package/lib/toggle/themes/solar/pearl/index.js +2 -0
- package/lib/tooltip/custom-elements.json +62 -0
- package/lib/tooltip/elements/title-tooltip.d.ts +1 -0
- package/lib/tooltip/elements/title-tooltip.js +18 -0
- package/lib/tooltip/elements/tooltip-element.d.ts +21 -0
- package/lib/tooltip/elements/tooltip-element.js +54 -0
- package/lib/tooltip/helpers/overflow-tooltip.d.ts +9 -0
- package/lib/tooltip/helpers/overflow-tooltip.js +19 -0
- package/lib/tooltip/helpers/renderer.d.ts +8 -0
- package/lib/tooltip/helpers/renderer.js +11 -0
- package/lib/tooltip/helpers/types.d.ts +23 -0
- package/lib/tooltip/helpers/types.js +1 -0
- package/lib/tooltip/index.d.ts +232 -0
- package/lib/tooltip/index.js +479 -0
- package/lib/tooltip/managers/tooltip-manager.d.ts +15 -0
- package/lib/tooltip/managers/tooltip-manager.js +144 -0
- package/lib/tooltip/themes/halo/dark/index.js +3 -0
- package/lib/tooltip/themes/halo/light/index.js +3 -0
- package/lib/tooltip/themes/solar/charcoal/index.js +3 -0
- package/lib/tooltip/themes/solar/pearl/index.js +3 -0
- package/lib/tornado-chart/custom-elements.json +45 -0
- package/lib/tornado-chart/elements/tornado-chart.d.ts +78 -0
- package/lib/tornado-chart/elements/tornado-chart.js +125 -0
- package/lib/tornado-chart/elements/tornado-item.d.ts +110 -0
- package/lib/tornado-chart/elements/tornado-item.js +209 -0
- package/lib/tornado-chart/index.d.ts +2 -0
- package/lib/tornado-chart/index.js +2 -0
- package/lib/tornado-chart/themes/halo/dark/index.js +6 -0
- package/lib/tornado-chart/themes/halo/light/index.js +6 -0
- package/lib/tornado-chart/themes/solar/charcoal/index.js +6 -0
- package/lib/tornado-chart/themes/solar/pearl/index.js +6 -0
- package/lib/tree/custom-elements.json +100 -0
- package/lib/tree/elements/tree-item.d.ts +96 -0
- package/lib/tree/elements/tree-item.js +182 -0
- package/lib/tree/elements/tree.d.ts +156 -0
- package/lib/tree/elements/tree.js +286 -0
- package/lib/tree/helpers/renderer.d.ts +5 -0
- package/lib/tree/helpers/renderer.js +33 -0
- package/lib/tree/helpers/types.d.ts +17 -0
- package/lib/tree/helpers/types.js +1 -0
- package/lib/tree/index.d.ts +4 -0
- package/lib/tree/index.js +3 -0
- package/lib/tree/managers/tree-manager.d.ts +236 -0
- package/lib/tree/managers/tree-manager.js +379 -0
- package/lib/tree/themes/halo/dark/index.js +7 -0
- package/lib/tree/themes/halo/light/index.js +7 -0
- package/lib/tree/themes/solar/charcoal/index.js +7 -0
- package/lib/tree/themes/solar/pearl/index.js +7 -0
- package/lib/tree-select/custom-elements.json +107 -0
- package/lib/tree-select/helpers/types.d.ts +4 -0
- package/lib/tree-select/helpers/types.js +1 -0
- package/lib/tree-select/index.d.ts +400 -0
- package/lib/tree-select/index.js +881 -0
- package/lib/tree-select/themes/halo/dark/index.js +12 -0
- package/lib/tree-select/themes/halo/light/index.js +12 -0
- package/lib/tree-select/themes/solar/charcoal/index.js +12 -0
- package/lib/tree-select/themes/solar/pearl/index.js +12 -0
- package/package.json +9 -9
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { AnimationTaskRunner } from '@refinitiv-ui/utils';
|
|
2
|
+
import { getOverlays } from './zindex-manager';
|
|
3
|
+
/**
|
|
4
|
+
* Check if two arrays are shallow equal
|
|
5
|
+
* @param left Left side array
|
|
6
|
+
* @param right Right side array
|
|
7
|
+
* @returns true if arrays are equal
|
|
8
|
+
*/
|
|
9
|
+
const equal = (left, right) => {
|
|
10
|
+
const length = left.length;
|
|
11
|
+
if (length !== right.length) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
for (let i = 0; i < length; i += 1) {
|
|
15
|
+
if (left[i] !== right[i]) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Scroll lock manager singleton is responsible for locking
|
|
23
|
+
* all scrollbars apart one in the active overlay
|
|
24
|
+
*/
|
|
25
|
+
export class ScrollLockManager {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.scrollTop = 0;
|
|
28
|
+
this.scrollLeft = 0;
|
|
29
|
+
this.lockScroll = false;
|
|
30
|
+
/**
|
|
31
|
+
* A list of elements that are currently interactive
|
|
32
|
+
* aka `pointer-events: auto` applied
|
|
33
|
+
*/
|
|
34
|
+
this.interactiveElements = [];
|
|
35
|
+
this.pointerEventsMap = new Map();
|
|
36
|
+
this.scrollThrottler = new AnimationTaskRunner();
|
|
37
|
+
/**
|
|
38
|
+
* Run on scroll event. If onscroll happened as a result of user interaction, restore the original position
|
|
39
|
+
* @param event Scroll event
|
|
40
|
+
* @returns {void}
|
|
41
|
+
*/
|
|
42
|
+
this.onScroll = (event) => {
|
|
43
|
+
const path = event.composedPath();
|
|
44
|
+
if (this.lockScroll && !path.includes(this.interactiveElement)) {
|
|
45
|
+
this.restoreScrollPosition();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Apply scroll lock as a result of user interaction
|
|
50
|
+
* @returns {void}
|
|
51
|
+
*/
|
|
52
|
+
this.applyScrollLock = () => {
|
|
53
|
+
// this must be applied in order to make the difference between user scroll and system scroll
|
|
54
|
+
// otherwise there must not be scroll prevention on resize/orientationchange events
|
|
55
|
+
this.scrollThrottler.cancel();
|
|
56
|
+
this.lockScroll = true;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Remove scroll lock when user interaction has finished
|
|
60
|
+
* @returns {void}
|
|
61
|
+
*/
|
|
62
|
+
this.removeScrollLock = () => {
|
|
63
|
+
this.scrollThrottler.schedule(() => {
|
|
64
|
+
this.lockScroll = false;
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Run on wheel event
|
|
69
|
+
* If wheel happened as a result of user interaction, restore the original position
|
|
70
|
+
* @param event Wheel event
|
|
71
|
+
* @returns {void}
|
|
72
|
+
*/
|
|
73
|
+
this.onWheelScroll = (event) => {
|
|
74
|
+
if (this.shouldCancelWheel(event)) {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Run on touch events.
|
|
80
|
+
* If touch happened as a result of user interaction, restore the original position
|
|
81
|
+
* @param event Touch event
|
|
82
|
+
* @returns {void}
|
|
83
|
+
*/
|
|
84
|
+
this.onTouchScroll = (event) => {
|
|
85
|
+
if (event.cancelable && this.shouldCancelTouch(event)) { /* Not all touch events can be cancelled */
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get a collection of interactive elements
|
|
92
|
+
* @param overlay Overlay to check
|
|
93
|
+
* @returns interactive elements
|
|
94
|
+
*/
|
|
95
|
+
static getInteractiveElements(overlay) {
|
|
96
|
+
if (!overlay) {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
// overlay is always included
|
|
100
|
+
const interactiveElements = [overlay];
|
|
101
|
+
if (overlay.interactiveElements && overlay.interactiveElements.length) {
|
|
102
|
+
return interactiveElements.concat(overlay.interactiveElements);
|
|
103
|
+
}
|
|
104
|
+
if (!overlay.lockPositionTarget && overlay.positionTarget instanceof HTMLElement) {
|
|
105
|
+
interactiveElements.push(overlay.positionTarget);
|
|
106
|
+
}
|
|
107
|
+
return interactiveElements;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The list of active overlays, which participate
|
|
111
|
+
* in lock management
|
|
112
|
+
*/
|
|
113
|
+
get overlays() {
|
|
114
|
+
return getOverlays().filter(overlay => !overlay.noInteractionLock);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Lock the screen and make top most overlay
|
|
118
|
+
* and its position target interactive
|
|
119
|
+
* @returns {void}
|
|
120
|
+
*/
|
|
121
|
+
applyLock() {
|
|
122
|
+
const topOverlay = this.overlays[0];
|
|
123
|
+
const oldInteractiveElements = this.interactiveElements;
|
|
124
|
+
const newInteractiveElements = ScrollLockManager.getInteractiveElements(topOverlay);
|
|
125
|
+
// do nothing if the list is the same
|
|
126
|
+
if (equal(oldInteractiveElements, newInteractiveElements)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (!oldInteractiveElements.length && newInteractiveElements.length) {
|
|
130
|
+
// lock the screen
|
|
131
|
+
this.saveScrollPosition();
|
|
132
|
+
this.lockEvents();
|
|
133
|
+
this.applyLockBackdrop();
|
|
134
|
+
}
|
|
135
|
+
else if (oldInteractiveElements.length && !newInteractiveElements.length) {
|
|
136
|
+
// unlock the screen
|
|
137
|
+
this.unlockEvents();
|
|
138
|
+
this.removeLockBackdrop();
|
|
139
|
+
}
|
|
140
|
+
// restore overlay events to original value
|
|
141
|
+
for (let i = 0; i < oldInteractiveElements.length; i += 1) {
|
|
142
|
+
this.restorePointerEvents(oldInteractiveElements[i]);
|
|
143
|
+
}
|
|
144
|
+
// make overlay interactive by applying pointer-events: auto;
|
|
145
|
+
for (let i = 0; i < newInteractiveElements.length; i += 1) {
|
|
146
|
+
this.setPointerEvents(newInteractiveElements[i]);
|
|
147
|
+
}
|
|
148
|
+
this.interactiveElements = newInteractiveElements;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Set pointer events style tag
|
|
152
|
+
* @param el Element to unlock
|
|
153
|
+
* @param [value=auto] Value of pointer events
|
|
154
|
+
* @returns {void}
|
|
155
|
+
*/
|
|
156
|
+
setPointerEvents(el, value = 'auto') {
|
|
157
|
+
if (el) {
|
|
158
|
+
this.pointerEventsMap.set(el, el.style.pointerEvents);
|
|
159
|
+
el.style.setProperty('pointer-events', value);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Restore pointer events style tag
|
|
164
|
+
* @param el Element to restore
|
|
165
|
+
* @returns {void}
|
|
166
|
+
*/
|
|
167
|
+
restorePointerEvents(el) {
|
|
168
|
+
if (el) {
|
|
169
|
+
const pointerEvents = this.pointerEventsMap.get(el);
|
|
170
|
+
this.pointerEventsMap.delete(el);
|
|
171
|
+
if (pointerEvents) {
|
|
172
|
+
el.style.setProperty('pointer-events', pointerEvents);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
el.style.removeProperty('pointer-events');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the top most interactive element
|
|
181
|
+
* @returns element
|
|
182
|
+
*/
|
|
183
|
+
get interactiveElement() {
|
|
184
|
+
return this.interactiveElements[this.interactiveElements.length - 1];
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Memoize the scroll position of the outside scrolling element.
|
|
188
|
+
* @returns {void}
|
|
189
|
+
*/
|
|
190
|
+
saveScrollPosition() {
|
|
191
|
+
if (document.scrollingElement) {
|
|
192
|
+
this.scrollTop = document.scrollingElement.scrollTop;
|
|
193
|
+
this.scrollLeft = document.scrollingElement.scrollLeft;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// Since we don't know if is the body or html, get max.
|
|
197
|
+
this.scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
|
|
198
|
+
this.scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Resets the scroll position of the outside scrolling element.
|
|
203
|
+
* @returns {void}
|
|
204
|
+
*/
|
|
205
|
+
restoreScrollPosition() {
|
|
206
|
+
if (document.scrollingElement) {
|
|
207
|
+
document.scrollingElement.scrollTop = this.scrollTop;
|
|
208
|
+
document.scrollingElement.scrollLeft = this.scrollLeft;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Since we don't know if is the body or html, set both.
|
|
212
|
+
document.documentElement.scrollTop = document.body.scrollTop = this.scrollTop;
|
|
213
|
+
document.documentElement.scrollLeft = document.body.scrollLeft = this.scrollLeft;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Listen for scroll and wheel events, to apply the correct lock logic
|
|
218
|
+
* @returns {void}
|
|
219
|
+
*/
|
|
220
|
+
lockEvents() {
|
|
221
|
+
const wheelEventConf = {
|
|
222
|
+
capture: true,
|
|
223
|
+
passive: false
|
|
224
|
+
};
|
|
225
|
+
document.addEventListener('wheel', this.onWheelScroll, wheelEventConf);
|
|
226
|
+
document.addEventListener('touchstart', this.onTouchScroll, wheelEventConf);
|
|
227
|
+
document.addEventListener('touchmove', this.onTouchScroll, wheelEventConf);
|
|
228
|
+
document.addEventListener('touchend', this.onTouchScroll, wheelEventConf);
|
|
229
|
+
const scrollEventConf = {
|
|
230
|
+
capture: true,
|
|
231
|
+
passive: true /* passive improves scrolling performance. See https://developers.google.com/web/tools/lighthouse/audits/passive-event-listeners how. This does not work in IE11 */
|
|
232
|
+
};
|
|
233
|
+
document.addEventListener('scroll', this.onScroll, scrollEventConf);
|
|
234
|
+
document.addEventListener('mousedown', this.applyScrollLock, scrollEventConf);
|
|
235
|
+
document.addEventListener('touchstart', this.applyScrollLock, scrollEventConf);
|
|
236
|
+
document.addEventListener('keydown', this.applyScrollLock, scrollEventConf);
|
|
237
|
+
document.addEventListener('mouseup', this.removeScrollLock, scrollEventConf);
|
|
238
|
+
document.addEventListener('touchend', this.removeScrollLock, scrollEventConf);
|
|
239
|
+
document.addEventListener('keyup', this.removeScrollLock, scrollEventConf);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Remove scroll and wheel listeners
|
|
243
|
+
* @returns {void}
|
|
244
|
+
*/
|
|
245
|
+
unlockEvents() {
|
|
246
|
+
const wheelEventConf = {
|
|
247
|
+
capture: true,
|
|
248
|
+
passive: false
|
|
249
|
+
};
|
|
250
|
+
document.removeEventListener('wheel', this.onWheelScroll, wheelEventConf);
|
|
251
|
+
document.removeEventListener('touchstart', this.onTouchScroll, wheelEventConf);
|
|
252
|
+
document.removeEventListener('touchmove', this.onTouchScroll, wheelEventConf);
|
|
253
|
+
document.removeEventListener('touchend', this.onTouchScroll, wheelEventConf);
|
|
254
|
+
const scrollEventConf = {
|
|
255
|
+
capture: true,
|
|
256
|
+
passive: true
|
|
257
|
+
};
|
|
258
|
+
document.removeEventListener('scroll', this.onScroll, scrollEventConf);
|
|
259
|
+
document.removeEventListener('mousedown', this.applyScrollLock, scrollEventConf);
|
|
260
|
+
document.removeEventListener('touchstart', this.applyScrollLock, scrollEventConf);
|
|
261
|
+
document.removeEventListener('keydown', this.applyScrollLock, scrollEventConf);
|
|
262
|
+
document.removeEventListener('mouseup', this.removeScrollLock, scrollEventConf);
|
|
263
|
+
document.removeEventListener('touchend', this.removeScrollLock, scrollEventConf);
|
|
264
|
+
document.removeEventListener('keyup', this.removeScrollLock, scrollEventConf);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Add locking backdrop and prevent pointer events on document
|
|
268
|
+
* @returns {void}
|
|
269
|
+
*/
|
|
270
|
+
applyLockBackdrop() {
|
|
271
|
+
this.setPointerEvents(document.documentElement, 'none'); /* prevent scrolling on all other scrollable elements */
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Remove locking backdrop and prevent pointer events on document
|
|
275
|
+
* @returns {void}
|
|
276
|
+
*/
|
|
277
|
+
removeLockBackdrop() {
|
|
278
|
+
this.restorePointerEvents(document.documentElement);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Check if wheel event should be cancelled
|
|
282
|
+
* @param event Touch event
|
|
283
|
+
* @return shouldCancelTouch True if the touch event should be cancelled
|
|
284
|
+
*/
|
|
285
|
+
shouldCancelTouch(event) {
|
|
286
|
+
const { targetTouches, type, target } = event;
|
|
287
|
+
if (type === 'touchend') {
|
|
288
|
+
this.lastTouchPosition = undefined;
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
// store touch position
|
|
292
|
+
if (type === 'touchstart') {
|
|
293
|
+
const touch = targetTouches[0];
|
|
294
|
+
this.lastTouchPosition = {
|
|
295
|
+
pageX: touch.pageX,
|
|
296
|
+
pageY: touch.pageY,
|
|
297
|
+
target
|
|
298
|
+
};
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
if (!this.lastTouchPosition) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
// 'touchmove'
|
|
305
|
+
const touch = targetTouches[0];
|
|
306
|
+
const deltaX = this.lastTouchPosition.pageX - touch.pageX;
|
|
307
|
+
const deltaY = this.lastTouchPosition.pageY - touch.pageY;
|
|
308
|
+
return this.shouldCancelScroll(event, deltaY, deltaX);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Check if wheel event should be cancelled
|
|
312
|
+
* @param event Wheel event
|
|
313
|
+
* @return shouldCancelWheel True if the scroll event should be cancelled
|
|
314
|
+
*/
|
|
315
|
+
shouldCancelWheel(event) {
|
|
316
|
+
const { deltaX, deltaY } = event;
|
|
317
|
+
return this.shouldCancelScroll(event, deltaY, deltaX);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Check if wheel event should be cancelled
|
|
321
|
+
* @param event Wheel event
|
|
322
|
+
* @param deltaY Scroll delta on Y axis
|
|
323
|
+
* @param deltaX Scroll delta on X axis
|
|
324
|
+
* @return shouldCancel True if the event should be cancelled
|
|
325
|
+
*/
|
|
326
|
+
shouldCancelScroll(event, deltaY, deltaX) {
|
|
327
|
+
const isVerticalScroll = Math.abs(deltaY) >= Math.abs(deltaX);
|
|
328
|
+
const path = [...event.composedPath()];
|
|
329
|
+
let idx = -1;
|
|
330
|
+
const interactiveElements = [...this.interactiveElements];
|
|
331
|
+
// calculate if the wheel event should be stopped according to locked
|
|
332
|
+
while (idx === -1 && interactiveElements.length) {
|
|
333
|
+
idx = path.indexOf(interactiveElements.pop());
|
|
334
|
+
}
|
|
335
|
+
// scroll happened outside the locked container
|
|
336
|
+
if (idx === -1) {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
const checkSlice = path.slice(0, idx + 1);
|
|
340
|
+
const canScroll = isVerticalScroll ? (element) => {
|
|
341
|
+
const style = window.getComputedStyle(element);
|
|
342
|
+
if (style.overflowY === 'scroll' || style.overflowY === 'auto') {
|
|
343
|
+
// delta < 0 is scroll up, delta > 0 is scroll down.
|
|
344
|
+
return deltaY < 0 ? element.scrollTop > 0 : element.scrollTop < element.scrollHeight - element.clientHeight;
|
|
345
|
+
}
|
|
346
|
+
return false;
|
|
347
|
+
} : (element) => {
|
|
348
|
+
const style = window.getComputedStyle(element);
|
|
349
|
+
if (style.overflowX === 'scroll' || style.overflowX === 'auto') {
|
|
350
|
+
// delta < 0 is scroll left, delta > 0 is scroll right.
|
|
351
|
+
return deltaX < 0 ? element.scrollLeft > 0 : element.scrollLeft < element.scrollWidth - element.clientWidth;
|
|
352
|
+
}
|
|
353
|
+
return false;
|
|
354
|
+
};
|
|
355
|
+
while (checkSlice.length) {
|
|
356
|
+
const node = checkSlice.shift();
|
|
357
|
+
if (node && node.nodeType !== Node.ELEMENT_NODE) {
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
if (canScroll(node)) {
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
const locker = new ScrollLockManager(); /* Locker is a singleton */
|
|
368
|
+
/**
|
|
369
|
+
* Lock the screen and make top most overlay
|
|
370
|
+
* and its position target interactive
|
|
371
|
+
* @returns {void}
|
|
372
|
+
*/
|
|
373
|
+
export const applyLock = () => {
|
|
374
|
+
locker.applyLock();
|
|
375
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Overlay } from '../elements/overlay';
|
|
2
|
+
import '../elements/overlay-viewport';
|
|
3
|
+
import { ViewAreaInfo } from '../helpers/types';
|
|
4
|
+
/**
|
|
5
|
+
* Viewport manager singleton is responsible for getting
|
|
6
|
+
* viewport sizes and reacting on viewport changes
|
|
7
|
+
* @returns {void}
|
|
8
|
+
*/
|
|
9
|
+
export declare class ViewportManager {
|
|
10
|
+
private registry;
|
|
11
|
+
private viewRegistry;
|
|
12
|
+
private refitFrame;
|
|
13
|
+
private screenViewport;
|
|
14
|
+
/**
|
|
15
|
+
* Refit all overlays
|
|
16
|
+
* @returns {void}
|
|
17
|
+
*/
|
|
18
|
+
private callRefit;
|
|
19
|
+
/**
|
|
20
|
+
* Create overlay-viewport and insert it before the provided node
|
|
21
|
+
* @param insertBefore A node to insert before
|
|
22
|
+
* @returns created overlay-viewport
|
|
23
|
+
*/
|
|
24
|
+
private createViewport;
|
|
25
|
+
/**
|
|
26
|
+
* Remove overlay-viewport from DOM tree
|
|
27
|
+
* @param viewport overlay-viewport to remove
|
|
28
|
+
* @returns {void}
|
|
29
|
+
*/
|
|
30
|
+
private removeViewport;
|
|
31
|
+
/**
|
|
32
|
+
* Set screen sizing viewport
|
|
33
|
+
* @returns void
|
|
34
|
+
*/
|
|
35
|
+
private setScreenViewport;
|
|
36
|
+
/**
|
|
37
|
+
* Removes screen sizing viewport
|
|
38
|
+
* @returns void
|
|
39
|
+
*/
|
|
40
|
+
private removeScreenViewport;
|
|
41
|
+
/**
|
|
42
|
+
* Reset sizing for viewport
|
|
43
|
+
* @param viewport Viewport to reset sizing for
|
|
44
|
+
* @returns {void}
|
|
45
|
+
*/
|
|
46
|
+
private resetViewportSizing;
|
|
47
|
+
getViewAreaInfo(overlay: Overlay): ViewAreaInfo;
|
|
48
|
+
register(overlay: Overlay): void;
|
|
49
|
+
deregister(overlay: Overlay): void;
|
|
50
|
+
/**
|
|
51
|
+
* @returns count of elements inside manager
|
|
52
|
+
*/
|
|
53
|
+
size(): number;
|
|
54
|
+
/**
|
|
55
|
+
* applies deregister for each element in registry
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
clear(): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Register the new overlay. Must be run to let start behaviour to listen for viewport events
|
|
62
|
+
* @param overlay Overlay
|
|
63
|
+
* @returns {void}
|
|
64
|
+
*/
|
|
65
|
+
export declare const register: (overlay: Overlay) => void;
|
|
66
|
+
/**
|
|
67
|
+
* Deregister the overlay
|
|
68
|
+
* @param overlay Overlay
|
|
69
|
+
* @returns {void}
|
|
70
|
+
*/
|
|
71
|
+
export declare const deregister: (overlay: Overlay) => void;
|
|
72
|
+
/**
|
|
73
|
+
* @typedef {Object} ViewAreaInfo
|
|
74
|
+
* @property {Number} viewHeight - The height of view area
|
|
75
|
+
* @property {Number} viewWidth - The width of view area
|
|
76
|
+
* @property {Number} [offsetTop=0] - iOS only the view area vertical offset
|
|
77
|
+
* @property {Number} [offsetLeft=0] - iOS only the view area horizontal offset
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* Get sizing information of the viewport for overlay
|
|
81
|
+
* @param overlay Overlay to get info for
|
|
82
|
+
* @return area info
|
|
83
|
+
*/
|
|
84
|
+
export declare const getViewAreaInfo: (overlay: Overlay) => ViewAreaInfo;
|
|
85
|
+
/**
|
|
86
|
+
* @returns count of elements inside manager
|
|
87
|
+
*/
|
|
88
|
+
export declare const size: () => number;
|
|
89
|
+
/**
|
|
90
|
+
* removes all elements from registry
|
|
91
|
+
* @returns {void}
|
|
92
|
+
*/
|
|
93
|
+
export declare const clear: () => void;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { AnimationTaskRunner } from '@refinitiv-ui/utils';
|
|
2
|
+
import '../elements/overlay-viewport';
|
|
3
|
+
/**
|
|
4
|
+
* Default values for area info
|
|
5
|
+
*/
|
|
6
|
+
const viewAreaInfo = {
|
|
7
|
+
viewHeight: 0,
|
|
8
|
+
viewWidth: 0,
|
|
9
|
+
offsetTop: 0,
|
|
10
|
+
offsetLeft: 0,
|
|
11
|
+
offsetBottom: 0,
|
|
12
|
+
offsetRight: 0,
|
|
13
|
+
viewOffsetTop: 0,
|
|
14
|
+
viewOffsetLeft: 0
|
|
15
|
+
};
|
|
16
|
+
// Used to capture scroll events
|
|
17
|
+
const ScrollEventOptions = { capture: true, passive: true };
|
|
18
|
+
/**
|
|
19
|
+
* Viewport manager singleton is responsible for getting
|
|
20
|
+
* viewport sizes and reacting on viewport changes
|
|
21
|
+
* @returns {void}
|
|
22
|
+
*/
|
|
23
|
+
export class ViewportManager {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.registry = new Map();
|
|
26
|
+
this.viewRegistry = new WeakMap();
|
|
27
|
+
this.refitFrame = new AnimationTaskRunner();
|
|
28
|
+
this.screenViewport = null;
|
|
29
|
+
/**
|
|
30
|
+
* Refit all overlays
|
|
31
|
+
* @returns {void}
|
|
32
|
+
*/
|
|
33
|
+
this.callRefit = () => {
|
|
34
|
+
this.refitFrame.schedule(() => {
|
|
35
|
+
this.registry.forEach((viewport, overlay) => {
|
|
36
|
+
this.resetViewportSizing(viewport);
|
|
37
|
+
overlay.fit();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create overlay-viewport and insert it before the provided node
|
|
44
|
+
* @param insertBefore A node to insert before
|
|
45
|
+
* @returns created overlay-viewport
|
|
46
|
+
*/
|
|
47
|
+
createViewport(insertBefore) {
|
|
48
|
+
var _a;
|
|
49
|
+
const viewport = document.createElement('ef-overlay-viewport');
|
|
50
|
+
(_a = insertBefore === null || insertBefore === void 0 ? void 0 : insertBefore.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(viewport, insertBefore);
|
|
51
|
+
return viewport;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Remove overlay-viewport from DOM tree
|
|
55
|
+
* @param viewport overlay-viewport to remove
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
removeViewport(viewport) {
|
|
59
|
+
var _a;
|
|
60
|
+
(_a = viewport.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(viewport);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Set screen sizing viewport
|
|
64
|
+
* @returns void
|
|
65
|
+
*/
|
|
66
|
+
setScreenViewport() {
|
|
67
|
+
if (!this.screenViewport) {
|
|
68
|
+
this.screenViewport = this.createViewport(document.body);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Removes screen sizing viewport
|
|
73
|
+
* @returns void
|
|
74
|
+
*/
|
|
75
|
+
removeScreenViewport() {
|
|
76
|
+
if (this.screenViewport) {
|
|
77
|
+
this.removeViewport(this.screenViewport);
|
|
78
|
+
this.screenViewport = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Reset sizing for viewport
|
|
83
|
+
* @param viewport Viewport to reset sizing for
|
|
84
|
+
* @returns {void}
|
|
85
|
+
*/
|
|
86
|
+
resetViewportSizing(viewport) {
|
|
87
|
+
if (!this.screenViewport) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const screenRect = this.screenViewport.getBoundingClientRect();
|
|
91
|
+
// since screenViewport is applied on html element, it does not include body zoom
|
|
92
|
+
const zoom = parseFloat(window.getComputedStyle(document.body).zoom);
|
|
93
|
+
const screenHeight = screenRect.height / zoom;
|
|
94
|
+
const screenWidth = screenRect.width / zoom;
|
|
95
|
+
const { top, left, bottom, right } = viewport.getBoundingClientRect();
|
|
96
|
+
const offsetTop = top < 0 ? Math.abs(top) : 0;
|
|
97
|
+
const offsetLeft = left < 0 ? Math.abs(left) : 0;
|
|
98
|
+
const offsetBottom = bottom > screenHeight ? bottom - screenHeight : 0;
|
|
99
|
+
const offsetRight = right > screenWidth ? right - screenWidth : 0;
|
|
100
|
+
const viewHeight = viewport.offsetHeight - offsetTop - offsetBottom;
|
|
101
|
+
const viewWidth = viewport.offsetWidth - offsetLeft - offsetRight;
|
|
102
|
+
this.viewRegistry.set(viewport, {
|
|
103
|
+
viewOffsetTop: top < 0 ? top + offsetTop : top,
|
|
104
|
+
viewOffsetLeft: left < 0 ? left + offsetLeft : left,
|
|
105
|
+
viewHeight: viewHeight < 0 ? 0 : viewHeight,
|
|
106
|
+
viewWidth: viewWidth < 0 ? 0 : viewWidth,
|
|
107
|
+
offsetTop,
|
|
108
|
+
offsetLeft,
|
|
109
|
+
offsetBottom,
|
|
110
|
+
offsetRight
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
getViewAreaInfo(overlay) {
|
|
114
|
+
const viewport = this.registry.get(overlay);
|
|
115
|
+
if (!viewport) {
|
|
116
|
+
return viewAreaInfo;
|
|
117
|
+
}
|
|
118
|
+
if (!this.viewRegistry.has(viewport)) {
|
|
119
|
+
this.resetViewportSizing(viewport);
|
|
120
|
+
}
|
|
121
|
+
return this.viewRegistry.get(viewport) || viewAreaInfo;
|
|
122
|
+
}
|
|
123
|
+
register(overlay) {
|
|
124
|
+
if (!this.registry.size) {
|
|
125
|
+
window.addEventListener('resize', this.callRefit);
|
|
126
|
+
window.addEventListener('orientationchange', this.callRefit);
|
|
127
|
+
window.addEventListener('scroll', this.callRefit, ScrollEventOptions);
|
|
128
|
+
this.setScreenViewport();
|
|
129
|
+
}
|
|
130
|
+
if (!this.registry.has(overlay)) {
|
|
131
|
+
const viewport = this.createViewport(overlay);
|
|
132
|
+
this.registry.set(overlay, viewport);
|
|
133
|
+
viewport.addEventListener('resize', () => overlay.fit());
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
deregister(overlay) {
|
|
137
|
+
if (this.registry.has(overlay)) {
|
|
138
|
+
const viewport = this.registry.get(overlay);
|
|
139
|
+
viewport && this.removeViewport(viewport);
|
|
140
|
+
this.registry.delete(overlay);
|
|
141
|
+
}
|
|
142
|
+
if (!this.registry.size) {
|
|
143
|
+
window.removeEventListener('resize', this.callRefit);
|
|
144
|
+
window.removeEventListener('orientationchange', this.callRefit);
|
|
145
|
+
window.removeEventListener('scroll', this.callRefit, ScrollEventOptions);
|
|
146
|
+
this.removeScreenViewport();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* @returns count of elements inside manager
|
|
151
|
+
*/
|
|
152
|
+
size() {
|
|
153
|
+
return this.registry.size;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* applies deregister for each element in registry
|
|
157
|
+
* @returns {void}
|
|
158
|
+
*/
|
|
159
|
+
clear() {
|
|
160
|
+
this.registry.forEach((viewport, overlay) => this.deregister(overlay));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const viewportManager = new ViewportManager();
|
|
164
|
+
/**
|
|
165
|
+
* Register the new overlay. Must be run to let start behaviour to listen for viewport events
|
|
166
|
+
* @param overlay Overlay
|
|
167
|
+
* @returns {void}
|
|
168
|
+
*/
|
|
169
|
+
export const register = (overlay) => {
|
|
170
|
+
viewportManager.register(overlay);
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Deregister the overlay
|
|
174
|
+
* @param overlay Overlay
|
|
175
|
+
* @returns {void}
|
|
176
|
+
*/
|
|
177
|
+
export const deregister = (overlay) => {
|
|
178
|
+
viewportManager.deregister(overlay);
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* @typedef {Object} ViewAreaInfo
|
|
182
|
+
* @property {Number} viewHeight - The height of view area
|
|
183
|
+
* @property {Number} viewWidth - The width of view area
|
|
184
|
+
* @property {Number} [offsetTop=0] - iOS only the view area vertical offset
|
|
185
|
+
* @property {Number} [offsetLeft=0] - iOS only the view area horizontal offset
|
|
186
|
+
*/
|
|
187
|
+
/**
|
|
188
|
+
* Get sizing information of the viewport for overlay
|
|
189
|
+
* @param overlay Overlay to get info for
|
|
190
|
+
* @return area info
|
|
191
|
+
*/
|
|
192
|
+
export const getViewAreaInfo = (overlay) => {
|
|
193
|
+
return viewportManager.getViewAreaInfo(overlay);
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* @returns count of elements inside manager
|
|
197
|
+
*/
|
|
198
|
+
export const size = () => {
|
|
199
|
+
return viewportManager.size();
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* removes all elements from registry
|
|
203
|
+
* @returns {void}
|
|
204
|
+
*/
|
|
205
|
+
export const clear = () => {
|
|
206
|
+
viewportManager.clear();
|
|
207
|
+
};
|