@refinitiv-ui/elements 5.3.3 → 5.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 +70 -0
- package/lib/accordion/custom-elements.json +49 -0
- package/lib/accordion/custom-elements.md +18 -0
- package/lib/accordion/index.d.ts +76 -0
- package/lib/accordion/index.js +136 -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/custom-elements.md +22 -0
- package/lib/appstate-bar/index.d.ts +65 -0
- package/lib/appstate-bar/index.js +100 -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 +233 -0
- package/lib/autosuggest/custom-elements.md +47 -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 +75 -0
- package/lib/autosuggest/index.d.ts +534 -0
- package/lib/autosuggest/index.js +1251 -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/custom-elements.md +23 -0
- package/lib/button/index.d.ts +132 -0
- package/lib/button/index.js +223 -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/custom-elements.md +9 -0
- package/lib/button-bar/index.d.ts +76 -0
- package/lib/button-bar/index.js +155 -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/constants.d.ts +22 -0
- package/lib/calendar/constants.js +23 -0
- package/lib/calendar/custom-elements.json +199 -0
- package/lib/calendar/custom-elements.md +35 -0
- package/lib/calendar/index.d.ts +321 -0
- package/lib/calendar/index.js +906 -0
- package/lib/calendar/locales.d.ts +1 -0
- package/lib/calendar/locales.js +40 -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 +29 -0
- package/lib/calendar/types.js +1 -0
- package/lib/calendar/utils.d.ts +42 -0
- package/lib/calendar/utils.js +119 -0
- package/lib/canvas/custom-elements.json +69 -0
- package/lib/canvas/custom-elements.md +27 -0
- package/lib/canvas/index.d.ts +100 -0
- package/lib/canvas/index.js +172 -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/custom-elements.md +24 -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 +246 -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/custom-elements.md +16 -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 +491 -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 +67 -0
- package/lib/checkbox/custom-elements.md +18 -0
- package/lib/checkbox/index.d.ts +95 -0
- package/lib/checkbox/index.js +193 -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 +121 -0
- package/lib/clock/custom-elements.md +28 -0
- package/lib/clock/index.d.ts +319 -0
- package/lib/clock/index.js +581 -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/custom-elements.md +27 -0
- package/lib/collapse/index.d.ts +119 -0
- package/lib/collapse/index.js +197 -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/custom-elements.md +39 -0
- package/lib/color-dialog/elements/color-palettes.d.ts +52 -0
- package/lib/color-dialog/elements/color-palettes.js +101 -0
- package/lib/color-dialog/elements/grayscale-palettes.d.ts +67 -0
- package/lib/color-dialog/elements/grayscale-palettes.js +161 -0
- package/lib/color-dialog/elements/palettes.d.ts +65 -0
- package/lib/color-dialog/elements/palettes.js +132 -0
- package/lib/color-dialog/helpers/color-helpers.d.ts +16 -0
- package/lib/color-dialog/helpers/color-helpers.js +161 -0
- package/lib/color-dialog/helpers/value-model.d.ts +75 -0
- package/lib/color-dialog/helpers/value-model.js +141 -0
- package/lib/color-dialog/index.d.ts +232 -0
- package/lib/color-dialog/index.js +459 -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 +210 -0
- package/lib/combo-box/custom-elements.md +35 -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/custom-elements.md +11 -0
- package/lib/counter/index.d.ts +89 -0
- package/lib/counter/index.js +152 -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/custom-elements.md +49 -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 +57 -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/custom-elements.md +47 -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/custom-elements.md +35 -0
- package/lib/email-field/index.d.ts +152 -0
- package/lib/email-field/index.js +286 -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 +1 -0
- package/lib/flag/custom-elements.json +35 -0
- package/lib/flag/custom-elements.md +10 -0
- package/lib/flag/index.d.ts +94 -0
- package/lib/flag/index.js +166 -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/custom-elements.md +18 -0
- package/lib/header/index.d.ts +46 -0
- package/lib/header/index.js +73 -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/custom-elements.md +26 -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 +1103 -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 +36 -0
- package/lib/icon/custom-elements.md +8 -0
- package/lib/icon/index.d.ts +88 -0
- package/lib/icon/index.js +169 -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 +52 -0
- package/lib/icon/utils/IconLoader.js +93 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/interactive-chart/custom-elements.json +86 -0
- package/lib/interactive-chart/custom-elements.md +32 -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 +1090 -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 +151 -0
- package/lib/item/custom-elements.md +29 -0
- package/lib/item/helpers/types.d.ts +57 -0
- package/lib/item/helpers/types.js +1 -0
- package/lib/item/index.d.ts +158 -0
- package/lib/item/index.js +271 -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/custom-elements.md +11 -0
- package/lib/label/index.d.ts +102 -0
- package/lib/label/index.js +244 -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/custom-elements.md +26 -0
- package/lib/layout/index.d.ts +107 -0
- package/lib/layout/index.js +212 -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/custom-elements.md +17 -0
- package/lib/led-gauge/index.d.ts +143 -0
- package/lib/led-gauge/index.js +437 -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/custom-elements.md +30 -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 +600 -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/custom-elements.md +5 -0
- package/lib/loader/index.d.ts +41 -0
- package/lib/loader/index.js +61 -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/custom-elements.md +43 -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 +590 -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/custom-elements.md +26 -0
- package/lib/notification/elements/notification-tray.d.ts +97 -0
- package/lib/notification/elements/notification-tray.js +167 -0
- package/lib/notification/elements/notification.d.ts +90 -0
- package/lib/notification/elements/notification.js +154 -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/custom-elements.md +37 -0
- package/lib/number-field/index.d.ts +294 -0
- package/lib/number-field/index.js +707 -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 +345 -0
- package/lib/overlay/custom-elements.md +54 -0
- package/lib/overlay/elements/overlay-backdrop.d.ts +46 -0
- package/lib/overlay/elements/overlay-backdrop.js +64 -0
- package/lib/overlay/elements/overlay-viewport.d.ts +40 -0
- package/lib/overlay/elements/overlay-viewport.js +52 -0
- package/lib/overlay/elements/overlay.d.ts +403 -0
- package/lib/overlay/elements/overlay.js +1426 -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 +211 -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 +194 -0
- package/lib/overlay-menu/custom-elements.md +44 -0
- package/lib/overlay-menu/helpers/types.d.ts +8 -0
- package/lib/overlay-menu/helpers/types.js +1 -0
- package/lib/overlay-menu/index.d.ts +385 -0
- package/lib/overlay-menu/index.js +933 -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/custom-elements.md +27 -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 +398 -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/custom-elements.md +11 -0
- package/lib/panel/index.d.ts +48 -0
- package/lib/panel/index.js +74 -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/custom-elements.md +31 -0
- package/lib/password-field/index.d.ts +141 -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/custom-elements.md +22 -0
- package/lib/pill/index.d.ts +97 -0
- package/lib/pill/index.js +160 -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/custom-elements.md +18 -0
- package/lib/progress-bar/index.d.ts +82 -0
- package/lib/progress-bar/index.js +157 -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 +82 -0
- package/lib/radio-button/custom-elements.md +19 -0
- package/lib/radio-button/index.d.ts +122 -0
- package/lib/radio-button/index.js +257 -0
- package/lib/radio-button/radio-button-registry.d.ts +22 -0
- package/lib/radio-button/radio-button-registry.js +93 -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/custom-elements.md +17 -0
- package/lib/rating/index.d.ts +91 -0
- package/lib/rating/index.js +157 -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/custom-elements.md +33 -0
- package/lib/search-field/index.d.ts +134 -0
- package/lib/search-field/index.js +253 -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/custom-elements.md +24 -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/custom-elements.md +22 -0
- package/lib/sidebar-layout/index.d.ts +69 -0
- package/lib/sidebar-layout/index.js +134 -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/custom-elements.md +28 -0
- package/lib/slider/index.d.ts +409 -0
- package/lib/slider/index.js +1187 -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/custom-elements.md +16 -0
- package/lib/sparkline/index.d.ts +107 -0
- package/lib/sparkline/index.js +186 -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/custom-elements.md +17 -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/custom-elements.md +22 -0
- package/lib/tab/index.d.ts +118 -0
- package/lib/tab/index.js +208 -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/custom-elements.md +11 -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 +218 -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/custom-elements.md +37 -0
- package/lib/text-field/index.d.ts +193 -0
- package/lib/text-field/index.js +409 -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/custom-elements.md +28 -0
- package/lib/time-picker/index.d.ts +379 -0
- package/lib/time-picker/index.js +775 -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 +82 -0
- package/lib/toggle/custom-elements.md +19 -0
- package/lib/toggle/index.d.ts +86 -0
- package/lib/toggle/index.js +152 -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/custom-elements.md +14 -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 +477 -0
- package/lib/tooltip/managers/tooltip-manager.d.ts +15 -0
- package/lib/tooltip/managers/tooltip-manager.js +140 -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/custom-elements.md +18 -0
- package/lib/tornado-chart/elements/tornado-chart.d.ts +78 -0
- package/lib/tornado-chart/elements/tornado-chart.js +122 -0
- package/lib/tornado-chart/elements/tornado-item.d.ts +110 -0
- package/lib/tornado-chart/elements/tornado-item.js +207 -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 +113 -0
- package/lib/tree/custom-elements.md +32 -0
- package/lib/tree/elements/tree-item.d.ts +96 -0
- package/lib/tree/elements/tree-item.js +179 -0
- package/lib/tree/elements/tree.d.ts +201 -0
- package/lib/tree/elements/tree.js +412 -0
- package/lib/tree/helpers/filter.d.ts +8 -0
- package/lib/tree/helpers/filter.js +33 -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 +25 -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 +248 -0
- package/lib/tree/managers/tree-manager.js +395 -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/custom-elements.md +26 -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 +402 -0
- package/lib/tree-select/index.js +890 -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/lib/version.d.ts +1 -0
- package/lib/version.js +1 -0
- package/package.json +298 -15
|
@@ -0,0 +1,1251 @@
|
|
|
1
|
+
var Autosuggest_1;
|
|
2
|
+
import { __decorate } from "tslib";
|
|
3
|
+
import { css, html } from '@refinitiv-ui/core';
|
|
4
|
+
import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
|
|
5
|
+
import { query } from '@refinitiv-ui/core/lib/decorators/query.js';
|
|
6
|
+
import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
|
|
7
|
+
import { unsafeHTML } from '@refinitiv-ui/core/lib/directives/unsafe-html.js';
|
|
8
|
+
import { VERSION } from '../version.js';
|
|
9
|
+
import { AnimationTaskRunner, TimeoutTaskRunner } from '@refinitiv-ui/utils/lib/async.js';
|
|
10
|
+
import { escapeRegExp, itemHighlightable, itemRenderer, queryWordSelect } from './helpers/utils.js';
|
|
11
|
+
import { isIE, isMobile } from '@refinitiv-ui/utils/lib/browser.js';
|
|
12
|
+
import { Overlay } from '../overlay/index.js';
|
|
13
|
+
import '../loader/index.js';
|
|
14
|
+
import '../item/index.js';
|
|
15
|
+
export { queryWordSelect, itemRenderer, escapeRegExp, itemHighlightable, updateElementContent } from './helpers/utils.js';
|
|
16
|
+
/**
|
|
17
|
+
* Shows suggestions based on users' query.
|
|
18
|
+
* It can be used by attaching to text form control
|
|
19
|
+
* such as TextField, Multi Input, etc.
|
|
20
|
+
* Autosuggest supports various use cases such as
|
|
21
|
+
* custom rendering, pagination, asynchronous data request, etc.
|
|
22
|
+
*
|
|
23
|
+
* @fires item-highlight Fired when an item gets highlighted or highlight is removed
|
|
24
|
+
* @fires add-attach-target-events Fired when attach has been set
|
|
25
|
+
* @fires remove-attach-target-events Fired when attach has been removed
|
|
26
|
+
* @fires item-select Fired when an item gets selected
|
|
27
|
+
* @fires suggestions-fetch-requested Fired when auto suggest requests the data
|
|
28
|
+
* @fires suggestions-clear-requested Fired when auto suggest requests to clear the data. If used in reactive application, prevent default and set suggestions to []
|
|
29
|
+
* @fires suggestions-query Fired when input value has changed and the query must be set
|
|
30
|
+
* @fires suggestions-changed Fired when suggestions changed
|
|
31
|
+
*
|
|
32
|
+
* @attr {boolean} opened - Set to open auto suggest popup
|
|
33
|
+
* @prop {boolean} [opened=false] - Auto suggest popup's open state
|
|
34
|
+
*/
|
|
35
|
+
let Autosuggest = Autosuggest_1 = class Autosuggest extends Overlay {
|
|
36
|
+
/**
|
|
37
|
+
* creates auto-suggest
|
|
38
|
+
*/
|
|
39
|
+
constructor() {
|
|
40
|
+
super();
|
|
41
|
+
/**
|
|
42
|
+
* An HTML Element or CSS selector
|
|
43
|
+
* @type {AutosuggestTargetElement | string | null}
|
|
44
|
+
*/
|
|
45
|
+
this.attach = null;
|
|
46
|
+
/**
|
|
47
|
+
* Request suggestions when attach target is focused
|
|
48
|
+
*/
|
|
49
|
+
this.requestOnFocus = false;
|
|
50
|
+
/**
|
|
51
|
+
* If set to true display 'Has more results' item
|
|
52
|
+
*/
|
|
53
|
+
this.moreResults = false;
|
|
54
|
+
/**
|
|
55
|
+
* Custom text for More Search
|
|
56
|
+
*/
|
|
57
|
+
this.moreSearchText = Autosuggest_1.defaultMoreSearchText;
|
|
58
|
+
/**
|
|
59
|
+
* If set to true show loading mask
|
|
60
|
+
*/
|
|
61
|
+
this.loading = false;
|
|
62
|
+
/**
|
|
63
|
+
* An object that represents a query from attach target
|
|
64
|
+
* @type {AutosuggestQuery | null}
|
|
65
|
+
*/
|
|
66
|
+
this.query = null;
|
|
67
|
+
/**
|
|
68
|
+
* Debounce rate in ms of the filter as a number.
|
|
69
|
+
* Used to throttle the filter rate so as not to trigger unneeded filtering
|
|
70
|
+
* @default 100
|
|
71
|
+
*/
|
|
72
|
+
this.debounceRate = Autosuggest_1.defaultDebounceRate;
|
|
73
|
+
/**
|
|
74
|
+
* A renderer applied to suggestion.
|
|
75
|
+
* By default a render maps data to item attributes
|
|
76
|
+
* @type {AutosuggestRenderer}
|
|
77
|
+
*/
|
|
78
|
+
this.renderer = itemRenderer;
|
|
79
|
+
/**
|
|
80
|
+
* A function that is applied to every suggestion during the render process
|
|
81
|
+
* to say whether the item can be highlighted and selected. Only items that return true are considered.
|
|
82
|
+
* By default the function checks for `item` `highlightable` property.
|
|
83
|
+
* @type {AutosuggestHighlightable}
|
|
84
|
+
*/
|
|
85
|
+
this.highlightable = itemHighlightable;
|
|
86
|
+
/**
|
|
87
|
+
* A list of suggestion items
|
|
88
|
+
* @type {AutosuggestItem[]}
|
|
89
|
+
*/
|
|
90
|
+
this.suggestions = [];
|
|
91
|
+
/**
|
|
92
|
+
* If set to true, the render function is not called. Instead the wrapper element
|
|
93
|
+
* should populate and destroy suggestion elements. Rendering items manually
|
|
94
|
+
* may have performance benefits in frameworks that use virtual DOM (such as `Vue`, `React`, `hyperHTML` and others)
|
|
95
|
+
*/
|
|
96
|
+
this.htmlRenderer = false;
|
|
97
|
+
// used to map render elements with data
|
|
98
|
+
this.suggestionMap = new Map();
|
|
99
|
+
this.highlightedItem = null;
|
|
100
|
+
this.attachTarget = null;
|
|
101
|
+
this.lastActiveElement = null;
|
|
102
|
+
this.suspendedKey = false;
|
|
103
|
+
this.preservedQueryValue = null;
|
|
104
|
+
this.focusSuspended = false;
|
|
105
|
+
this.jobRunner = new TimeoutTaskRunner(this.debounceRate);
|
|
106
|
+
this.attachChangeRunner = new AnimationTaskRunner();
|
|
107
|
+
this.moreResultsRunner = new AnimationTaskRunner();
|
|
108
|
+
this.loadingRunner = new AnimationTaskRunner();
|
|
109
|
+
/**
|
|
110
|
+
* Run when document click event happens.
|
|
111
|
+
* @param event object
|
|
112
|
+
* @returns {void}
|
|
113
|
+
*/
|
|
114
|
+
this.onOutsideClick = (event) => {
|
|
115
|
+
const path = event.composedPath();
|
|
116
|
+
// outside click
|
|
117
|
+
if (!path.includes(this) && this.attachTarget && !path.includes(this.attachTarget)) {
|
|
118
|
+
this.setOpened(false);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* fire event and reinit listeners if attach was changed
|
|
123
|
+
* @returns {void}
|
|
124
|
+
*/
|
|
125
|
+
this.attachChangeFrameCallback = () => {
|
|
126
|
+
this.dispatchAttachEventsRemoveAction();
|
|
127
|
+
const attachTarget = (typeof this.attach === 'string' ? document.querySelector(this.attach) : this.attach);
|
|
128
|
+
if (attachTarget && attachTarget.nodeType === document.ELEMENT_NODE) {
|
|
129
|
+
this.attachTarget = attachTarget;
|
|
130
|
+
if (!this.positionTarget) {
|
|
131
|
+
this.positionTarget = attachTarget; // in most cases attachTarget and positionTarget must be the same
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* @event add-attach-target-events
|
|
135
|
+
* Fired when attach has been set.
|
|
136
|
+
* Add attach target listeners.
|
|
137
|
+
*/
|
|
138
|
+
this.dispatchEventDefault(new CustomEvent('add-attach-target-events', {
|
|
139
|
+
cancelable: true
|
|
140
|
+
}), this.attachEventsAddAction);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* set opened state due to status of focus and content
|
|
145
|
+
* @returns {void}
|
|
146
|
+
*/
|
|
147
|
+
this.moreResultsFrameCallback = () => {
|
|
148
|
+
this.setOpened(this.attachTargetFocused && this.hasContent);
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* initialize opened state depends on focus and content
|
|
152
|
+
* @returns {void}
|
|
153
|
+
*/
|
|
154
|
+
this.loadingFrameCallback = () => {
|
|
155
|
+
if (this.loading && !this.opened && this.attachTargetFocused) {
|
|
156
|
+
this.setOpened(true);
|
|
157
|
+
}
|
|
158
|
+
else if (!this.loading && this.opened && !this.hasContent) {
|
|
159
|
+
this.setOpened(false);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
this.removeChildNode = (el) => {
|
|
163
|
+
el.parentNode && el.parentNode.removeChild(el);
|
|
164
|
+
};
|
|
165
|
+
this.generateSuggestionsFragment = (fragment, suggestion) => {
|
|
166
|
+
const el = this.renderer(suggestion, this.preservedQueryValue);
|
|
167
|
+
fragment.appendChild(el);
|
|
168
|
+
return fragment;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Fired when mouse down event happens. Select the item
|
|
172
|
+
* @param event Mouse down event
|
|
173
|
+
* @returns {void}
|
|
174
|
+
*/
|
|
175
|
+
this.onItemMousedown = (event) => {
|
|
176
|
+
// do not loose focus from input when click happens on the popup
|
|
177
|
+
// note, in IE when scrolling the focus is lost regardless, so
|
|
178
|
+
// do hacking here and with on blur
|
|
179
|
+
/* istanbul ignore next */
|
|
180
|
+
requestAnimationFrame(() => {
|
|
181
|
+
// Ignore any focus query events!
|
|
182
|
+
this.focusSuspended = true;
|
|
183
|
+
this.attachTarget && this.attachTarget.focus();
|
|
184
|
+
this.focusSuspended = false;
|
|
185
|
+
});
|
|
186
|
+
event.stopPropagation();
|
|
187
|
+
event.preventDefault();
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* @ignore
|
|
191
|
+
*/
|
|
192
|
+
this.position = ['bottom-start', 'top-start', 'right-middle'];
|
|
193
|
+
/**
|
|
194
|
+
* @ignore
|
|
195
|
+
*/
|
|
196
|
+
this.noCancelOnEscKey = true;
|
|
197
|
+
/**
|
|
198
|
+
* @ignore
|
|
199
|
+
*/
|
|
200
|
+
this.noCancelOnOutsideClick = true;
|
|
201
|
+
/**
|
|
202
|
+
* @ignore
|
|
203
|
+
*/
|
|
204
|
+
this.noAutofocus = true;
|
|
205
|
+
/**
|
|
206
|
+
* @ignore
|
|
207
|
+
*/
|
|
208
|
+
this.noOverlap = true;
|
|
209
|
+
/**
|
|
210
|
+
* @ignore
|
|
211
|
+
*/
|
|
212
|
+
this.withShadow = false;
|
|
213
|
+
/**
|
|
214
|
+
* @ignore
|
|
215
|
+
*/
|
|
216
|
+
this.onInputValueChange = this.onInputValueChange.bind(this);
|
|
217
|
+
/**
|
|
218
|
+
* @ignore
|
|
219
|
+
*/
|
|
220
|
+
this.onInputKeyDown = this.onInputKeyDown.bind(this);
|
|
221
|
+
/**
|
|
222
|
+
* @ignore
|
|
223
|
+
*/
|
|
224
|
+
this.onInputBlur = this.onInputBlur.bind(this);
|
|
225
|
+
/**
|
|
226
|
+
* @ignore
|
|
227
|
+
*/
|
|
228
|
+
this.onInputFocus = this.onInputFocus.bind(this);
|
|
229
|
+
/**
|
|
230
|
+
* @ignore
|
|
231
|
+
*/
|
|
232
|
+
this.suggestionsQueryAction = this.suggestionsQueryAction.bind(this);
|
|
233
|
+
/**
|
|
234
|
+
* @ignore
|
|
235
|
+
*/
|
|
236
|
+
this.itemSelectAction = this.itemSelectAction.bind(this);
|
|
237
|
+
/**
|
|
238
|
+
* @ignore
|
|
239
|
+
*/
|
|
240
|
+
this.itemHighlightAction = this.itemHighlightAction.bind(this);
|
|
241
|
+
/**
|
|
242
|
+
* @ignore
|
|
243
|
+
*/
|
|
244
|
+
this.highlightText = this.highlightText.bind(this);
|
|
245
|
+
/**
|
|
246
|
+
* @ignore
|
|
247
|
+
*/
|
|
248
|
+
this.suggestionsFetchRequestedAction = this.suggestionsFetchRequestedAction.bind(this);
|
|
249
|
+
/**
|
|
250
|
+
* @ignore
|
|
251
|
+
*/
|
|
252
|
+
this.suggestionsClearRequestedAction = this.suggestionsClearRequestedAction.bind(this);
|
|
253
|
+
/**
|
|
254
|
+
* @ignore
|
|
255
|
+
*/
|
|
256
|
+
this.attachEventsAddAction = this.attachEventsAddAction.bind(this);
|
|
257
|
+
/**
|
|
258
|
+
* @ignore
|
|
259
|
+
*/
|
|
260
|
+
this.attachEventsRemoveAction = this.attachEventsRemoveAction.bind(this);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Element version number
|
|
264
|
+
* @returns version number
|
|
265
|
+
*/
|
|
266
|
+
static get version() {
|
|
267
|
+
return VERSION;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* A `CSSResultGroup` that will be used
|
|
271
|
+
* to style the host, slotted children
|
|
272
|
+
* and the internal template of the element.
|
|
273
|
+
* @return CSS template
|
|
274
|
+
*/
|
|
275
|
+
static get styles() {
|
|
276
|
+
return [
|
|
277
|
+
super.styles,
|
|
278
|
+
css `
|
|
279
|
+
:host {
|
|
280
|
+
overflow: hidden;
|
|
281
|
+
display: flex;
|
|
282
|
+
flex-direction: column;
|
|
283
|
+
}
|
|
284
|
+
[part=content] {
|
|
285
|
+
flex: 1 1 auto;
|
|
286
|
+
overflow-x: hidden;
|
|
287
|
+
overflow-y: auto;
|
|
288
|
+
-webkit-overflow-scrolling: touch;
|
|
289
|
+
}
|
|
290
|
+
[part=header], [part=footer] {
|
|
291
|
+
flex: none;
|
|
292
|
+
}
|
|
293
|
+
`
|
|
294
|
+
];
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* A basic regexp matching pattern to replace text based on string input.
|
|
298
|
+
* @param text Value to test against
|
|
299
|
+
* @param query The query
|
|
300
|
+
* @param [pattern=<mark>$1</mark>] Provide a pattern to replace string
|
|
301
|
+
* @returns innerHTML The text that can be used as innerHTML
|
|
302
|
+
*/
|
|
303
|
+
static QueryWordSelect(text, query = '', pattern = '<mark>$1</mark>') {
|
|
304
|
+
return queryWordSelect(text, query, pattern);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Build item element from data object
|
|
308
|
+
* @param suggestion Suggestion data
|
|
309
|
+
* @param query A query data (usually string, but could be any entity )
|
|
310
|
+
* @returns item
|
|
311
|
+
*/
|
|
312
|
+
static ItemRenderer(suggestion, query) {
|
|
313
|
+
return itemRenderer(suggestion, query);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Replace forbidden characters in regular expressions
|
|
317
|
+
* @param string A string to process
|
|
318
|
+
* @returns clean string
|
|
319
|
+
*/
|
|
320
|
+
static EscapeRegExp(string = '') {
|
|
321
|
+
return escapeRegExp(string);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Check whether item can be highlighted
|
|
325
|
+
* @param suggestion Suggestion object
|
|
326
|
+
* @param target item element
|
|
327
|
+
* @returns highlightable
|
|
328
|
+
*/
|
|
329
|
+
static ItemHighlightable(suggestion, target) {
|
|
330
|
+
return itemHighlightable(suggestion, target);
|
|
331
|
+
}
|
|
332
|
+
disconnectedCallback() {
|
|
333
|
+
this.dispatchAttachEventsRemoveAction();
|
|
334
|
+
super.disconnectedCallback();
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Run when attach target value changes.
|
|
338
|
+
* @param event by default `value-changed` event is listened
|
|
339
|
+
* @returns {void}
|
|
340
|
+
*/
|
|
341
|
+
onInputValueChange(event) {
|
|
342
|
+
if (!this.suspended) { // avoid circular
|
|
343
|
+
/* istanbul ignore next */
|
|
344
|
+
if (isMobile) {
|
|
345
|
+
this.lastActiveElement = event.target;
|
|
346
|
+
}
|
|
347
|
+
this.requestSuggestions('value-changed', true);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Run when input has lost focus
|
|
352
|
+
* @param event by default `blur` event is listened
|
|
353
|
+
* @returns {void}
|
|
354
|
+
*/
|
|
355
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
356
|
+
onInputBlur(event) {
|
|
357
|
+
requestAnimationFrame(() => {
|
|
358
|
+
if (!this.attachTargetFocused) {
|
|
359
|
+
this.setOpened(false);
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Run when input received focus
|
|
365
|
+
* @param event by default `focus` event is listened
|
|
366
|
+
* @returns {void}
|
|
367
|
+
*/
|
|
368
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
369
|
+
onInputFocus(event) {
|
|
370
|
+
/* istanbul ignore next */
|
|
371
|
+
if (this.focusSuspended) {
|
|
372
|
+
// see _onItemMousedown, it is an IE fix for scrollbar
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
this.requestOnFocus && this.requestSuggestions('input-focus');
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Run when input key down event has happened
|
|
379
|
+
* @param event by default `keydown` event is listened
|
|
380
|
+
* @returns {void}
|
|
381
|
+
*/
|
|
382
|
+
onInputKeyDown(event) {
|
|
383
|
+
if (event.key === 'Up' || event.key === 'ArrowUp') {
|
|
384
|
+
this.onUpKey();
|
|
385
|
+
}
|
|
386
|
+
else if (event.key === 'Down' || event.key === 'ArrowDown') {
|
|
387
|
+
this.onDownKey();
|
|
388
|
+
}
|
|
389
|
+
else if (event.key === 'Esc' || event.key === 'Escape') {
|
|
390
|
+
this.onEscKey();
|
|
391
|
+
}
|
|
392
|
+
else if (event.key === 'Enter' || event.key === 'Return') {
|
|
393
|
+
this.onEnterKey(event);
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
event.preventDefault();
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* @ignore
|
|
402
|
+
* Called when the element's dimensions have changed
|
|
403
|
+
* @param size dimension details
|
|
404
|
+
* @returns {void}
|
|
405
|
+
*/
|
|
406
|
+
resizedCallback(size) {
|
|
407
|
+
super.resizedCallback(size);
|
|
408
|
+
this.calculateContentMaxHeight(size);
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* @returns template of loader if currently query loading
|
|
412
|
+
*/
|
|
413
|
+
get loaderTemplate() {
|
|
414
|
+
if (!this.loading) {
|
|
415
|
+
return null;
|
|
416
|
+
}
|
|
417
|
+
return html `
|
|
418
|
+
<div part="loader">
|
|
419
|
+
<div part="backdrop"></div>
|
|
420
|
+
<ef-loader size="medium"></ef-loader>
|
|
421
|
+
</div>
|
|
422
|
+
`;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* @returns template of moreResults
|
|
426
|
+
*/
|
|
427
|
+
get moreResultsTemplate() {
|
|
428
|
+
if (!this.moreResults) {
|
|
429
|
+
return null;
|
|
430
|
+
}
|
|
431
|
+
return html `
|
|
432
|
+
<ef-item id="moreResults" part="more-results">${this.highlightText(this.moreResults, this.moreSearchText, this.query)}</ef-item>
|
|
433
|
+
`;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* A `TemplateResult` that will be used
|
|
437
|
+
* to render the updated internal template.
|
|
438
|
+
* @return Render template
|
|
439
|
+
*/
|
|
440
|
+
render() {
|
|
441
|
+
return html `
|
|
442
|
+
<div part="header">
|
|
443
|
+
<slot id="headerSlot" name="header"></slot>
|
|
444
|
+
</div>
|
|
445
|
+
<div id="content" part="content" @mousemove="${this.onItemMouseMove}" @mouseleave="${this.onItemMouseLeave}" @tap="${this.onItemMouseClick}">
|
|
446
|
+
<slot id="contentSlot" @slotchange="${this.onSlotChange}"></slot>
|
|
447
|
+
${this.moreResultsTemplate}
|
|
448
|
+
</div>
|
|
449
|
+
<div part="footer">
|
|
450
|
+
<slot id="footerSlot" name="footer"></slot>
|
|
451
|
+
</div>
|
|
452
|
+
${this.loaderTemplate}
|
|
453
|
+
`;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Called once after the component is first rendered
|
|
457
|
+
* @param changedProperties map of changed properties with old values
|
|
458
|
+
* @returns {void}
|
|
459
|
+
*/
|
|
460
|
+
firstUpdated(changedProperties) {
|
|
461
|
+
super.firstUpdated(changedProperties);
|
|
462
|
+
this.addEventListener('tapstart', this.onItemMousedown);
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Called when the element’s DOM has been updated and rendered
|
|
466
|
+
* @param changedProperties Properties that has changed
|
|
467
|
+
* @returns shouldUpdate
|
|
468
|
+
*/
|
|
469
|
+
shouldUpdate(changedProperties) {
|
|
470
|
+
let result = super.shouldUpdate(changedProperties);
|
|
471
|
+
result = result || this.shouldAutosuggestUpdate(changedProperties);
|
|
472
|
+
return result;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Called after the element’s DOM has been updated
|
|
476
|
+
* @param changedProperties Properties that has changed
|
|
477
|
+
* @returns {void}
|
|
478
|
+
*/
|
|
479
|
+
updated(changedProperties) {
|
|
480
|
+
super.updated(changedProperties);
|
|
481
|
+
if (changedProperties.has('suggestions')) {
|
|
482
|
+
this.notifySuggestions();
|
|
483
|
+
}
|
|
484
|
+
this.changedCallbacks(changedProperties);
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* inheritance callbacks
|
|
488
|
+
*/
|
|
489
|
+
/**
|
|
490
|
+
* Run when the slot has changed.
|
|
491
|
+
* @param event Slot change query
|
|
492
|
+
* @returns {void}
|
|
493
|
+
*/
|
|
494
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
495
|
+
onSlotChange(event) {
|
|
496
|
+
const nodes = (this.contentSlot && this.contentSlot.assignedNodes()) || [];
|
|
497
|
+
this.setOpened(this.attachTargetFocused && this.hasContent);
|
|
498
|
+
// make a brave assumption that suggestions are populated as well
|
|
499
|
+
const suggestions = this.suggestions;
|
|
500
|
+
this.highlightItem(); // hide highlight
|
|
501
|
+
this.suggestionMap.clear();
|
|
502
|
+
nodes.forEach((node, idx) => {
|
|
503
|
+
/* istanbul ignore next */
|
|
504
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
const suggestion = suggestions[idx];
|
|
508
|
+
if (this.highlightable(suggestion, node)) {
|
|
509
|
+
this.suggestionMap.set(node, suggestion);
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* 'suggestions-query' default action
|
|
515
|
+
* @param event Suggestion query
|
|
516
|
+
* @returns {void}
|
|
517
|
+
*/
|
|
518
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
519
|
+
suggestionsQueryAction(event) {
|
|
520
|
+
this.query = this.attachTarget && this.attachTarget.value;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* 'item-select' default action
|
|
524
|
+
* @param event Select action
|
|
525
|
+
* @returns {void}
|
|
526
|
+
*/
|
|
527
|
+
itemSelectAction(event) {
|
|
528
|
+
const { detail: { query, suggestion } } = event;
|
|
529
|
+
/* istanbul ignore next */
|
|
530
|
+
if (this.attachTarget) {
|
|
531
|
+
this.attachTarget.value = suggestion && (suggestion === null || suggestion === void 0 ? void 0 : suggestion.label) || query;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* 'item-highlight' default action
|
|
536
|
+
* @param event Highlight action
|
|
537
|
+
* @returns {void}
|
|
538
|
+
*/
|
|
539
|
+
itemHighlightAction(event) {
|
|
540
|
+
const target = event.detail.target;
|
|
541
|
+
const oldTarget = event.detail.oldTarget;
|
|
542
|
+
if (target) {
|
|
543
|
+
target.highlighted = true;
|
|
544
|
+
}
|
|
545
|
+
if (oldTarget) {
|
|
546
|
+
oldTarget.highlighted = false;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* 'suggestions-fetch-requested' default action
|
|
551
|
+
* @param event Fetch request
|
|
552
|
+
* @returns {void}
|
|
553
|
+
*/
|
|
554
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
555
|
+
suggestionsFetchRequestedAction(event) {
|
|
556
|
+
// do nothing
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* 'suggestions-clear-requested' default action
|
|
560
|
+
* @param event Clear request
|
|
561
|
+
* @returns {void}
|
|
562
|
+
*/
|
|
563
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
564
|
+
suggestionsClearRequestedAction(event) {
|
|
565
|
+
this.suggestions = [];
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Add listeners to the attached target
|
|
569
|
+
* By default `input`, 'keydown', 'focus' and 'blur' events are listened
|
|
570
|
+
* @param event Attach add action
|
|
571
|
+
* @returns {void}
|
|
572
|
+
*/
|
|
573
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
574
|
+
attachEventsAddAction(event) {
|
|
575
|
+
const attachTarget = this.attachTarget;
|
|
576
|
+
/* istanbul ignore next */
|
|
577
|
+
if (!attachTarget) {
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
attachTarget.addEventListener('input', this.onInputValueChange);
|
|
581
|
+
attachTarget.addEventListener('keydown', this.onInputKeyDown);
|
|
582
|
+
attachTarget.addEventListener('blur', this.onInputBlur);
|
|
583
|
+
attachTarget.addEventListener('focus', this.onInputFocus);
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Remove event listeners from the attached target
|
|
587
|
+
* By default `input`, 'keydown', 'focus' and 'blur' events are listened
|
|
588
|
+
* @param event Attach remove action
|
|
589
|
+
* @returns {void}
|
|
590
|
+
*/
|
|
591
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
592
|
+
attachEventsRemoveAction(event) {
|
|
593
|
+
const attachTarget = this.attachTarget;
|
|
594
|
+
if (!attachTarget) {
|
|
595
|
+
return;
|
|
596
|
+
}
|
|
597
|
+
attachTarget.removeEventListener('input', this.onInputValueChange);
|
|
598
|
+
attachTarget.removeEventListener('keydown', this.onInputKeyDown);
|
|
599
|
+
attachTarget.removeEventListener('blur', this.onInputBlur);
|
|
600
|
+
attachTarget.removeEventListener('focus', this.onInputFocus);
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* Call this method to fetch more results
|
|
604
|
+
* @returns {void}
|
|
605
|
+
*/
|
|
606
|
+
fetchMoreSuggestions() {
|
|
607
|
+
this.dispatchSuggestionsFetchRequested('more-results');
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Highlight the item and remove old highlighted item
|
|
611
|
+
* @param target Element to highlight. Pass null to just remove previous highlight
|
|
612
|
+
* @param silent Do not fire a select event on highlight. Select should be fired on keyboard navigation
|
|
613
|
+
* @returns {void}
|
|
614
|
+
*/
|
|
615
|
+
highlightItem(target = null, silent = true) {
|
|
616
|
+
if (this.highlightedItem !== target) {
|
|
617
|
+
const oldTarget = this.highlightedItem;
|
|
618
|
+
this.highlightedItem = target && this.canSelect(target) ? target : null;
|
|
619
|
+
/**
|
|
620
|
+
* @event item-highlight
|
|
621
|
+
* Fired when an item gets highlighted or highlight is removed
|
|
622
|
+
* @param {HTMLElement} [target] New highlight target or null
|
|
623
|
+
* @param {*} [suggestion] New suggestion or null
|
|
624
|
+
* @param {HTMLElement} [oldTarget] Old highlight target or null
|
|
625
|
+
* @param {*} [oldSuggestion] Old suggestion or null
|
|
626
|
+
*/
|
|
627
|
+
this.dispatchEventDefault(new CustomEvent('item-highlight', {
|
|
628
|
+
cancelable: true,
|
|
629
|
+
detail: {
|
|
630
|
+
target: this.highlightedItem,
|
|
631
|
+
suggestion: this.getSuggestionFor(this.highlightedItem),
|
|
632
|
+
oldTarget,
|
|
633
|
+
oldSuggestion: this.getSuggestionFor(oldTarget)
|
|
634
|
+
}
|
|
635
|
+
}), this.itemHighlightAction);
|
|
636
|
+
if (!silent && target) {
|
|
637
|
+
this.selectItem(target, 'navigation');
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
/**
|
|
642
|
+
* Calculate more search text inner html
|
|
643
|
+
* @param moreResults True if has more results
|
|
644
|
+
* @param moreSearchText More search text template
|
|
645
|
+
* @param query A query
|
|
646
|
+
* @returns innerHTML
|
|
647
|
+
*/
|
|
648
|
+
highlightText(moreResults, moreSearchText, query) {
|
|
649
|
+
if (!moreResults) {
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
return html `
|
|
653
|
+
<span part="more-results-text">
|
|
654
|
+
${unsafeHTML(moreSearchText.replace(/{0\}/g, `<mark>${query ? query.toString() : ''}</mark>`))}
|
|
655
|
+
</span>
|
|
656
|
+
<span part="more-results-keys" slot="right"><kbd>SHIFT</kbd> + <kbd>ENTER</kbd></span>
|
|
657
|
+
`;
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Call this method to request suggestions
|
|
661
|
+
* @private
|
|
662
|
+
* @param reason The reason to request query
|
|
663
|
+
* @param debounce True to debounce
|
|
664
|
+
* @returns {void}
|
|
665
|
+
*/
|
|
666
|
+
requestSuggestions(reason, debounce = false) {
|
|
667
|
+
this.dispatchSuggestionsQuery(reason);
|
|
668
|
+
if (this.preservedQueryValue === this.query) { // if the query is the same do not re-issue the request, instead try to open auto suggest
|
|
669
|
+
if (!this.opened && ((this.suggestions && this.suggestions.length) || this.moreResults)) {
|
|
670
|
+
this.setOpened(true);
|
|
671
|
+
}
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
this.preservedQueryValue = this.query;
|
|
675
|
+
const dispatch = () => {
|
|
676
|
+
if (this.attachTargetFocused) {
|
|
677
|
+
this.dispatchSuggestionsFetchRequested(reason);
|
|
678
|
+
}
|
|
679
|
+
};
|
|
680
|
+
if (debounce) {
|
|
681
|
+
// debounce
|
|
682
|
+
this.jobRunner.schedule(dispatch);
|
|
683
|
+
return;
|
|
684
|
+
}
|
|
685
|
+
this.jobRunner.cancel();
|
|
686
|
+
dispatch();
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* All internal opened set events can be stoppable externally
|
|
690
|
+
* Use this instead of setting opened directly
|
|
691
|
+
* Protected method that can be used by managers or subclasses
|
|
692
|
+
* @returns {void}
|
|
693
|
+
*/
|
|
694
|
+
onOpened() {
|
|
695
|
+
super.onOpened();
|
|
696
|
+
document.addEventListener('tapstart', this.onOutsideClick);
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Run when the popup has closed, managers are de-registered
|
|
700
|
+
* and closing transition has finished
|
|
701
|
+
* @returns {void}
|
|
702
|
+
*/
|
|
703
|
+
onClosed() {
|
|
704
|
+
super.onClosed();
|
|
705
|
+
this.restrictContentMaxHeight();
|
|
706
|
+
document.removeEventListener('tapstart', this.onOutsideClick);
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* enter key processing
|
|
710
|
+
* @param event Enter
|
|
711
|
+
* @returns {void}
|
|
712
|
+
*/
|
|
713
|
+
onEnterKey(event) {
|
|
714
|
+
if (!this.opened) {
|
|
715
|
+
this.requestSuggestions('enter-pressed');
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
/* istanbul ignore next */
|
|
719
|
+
if (this.loading) {
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
// more results
|
|
723
|
+
if (this.moreResults && event.shiftKey) {
|
|
724
|
+
this.fetchMoreSuggestions();
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
if (!this.highlightedItem) {
|
|
728
|
+
this.setOpened(false);
|
|
729
|
+
return;
|
|
730
|
+
}
|
|
731
|
+
this.highlightedItem && this.selectItem(this.highlightedItem, 'enter');
|
|
732
|
+
}
|
|
733
|
+
/**
|
|
734
|
+
* Up key processing
|
|
735
|
+
* @returns {void}
|
|
736
|
+
*/
|
|
737
|
+
onUpKey() {
|
|
738
|
+
if (!this.opened) {
|
|
739
|
+
this.requestSuggestions('suggestions-revealed');
|
|
740
|
+
return;
|
|
741
|
+
}
|
|
742
|
+
/* istanbul ignore next */
|
|
743
|
+
if (this.loading) {
|
|
744
|
+
return;
|
|
745
|
+
}
|
|
746
|
+
this.focusElement(-1);
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Down key processing
|
|
750
|
+
* @returns {void}
|
|
751
|
+
*/
|
|
752
|
+
onDownKey() {
|
|
753
|
+
if (!this.opened) {
|
|
754
|
+
this.requestSuggestions('suggestions-revealed');
|
|
755
|
+
return;
|
|
756
|
+
}
|
|
757
|
+
/* istanbul ignore next */
|
|
758
|
+
if (this.loading) {
|
|
759
|
+
return;
|
|
760
|
+
}
|
|
761
|
+
this.focusElement(1);
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* Esc key processing
|
|
765
|
+
* @returns {void}
|
|
766
|
+
*/
|
|
767
|
+
onEscKey() {
|
|
768
|
+
if (this.opened) {
|
|
769
|
+
// if preserved value exists, set it back
|
|
770
|
+
this.dispatchItemSelect('reset');
|
|
771
|
+
this.setOpened(false);
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
if (this.query) {
|
|
775
|
+
this.suspend();
|
|
776
|
+
this.dispatchItemSelect('clear');
|
|
777
|
+
this.resume();
|
|
778
|
+
this.requestSuggestions('escape-pressed');
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
/**
|
|
782
|
+
* Highlight it on mouse move
|
|
783
|
+
* @param event for item
|
|
784
|
+
* @returns {void}
|
|
785
|
+
*/
|
|
786
|
+
onItemMouseMove(event) {
|
|
787
|
+
this.highlightItem(this.getTarget(event));
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* @param target Item to check
|
|
791
|
+
* @returns true if an item can be highlighted and selectable
|
|
792
|
+
*/
|
|
793
|
+
canSelect(target) {
|
|
794
|
+
return this.suggestionMap.has(target) || (this.moreResults && target === this.moreResultsItem);
|
|
795
|
+
}
|
|
796
|
+
/**
|
|
797
|
+
* Get suggestion for target
|
|
798
|
+
* @param target Target to check
|
|
799
|
+
* @returns suggestion
|
|
800
|
+
*/
|
|
801
|
+
getSuggestionFor(target) {
|
|
802
|
+
return target && this.suggestionMap.get(target);
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Select the item from the list
|
|
806
|
+
* @param target Element to select
|
|
807
|
+
* @param method 'click', 'enter' or 'navigation'
|
|
808
|
+
* @returns {void}
|
|
809
|
+
*/
|
|
810
|
+
selectItem(target, method) {
|
|
811
|
+
if (this.canSelect(target)) {
|
|
812
|
+
// more results
|
|
813
|
+
if (target === this.moreResultsItem) {
|
|
814
|
+
this.dispatchItemSelect('reset');
|
|
815
|
+
switch (method) {
|
|
816
|
+
case 'click':
|
|
817
|
+
case 'enter':
|
|
818
|
+
this.fetchMoreSuggestions();
|
|
819
|
+
break;
|
|
820
|
+
default:
|
|
821
|
+
// node default
|
|
822
|
+
}
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
825
|
+
this.dispatchItemSelect(method, target);
|
|
826
|
+
switch (method) {
|
|
827
|
+
case 'click':
|
|
828
|
+
case 'enter':
|
|
829
|
+
this.dispatchSuggestionsClearRequested();
|
|
830
|
+
break;
|
|
831
|
+
default:
|
|
832
|
+
// node default
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
/**
|
|
837
|
+
* Get the list of rendered suggestions
|
|
838
|
+
* @returns renderedSuggestions
|
|
839
|
+
*/
|
|
840
|
+
get renderedSuggestions() {
|
|
841
|
+
const keys = [];
|
|
842
|
+
this.suggestionMap.forEach((value, key) => {
|
|
843
|
+
keys.push(key);
|
|
844
|
+
});
|
|
845
|
+
if (this.moreResults && this.moreResultsItem) {
|
|
846
|
+
keys.push(this.moreResultsItem);
|
|
847
|
+
}
|
|
848
|
+
return keys;
|
|
849
|
+
}
|
|
850
|
+
/**
|
|
851
|
+
* Fired when mouse leave event happens. Remove highlight from the item
|
|
852
|
+
* @returns {void}
|
|
853
|
+
*/
|
|
854
|
+
/* istanbul ignore next */
|
|
855
|
+
onItemMouseLeave() {
|
|
856
|
+
this.highlightItem(); // remove highlight
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Fired when mouse click event happens. Select an item
|
|
860
|
+
* @param event Mouse click event
|
|
861
|
+
* @returns {void}
|
|
862
|
+
*/
|
|
863
|
+
onItemMouseClick(event) {
|
|
864
|
+
this.selectItem(this.getTarget(event), 'click');
|
|
865
|
+
}
|
|
866
|
+
/**
|
|
867
|
+
* check some of native properties was modified
|
|
868
|
+
* @param changedProperties properties that was changed
|
|
869
|
+
* @returns true if some of changedProperties modified
|
|
870
|
+
*/
|
|
871
|
+
shouldAutosuggestUpdate(changedProperties) {
|
|
872
|
+
return changedProperties.has('attach') || changedProperties.has('suggestions') || changedProperties.has('moreResults') || changedProperties.has('loading') || changedProperties.has('debounceRate');
|
|
873
|
+
}
|
|
874
|
+
changedCallbacks(changedProperties) {
|
|
875
|
+
if (changedProperties.has('attach')) {
|
|
876
|
+
this.attachChangeRunner.schedule(this.attachChangeFrameCallback);
|
|
877
|
+
}
|
|
878
|
+
if (changedProperties.has('moreResults')) {
|
|
879
|
+
this.moreResultsRunner.schedule(this.moreResultsFrameCallback);
|
|
880
|
+
}
|
|
881
|
+
if (changedProperties.has('loading')) {
|
|
882
|
+
this.loadingRunner.schedule(this.loadingFrameCallback);
|
|
883
|
+
}
|
|
884
|
+
if (changedProperties.has('opened')) {
|
|
885
|
+
this.handleAfterOpened();
|
|
886
|
+
}
|
|
887
|
+
if (changedProperties.has('debounceRate')) {
|
|
888
|
+
this.debounceRateChange();
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
/**
|
|
892
|
+
* handle highlight after open
|
|
893
|
+
* @returns {void}
|
|
894
|
+
*/
|
|
895
|
+
handleAfterOpened() {
|
|
896
|
+
this.highlightItem(); // hide highlight for case more-result
|
|
897
|
+
}
|
|
898
|
+
/**
|
|
899
|
+
* recreate debouncer if dobounceRate was changed
|
|
900
|
+
* @returns {void}
|
|
901
|
+
*/
|
|
902
|
+
debounceRateChange() {
|
|
903
|
+
this.jobRunner.fulfil();
|
|
904
|
+
this.jobRunner = new TimeoutTaskRunner(this.debounceRate);
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Dispatch attach events remove action event
|
|
908
|
+
* @returns {void}
|
|
909
|
+
*/
|
|
910
|
+
dispatchAttachEventsRemoveAction() {
|
|
911
|
+
if (this.attachTarget) {
|
|
912
|
+
/**
|
|
913
|
+
* @event remove-attach-target-events
|
|
914
|
+
* Fired when attach has been removed.
|
|
915
|
+
* Remove attach target listeners.
|
|
916
|
+
*/
|
|
917
|
+
this.dispatchEventDefault(new CustomEvent('remove-attach-target-events', {
|
|
918
|
+
cancelable: true
|
|
919
|
+
}), this.attachEventsRemoveAction);
|
|
920
|
+
this.attachTarget = null;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
/**
|
|
924
|
+
* Run when suggestions get changed
|
|
925
|
+
* NB: this function is only run when htmlRenderer is set to false
|
|
926
|
+
* @returns {void}
|
|
927
|
+
*/
|
|
928
|
+
suggestionsChange() {
|
|
929
|
+
this.contentSlot && this.contentSlot.assignedNodes().forEach(this.removeChildNode);
|
|
930
|
+
this.appendChild(this.suggestions.reduce(this.generateSuggestionsFragment, document.createDocumentFragment()));
|
|
931
|
+
}
|
|
932
|
+
/**
|
|
933
|
+
* Dispatch item select event
|
|
934
|
+
* The event may change input, therefore suspend listening
|
|
935
|
+
* @param method Select method
|
|
936
|
+
* @param target Target for suggestion
|
|
937
|
+
* @returns {void}
|
|
938
|
+
*/
|
|
939
|
+
dispatchItemSelect(method, target = null) {
|
|
940
|
+
this.suspend();
|
|
941
|
+
/**
|
|
942
|
+
* @event item-select
|
|
943
|
+
* Fired when an item gets selected
|
|
944
|
+
* @param {AutosuggestMethodType} method Select method
|
|
945
|
+
* @param {HTMLElement} target Selection target
|
|
946
|
+
* @param {*} [suggestion] Selected suggestion or null
|
|
947
|
+
* @param {*} [query] Saved query object or null
|
|
948
|
+
*/
|
|
949
|
+
this.dispatchEventDefault(new CustomEvent('item-select', {
|
|
950
|
+
cancelable: true,
|
|
951
|
+
detail: {
|
|
952
|
+
method,
|
|
953
|
+
target,
|
|
954
|
+
suggestion: this.getSuggestionFor(target),
|
|
955
|
+
query: method === 'clear' ? null : this.preservedQueryValue
|
|
956
|
+
}
|
|
957
|
+
}), this.itemSelectAction);
|
|
958
|
+
this.resume();
|
|
959
|
+
}
|
|
960
|
+
/**
|
|
961
|
+
* fire 'suggestions-fetch-requested' event
|
|
962
|
+
* @param reason Dispatch reason
|
|
963
|
+
* @returns {void}
|
|
964
|
+
*/
|
|
965
|
+
dispatchSuggestionsFetchRequested(reason) {
|
|
966
|
+
/**
|
|
967
|
+
* @event suggestions-fetch-requested
|
|
968
|
+
* Fired when auto suggest requests the data.
|
|
969
|
+
* @param {String} query Input query
|
|
970
|
+
* @param {} reason The reason to fetch data
|
|
971
|
+
*/
|
|
972
|
+
this.dispatchEventDefault(new CustomEvent('suggestions-fetch-requested', {
|
|
973
|
+
cancelable: true,
|
|
974
|
+
detail: {
|
|
975
|
+
query: this.query,
|
|
976
|
+
reason
|
|
977
|
+
}
|
|
978
|
+
}), this.suggestionsFetchRequestedAction);
|
|
979
|
+
}
|
|
980
|
+
/**
|
|
981
|
+
* fire 'suggestions-clear-requested' event
|
|
982
|
+
* @returns {void}
|
|
983
|
+
*/
|
|
984
|
+
dispatchSuggestionsClearRequested() {
|
|
985
|
+
this.preservedQueryValue = null;
|
|
986
|
+
/**
|
|
987
|
+
* @event suggestions-clear-requested
|
|
988
|
+
* Fired when auto suggest requests to clear the data.
|
|
989
|
+
* If used in reactive application, prevent default and set suggestions to []
|
|
990
|
+
*/
|
|
991
|
+
this.dispatchEventDefault(new CustomEvent('suggestions-clear-requested', {
|
|
992
|
+
cancelable: true
|
|
993
|
+
}), this.suggestionsClearRequestedAction);
|
|
994
|
+
}
|
|
995
|
+
/**
|
|
996
|
+
* fire 'suggestions-query' event
|
|
997
|
+
* @param reason Dispatch reason
|
|
998
|
+
* @returns {void}
|
|
999
|
+
*/
|
|
1000
|
+
dispatchSuggestionsQuery(reason) {
|
|
1001
|
+
/**
|
|
1002
|
+
* @event suggestions-query
|
|
1003
|
+
* Fired when input value has changed and the query must be set.
|
|
1004
|
+
* @param reason The reason to request query
|
|
1005
|
+
*/
|
|
1006
|
+
this.dispatchEventDefault(new CustomEvent('suggestions-query', {
|
|
1007
|
+
cancelable: true,
|
|
1008
|
+
detail: {
|
|
1009
|
+
reason
|
|
1010
|
+
}
|
|
1011
|
+
}), this.suggestionsQueryAction);
|
|
1012
|
+
}
|
|
1013
|
+
/**
|
|
1014
|
+
* Dispatch event and run default action if preventDefault is not run
|
|
1015
|
+
* @param event Custom event to dispatch
|
|
1016
|
+
* @param defaultAction Default action to run
|
|
1017
|
+
* @returns {void}
|
|
1018
|
+
*/
|
|
1019
|
+
dispatchEventDefault(event, defaultAction) {
|
|
1020
|
+
this.dispatchEvent(event);
|
|
1021
|
+
if (!event.defaultPrevented) {
|
|
1022
|
+
defaultAction.call(this, event);
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
/**
|
|
1026
|
+
* Check if the attach target is in focus
|
|
1027
|
+
* @returns focused true if attach target is focused
|
|
1028
|
+
*/
|
|
1029
|
+
get attachTargetFocused() {
|
|
1030
|
+
return this.isFocused(document.activeElement) || this.attachTarget === this.lastActiveElement;
|
|
1031
|
+
}
|
|
1032
|
+
/**
|
|
1033
|
+
* Walk through shadowDOM to find activeElement
|
|
1034
|
+
* @param activeElement currently active document element
|
|
1035
|
+
* @returns true if activeElement is attached target
|
|
1036
|
+
*/
|
|
1037
|
+
isFocused(activeElement) {
|
|
1038
|
+
if (this.attachTarget === activeElement) {
|
|
1039
|
+
return true;
|
|
1040
|
+
}
|
|
1041
|
+
if (activeElement && activeElement.shadowRoot) {
|
|
1042
|
+
return this.isFocused(activeElement.shadowRoot.activeElement);
|
|
1043
|
+
}
|
|
1044
|
+
return false;
|
|
1045
|
+
}
|
|
1046
|
+
/**
|
|
1047
|
+
* Check if the autosuggest has content
|
|
1048
|
+
* @returns content exists
|
|
1049
|
+
*/
|
|
1050
|
+
get hasContent() {
|
|
1051
|
+
if (this.moreResults) {
|
|
1052
|
+
return true;
|
|
1053
|
+
}
|
|
1054
|
+
// Space characters (e.g. space, tab, EOL) don't count as having content
|
|
1055
|
+
const nodes = this.contentSlot && this.contentSlot.assignedNodes() || [];
|
|
1056
|
+
return nodes.some(({ nodeType, textContent }) => nodeType === Node.ELEMENT_NODE || (textContent && textContent.search(/\S/) >= 0)); // If node is element always return true
|
|
1057
|
+
}
|
|
1058
|
+
/**
|
|
1059
|
+
* Suspend updating suggestions on value-changed
|
|
1060
|
+
* Autosuggest is suspended on select
|
|
1061
|
+
* @returns {void}
|
|
1062
|
+
*/
|
|
1063
|
+
suspend() {
|
|
1064
|
+
this.suspendedKey = true;
|
|
1065
|
+
}
|
|
1066
|
+
/**
|
|
1067
|
+
* Resume suspended autosuggest
|
|
1068
|
+
* @returns {void}
|
|
1069
|
+
*/
|
|
1070
|
+
resume() {
|
|
1071
|
+
this.suspendedKey = false;
|
|
1072
|
+
}
|
|
1073
|
+
/**
|
|
1074
|
+
* Check if the autosuggest is suspended
|
|
1075
|
+
* @returns {Boolean} suspended
|
|
1076
|
+
*/
|
|
1077
|
+
get suspended() {
|
|
1078
|
+
return this.suspendedKey;
|
|
1079
|
+
}
|
|
1080
|
+
/**
|
|
1081
|
+
* Event target is not always what we want. Try to find the best target to process further
|
|
1082
|
+
* @param event Mouse click hover event
|
|
1083
|
+
* @returns target
|
|
1084
|
+
*/
|
|
1085
|
+
getTarget(event) {
|
|
1086
|
+
const path = event.composedPath();
|
|
1087
|
+
for (let i = 0; i <= path.length; i += 1) {
|
|
1088
|
+
const node = path[i];
|
|
1089
|
+
/* istanbul ignore next */
|
|
1090
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
1091
|
+
continue;
|
|
1092
|
+
}
|
|
1093
|
+
if (this.canSelect(node)) {
|
|
1094
|
+
return node;
|
|
1095
|
+
}
|
|
1096
|
+
/* istanbul ignore next */
|
|
1097
|
+
if (node === this) {
|
|
1098
|
+
return event.target;
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
return event.target;
|
|
1102
|
+
}
|
|
1103
|
+
/**
|
|
1104
|
+
* Highlight next or previous highlightable element if present
|
|
1105
|
+
* @param {Number} direction -1 - up/next; 1 - down/previous
|
|
1106
|
+
* @returns {void}
|
|
1107
|
+
*/
|
|
1108
|
+
focusElement(direction) {
|
|
1109
|
+
// focus is spread across
|
|
1110
|
+
const highlightedItem = this.highlightedItem;
|
|
1111
|
+
const children = this.renderedSuggestions;
|
|
1112
|
+
const idx = highlightedItem ? children.indexOf(highlightedItem) : -1;
|
|
1113
|
+
let focusElement;
|
|
1114
|
+
if (direction === 1) {
|
|
1115
|
+
focusElement = idx === -1 ? children[0] : children[idx + 1];
|
|
1116
|
+
}
|
|
1117
|
+
else {
|
|
1118
|
+
focusElement = idx === -1 ? children[children.length - 1] : children[idx - 1];
|
|
1119
|
+
}
|
|
1120
|
+
if (!focusElement) {
|
|
1121
|
+
focusElement = direction === 1 ? children[0] : children[children.length - 1];
|
|
1122
|
+
}
|
|
1123
|
+
if (focusElement) {
|
|
1124
|
+
this.highlightItem(focusElement, false);
|
|
1125
|
+
focusElement.scrollIntoView({
|
|
1126
|
+
behavior: 'auto',
|
|
1127
|
+
block: 'nearest'
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
/**
|
|
1132
|
+
* @returns {void}
|
|
1133
|
+
*/
|
|
1134
|
+
notifySuggestions() {
|
|
1135
|
+
this.dispatchEvent(new CustomEvent('suggestions-changed', {
|
|
1136
|
+
detail: {
|
|
1137
|
+
value: this.suggestions
|
|
1138
|
+
}
|
|
1139
|
+
}));
|
|
1140
|
+
if (!this.htmlRenderer) {
|
|
1141
|
+
this.suggestionsChange();
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
/**
|
|
1145
|
+
* Set the width
|
|
1146
|
+
* @returns {void}
|
|
1147
|
+
*/
|
|
1148
|
+
refit() {
|
|
1149
|
+
super.refit();
|
|
1150
|
+
if (this.positionTarget && this.positionTarget instanceof HTMLElement) {
|
|
1151
|
+
const rect = this.positionTarget.getBoundingClientRect();
|
|
1152
|
+
this.style.minWidth = `${rect.width}px`;
|
|
1153
|
+
}
|
|
1154
|
+
this.restrictContentMaxHeight();
|
|
1155
|
+
}
|
|
1156
|
+
/**
|
|
1157
|
+
* IE11 only: Restrict maximum height of content element
|
|
1158
|
+
* @param [maxHeight] Maximum height of content element
|
|
1159
|
+
* @returns {void}
|
|
1160
|
+
*/
|
|
1161
|
+
/* istanbul ignore next */
|
|
1162
|
+
restrictContentMaxHeight(maxHeight) {
|
|
1163
|
+
if (!isIE) {
|
|
1164
|
+
return;
|
|
1165
|
+
}
|
|
1166
|
+
if (maxHeight) {
|
|
1167
|
+
this.contentElement && this.contentElement.style.setProperty('max-height', `${maxHeight}px`);
|
|
1168
|
+
}
|
|
1169
|
+
else {
|
|
1170
|
+
this.contentElement && this.contentElement.style.removeProperty('max-height');
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
/**
|
|
1174
|
+
* IE11 only: Calculate the maxHeight of content element
|
|
1175
|
+
* @param size Size of the dialog
|
|
1176
|
+
* @returns {void}
|
|
1177
|
+
*/
|
|
1178
|
+
/* istanbul ignore next */
|
|
1179
|
+
calculateContentMaxHeight(size) {
|
|
1180
|
+
var _a, _b, _c;
|
|
1181
|
+
if (!isIE) {
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
const headerRect = (_a = this.headerElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
1185
|
+
const footerRect = (_b = this.footerElement) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
1186
|
+
const contentRect = (_c = this.contentElement) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect();
|
|
1187
|
+
const dialogHeight = size.height;
|
|
1188
|
+
const headerHeight = headerRect ? headerRect.height : 0;
|
|
1189
|
+
const footerHeight = footerRect ? footerRect.height : 0;
|
|
1190
|
+
const contentHeight = contentRect ? contentRect.height : 0;
|
|
1191
|
+
if (headerHeight + footerHeight + contentHeight > dialogHeight) {
|
|
1192
|
+
this.restrictContentMaxHeight(dialogHeight - footerHeight - headerHeight);
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
};
|
|
1196
|
+
Autosuggest.defaultDebounceRate = 100;
|
|
1197
|
+
Autosuggest.defaultMoreSearchText = 'More results for {0}';
|
|
1198
|
+
__decorate([
|
|
1199
|
+
property({ type: String })
|
|
1200
|
+
], Autosuggest.prototype, "attach", void 0);
|
|
1201
|
+
__decorate([
|
|
1202
|
+
property({ type: Boolean, attribute: 'request-on-focus' })
|
|
1203
|
+
], Autosuggest.prototype, "requestOnFocus", void 0);
|
|
1204
|
+
__decorate([
|
|
1205
|
+
property({ type: Boolean, reflect: true, attribute: 'more-results' })
|
|
1206
|
+
], Autosuggest.prototype, "moreResults", void 0);
|
|
1207
|
+
__decorate([
|
|
1208
|
+
property({ type: String, attribute: 'more-search-text' })
|
|
1209
|
+
], Autosuggest.prototype, "moreSearchText", void 0);
|
|
1210
|
+
__decorate([
|
|
1211
|
+
property({ type: Boolean, reflect: true })
|
|
1212
|
+
], Autosuggest.prototype, "loading", void 0);
|
|
1213
|
+
__decorate([
|
|
1214
|
+
property({ type: Object, attribute: false })
|
|
1215
|
+
], Autosuggest.prototype, "query", void 0);
|
|
1216
|
+
__decorate([
|
|
1217
|
+
property({ type: Number, attribute: 'debounce-rate' })
|
|
1218
|
+
], Autosuggest.prototype, "debounceRate", void 0);
|
|
1219
|
+
__decorate([
|
|
1220
|
+
property({ type: Function, attribute: false })
|
|
1221
|
+
], Autosuggest.prototype, "renderer", void 0);
|
|
1222
|
+
__decorate([
|
|
1223
|
+
property({ type: Function, attribute: false })
|
|
1224
|
+
], Autosuggest.prototype, "highlightable", void 0);
|
|
1225
|
+
__decorate([
|
|
1226
|
+
property({ type: Array, attribute: false })
|
|
1227
|
+
], Autosuggest.prototype, "suggestions", void 0);
|
|
1228
|
+
__decorate([
|
|
1229
|
+
property({ type: Boolean, attribute: 'html-renderer' })
|
|
1230
|
+
], Autosuggest.prototype, "htmlRenderer", void 0);
|
|
1231
|
+
__decorate([
|
|
1232
|
+
query('#moreResults')
|
|
1233
|
+
], Autosuggest.prototype, "moreResultsItem", void 0);
|
|
1234
|
+
__decorate([
|
|
1235
|
+
query('#contentSlot')
|
|
1236
|
+
], Autosuggest.prototype, "contentSlot", void 0);
|
|
1237
|
+
__decorate([
|
|
1238
|
+
query('[part="content"]')
|
|
1239
|
+
], Autosuggest.prototype, "contentElement", void 0);
|
|
1240
|
+
__decorate([
|
|
1241
|
+
query('[part="header"]')
|
|
1242
|
+
], Autosuggest.prototype, "headerElement", void 0);
|
|
1243
|
+
__decorate([
|
|
1244
|
+
query('[part="footer"]')
|
|
1245
|
+
], Autosuggest.prototype, "footerElement", void 0);
|
|
1246
|
+
Autosuggest = Autosuggest_1 = __decorate([
|
|
1247
|
+
customElement('ef-autosuggest', {
|
|
1248
|
+
alias: 'emerald-autosuggest'
|
|
1249
|
+
})
|
|
1250
|
+
], Autosuggest);
|
|
1251
|
+
export { Autosuggest };
|