Last active
February 10, 2025 13:21
-
-
Save evoactivity/14f5b1438cf5a1bcb93b80fe999078ef to your computer and use it in GitHub Desktop.
ember-eui fix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/dist/_app_/utils/accesibility/accessible-click-keys.js b/dist/_app_/utils/accesibility/accessible-click-keys.js | |
deleted file mode 100644 | |
index 9a8d342bfdd5eb7bb846d936cf9dbdebbaf3f2d0..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/accesibility/cascading-menu-keys.js b/dist/_app_/utils/accesibility/cascading-menu-keys.js | |
deleted file mode 100644 | |
index bda2478b4a5464ea12a24c014821bbf2514b7cc1..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/accesibility/combo-box-keys.js b/dist/_app_/utils/accesibility/combo-box-keys.js | |
deleted file mode 100644 | |
index fe5d1c462d311f2974a5c1b88097e39971c5eabb..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/accesibility/index.js b/dist/_app_/utils/accesibility/index.js | |
deleted file mode 100644 | |
index 6119d7578ca7775225bdd21d1a27456385d9380d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/breakpoint.js b/dist/_app_/utils/breakpoint.js | |
deleted file mode 100644 | |
index 9fdf461da4da56e225dddb0e0dd241cc0cfcba48..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/browser/browser.js b/dist/_app_/utils/browser/browser.js | |
deleted file mode 100644 | |
index 76929e642191997d5dc83c7618e5b1b130362481..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/browser/index.js b/dist/_app_/utils/browser/index.js | |
deleted file mode 100644 | |
index 3888383e2118f0ca6ddf387e7527b77ad6eac0ed..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/code/utils.js b/dist/_app_/utils/code/utils.js | |
deleted file mode 100644 | |
index de2323d63070b368a99408405a13296ef066f956..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/color/color_palette.js b/dist/_app_/utils/color/color_palette.js | |
deleted file mode 100644 | |
index 73f89128cfe37e28984f0581f7d0afa93922ae9d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/color/eui_palettes.js b/dist/_app_/utils/color/eui_palettes.js | |
deleted file mode 100644 | |
index 62872a3c1d7b9da9d74baea45f2ae99b52949c31..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/color/index.js b/dist/_app_/utils/color/index.js | |
deleted file mode 100644 | |
index 215dd9be8cdf8a5c7931c09e6b233bba3a0ac57b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/copy-to-clipboard.js b/dist/_app_/utils/copy-to-clipboard.js | |
deleted file mode 100644 | |
index c20e7e5d16501beabd8472d48dad9cf40df6f6ea..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-accordion.js b/dist/_app_/utils/css-mappings/eui-accordion.js | |
deleted file mode 100644 | |
index 8732ad733ba3b34b9d5fd3dd5f20b0ea151ca6a0..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-avatar.js b/dist/_app_/utils/css-mappings/eui-avatar.js | |
deleted file mode 100644 | |
index 5aa18a8c0ff489a97a13afeef78fedb9dc38aff1..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-badge-group.js b/dist/_app_/utils/css-mappings/eui-badge-group.js | |
deleted file mode 100644 | |
index 715ec940c48da3a02a634d0c0d9a775ceca83f28..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-badge.js b/dist/_app_/utils/css-mappings/eui-badge.js | |
deleted file mode 100644 | |
index 47460f75f1284aa58bc3e8558e0cc73642019749..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-beta-badge.js b/dist/_app_/utils/css-mappings/eui-beta-badge.js | |
deleted file mode 100644 | |
index 575942f6332ba59f36b025dbebe5e0a2a5f299a5..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-bottom-bar.js b/dist/_app_/utils/css-mappings/eui-bottom-bar.js | |
deleted file mode 100644 | |
index 35ed95afcb7fea4bf5f42840b84d131e8751af55..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-button-empty.js b/dist/_app_/utils/css-mappings/eui-button-empty.js | |
deleted file mode 100644 | |
index e35a4ae3c4ce59e987a89a87398304f92a9a0fc7..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-button-group-button.js b/dist/_app_/utils/css-mappings/eui-button-group-button.js | |
deleted file mode 100644 | |
index 010894848b106b490543ed3fbc01829a3d654c0b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-button-group.js b/dist/_app_/utils/css-mappings/eui-button-group.js | |
deleted file mode 100644 | |
index a1eb75c6fe1c1fc8f8bb3eee97e8a4340b68d49a..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-button-icon.js b/dist/_app_/utils/css-mappings/eui-button-icon.js | |
deleted file mode 100644 | |
index d8c22bf07d24a04dbbbde99c3e8d2daec5bf539f..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-button.js b/dist/_app_/utils/css-mappings/eui-button.js | |
deleted file mode 100644 | |
index 1a7702bf52f031fdd2f6ae83bc4933299c961e76..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-call-out.js b/dist/_app_/utils/css-mappings/eui-call-out.js | |
deleted file mode 100644 | |
index 5a01cb42381db408530adac957b2e1a5fd86fb7b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-card-select.js b/dist/_app_/utils/css-mappings/eui-card-select.js | |
deleted file mode 100644 | |
index 4c6434f590f545e04212ef6d99eca0d4f0215526..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-card.js b/dist/_app_/utils/css-mappings/eui-card.js | |
deleted file mode 100644 | |
index 70751dbdee2974d3284de01169c5b8095d646021..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-code-block.js b/dist/_app_/utils/css-mappings/eui-code-block.js | |
deleted file mode 100644 | |
index 9f6156e2df6a38ac02c62d01793d1690b639a884..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-collapsible-nav-group.js b/dist/_app_/utils/css-mappings/eui-collapsible-nav-group.js | |
deleted file mode 100644 | |
index 794c92b6b41a015cf63ebe6c236715844fa62121..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-comment-event.js b/dist/_app_/utils/css-mappings/eui-comment-event.js | |
deleted file mode 100644 | |
index 5819f96d2befbb9a493488e7246c280e01aea001..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-comment-timeline-icon.js b/dist/_app_/utils/css-mappings/eui-comment-timeline-icon.js | |
deleted file mode 100644 | |
index 28f12f025f1a151b907e71e4e1ab060cf0b1210f..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-context-menu-item.js b/dist/_app_/utils/css-mappings/eui-context-menu-item.js | |
deleted file mode 100644 | |
index 4acba583a9f75c4bbdfbdaafdd951606891aba96..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-described-form-group.js b/dist/_app_/utils/css-mappings/eui-described-form-group.js | |
deleted file mode 100644 | |
index dc3f25577741b3b43ce7a04564df65b42f453e61..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-description-list.js b/dist/_app_/utils/css-mappings/eui-description-list.js | |
deleted file mode 100644 | |
index cffc519b4d0acc3894dcca3922d621c0f62e2dfc..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-empty-prompt.js b/dist/_app_/utils/css-mappings/eui-empty-prompt.js | |
deleted file mode 100644 | |
index 373774ff90ee60e7d5dc7332c7d4c63dfb8cb0ff..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-file-picker.js b/dist/_app_/utils/css-mappings/eui-file-picker.js | |
deleted file mode 100644 | |
index 277640861f33d5461716d56f09f81985fdc2e507..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-flex-grid.js b/dist/_app_/utils/css-mappings/eui-flex-grid.js | |
deleted file mode 100644 | |
index 2d534254bb72c1eb5e661d106032ba2d08fb033e..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-flex-group.js b/dist/_app_/utils/css-mappings/eui-flex-group.js | |
deleted file mode 100644 | |
index 247b41583665e37328ab836a5a38a04660eb3aca..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-flex-item.js b/dist/_app_/utils/css-mappings/eui-flex-item.js | |
deleted file mode 100644 | |
index 240c414fa951838cfe00c381d035f0270c3814f9..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-flyout.js b/dist/_app_/utils/css-mappings/eui-flyout.js | |
deleted file mode 100644 | |
index aac883d9ebdce71c15237e40c48dd1e6da1b029d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-form-control-layout-clear-button.js b/dist/_app_/utils/css-mappings/eui-form-control-layout-clear-button.js | |
deleted file mode 100644 | |
index c084935f391db32df0fdc9a36cefcf92260e23da..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-form-row.js b/dist/_app_/utils/css-mappings/eui-form-row.js | |
deleted file mode 100644 | |
index f0bce72ddd09aa406ca7ffc6b85a33beb3f26d96..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-global-toast-list.js b/dist/_app_/utils/css-mappings/eui-global-toast-list.js | |
deleted file mode 100644 | |
index 8863ab53d8440742cc0603f22295a4b69d776090..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-header-links.js b/dist/_app_/utils/css-mappings/eui-header-links.js | |
deleted file mode 100644 | |
index 7c85eb7d23b6acac1fd54fbea102cf59fcc459fe..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-header-section-item.js b/dist/_app_/utils/css-mappings/eui-header-section-item.js | |
deleted file mode 100644 | |
index ec05891ccabc67616191a1e67c2b4ebb62e22cb1..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-header-section.js b/dist/_app_/utils/css-mappings/eui-header-section.js | |
deleted file mode 100644 | |
index 7f5e68fdaee89b92d0d2cf69bedb6c04ebce5ea3..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-header.js b/dist/_app_/utils/css-mappings/eui-header.js | |
deleted file mode 100644 | |
index f6a7f37e0b86ba313675ae083eda0d9c1537adac..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-health.js b/dist/_app_/utils/css-mappings/eui-health.js | |
deleted file mode 100644 | |
index cd835eafd507225168a2e7c0654580c8acace360..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-horizontal-rule.js b/dist/_app_/utils/css-mappings/eui-horizontal-rule.js | |
deleted file mode 100644 | |
index e51b131ee6f7664352cc17bcd530e4c520bb2b8b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-icon.js b/dist/_app_/utils/css-mappings/eui-icon.js | |
deleted file mode 100644 | |
index d7d0dcb3eb4ed5928a414a20038cbca10e82341a..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-image.js b/dist/_app_/utils/css-mappings/eui-image.js | |
deleted file mode 100644 | |
index 77fd5cb4500569b8f18325ee57b3b87fa5dab56e..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-link.js b/dist/_app_/utils/css-mappings/eui-link.js | |
deleted file mode 100644 | |
index 3cae64c0dc3cd0ce80fad75c2ea9e7e5e7d861ca..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-list-group-item.js b/dist/_app_/utils/css-mappings/eui-list-group-item.js | |
deleted file mode 100644 | |
index c617e838183cc47ba6d4ce4d00ccf3288f0625f2..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-list-group.js b/dist/_app_/utils/css-mappings/eui-list-group.js | |
deleted file mode 100644 | |
index a65665761c3f5fdc98dc405e51c45cf43b2f2daa..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-loading-spinner.js b/dist/_app_/utils/css-mappings/eui-loading-spinner.js | |
deleted file mode 100644 | |
index 60793ed8def540ed8c5382e583b4373a722ce131..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-modal.js b/dist/_app_/utils/css-mappings/eui-modal.js | |
deleted file mode 100644 | |
index bfcf97b01ae6e9cf9c2067310efc6bea0a8cd596..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-notification-badge.js b/dist/_app_/utils/css-mappings/eui-notification-badge.js | |
deleted file mode 100644 | |
index 13ccba6c22adab716a7869e6bdc2f607401188a3..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-page-body.js b/dist/_app_/utils/css-mappings/eui-page-body.js | |
deleted file mode 100644 | |
index 89a76259a687814cd2aa4e9e71fae0656ca2da1d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-page-content-body.js b/dist/_app_/utils/css-mappings/eui-page-content-body.js | |
deleted file mode 100644 | |
index cee0a6eb3069ee8abf117147ccbff29fb054ef10..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-page-content.js b/dist/_app_/utils/css-mappings/eui-page-content.js | |
deleted file mode 100644 | |
index fa5c6773e24af6f5f24bc49e45872bbf1822297d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-page-header.js b/dist/_app_/utils/css-mappings/eui-page-header.js | |
deleted file mode 100644 | |
index b6d22f0d9b81d6d76be04981fada8952659a45cd..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-page-side-bar.js b/dist/_app_/utils/css-mappings/eui-page-side-bar.js | |
deleted file mode 100644 | |
index b7855556c90c6dd5c50368fed48bbd1e550702c9..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-page.js b/dist/_app_/utils/css-mappings/eui-page.js | |
deleted file mode 100644 | |
index 113b6ae21b2e8e26c0adf33cf7dec436ca2ffa08..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-panel.js b/dist/_app_/utils/css-mappings/eui-panel.js | |
deleted file mode 100644 | |
index b478d39bb4fb219824774d3207c2ddab3df1040e..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-popover-footer.js b/dist/_app_/utils/css-mappings/eui-popover-footer.js | |
deleted file mode 100644 | |
index 516b80ab401c7f9c8a7bbda75dccf54fa02667a3..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-popover-title.js b/dist/_app_/utils/css-mappings/eui-popover-title.js | |
deleted file mode 100644 | |
index ba3e6c8b8778e12d66657277c54fb870e02fc7a0..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-popover.js b/dist/_app_/utils/css-mappings/eui-popover.js | |
deleted file mode 100644 | |
index 782f214bd23a383eea5468d262992f0bb2e75a87..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-progress-data.js b/dist/_app_/utils/css-mappings/eui-progress-data.js | |
deleted file mode 100644 | |
index d08082faf950c87e6e4fbe534fd93be3f5ac4004..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-progress.js b/dist/_app_/utils/css-mappings/eui-progress.js | |
deleted file mode 100644 | |
index c258cbff827b1e87acc1381c0f2e996fe944ac1c..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-range-highlight.js b/dist/_app_/utils/css-mappings/eui-range-highlight.js | |
deleted file mode 100644 | |
index be01c7bd053dfd88e184d9dda4ceddb98f1ee479..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-range-input.js b/dist/_app_/utils/css-mappings/eui-range-input.js | |
deleted file mode 100644 | |
index a5e2d5b86ed95993892f8df0ab0c4f5c034fba30..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-range-levels.js b/dist/_app_/utils/css-mappings/eui-range-levels.js | |
deleted file mode 100644 | |
index 7edc1aacb404337742e7ee8d5e3d4bd86eb6ff46..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-selectable-list-item.js b/dist/_app_/utils/css-mappings/eui-selectable-list-item.js | |
deleted file mode 100644 | |
index 27a24299dc1d544b100cba8128d6b1ac3b7f725c..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-spacer.js b/dist/_app_/utils/css-mappings/eui-spacer.js | |
deleted file mode 100644 | |
index 177eea22d8007ec773eec68f050139c10f8e62d9..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-stat.js b/dist/_app_/utils/css-mappings/eui-stat.js | |
deleted file mode 100644 | |
index 238436b0a94e055336f8298ecd1a86a1d00be767..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-step-number.js b/dist/_app_/utils/css-mappings/eui-step-number.js | |
deleted file mode 100644 | |
index 940f160b79eeeceed836919c350e9f0b4e74e8ac..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-tabs.js b/dist/_app_/utils/css-mappings/eui-tabs.js | |
deleted file mode 100644 | |
index 13b3efc8bff92b5b775c97674cc3b83071b3d82b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-text-align.js b/dist/_app_/utils/css-mappings/eui-text-align.js | |
deleted file mode 100644 | |
index 6ba3f60aad7c900f4a85a8b089cc38fa32240cd1..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-text-area.js b/dist/_app_/utils/css-mappings/eui-text-area.js | |
deleted file mode 100644 | |
index 6259cb2ec80ce636d5ec149641ae1cb95aa82f5d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-text-color.js b/dist/_app_/utils/css-mappings/eui-text-color.js | |
deleted file mode 100644 | |
index a6a3160c57dc2e677b5efbbba610e161e9d5d2b8..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-text.js b/dist/_app_/utils/css-mappings/eui-text.js | |
deleted file mode 100644 | |
index f6aad2df8c91ff5b083acfe07bd400b98028bf77..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-title.js b/dist/_app_/utils/css-mappings/eui-title.js | |
deleted file mode 100644 | |
index 691af09140a522fa8d612d330bf5f8deb84fa875..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-toast.js b/dist/_app_/utils/css-mappings/eui-toast.js | |
deleted file mode 100644 | |
index 46c85a9a0bc564a0397d1eddf9483c7bcbbfc880..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/eui-tool-tip.js b/dist/_app_/utils/css-mappings/eui-tool-tip.js | |
deleted file mode 100644 | |
index 16b88559fd9e1068bd84dc0910867c1a0e36e968..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/css-mappings/index.js b/dist/_app_/utils/css-mappings/index.js | |
deleted file mode 100644 | |
index 7638e6c868a4d6091507a81a56cf3248650315dc..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/detect-element-resize.js b/dist/_app_/utils/detect-element-resize.js | |
deleted file mode 100644 | |
index f0629529fbd674e90a6c6366f706a881aee501dc..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/index.js b/dist/_app_/utils/index.js | |
deleted file mode 100644 | |
index 6e3f58491a0fca5478042444865132b80e587b1a..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/keys.js b/dist/_app_/utils/keys.js | |
deleted file mode 100644 | |
index 3a16a382b46fc55114cb352b382a1fc2315786a8..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/markdown-actions.js b/dist/_app_/utils/markdown/markdown-actions.js | |
deleted file mode 100644 | |
index 6976cfeab872c1abb32b4c27a4ab2c73cf586b2d..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/markdown-modes.js b/dist/_app_/utils/markdown/markdown-modes.js | |
deleted file mode 100644 | |
index 18a8ce14e75c0a43b515113e4bef995ccae94822..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/markdown-types.js b/dist/_app_/utils/markdown/markdown-types.js | |
deleted file mode 100644 | |
index 46401e05804efca610fb47f80db7a83c676d358f..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-add-components/index.js b/dist/_app_/utils/markdown/plugins/markdown-add-components/index.js | |
deleted file mode 100644 | |
index f6719ee020764ca178ec9ce931a4a117e88ee22a..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-add-components/processor.js b/dist/_app_/utils/markdown/plugins/markdown-add-components/processor.js | |
deleted file mode 100644 | |
index 3c113719b33ea67556f552d817d3e28fef092de1..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-checkbox/index.js b/dist/_app_/utils/markdown/plugins/markdown-checkbox/index.js | |
deleted file mode 100644 | |
index af713343744ceb5af6c81002c6da7e8f3a85974f..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-checkbox/parser.js b/dist/_app_/utils/markdown/plugins/markdown-checkbox/parser.js | |
deleted file mode 100644 | |
index 49f450a22b279ab3eb2d26159b70b4598eeffe85..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/index.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/index.js | |
deleted file mode 100644 | |
index 3bd722ad5e1aa8843104ed295d8dc7afe48e53ae..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js | |
deleted file mode 100644 | |
index a18e854a43c470df6506226f5be0a6cbd6a562a4..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/plugins.js | |
deleted file mode 100644 | |
index 4a171146070e3f21ffa0767784eb0f7abe70a7de..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/processing-plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/processing-plugins.js | |
deleted file mode 100644 | |
index bae7c90eaf831b87e7957e6d766f410fba6cd8ac..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-default-plugins/ui-plugins.js b/dist/_app_/utils/markdown/plugins/markdown-default-plugins/ui-plugins.js | |
deleted file mode 100644 | |
index 8e34c1c559a381b22f04ad818eeed2fc64bbbd22..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-tooltip/index.js b/dist/_app_/utils/markdown/plugins/markdown-tooltip/index.js | |
deleted file mode 100644 | |
index b21da6c95ab741892c37a03231abe1e90b422251..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-tooltip/parser.js b/dist/_app_/utils/markdown/plugins/markdown-tooltip/parser.js | |
deleted file mode 100644 | |
index 61cd4f38a40360c6c919269eb887b0bf454f2f9c..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/markdown-tooltip/plugin.js b/dist/_app_/utils/markdown/plugins/markdown-tooltip/plugin.js | |
deleted file mode 100644 | |
index 681c0ac214a74ab64a9643f1535bd86cff86a8aa..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/plugins/to-dom.js b/dist/_app_/utils/markdown/plugins/to-dom.js | |
deleted file mode 100644 | |
index f5636481226ef9410b9149389030cad7da33717a..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/markdown/remark/remark-prismjs.js b/dist/_app_/utils/markdown/remark/remark-prismjs.js | |
deleted file mode 100644 | |
index 8159ab07d43544d3de7641921b94ef48cc65c88b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/maybe-unwrap-proxy.js b/dist/_app_/utils/maybe-unwrap-proxy.js | |
deleted file mode 100644 | |
index d90fc2e2a16faa5c8938bbc39a77207951fbd70b..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/number/index.js b/dist/_app_/utils/number/index.js | |
deleted file mode 100644 | |
index 933df5321e889c7c63cce6a8fb069762c6996387..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/number/number.js b/dist/_app_/utils/number/number.js | |
deleted file mode 100644 | |
index 9255c6a237170b0ec36b98c5b2a540bf1e091499..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/popover/index.js b/dist/_app_/utils/popover/index.js | |
deleted file mode 100644 | |
index 2cc5e798dfd48775b2d72ac390761c6558b26bbd..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/popover/types.js b/dist/_app_/utils/popover/types.js | |
deleted file mode 100644 | |
index f8a83d5aee2d0f957c11b162776ef80adba6a5e3..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/predicate/common_predicates.js b/dist/_app_/utils/predicate/common_predicates.js | |
deleted file mode 100644 | |
index cc5039092b87a1338c75181bbdaa7be018424480..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/predicate/index.js b/dist/_app_/utils/predicate/index.js | |
deleted file mode 100644 | |
index 1e712f7db66f0e5e9d9a365168bd5e2f910020f6..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/predicate/lodash_predicates.js b/dist/_app_/utils/predicate/lodash_predicates.js | |
deleted file mode 100644 | |
index e56af4c660e80b8ddbdef16bae7022d0ff273107..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/range/index.js b/dist/_app_/utils/range/index.js | |
deleted file mode 100644 | |
index c4b1a9b4fe7cb1653e36496b3620c8d5731202cb..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/timer.js b/dist/_app_/utils/timer.js | |
deleted file mode 100644 | |
index d71c0769abdf99d6165461153ced90d0eb33316c..0000000000000000000000000000000000000000 | |
diff --git a/dist/_app_/utils/transition.js b/dist/_app_/utils/transition.js | |
deleted file mode 100644 | |
index c9744b9c6047a81dfb1f91201e324e869cd65eaf..0000000000000000000000000000000000000000 | |
diff --git a/dist/components/eui-accordion.js b/dist/components/eui-accordion.js | |
index 69b86aea61c244bec2ad1287a0960275fa6b157e..ccde6c595cfcc3c8a5ca207b1779153bd2ad947e 100644 | |
--- a/dist/components/eui-accordion.js | |
+++ b/dist/components/eui-accordion.js | |
@@ -5,7 +5,7 @@ import { action } from '@ember/object'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import didUpdate from '@ember/render-modifiers/modifiers/did-update'; | |
import { htmlSafe } from '@ember/template'; | |
-import queue from 'ember-composable-helpers/helpers/queue'; | |
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue'; | |
import { element } from 'ember-element-helper'; | |
import set from 'ember-set-helper/helpers/set'; | |
import { not, eq, and } from 'ember-truth-helpers'; | |
diff --git a/dist/components/eui-accordion.js.map b/dist/components/eui-accordion.js.map | |
index 97f74605036e53f664f9664fd83fd113eb262f1e..c23a48f2ecb13fe0a707aabec58c03652710a816 100644 | |
--- a/dist/components/eui-accordion.js.map | |
+++ b/dist/components/eui-accordion.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-accordion.js","sources":["../../src/components/eui-accordion.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { paddingMapping } from '../utils/css-mappings/eui-accordion.ts';\nimport type { CommonArgs } from './common.ts';\n\ntype EuiAccordionPaddingSize = keyof typeof paddingMapping;\n\ntype AccordionArgs = {\n id?: string;\n\n element?: 'div' | 'fieldset';\n /**\n * Class that will apply to the trigger for the accordion.\n */\n buttonClassName?: string;\n\n buttonProps?: CommonArgs;\n\n /**\n * Applied to the main button receiving the `onToggle` event.\n * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).\n */\n buttonElement?: 'div' | 'legend' | 'button';\n /**\n * Extra props to pass to the EuiButtonIcon containing the arrow.\n */\n arrowProps?: {\n className?: string;\n };\n\n /**\n * Class that will apply to the trigger content for the accordion.\n */\n buttonContentClassName?: string;\n /**\n * The content of the clickable trigger\n */\n buttonContent?: Component;\n /**\n * Will appear right aligned against the button. Useful for separate actions like deletions.\n */\n extraAction?: Component | boolean;\n /**\n * The accordion will start in the open state.\n */\n initialIsOpen?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onToggle?: (isOpen: boolean) => void;\n /**\n * The padding around the exposed accordion content.\n */\n paddingSize?: EuiAccordionPaddingSize;\n /**\n * Placement of the arrow indicator, or 'none' to hide it.\n */\n arrowDisplay?: 'left' | 'right' | 'none';\n /**\n * Control the opening of accordion via prop\n */\n forceState?: 'closed' | 'open';\n /**\n * Change `extraAction` and children into a loading spinner\n */\n isLoading?: boolean;\n /**\n * Choose whether the loading message replaces the content. Customize the message by passing a node\n */\n isLoadingMessage?: boolean | Component;\n\n isOpen?: boolean;\n\n childClassName?: string;\n triggerClassName?: string;\n childContentClassName?: string;\n};\n\nexport interface EuiAccordionSignature {\n Element: any;\n Args: AccordionArgs;\n Blocks: {\n buttonContent: [boolean | undefined];\n content: [];\n extraAction: [boolean | undefined];\n };\n}\n\nexport default class EuiAccordionAccordionComponent extends Component<EuiAccordionSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) isLoadingMessage!: boolean;\n @argOrDefaultDecorator(false) initialIsOpen!: boolean;\n @argOrDefaultDecorator('none') paddingSize!: EuiAccordionPaddingSize;\n @argOrDefaultDecorator('left') arrowDisplay!: AccordionArgs['arrowDisplay'];\n\n @tracked _opened;\n @tracked childWrapper: HTMLDivElement | null = null;\n @tracked childContent: HTMLDivElement | null = null;\n\n constructor(owner: Owner, args: AccordionArgs) {\n super(owner, args);\n\n this._opened = this.args.forceState\n ? this.args.forceState === 'open'\n : this.args.initialIsOpen;\n }\n\n get buttonElement() {\n return this.args.element === 'fieldset' ? 'legend' : 'button';\n }\n\n get buttonElementIsFocusable() {\n return this.buttonElement === 'button';\n }\n\n get _arrowDisplay() {\n return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable\n ? 'left'\n : this.arrowDisplay;\n }\n\n get isOpen(): boolean | undefined {\n return this.args.forceState\n ? this.args.forceState === 'open'\n : this._opened;\n }\n\n get hasLoadingMessage(): boolean {\n return this.isLoadingMessage && this.isLoadingMessage !== true;\n }\n\n get buttonClasses(): string {\n return [\n 'euiAccordion__button',\n this.args.buttonClassName,\n this.args.buttonProps?.className\n ].join(' ');\n }\n\n get buttonContentClasses(): string {\n return [\n 'euiAccordion__buttonContent',\n this.args.buttonContentClassName\n ].join(' ');\n }\n\n get childContentStyle(): string | ReturnType<typeof htmlSafe> {\n return this._opened ? '' : htmlSafe(`height: 0px;`);\n }\n\n setChildContentHeight = () => {\n const { forceState } = this.args;\n\n requestAnimationFrame(() => {\n const height =\n this.childContent && (forceState ? forceState === 'open' : this._opened)\n ? this.childContent.clientHeight\n : 0;\n\n this.childWrapper &&\n this.childWrapper.setAttribute('style', `height: ${height}px`);\n });\n };\n\n @action\n onToggle(): void {\n if (this.args.forceState) {\n this.args.onToggle?.(this.args.forceState === 'open' ? false : true);\n } else {\n this._opened = !this._opened;\n\n if (this._opened && this.childWrapper) {\n this.childWrapper.focus();\n }\n\n this.args.onToggle?.(this._opened);\n }\n }\n\n <template>\n {{#let (argOrDefault @element \"div\") as |tagName|}}\n {{#if tagName}}\n {{#let\n (element tagName) (element this.buttonElement)\n as |Accordion ButtonElement|\n }}\n {{#if (and Accordion ButtonElement)}}\n <Accordion\n class={{classNames\n (if this.isOpen \"euiAccordion-isOpen\")\n componentName=\"EuiAccordion\"\n }}\n ...attributes\n >\n <div\n class={{classNames\n \"euiAccordion__triggerWrapper\"\n @triggerClassName\n }}\n >\n {{#if (eq this._arrowDisplay \"left\")}}\n <EuiButtonIcon\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n <ButtonElement\n type=\"button\"\n id={{argOrDefault @buttonProps.id (randomId)}}\n class={{this.buttonClasses}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n aria-labelledby={{argOrDefault @buttonProps.id (randomId)}}\n {{on \"click\" this.onToggle}}\n >\n <span class={{this.buttonContentClasses}}>\n {{yield this.isOpen to=\"buttonContent\"}}\n </span>\n </ButtonElement>\n {{#if\n (and\n @extraAction (has-block \"extraAction\") (not this.isLoading)\n )\n }}\n <div class=\"euiAccordion__optionalAction\">\n {{yield this.isOpen to=\"extraAction\"}}\n </div>\n {{else if this.isLoading}}\n <div class=\"euiAccordion__optionalAction\">\n <EuiLoadingSpinner />\n </div>\n {{/if}}\n {{#if (eq this._arrowDisplay \"right\")}}\n <EuiButtonIcon\n @color=\"text\"\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n </div>\n <div\n class=\"euiAccordion__childWrapper\"\n style={{this.childContentStyle}}\n id={{@id}}\n {{didInsert (set this \"childWrapper\")}}\n tabindex=\"-1\"\n role=\"region\"\n >\n <div\n class={{classNames\n (if this.isLoading \"euiAccordion__children-isLoading\")\n @childClassName\n }}\n {{didInsert\n (queue (set this \"childContent\") this.setChildContentHeight)\n }}\n {{resizeObserver onResize=this.setChildContentHeight}}\n {{didUpdate this.setChildContentHeight @forceState}}\n >\n {{#if (and this.isLoading this.isLoadingMessage)}}\n <EuiLoadingSpinner class=\"euiAccordion__spinner\" />\n <span>\n {{#if this.hasLoadingMessage}}\n {{this.isLoadingMessage}}\n {{else}}\n {{! <EuiI18n @token=\"euiAccordion.isLoading\" @default=\"Loading\" /> }}\n Loading...\n {{/if}}\n </span>\n {{else}}\n <div\n class={{classNames\n componentName=\"EuiAccordion\"\n paddingSize=this.paddingSize\n }}\n >\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n </div>\n </Accordion>\n {{/if}}\n {{/let}}\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiAccordionAccordionComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","constructor","owner","args","_opened","forceState","initialIsOpen","buttonElement","element","buttonElementIsFocusable","_arrowDisplay","arrowDisplay","isOpen","hasLoadingMessage","isLoadingMessage","buttonClasses","buttonClassName","buttonProps","className","join","buttonContentClasses","buttonContentClassName","childContentStyle","htmlSafe","setChildContentHeight","requestAnimationFrame","height","childContent","clientHeight","childWrapper","setAttribute","onToggle","focus","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","classNames","eq","EuiButtonIcon","on","randomId","not","EuiLoadingSpinner","didInsert","set","queue","resizeObserver","didUpdate"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-accordion.js","sources":["../../src/components/eui-accordion.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiLoadingSpinner from './eui-loading-spinner.gts';\n\nimport type { paddingMapping } from '../utils/css-mappings/eui-accordion.ts';\nimport type { CommonArgs } from './common.ts';\n\ntype EuiAccordionPaddingSize = keyof typeof paddingMapping;\n\ntype AccordionArgs = {\n id?: string;\n\n element?: 'div' | 'fieldset';\n /**\n * Class that will apply to the trigger for the accordion.\n */\n buttonClassName?: string;\n\n buttonProps?: CommonArgs;\n\n /**\n * Applied to the main button receiving the `onToggle` event.\n * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).\n */\n buttonElement?: 'div' | 'legend' | 'button';\n /**\n * Extra props to pass to the EuiButtonIcon containing the arrow.\n */\n arrowProps?: {\n className?: string;\n };\n\n /**\n * Class that will apply to the trigger content for the accordion.\n */\n buttonContentClassName?: string;\n /**\n * The content of the clickable trigger\n */\n buttonContent?: Component;\n /**\n * Will appear right aligned against the button. Useful for separate actions like deletions.\n */\n extraAction?: Component | boolean;\n /**\n * The accordion will start in the open state.\n */\n initialIsOpen?: boolean;\n /**\n * Optional callback method called on open and close with a single `isOpen` parameter\n */\n onToggle?: (isOpen: boolean) => void;\n /**\n * The padding around the exposed accordion content.\n */\n paddingSize?: EuiAccordionPaddingSize;\n /**\n * Placement of the arrow indicator, or 'none' to hide it.\n */\n arrowDisplay?: 'left' | 'right' | 'none';\n /**\n * Control the opening of accordion via prop\n */\n forceState?: 'closed' | 'open';\n /**\n * Change `extraAction` and children into a loading spinner\n */\n isLoading?: boolean;\n /**\n * Choose whether the loading message replaces the content. Customize the message by passing a node\n */\n isLoadingMessage?: boolean | Component;\n\n isOpen?: boolean;\n\n childClassName?: string;\n triggerClassName?: string;\n childContentClassName?: string;\n};\n\nexport interface EuiAccordionSignature {\n Element: any;\n Args: AccordionArgs;\n Blocks: {\n buttonContent: [boolean | undefined];\n content: [];\n extraAction: [boolean | undefined];\n };\n}\n\nexport default class EuiAccordionAccordionComponent extends Component<EuiAccordionSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) isLoadingMessage!: boolean;\n @argOrDefaultDecorator(false) initialIsOpen!: boolean;\n @argOrDefaultDecorator('none') paddingSize!: EuiAccordionPaddingSize;\n @argOrDefaultDecorator('left') arrowDisplay!: AccordionArgs['arrowDisplay'];\n\n @tracked _opened;\n @tracked childWrapper: HTMLDivElement | null = null;\n @tracked childContent: HTMLDivElement | null = null;\n\n constructor(owner: Owner, args: AccordionArgs) {\n super(owner, args);\n\n this._opened = this.args.forceState\n ? this.args.forceState === 'open'\n : this.args.initialIsOpen;\n }\n\n get buttonElement() {\n return this.args.element === 'fieldset' ? 'legend' : 'button';\n }\n\n get buttonElementIsFocusable() {\n return this.buttonElement === 'button';\n }\n\n get _arrowDisplay() {\n return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable\n ? 'left'\n : this.arrowDisplay;\n }\n\n get isOpen(): boolean | undefined {\n return this.args.forceState\n ? this.args.forceState === 'open'\n : this._opened;\n }\n\n get hasLoadingMessage(): boolean {\n return this.isLoadingMessage && this.isLoadingMessage !== true;\n }\n\n get buttonClasses(): string {\n return [\n 'euiAccordion__button',\n this.args.buttonClassName,\n this.args.buttonProps?.className\n ].join(' ');\n }\n\n get buttonContentClasses(): string {\n return [\n 'euiAccordion__buttonContent',\n this.args.buttonContentClassName\n ].join(' ');\n }\n\n get childContentStyle(): string | ReturnType<typeof htmlSafe> {\n return this._opened ? '' : htmlSafe(`height: 0px;`);\n }\n\n setChildContentHeight = () => {\n const { forceState } = this.args;\n\n requestAnimationFrame(() => {\n const height =\n this.childContent && (forceState ? forceState === 'open' : this._opened)\n ? this.childContent.clientHeight\n : 0;\n\n this.childWrapper &&\n this.childWrapper.setAttribute('style', `height: ${height}px`);\n });\n };\n\n @action\n onToggle(): void {\n if (this.args.forceState) {\n this.args.onToggle?.(this.args.forceState === 'open' ? false : true);\n } else {\n this._opened = !this._opened;\n\n if (this._opened && this.childWrapper) {\n this.childWrapper.focus();\n }\n\n this.args.onToggle?.(this._opened);\n }\n }\n\n <template>\n {{#let (argOrDefault @element \"div\") as |tagName|}}\n {{#if tagName}}\n {{#let\n (element tagName) (element this.buttonElement)\n as |Accordion ButtonElement|\n }}\n {{#if (and Accordion ButtonElement)}}\n <Accordion\n class={{classNames\n (if this.isOpen \"euiAccordion-isOpen\")\n componentName=\"EuiAccordion\"\n }}\n ...attributes\n >\n <div\n class={{classNames\n \"euiAccordion__triggerWrapper\"\n @triggerClassName\n }}\n >\n {{#if (eq this._arrowDisplay \"left\")}}\n <EuiButtonIcon\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n <ButtonElement\n type=\"button\"\n id={{argOrDefault @buttonProps.id (randomId)}}\n class={{this.buttonClasses}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n aria-labelledby={{argOrDefault @buttonProps.id (randomId)}}\n {{on \"click\" this.onToggle}}\n >\n <span class={{this.buttonContentClasses}}>\n {{yield this.isOpen to=\"buttonContent\"}}\n </span>\n </ButtonElement>\n {{#if\n (and\n @extraAction (has-block \"extraAction\") (not this.isLoading)\n )\n }}\n <div class=\"euiAccordion__optionalAction\">\n {{yield this.isOpen to=\"extraAction\"}}\n </div>\n {{else if this.isLoading}}\n <div class=\"euiAccordion__optionalAction\">\n <EuiLoadingSpinner />\n </div>\n {{/if}}\n {{#if (eq this._arrowDisplay \"right\")}}\n <EuiButtonIcon\n @color=\"text\"\n class={{classNames\n \"euiAccordion__iconButton\"\n (if this.isOpen \"euiAccordion__iconButton-isOpen\")\n (if\n (eq this._arrowDisplay \"right\")\n \"euiAccordion__iconButton--right\"\n )\n (if @arrowProps.className @arrowProps.className)\n }}\n @iconType=\"arrowRight\"\n {{on \"click\" this.onToggle}}\n aria-controls={{@id}}\n aria-expanded={{this.isOpen}}\n tabindex={{if this.buttonElementIsFocusable \"-1\" \"0\"}}\n />\n {{/if}}\n </div>\n <div\n class=\"euiAccordion__childWrapper\"\n style={{this.childContentStyle}}\n id={{@id}}\n {{didInsert (set this \"childWrapper\")}}\n tabindex=\"-1\"\n role=\"region\"\n >\n <div\n class={{classNames\n (if this.isLoading \"euiAccordion__children-isLoading\")\n @childClassName\n }}\n {{didInsert\n (queue (set this \"childContent\") this.setChildContentHeight)\n }}\n {{resizeObserver onResize=this.setChildContentHeight}}\n {{didUpdate this.setChildContentHeight @forceState}}\n >\n {{#if (and this.isLoading this.isLoadingMessage)}}\n <EuiLoadingSpinner class=\"euiAccordion__spinner\" />\n <span>\n {{#if this.hasLoadingMessage}}\n {{this.isLoadingMessage}}\n {{else}}\n {{! <EuiI18n @token=\"euiAccordion.isLoading\" @default=\"Loading\" /> }}\n Loading...\n {{/if}}\n </span>\n {{else}}\n <div\n class={{classNames\n componentName=\"EuiAccordion\"\n paddingSize=this.paddingSize\n }}\n >\n {{yield to=\"content\"}}\n </div>\n {{/if}}\n </div>\n </div>\n </Accordion>\n {{/if}}\n {{/let}}\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiAccordionAccordionComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","constructor","owner","args","_opened","forceState","initialIsOpen","buttonElement","element","buttonElementIsFocusable","_arrowDisplay","arrowDisplay","isOpen","hasLoadingMessage","isLoadingMessage","buttonClasses","buttonClassName","buttonProps","className","join","buttonContentClasses","buttonContentClassName","childContentStyle","htmlSafe","setChildContentHeight","requestAnimationFrame","height","childContent","clientHeight","childWrapper","setAttribute","onToggle","focus","n","action","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","classNames","eq","EuiButtonIcon","on","randomId","not","EuiLoadingSpinner","didInsert","set","queue","resizeObserver","didUpdate"],"mappings":"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"} | |
diff --git a/dist/components/eui-badge.js b/dist/components/eui-badge.js | |
index 0c82ff5fb7da74538614f9d209f1c4a0d50c4a68..e713baff2b1dc0f9b0617b90cf1c4a50dd74c5da 100644 | |
--- a/dist/components/eui-badge.js | |
+++ b/dist/components/eui-badge.js | |
@@ -1,6 +1,6 @@ | |
import { hash } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { not, or, and } from 'ember-truth-helpers'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
import classNames from '../helpers/class-names.js'; | |
diff --git a/dist/components/eui-badge.js.map b/dist/components/eui-badge.js.map | |
index 177240fd18aa6459d92fcb35add4b5ccdc850025..1cef3d271b3f40bf624272087d30bf4abd857977 100644 | |
--- a/dist/components/eui-badge.js.map | |
+++ b/dist/components/eui-badge.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-badge.js","sources":["../../src/components/eui-badge.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type { colorMapping, EuiBadgeColorType } from '../utils/css-mappings/eui-badge.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiBadgeSignature {\n Element: HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement;\n Args: {\n color?: keyof typeof colorMapping | EuiBadgeColorType | string;\n iconType?: EuiIconSignature['Args']['type'];\n iconSide?: 'left' | 'right';\n iconOnClick?: () => void;\n iconOnClickAriaLabel?: string;\n iconUseSvg?: boolean;\n isDisabled?: boolean;\n onClick?: () => void;\n onClickAriaLabel?: string;\n href?: string;\n target?: string;\n closeButtonProps?: {\n tabIndex?: number;\n dataSelectedIconIndex?: number;\n iconClasses?: string;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiBadge: TemplateOnlyComponent<EuiBadgeSignature> = <template>\n {{#if (and (or @onClick @href) (not @iconType))}}\n {{#if @onClick}}\n <button\n type=\"button\"\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n aria-label={{@onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n {{on \"click\" (optional @onClick)}}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </button>\n {{else}}\n <a\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n target={{@target}}\n href={{@href}}\n aria-label={{if @onClick @onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </a>\n {{/if}}\n {{else if @iconType}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n {{#if (has-block)}}\n {{#if @onClick}}\n <button\n class=\"euiBadge__childButton\"\n type=\"button\"\n disabled={{@isDisabled}}\n {{on \"click\" (optional @onClick)}}\n >\n {{yield}}\n </button>\n {{else if @href}}\n <a\n class=\"euiBadge__childButton\"\n href={{@href}}\n disabled={{@isDisabled}}\n >\n {{yield}}\n </a>\n {{else}}\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n {{/if}}\n {{/if}}\n {{#if @iconOnClick}}\n {{! template-lint-disable }}\n <button\n type=\"button\"\n class=\"euiBadge__iconButton\"\n aria-label={{@iconOnClickAriaLabel}}\n disabled={{@isDisabled}}\n title={{@iconOnClickAriaLabel}}\n tabindex={{@closeButtonProps.tabIndex}}\n data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}\n {{on \"click\" (optional @iconOnClick)}}\n >\n <EuiIcon\n @color=\"inherit\"\n @iconClasses={{classNames\n \"euiBadge__icon\"\n @closeButtonProps.iconClasses\n }}\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n />\n </button>\n {{! tempalte-lint-enable}}\n {{else}}\n <EuiIcon\n @color=\"inherit\"\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n @iconClasses=\"euiBadge__icon\"\n />\n {{/if}}\n </span>\n </span>\n {{else}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </span>\n {{/if}}\n</template>;\n\nexport default EuiBadge;\n"],"names":["EuiBadge","setComponentTemplate","precompileTemplate","strictMode","scope","and","or","not","classNames","argOrDefault","simpleStyle","inlineStyles","hash","on","optional","EuiIcon","templateOnly"],"mappings":";;;;;;;;;;;;;AAyCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0J3D,w9GAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,WAAA;IAAAC,YAAA;IAAAC,IAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-badge.js","sources":["../../src/components/eui-badge.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type { colorMapping, EuiBadgeColorType } from '../utils/css-mappings/eui-badge.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiBadgeSignature {\n Element: HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement;\n Args: {\n color?: keyof typeof colorMapping | EuiBadgeColorType | string;\n iconType?: EuiIconSignature['Args']['type'];\n iconSide?: 'left' | 'right';\n iconOnClick?: () => void;\n iconOnClickAriaLabel?: string;\n iconUseSvg?: boolean;\n isDisabled?: boolean;\n onClick?: () => void;\n onClickAriaLabel?: string;\n href?: string;\n target?: string;\n closeButtonProps?: {\n tabIndex?: number;\n dataSelectedIconIndex?: number;\n iconClasses?: string;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiBadge: TemplateOnlyComponent<EuiBadgeSignature> = <template>\n {{#if (and (or @onClick @href) (not @iconType))}}\n {{#if @onClick}}\n <button\n type=\"button\"\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n aria-label={{@onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n {{on \"click\" (optional @onClick)}}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </button>\n {{else}}\n <a\n class={{classNames\n \"euiBadge-isClickable\"\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n color=(argOrDefault @color \"default\")\n }}\n target={{@target}}\n href={{@href}}\n aria-label={{if @onClick @onClickAriaLabel}}\n disabled={{@isDisabled}}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </a>\n {{/if}}\n {{else if @iconType}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n {{#if (has-block)}}\n {{#if @onClick}}\n <button\n class=\"euiBadge__childButton\"\n type=\"button\"\n disabled={{@isDisabled}}\n {{on \"click\" (optional @onClick)}}\n >\n {{yield}}\n </button>\n {{else if @href}}\n <a\n class=\"euiBadge__childButton\"\n href={{@href}}\n disabled={{@isDisabled}}\n >\n {{yield}}\n </a>\n {{else}}\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n {{/if}}\n {{/if}}\n {{#if @iconOnClick}}\n {{! template-lint-disable }}\n <button\n type=\"button\"\n class=\"euiBadge__iconButton\"\n aria-label={{@iconOnClickAriaLabel}}\n disabled={{@isDisabled}}\n title={{@iconOnClickAriaLabel}}\n tabindex={{@closeButtonProps.tabIndex}}\n data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}\n {{on \"click\" (optional @iconOnClick)}}\n >\n <EuiIcon\n @color=\"inherit\"\n @iconClasses={{classNames\n \"euiBadge__icon\"\n @closeButtonProps.iconClasses\n }}\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n />\n </button>\n {{! tempalte-lint-enable}}\n {{else}}\n <EuiIcon\n @color=\"inherit\"\n @type={{@iconType}}\n @useSvg={{@iconUseSvg}}\n @size={{if (has-block) \"s\" \"m\"}}\n @iconClasses=\"euiBadge__icon\"\n />\n {{/if}}\n </span>\n </span>\n {{else}}\n <span\n class={{classNames\n (if @isDisabled \"euiBadge-isDisabled\")\n componentName=\"EuiBadge\"\n iconSide=(argOrDefault @iconSide \"left\")\n color=(argOrDefault @color \"default\")\n }}\n ...attributes\n {{simpleStyle\n (inlineStyles\n componentName=\"EuiBadge\"\n componentArgs=(hash badgeColor=(argOrDefault @color \"default\"))\n )\n }}\n >\n <span class=\"euiBadge__content\">\n <span class=\"euiBadge__text\">\n {{yield}}\n </span>\n </span>\n </span>\n {{/if}}\n</template>;\n\nexport default EuiBadge;\n"],"names":["EuiBadge","setComponentTemplate","precompileTemplate","strictMode","scope","and","or","not","classNames","argOrDefault","simpleStyle","inlineStyles","hash","on","optional","EuiIcon","templateOnly"],"mappings":";;;;;;;;;;;;;AAyCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0J3D,w9GAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,WAAA;IAAAC,YAAA;IAAAC,IAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-breadcrumbs.js b/dist/components/eui-breadcrumbs.js | |
index a09ee0058a83e9a6ccc5d3343ad20824e4650101..3570275d24385c707ddf50404f39a5dc8f7acb30 100644 | |
--- a/dist/components/eui-breadcrumbs.js | |
+++ b/dist/components/eui-breadcrumbs.js | |
@@ -4,7 +4,7 @@ import { fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import { throttle } from '@ember/runloop'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import sub from 'ember-math-helpers/helpers/sub'; | |
import { modifier } from 'ember-modifier'; | |
import { not, and, eq } from 'ember-truth-helpers'; | |
diff --git a/dist/components/eui-breadcrumbs.js.map b/dist/components/eui-breadcrumbs.js.map | |
index 603de86e4ab7f679e9f2ed52c358745f87162ca0..d9869d230b934a39a789c8e2d2d327f83caf9440 100644 | |
--- a/dist/components/eui-breadcrumbs.js.map | |
+++ b/dist/components/eui-breadcrumbs.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-breadcrumbs.js","sources":["../../src/components/eui-breadcrumbs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { throttle } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport sub from 'ember-math-helpers/helpers/sub';\nimport { modifier } from 'ember-modifier';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport { getBreakpoint } from '../utils/breakpoint.ts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiInnerText from './eui-inner-text.gts';\nimport EuiLink from './eui-link.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBreakpointSize } from '../utils/breakpoint.ts';\n\nexport type EuiBreadcrumbResponsiveMaxCount = {\n /**\n * Any of the following keys are allowed: `'xs' | 's' | 'm' | 'l' | 'xl'`\n * Omitting a key will display all breadcrumbs at that breakpoint\n */\n [key in EuiBreakpointSize]?: number;\n};\n\nconst responsiveDefault: EuiBreadcrumbResponsiveMaxCount = {\n xs: 1,\n s: 2,\n m: 4\n};\n\nexport type EuiBreadcrumb = {\n /**\n * Visible label of the breadcrumb\n */\n text: string;\n href?: string;\n onClick?: (e: MouseEvent) => void;\n\n className?: string;\n /**\n * Force a max-width on the breadcrumb text\n */\n truncate?: boolean;\n\n ellipsis?: boolean;\n\n color?: string;\n\n 'aria-current': string;\n};\n\nconst onWindowResizeModifier = modifier(\n (\n _ele: HTMLElement,\n _pos,\n {\n functionToCallOnWindowResize\n }: { functionToCallOnWindowResize: () => void }\n ) => {\n window.addEventListener('resize', functionToCallOnWindowResize);\n\n return () => {\n window.removeEventListener('resize', functionToCallOnWindowResize);\n };\n }\n);\n\nconst limitedBreadcrumbs = (max: number, breadcrumbs: EuiBreadcrumb[]) => {\n const breadcrumbsAtStart = [];\n const breadcrumbsAtEnd = [];\n const limit = Math.min(max, breadcrumbs.length);\n const start = Math.floor(limit / 2);\n const overflowBreadcrumbs = breadcrumbs.slice(\n start,\n start + breadcrumbs.length - limit\n );\n\n if (\n overflowBreadcrumbs.length &&\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]\n ) {\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]!['aria-current'] =\n 'false';\n }\n\n for (let i = 0; i < limit; i++) {\n // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased\n // towards breadcrumbs the end so that if max is an odd number, we'll have one more\n // breadcrumb visible at the end than at the beginning.\n const isEven = i % 2 === 0;\n\n // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a\n // half-iteration.\n const normalizedIndex = Math.floor(i * 0.5);\n const indexOfBreadcrumb = isEven\n ? breadcrumbs.length - 1 - normalizedIndex\n : normalizedIndex;\n const breadcrumb = breadcrumbs[indexOfBreadcrumb];\n\n if (isEven && breadcrumb) {\n breadcrumbsAtEnd.unshift(breadcrumb);\n } else if (breadcrumb) {\n breadcrumbsAtStart.push(breadcrumb);\n }\n }\n\n if (max < breadcrumbs.length) {\n breadcrumbsAtStart.push({ ellipsis: true } as EuiBreadcrumb);\n }\n\n return {\n breadcrumbs: [...breadcrumbsAtStart, ...breadcrumbsAtEnd],\n overflowBreadcrumbs\n };\n};\n\ninterface EuiBreadcrumbsComponentArgs {\n /**\n * Hides extra (above the max) breadcrumbs under a collapsed item as the window gets smaller.\n * Pass a custom #EuiBreadcrumbResponsiveMaxCount object to change the number of breadcrumbs to show at the particular breakpoints.\n *\n * Pass `false` to turn this behavior off.\n *\n * Default: `{ xs: 1, s: 2, m: 4 }`\n */\n responsive?: boolean | EuiBreadcrumbResponsiveMaxCount;\n\n /**\n * Forces all breadcrumbs to single line and\n * truncates each breadcrumb to a particular width,\n * except for the last item\n */\n truncate?: boolean;\n\n /**\n * Collapses the inner items past the maximum set here\n * into a single ellipses item.\n * Omitting or passing a `0` value will show all breadcrumbs.\n */\n max?: number | null;\n\n /**\n * The array of individual #EuiBreadcrumb items\n */\n breadcrumbs: EuiBreadcrumb[];\n}\n\nexport interface EuiBreadcrumbsSignature {\n Element: HTMLElement;\n Args: EuiBreadcrumbsComponentArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiBreadcrumbs extends Component<EuiBreadcrumbsSignature> {\n @tracked currentBreakpoint;\n\n constructor(owner: Owner, args: EuiBreadcrumbsComponentArgs) {\n super(owner, args);\n this.currentBreakpoint = getBreakpoint(\n typeof window === 'undefined' ? -Infinity : window.innerWidth\n );\n }\n\n functionToCallOnWindowResize = () => {\n throttle(() => {\n const newBreakpoint = getBreakpoint(window.innerWidth);\n\n if (newBreakpoint !== this.currentBreakpoint) {\n this.currentBreakpoint = newBreakpoint;\n }\n }, 50);\n };\n\n get responsiveObject() {\n return typeof this.args.responsive === 'object'\n ? this.args.responsive\n : responsiveDefault;\n }\n\n get max() {\n if (this.args.max === null) {\n return null;\n }\n\n return this.args.max ?? 5;\n }\n\n get truncate() {\n return this.args.truncate ?? true;\n }\n\n get calculatedMax(): EuiBreadcrumbsComponentArgs['max'] {\n // The max property collapses any breadcrumbs past the max quantity.\n // This is the same behavior we want for responsiveness.\n // So calculate the max value based on the combination of `max` and `responsive`\n let calculatedMax: EuiBreadcrumbsComponentArgs['max'] = this.max;\n\n // Set the calculated max to the number associated with the currentBreakpoint key if it exists\n if (\n this.args.responsive &&\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize]\n ) {\n calculatedMax =\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize];\n }\n\n // Final check is to make sure max is used over a larger breakpoint value\n if (this.max && calculatedMax) {\n calculatedMax = this.max < calculatedMax ? this.max : calculatedMax;\n }\n\n return calculatedMax;\n }\n\n @cached\n get limitedBreadcrumbs() {\n const calculatedMax = this.calculatedMax;\n\n return calculatedMax\n ? limitedBreadcrumbs(calculatedMax, this.args.breadcrumbs)\n : {\n breadcrumbs: this.args.breadcrumbs,\n overflowBreadcrumbs: [] as EuiBreadcrumb[]\n };\n }\n\n <template>\n <nav\n {{onWindowResizeModifier\n functionToCallOnWindowResize=this.functionToCallOnWindowResize\n }}\n class={{classNames\n \"euiBreadcrumbs\"\n (if this.truncate \"euiBreadcrumbs--truncate\")\n }}\n ...attributes\n >\n <ol class=\"euiBreadcrumbs__list\">\n\n {{#each this.limitedBreadcrumbs.breadcrumbs as |breadcrumb index|}}\n\n {{#if breadcrumb.ellipsis}}\n {{#let (useState false) as |popOverState|}}\n <li class=\"euiBreadcrumb euiBreadcrumb--collapsed\">\n <EuiPopover\n @isOpen={{popOverState.value}}\n @closePopover={{fn popOverState.setState false}}\n >\n <:button>\n <EuiLink\n class=\"euiBreadcrumb__content\"\n @color=\"subdued\"\n aria-label=\"See collapsed breadcrumbs\"\n title=\"See collapsed breadcrumbs\"\n {{on \"click\" (fn popOverState.setState true)}}\n >\n …<EuiIcon @type=\"arrowDown\" @size=\"s\" />\n </EuiLink>\n </:button>\n <:content>\n <EuiBreadcrumbs\n class=\"euiBreadcrumbs__inPopover\"\n @breadcrumbs={{this.limitedBreadcrumbs.overflowBreadcrumbs}}\n @responsive={{false}}\n @truncate={{false}}\n @max={{0}}\n />\n </:content>\n </EuiPopover>\n\n </li>\n\n {{/let}}\n {{else}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let\n (eq index (sub this.limitedBreadcrumbs.breadcrumbs.length 1))\n (if (eq innerText \"\") undefined innerText)\n as |isLastBreadcrumb title|\n }}\n <li\n class={{classNames\n \"euiBreadcrumb\"\n (if isLastBreadcrumb \"euiBreadcrumb--last\")\n (if breadcrumb.truncate \"euiBreadcrumb--truncate\")\n }}\n >\n {{#if (and (not breadcrumb.href) (not breadcrumb.onClick))}}\n <span\n {{didInsert setInnerTextRef}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </span>\n {{else}}\n <EuiLink\n {{didInsert setInnerTextRef}}\n @color={{if\n breadcrumb.color\n breadcrumb.color\n (if isLastBreadcrumb \"text\" \"subdued\")\n }}\n @href={{breadcrumb.href}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n {{on \"click\" (optional breadcrumb.onClick)}}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </EuiLink>\n {{/if}}\n\n </li>\n {{/let}}\n </EuiInnerText>\n {{/if}}\n\n {{/each}}\n\n </ol>\n </nav>\n </template>\n}\n"],"names":["responsiveDefault","xs","s","m","onWindowResizeModifier","modifier","_ele","_pos","functionToCallOnWindowResize","window","addEventListener","removeEventListener","limitedBreadcrumbs","max","breadcrumbs","breadcrumbsAtStart","breadcrumbsAtEnd","limit","Math","min","length","start","floor","overflowBreadcrumbs","slice","i","isEven","normalizedIndex","indexOfBreadcrumb","breadcrumb","unshift","push","ellipsis","EuiBreadcrumbs","Component","g","prototype","tracked","void 0","constructor","owner","args","currentBreakpoint","getBreakpoint","Infinity","innerWidth","throttle","newBreakpoint","responsiveObject","responsive","truncate","calculatedMax","n","cached","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","useState","EuiPopover","fn","EuiLink","on","EuiIcon","EuiInnerText","eq","sub","and","not","didInsert","optional"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-breadcrumbs.js","sources":["../../src/components/eui-breadcrumbs.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { throttle } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport sub from 'ember-math-helpers/helpers/sub';\nimport { modifier } from 'ember-modifier';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport { getBreakpoint } from '../utils/breakpoint.ts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiInnerText from './eui-inner-text.gts';\nimport EuiLink from './eui-link.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBreakpointSize } from '../utils/breakpoint.ts';\n\nexport type EuiBreadcrumbResponsiveMaxCount = {\n /**\n * Any of the following keys are allowed: `'xs' | 's' | 'm' | 'l' | 'xl'`\n * Omitting a key will display all breadcrumbs at that breakpoint\n */\n [key in EuiBreakpointSize]?: number;\n};\n\nconst responsiveDefault: EuiBreadcrumbResponsiveMaxCount = {\n xs: 1,\n s: 2,\n m: 4\n};\n\nexport type EuiBreadcrumb = {\n /**\n * Visible label of the breadcrumb\n */\n text: string;\n href?: string;\n onClick?: (e: MouseEvent) => void;\n\n className?: string;\n /**\n * Force a max-width on the breadcrumb text\n */\n truncate?: boolean;\n\n ellipsis?: boolean;\n\n color?: string;\n\n 'aria-current': string;\n};\n\nconst onWindowResizeModifier = modifier(\n (\n _ele: HTMLElement,\n _pos,\n {\n functionToCallOnWindowResize\n }: { functionToCallOnWindowResize: () => void }\n ) => {\n window.addEventListener('resize', functionToCallOnWindowResize);\n\n return () => {\n window.removeEventListener('resize', functionToCallOnWindowResize);\n };\n }\n);\n\nconst limitedBreadcrumbs = (max: number, breadcrumbs: EuiBreadcrumb[]) => {\n const breadcrumbsAtStart = [];\n const breadcrumbsAtEnd = [];\n const limit = Math.min(max, breadcrumbs.length);\n const start = Math.floor(limit / 2);\n const overflowBreadcrumbs = breadcrumbs.slice(\n start,\n start + breadcrumbs.length - limit\n );\n\n if (\n overflowBreadcrumbs.length &&\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]\n ) {\n overflowBreadcrumbs[overflowBreadcrumbs.length - 1]!['aria-current'] =\n 'false';\n }\n\n for (let i = 0; i < limit; i++) {\n // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased\n // towards breadcrumbs the end so that if max is an odd number, we'll have one more\n // breadcrumb visible at the end than at the beginning.\n const isEven = i % 2 === 0;\n\n // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a\n // half-iteration.\n const normalizedIndex = Math.floor(i * 0.5);\n const indexOfBreadcrumb = isEven\n ? breadcrumbs.length - 1 - normalizedIndex\n : normalizedIndex;\n const breadcrumb = breadcrumbs[indexOfBreadcrumb];\n\n if (isEven && breadcrumb) {\n breadcrumbsAtEnd.unshift(breadcrumb);\n } else if (breadcrumb) {\n breadcrumbsAtStart.push(breadcrumb);\n }\n }\n\n if (max < breadcrumbs.length) {\n breadcrumbsAtStart.push({ ellipsis: true } as EuiBreadcrumb);\n }\n\n return {\n breadcrumbs: [...breadcrumbsAtStart, ...breadcrumbsAtEnd],\n overflowBreadcrumbs\n };\n};\n\ninterface EuiBreadcrumbsComponentArgs {\n /**\n * Hides extra (above the max) breadcrumbs under a collapsed item as the window gets smaller.\n * Pass a custom #EuiBreadcrumbResponsiveMaxCount object to change the number of breadcrumbs to show at the particular breakpoints.\n *\n * Pass `false` to turn this behavior off.\n *\n * Default: `{ xs: 1, s: 2, m: 4 }`\n */\n responsive?: boolean | EuiBreadcrumbResponsiveMaxCount;\n\n /**\n * Forces all breadcrumbs to single line and\n * truncates each breadcrumb to a particular width,\n * except for the last item\n */\n truncate?: boolean;\n\n /**\n * Collapses the inner items past the maximum set here\n * into a single ellipses item.\n * Omitting or passing a `0` value will show all breadcrumbs.\n */\n max?: number | null;\n\n /**\n * The array of individual #EuiBreadcrumb items\n */\n breadcrumbs: EuiBreadcrumb[];\n}\n\nexport interface EuiBreadcrumbsSignature {\n Element: HTMLElement;\n Args: EuiBreadcrumbsComponentArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiBreadcrumbs extends Component<EuiBreadcrumbsSignature> {\n @tracked currentBreakpoint;\n\n constructor(owner: Owner, args: EuiBreadcrumbsComponentArgs) {\n super(owner, args);\n this.currentBreakpoint = getBreakpoint(\n typeof window === 'undefined' ? -Infinity : window.innerWidth\n );\n }\n\n functionToCallOnWindowResize = () => {\n throttle(() => {\n const newBreakpoint = getBreakpoint(window.innerWidth);\n\n if (newBreakpoint !== this.currentBreakpoint) {\n this.currentBreakpoint = newBreakpoint;\n }\n }, 50);\n };\n\n get responsiveObject() {\n return typeof this.args.responsive === 'object'\n ? this.args.responsive\n : responsiveDefault;\n }\n\n get max() {\n if (this.args.max === null) {\n return null;\n }\n\n return this.args.max ?? 5;\n }\n\n get truncate() {\n return this.args.truncate ?? true;\n }\n\n get calculatedMax(): EuiBreadcrumbsComponentArgs['max'] {\n // The max property collapses any breadcrumbs past the max quantity.\n // This is the same behavior we want for responsiveness.\n // So calculate the max value based on the combination of `max` and `responsive`\n let calculatedMax: EuiBreadcrumbsComponentArgs['max'] = this.max;\n\n // Set the calculated max to the number associated with the currentBreakpoint key if it exists\n if (\n this.args.responsive &&\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize]\n ) {\n calculatedMax =\n this.responsiveObject[this.currentBreakpoint as EuiBreakpointSize];\n }\n\n // Final check is to make sure max is used over a larger breakpoint value\n if (this.max && calculatedMax) {\n calculatedMax = this.max < calculatedMax ? this.max : calculatedMax;\n }\n\n return calculatedMax;\n }\n\n @cached\n get limitedBreadcrumbs() {\n const calculatedMax = this.calculatedMax;\n\n return calculatedMax\n ? limitedBreadcrumbs(calculatedMax, this.args.breadcrumbs)\n : {\n breadcrumbs: this.args.breadcrumbs,\n overflowBreadcrumbs: [] as EuiBreadcrumb[]\n };\n }\n\n <template>\n <nav\n {{onWindowResizeModifier\n functionToCallOnWindowResize=this.functionToCallOnWindowResize\n }}\n class={{classNames\n \"euiBreadcrumbs\"\n (if this.truncate \"euiBreadcrumbs--truncate\")\n }}\n ...attributes\n >\n <ol class=\"euiBreadcrumbs__list\">\n\n {{#each this.limitedBreadcrumbs.breadcrumbs as |breadcrumb index|}}\n\n {{#if breadcrumb.ellipsis}}\n {{#let (useState false) as |popOverState|}}\n <li class=\"euiBreadcrumb euiBreadcrumb--collapsed\">\n <EuiPopover\n @isOpen={{popOverState.value}}\n @closePopover={{fn popOverState.setState false}}\n >\n <:button>\n <EuiLink\n class=\"euiBreadcrumb__content\"\n @color=\"subdued\"\n aria-label=\"See collapsed breadcrumbs\"\n title=\"See collapsed breadcrumbs\"\n {{on \"click\" (fn popOverState.setState true)}}\n >\n …<EuiIcon @type=\"arrowDown\" @size=\"s\" />\n </EuiLink>\n </:button>\n <:content>\n <EuiBreadcrumbs\n class=\"euiBreadcrumbs__inPopover\"\n @breadcrumbs={{this.limitedBreadcrumbs.overflowBreadcrumbs}}\n @responsive={{false}}\n @truncate={{false}}\n @max={{0}}\n />\n </:content>\n </EuiPopover>\n\n </li>\n\n {{/let}}\n {{else}}\n <EuiInnerText as |setInnerTextRef innerText|>\n {{#let\n (eq index (sub this.limitedBreadcrumbs.breadcrumbs.length 1))\n (if (eq innerText \"\") undefined innerText)\n as |isLastBreadcrumb title|\n }}\n <li\n class={{classNames\n \"euiBreadcrumb\"\n (if isLastBreadcrumb \"euiBreadcrumb--last\")\n (if breadcrumb.truncate \"euiBreadcrumb--truncate\")\n }}\n >\n {{#if (and (not breadcrumb.href) (not breadcrumb.onClick))}}\n <span\n {{didInsert setInnerTextRef}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </span>\n {{else}}\n <EuiLink\n {{didInsert setInnerTextRef}}\n @color={{if\n breadcrumb.color\n breadcrumb.color\n (if isLastBreadcrumb \"text\" \"subdued\")\n }}\n @href={{breadcrumb.href}}\n title={{title}}\n class={{classNames\n \"euiBreadcrumb__content\"\n breadcrumb.className\n }}\n {{on \"click\" (optional breadcrumb.onClick)}}\n aria-current={{if isLastBreadcrumb \"page\" undefined}}\n >\n {{breadcrumb.text}}\n </EuiLink>\n {{/if}}\n\n </li>\n {{/let}}\n </EuiInnerText>\n {{/if}}\n\n {{/each}}\n\n </ol>\n </nav>\n </template>\n}\n"],"names":["responsiveDefault","xs","s","m","onWindowResizeModifier","modifier","_ele","_pos","functionToCallOnWindowResize","window","addEventListener","removeEventListener","limitedBreadcrumbs","max","breadcrumbs","breadcrumbsAtStart","breadcrumbsAtEnd","limit","Math","min","length","start","floor","overflowBreadcrumbs","slice","i","isEven","normalizedIndex","indexOfBreadcrumb","breadcrumb","unshift","push","ellipsis","EuiBreadcrumbs","Component","g","prototype","tracked","void 0","constructor","owner","args","currentBreakpoint","getBreakpoint","Infinity","innerWidth","throttle","newBreakpoint","responsiveObject","responsive","truncate","calculatedMax","n","cached","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","useState","EuiPopover","fn","EuiLink","on","EuiIcon","EuiInnerText","eq","sub","and","not","didInsert","optional"],"mappings":"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"} | |
diff --git a/dist/components/eui-button-group-button.js b/dist/components/eui-button-group-button.js | |
index 9efb0b84412c4f3dbf5146628dd55a30f14d450f..2ab0f09d64e57aea612f53bfa1b809b14cdaf23c 100644 | |
--- a/dist/components/eui-button-group-button.js | |
+++ b/dist/components/eui-button-group-button.js | |
@@ -1,7 +1,7 @@ | |
import { fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import noop from 'ember-composable-helpers/helpers/noop'; | |
+import noop from '@nullvoxpopuli/ember-composable-helpers/helpers/noop'; | |
import { eq, and, notEq } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import classNames from '../helpers/class-names.js'; | |
diff --git a/dist/components/eui-button-group-button.js.map b/dist/components/eui-button-group-button.js.map | |
index 8fb2f0fe04a8a8d5dc5afb3536d5295d21b4c1f1..41e3cc19d29cd2809252621eda9955a489359b91 100644 | |
--- a/dist/components/eui-button-group-button.js.map | |
+++ b/dist/components/eui-button-group-button.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-button-group-button.js","sources":["../../src/components/eui-button-group-button.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport noop from 'ember-composable-helpers/helpers/noop';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButton from './eui-button.gts';\nimport EuiInnerText from './eui-inner-text.gts';\n\nimport type { EuiButtonSignature } from './eui-button';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiButtonGroupButtonSignature {\n Element: EuiButtonSignature['Element'];\n Args: {\n id: string;\n value?: string;\n element?: 'label' | 'button';\n name?: string;\n label?: string;\n isDisabled?: boolean;\n isSelected?: boolean;\n isIconOnly?: boolean;\n size?: EuiButtonSignature['Args']['size'];\n color?: EuiButtonSignature['Args']['color'];\n contentClasses?: EuiButtonSignature['Args']['contentClasses'];\n iconSide?: EuiButtonSignature['Args']['iconSide'];\n iconType?: EuiButtonSignature['Args']['iconType'];\n iconSize?: EuiButtonSignature['Args']['iconSize'];\n iconClasses?: EuiButtonSignature['Args']['iconClasses'];\n isLoading?: EuiButtonSignature['Args']['isLoading'];\n textClasses?: EuiButtonSignature['Args']['textClasses'];\n type?: EuiButtonSignature['Args']['type'];\n onChange: (id: string, value?: string) => void;\n };\n}\n\nconst EuiButtonGroupButton: TemplateOnlyComponent<EuiButtonGroupButtonSignature> =\n <template>\n {{#let\n (if @isDisabled \"button\" @element)\n (randomId)\n (classNames\n (if @isSelected \"euiButtonGroupButton-isSelected\")\n (if @isIconOnly \"euiButtonGroupButton-isIconOnly\")\n )\n as |element newId classes|\n }}\n {{#let (notEq @element \"label\") as |isNotLabel|}}\n <EuiInnerText as |setInnerTextRef innerText|>\n <EuiButton\n @baseClassName=\"euiButtonGroupButton\"\n class={{classes}}\n @element={{element}}\n @fill={{and (notEq @size \"compressed\") @isSelected}}\n @isDisabled={{@isDisabled}}\n @size={{if (eq @size \"compressed\") \"s\" @size}}\n @color={{@color}}\n @contentClasses={{@contentClasses}}\n @iconSide={{@iconSide}}\n @iconType={{@iconType}}\n @iconSize={{@iconSize}}\n @iconClasses={{@iconClasses}}\n @isLoading={{@isLoading}}\n @textClasses={{classNames\n @textClasses\n (if\n @isIconOnly\n \"euiScreenReaderOnly\"\n \"euiButtonGroupButton__textShift\"\n )\n }}\n @isSelected={{if isNotLabel @isSelected}}\n type={{if isNotLabel @type}}\n for={{if (eq element \"label\") newId}}\n id={{if isNotLabel newId}}\n title={{innerText}}\n {{on \"click\" (if isNotLabel (fn @onChange @id) (noop))}}\n {{didInsert setInnerTextRef}}\n ...attributes\n >\n {{#if (eq element \"label\")}}\n <input\n id={{newId}}\n class=\"euiScreenReaderOnly\"\n name={{@name}}\n checked={{@isSelected}}\n disabled={{@isDisabled}}\n value={{@value}}\n type=\"radio\"\n {{on \"change\" (fn @onChange @id @value)}}\n />\n {{/if}}\n {{@label}}\n </EuiButton>\n </EuiInnerText>\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiButtonGroupButton;\n"],"names":["EuiButtonGroupButton","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","notEq","EuiInnerText","EuiButton","and","eq","on","fn","noop","didInsert","templateOnly"],"mappings":";;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA4DA,69CAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,KAAA;kBAAAC,QAAA;IAAAC,SAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-button-group-button.js","sources":["../../src/components/eui-button-group-button.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport noop from '@nullvoxpopuli/ember-composable-helpers/helpers/noop';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButton from './eui-button.gts';\nimport EuiInnerText from './eui-inner-text.gts';\n\nimport type { EuiButtonSignature } from './eui-button';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiButtonGroupButtonSignature {\n Element: EuiButtonSignature['Element'];\n Args: {\n id: string;\n value?: string;\n element?: 'label' | 'button';\n name?: string;\n label?: string;\n isDisabled?: boolean;\n isSelected?: boolean;\n isIconOnly?: boolean;\n size?: EuiButtonSignature['Args']['size'];\n color?: EuiButtonSignature['Args']['color'];\n contentClasses?: EuiButtonSignature['Args']['contentClasses'];\n iconSide?: EuiButtonSignature['Args']['iconSide'];\n iconType?: EuiButtonSignature['Args']['iconType'];\n iconSize?: EuiButtonSignature['Args']['iconSize'];\n iconClasses?: EuiButtonSignature['Args']['iconClasses'];\n isLoading?: EuiButtonSignature['Args']['isLoading'];\n textClasses?: EuiButtonSignature['Args']['textClasses'];\n type?: EuiButtonSignature['Args']['type'];\n onChange: (id: string, value?: string) => void;\n };\n}\n\nconst EuiButtonGroupButton: TemplateOnlyComponent<EuiButtonGroupButtonSignature> =\n <template>\n {{#let\n (if @isDisabled \"button\" @element)\n (randomId)\n (classNames\n (if @isSelected \"euiButtonGroupButton-isSelected\")\n (if @isIconOnly \"euiButtonGroupButton-isIconOnly\")\n )\n as |element newId classes|\n }}\n {{#let (notEq @element \"label\") as |isNotLabel|}}\n <EuiInnerText as |setInnerTextRef innerText|>\n <EuiButton\n @baseClassName=\"euiButtonGroupButton\"\n class={{classes}}\n @element={{element}}\n @fill={{and (notEq @size \"compressed\") @isSelected}}\n @isDisabled={{@isDisabled}}\n @size={{if (eq @size \"compressed\") \"s\" @size}}\n @color={{@color}}\n @contentClasses={{@contentClasses}}\n @iconSide={{@iconSide}}\n @iconType={{@iconType}}\n @iconSize={{@iconSize}}\n @iconClasses={{@iconClasses}}\n @isLoading={{@isLoading}}\n @textClasses={{classNames\n @textClasses\n (if\n @isIconOnly\n \"euiScreenReaderOnly\"\n \"euiButtonGroupButton__textShift\"\n )\n }}\n @isSelected={{if isNotLabel @isSelected}}\n type={{if isNotLabel @type}}\n for={{if (eq element \"label\") newId}}\n id={{if isNotLabel newId}}\n title={{innerText}}\n {{on \"click\" (if isNotLabel (fn @onChange @id) (noop))}}\n {{didInsert setInnerTextRef}}\n ...attributes\n >\n {{#if (eq element \"label\")}}\n <input\n id={{newId}}\n class=\"euiScreenReaderOnly\"\n name={{@name}}\n checked={{@isSelected}}\n disabled={{@isDisabled}}\n value={{@value}}\n type=\"radio\"\n {{on \"change\" (fn @onChange @id @value)}}\n />\n {{/if}}\n {{@label}}\n </EuiButton>\n </EuiInnerText>\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiButtonGroupButton;\n"],"names":["EuiButtonGroupButton","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","notEq","EuiInnerText","EuiButton","and","eq","on","fn","noop","didInsert","templateOnly"],"mappings":";;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA4DA,69CAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,KAAA;kBAAAC,QAAA;IAAAC,SAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-card-select.js b/dist/components/eui-card-select.js | |
index d362e74e5c04c684b4621459d3ac84ffd481f86a..6aeda1fba5edee434a6e5ef488c79f273eef059d 100644 | |
--- a/dist/components/eui-card-select.js | |
+++ b/dist/components/eui-card-select.js | |
@@ -1,6 +1,6 @@ | |
import Component from '@glimmer/component'; | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
import classNames from '../helpers/class-names.js'; | |
import EuiButtonEmpty from './eui-button-empty.js'; | |
diff --git a/dist/components/eui-card-select.js.map b/dist/components/eui-card-select.js.map | |
index 6efe31840f483798cbbf7a7ed4516f694d174b66..b2aeb21d74ac93e3ef79520424b9723d87287b5a 100644 | |
--- a/dist/components/eui-card-select.js.map | |
+++ b/dist/components/eui-card-select.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-card-select.js","sources":["../../src/components/eui-card-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\n\nimport type { EuiButtonEmptySignature } from './eui-button-empty';\n\nexport type EuiCardSelectProps = {\n /**\n * Is in the selected state\n */\n isSelected?: boolean;\n isDisabled?: boolean;\n buttonId?: string;\n color?: EuiButtonEmptySignature['Args']['color'];\n isLoading?: EuiButtonEmptySignature['Args']['isLoading'];\n href?: EuiButtonEmptySignature['Args']['href'];\n iconSide?: EuiButtonEmptySignature['Args']['iconSide'];\n flush?: EuiButtonEmptySignature['Args']['flush'];\n type?: EuiButtonEmptySignature['Args']['type'];\n onClick?: (e: MouseEvent) => void;\n};\n\nexport function euiCardSelectableColor(\n color: string | undefined,\n isSelected: boolean | undefined\n): string {\n let calculatedColor;\n\n if (color) {\n calculatedColor = color;\n } else if (isSelected) {\n calculatedColor = 'success';\n } else {\n calculatedColor = 'text';\n }\n\n return calculatedColor;\n}\n\nexport interface EuiCardSelectSignature {\n Element: EuiButtonEmptySignature['Element'];\n Args: EuiCardSelectProps;\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiCardSelectComponent extends Component<EuiCardSelectSignature> {\n get selectColorClass() {\n return `euiCardSelect--${euiCardSelectableColor(\n this.args.color,\n this.args.isSelected\n )}`;\n }\n\n <template>\n <EuiButtonEmpty\n class={{classNames this.selectColorClass componentName=\"EuiCardSelect\"}}\n id={{@buttonId}}\n @color={{argOrDefault @color \"text\"}}\n @size=\"xs\"\n @isDisabled={{@isDisabled}}\n @iconType={{if @isSelected \"check\" undefined}}\n @isLoading={{@isLoading}}\n @href={{@href}}\n @iconSide={{@iconSide}}\n @flush={{@flush}}\n @type={{@type}}\n role=\"switch\"\n aria-checked={{@isSelected}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if (has-block)}}\n {{yield}}\n {{else if @isSelected}}\n Selected\n {{else if @isDisabled}}\n Unavailable\n {{else}}\n Select\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["euiCardSelectableColor","color","isSelected","calculatedColor","EuiCardSelectComponent","Component","selectColorClass","args","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","classNames","argOrDefault","on","optional"],"mappings":";;;;;;;;;AA2BO,SAASA,sBAAAA,CACdC,KAAyB,EACzBC,UAA+B,EACxB;AACP,EAAA,IAAIC,eAAA;AAEJ,EAAA,IAAIF,KAAO,EAAA;AACTE,IAAAA,eAAkB,GAAAF,KAAA;GACpB,MAAO,IAAIC,UAAY,EAAA;AACrBC,IAAAA,eAAkB,GAAA,SAAA;AACpB,GAAO,MAAA;AACLA,IAAAA,eAAkB,GAAA,MAAA;AACpB;AAEA,EAAA,OAAOA,eAAA;AACT;AAUe,MAAMC,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,CAAkBN,eAAAA,EAAAA,sBACvB,CAAA,IAAI,CAACO,IAAI,CAACN,KAAK,EACf,IAAI,CAACM,IAAI,CAACL,UAAU,EACnB,CAAA;AACL;AAEA,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CA4BA,upBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,YAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-card-select.js","sources":["../../src/components/eui-card-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\n\nimport type { EuiButtonEmptySignature } from './eui-button-empty';\n\nexport type EuiCardSelectProps = {\n /**\n * Is in the selected state\n */\n isSelected?: boolean;\n isDisabled?: boolean;\n buttonId?: string;\n color?: EuiButtonEmptySignature['Args']['color'];\n isLoading?: EuiButtonEmptySignature['Args']['isLoading'];\n href?: EuiButtonEmptySignature['Args']['href'];\n iconSide?: EuiButtonEmptySignature['Args']['iconSide'];\n flush?: EuiButtonEmptySignature['Args']['flush'];\n type?: EuiButtonEmptySignature['Args']['type'];\n onClick?: (e: MouseEvent) => void;\n};\n\nexport function euiCardSelectableColor(\n color: string | undefined,\n isSelected: boolean | undefined\n): string {\n let calculatedColor;\n\n if (color) {\n calculatedColor = color;\n } else if (isSelected) {\n calculatedColor = 'success';\n } else {\n calculatedColor = 'text';\n }\n\n return calculatedColor;\n}\n\nexport interface EuiCardSelectSignature {\n Element: EuiButtonEmptySignature['Element'];\n Args: EuiCardSelectProps;\n Blocks: {\n default: [];\n };\n}\n\nexport default class EuiCardSelectComponent extends Component<EuiCardSelectSignature> {\n get selectColorClass() {\n return `euiCardSelect--${euiCardSelectableColor(\n this.args.color,\n this.args.isSelected\n )}`;\n }\n\n <template>\n <EuiButtonEmpty\n class={{classNames this.selectColorClass componentName=\"EuiCardSelect\"}}\n id={{@buttonId}}\n @color={{argOrDefault @color \"text\"}}\n @size=\"xs\"\n @isDisabled={{@isDisabled}}\n @iconType={{if @isSelected \"check\" undefined}}\n @isLoading={{@isLoading}}\n @href={{@href}}\n @iconSide={{@iconSide}}\n @flush={{@flush}}\n @type={{@type}}\n role=\"switch\"\n aria-checked={{@isSelected}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if (has-block)}}\n {{yield}}\n {{else if @isSelected}}\n Selected\n {{else if @isDisabled}}\n Unavailable\n {{else}}\n Select\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["euiCardSelectableColor","color","isSelected","calculatedColor","EuiCardSelectComponent","Component","selectColorClass","args","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","classNames","argOrDefault","on","optional"],"mappings":";;;;;;;;;AA2BO,SAASA,sBAAAA,CACdC,KAAyB,EACzBC,UAA+B,EACxB;AACP,EAAA,IAAIC,eAAA;AAEJ,EAAA,IAAIF,KAAO,EAAA;AACTE,IAAAA,eAAkB,GAAAF,KAAA;GACpB,MAAO,IAAIC,UAAY,EAAA;AACrBC,IAAAA,eAAkB,GAAA,SAAA;AACpB,GAAO,MAAA;AACLA,IAAAA,eAAkB,GAAA,MAAA;AACpB;AAEA,EAAA,OAAOA,eAAA;AACT;AAUe,MAAMC,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,CAAkBN,eAAAA,EAAAA,sBACvB,CAAA,IAAI,CAACO,IAAI,CAACN,KAAK,EACf,IAAI,CAACM,IAAI,CAACL,UAAU,EACnB,CAAA;AACL;AAEA,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CA4BA,upBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,YAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-card.js b/dist/components/eui-card.js | |
index 274c39dfaba52ed84ceb239bbc9fd242ba71505e..11cb018a70b27f3caf7d7d34ccfbe4807972d405 100644 | |
--- a/dist/components/eui-card.js | |
+++ b/dist/components/eui-card.js | |
@@ -2,7 +2,7 @@ import Component from '@glimmer/component'; | |
import { tracked } from '@glimmer/tracking'; | |
import { on } from '@ember/modifier'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { element } from 'ember-element-helper'; | |
import set from 'ember-set-helper/helpers/set'; | |
import { notEq, eq, or, not, and } from 'ember-truth-helpers'; | |
diff --git a/dist/components/eui-card.js.map b/dist/components/eui-card.js.map | |
index fba716ad72e6b001c401ef3f73d4ce18f28660c6..55d2cf5f8c13f519cb10d4cc5f2f021349f5534e 100644 | |
--- a/dist/components/eui-card.js.map | |
+++ b/dist/components/eui-card.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-card.js","sources":["../../src/components/eui-card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiBetaBadge from './eui-beta-badge.gts';\nimport { euiCardSelectableColor } from './eui-card-select.gts';\nimport EuiCardSelect from './eui-card-select.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiCardSelectProps } from './eui-card-select';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiPanelSignature } from './eui-panel';\nimport type { EuiTitleSignature } from './eui-title';\n\ntype EuiCardComponentArgs = {\n footer?: string;\n selectable?: EuiCardSelectProps;\n /**\n * Class that will apply to the card top section.\n */\n topClassName?: string;\n\n /**\n * Class that will apply to the card content section.\n */\n contentClassName?: string;\n\n /**\n * Class that will apply to the card footer section.\n */\n footerClassName?: string;\n\n target?: string;\n\n betaBadgeProps?: {\n label: string;\n title?: string;\n tooltipContent?: string;\n };\n\n description?: string;\n\n /**\n * The title of the card.\n */\n title?: string;\n titleSize?: EuiTitleSignature['Args']['size'];\n\n /**\n * The title element. Will wrap the title in a heading tag.\n */\n titleElement?: string;\n\n href?: string;\n\n onClick?: (e: MouseEvent) => void;\n\n isDisabled?: boolean;\n\n textAlign?: 'left' | 'center' | 'right';\n\n image?: string;\n icon?: string;\n layout?: 'horizontal' | 'vertical';\n\n display?: EuiPanelSignature['Args']['color'];\n paddingSize?: EuiPanelSignature['Args']['paddingSize'];\n\n iconSize?: EuiIconSignature['Args']['size'];\n};\n\nexport interface EuiCardSignature {\n Element: EuiPanelSignature['Element'];\n Args: EuiCardComponentArgs;\n Blocks: {\n icon: ['euiCard__icon'];\n title: [() => void];\n description: [];\n body: [];\n footer: [];\n };\n}\n\nexport default class EuiCardComponent extends Component<EuiCardSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n outerOnClick = (e: MouseEvent) => {\n if (this.link && this.link !== e.target) {\n this.link.click();\n }\n };\n\n get selectableColorClass() {\n const selectable = this.args.selectable;\n\n return selectable\n ? `euiCard--isSelectable--${euiCardSelectableColor(\n selectable.color,\n selectable.isSelected\n )}`\n : undefined;\n }\n\n get topClasses(): string {\n return ['euiCard__top', this.args.topClassName].join(' ');\n }\n\n get contentClasses(): string {\n return ['euiCard__content', this.args.contentClassName].join(' ');\n }\n\n get footerClasses(): string {\n return ['euiCard__footer', this.args.footerClassName].join(' ');\n }\n\n <template>\n {{#let\n (if @selectable (randomId))\n (and\n (not @isDisabled)\n (or @onClick @href (and @selectable (not @selectable.isDisabled)))\n )\n (argOrDefault @titleElement \"span\")\n (argOrDefault @layout \"vertical\")\n as |selectableId isClickable titleElement layout|\n }}\n <EuiPanel\n class={{classNames\n (if (eq layout \"horizontal\") \"euiCard--horizontal\")\n (if isClickable \"euiCard--isClickable\")\n (if @betaBadgeProps.label \"euiCard--hasBetaBadge\")\n (if\n @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")\n )\n (if @selectable \"euiCard--isSelectable\")\n (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\")\n (if @isDisabled \"euiCard-isDisabled\")\n this.selectableColorClass\n componentName=\"EuiCard\"\n textAlign=(argOrDefault @textAlign \"center\")\n }}\n @color={{if @isDisabled \"subdued\" @display}}\n @onClick={{if isClickable this.outerOnClick}}\n @hasShadow={{if (or @isDisabled @display) true}}\n @hasBorder={{if @display true undefined}}\n @paddingSize={{@paddingSize}}\n ...attributes\n >\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon\n @iconClasses=\"euiCard__icon\"\n @type={{@icon}}\n @size={{@iconSize}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle\n class=\"euiCard__title\"\n @size={{argOrDefault @titleSize \"s\"}}\n >\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a\n class=\"euiCard__titleAnchor\"\n target={{@target}}\n disabled={{@isDisabled}}\n href={{@href}}\n {{didInsert (set this \"link\")}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button\n type=\"button\"\n class=\"euiCard__titleButton\"\n disabled={{@isDisabled}}\n {{didInsert (set this \"link\")}}\n {{on \"click\" (optional @onClick)}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge\n class=\"euiCard__betaBadge\"\n @label={{@betaBadgeProps.label}}\n @title={{@betaBadgeProps.title}}\n @tooltipContent={{@betaBadgeProps.tooltipContent}}\n />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect\n @type={{@selectable.type}}\n @buttonId={{selectableId}}\n @isSelected={{@selectable.isSelected}}\n @isDisabled={{@selectable.isDisabled}}\n @color={{@selectable.color}}\n @isLoading={{@selectable.isLoading}}\n @href={{@selectable.href}}\n @iconSide={{@selectable.iconSide}}\n @flush={{@selectable.flush}}\n {{didInsert (set this \"link\")}}\n @onClick={{optional @selectable.onClick}}\n />\n {{/if}}\n </EuiPanel>\n {{/let}}\n </template>\n}\n"],"names":["EuiCardComponent","Component","g","prototype","tracked","i","void 0","outerOnClick","e","link","target","click","selectableColorClass","selectable","args","euiCardSelectableColor","color","isSelected","undefined","topClasses","topClassName","join","contentClasses","contentClassName","footerClasses","footerClassName","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","and","not","or","argOrDefault","EuiPanel","classNames","eq","notEq","EuiIcon","EuiTitle","set","didInsert","element","on","optional","EuiText","EuiBetaBadge","EuiCardSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+Fe,MAAMA,yBAAyBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACrDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;EAEnEC,YAAA,GAAgBC,CAAG,IAAA;IACjB,IAAI,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,KAAKD,CAAE,CAAAE,MAAM,EAAE;AACvC,MAAA,IAAI,CAACD,IAAI,CAACE,KAAK,EAAA;AACjB;GACA;EAEF,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,IAAI,CAACD,UAAU;AAEvC,IAAA,OAAOA,UACH,GAAA,CAA0BE,uBAAAA,EAAAA,sBACxB,CAAAF,UAAA,CAAWG,KAAK,EAChBH,UAAW,CAAAI,UAAU,CACrB,CAAA,CAAC,GACHC,SAAA;AACN;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,cAAA,EAAgB,IAAI,CAACL,IAAI,CAACM,YAAY,CAAC,CAACC,IAAI,CAAC,GAAA,CAAA;AACvD;EAEA,IAAIC,cAAAA,GAAyB;AAC3B,IAAA,OAAO,CAAC,kBAAA,EAAoB,IAAI,CAACR,IAAI,CAACS,gBAAgB,CAAC,CAACF,IAAI,CAAC,GAAA,CAAA;AAC/D;EAEA,IAAIG,aAAAA,GAAwB;AAC1B,IAAA,OAAO,CAAC,iBAAA,EAAmB,IAAI,CAACV,IAAI,CAACW,eAAe,CAAC,CAACJ,IAAI,CAAC,GAAA,CAAA;AAC7D;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CA0JA,y0JAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,QAAA;iBAAAC,gBAAA;QAAAC,YAAA;AAAAC,uBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-card.js","sources":["../../src/components/eui-card.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, notEq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiBetaBadge from './eui-beta-badge.gts';\nimport { euiCardSelectableColor } from './eui-card-select.gts';\nimport EuiCardSelect from './eui-card-select.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { EuiCardSelectProps } from './eui-card-select';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiPanelSignature } from './eui-panel';\nimport type { EuiTitleSignature } from './eui-title';\n\ntype EuiCardComponentArgs = {\n footer?: string;\n selectable?: EuiCardSelectProps;\n /**\n * Class that will apply to the card top section.\n */\n topClassName?: string;\n\n /**\n * Class that will apply to the card content section.\n */\n contentClassName?: string;\n\n /**\n * Class that will apply to the card footer section.\n */\n footerClassName?: string;\n\n target?: string;\n\n betaBadgeProps?: {\n label: string;\n title?: string;\n tooltipContent?: string;\n };\n\n description?: string;\n\n /**\n * The title of the card.\n */\n title?: string;\n titleSize?: EuiTitleSignature['Args']['size'];\n\n /**\n * The title element. Will wrap the title in a heading tag.\n */\n titleElement?: string;\n\n href?: string;\n\n onClick?: (e: MouseEvent) => void;\n\n isDisabled?: boolean;\n\n textAlign?: 'left' | 'center' | 'right';\n\n image?: string;\n icon?: string;\n layout?: 'horizontal' | 'vertical';\n\n display?: EuiPanelSignature['Args']['color'];\n paddingSize?: EuiPanelSignature['Args']['paddingSize'];\n\n iconSize?: EuiIconSignature['Args']['size'];\n};\n\nexport interface EuiCardSignature {\n Element: EuiPanelSignature['Element'];\n Args: EuiCardComponentArgs;\n Blocks: {\n icon: ['euiCard__icon'];\n title: [() => void];\n description: [];\n body: [];\n footer: [];\n };\n}\n\nexport default class EuiCardComponent extends Component<EuiCardSignature> {\n @tracked link: HTMLAnchorElement | HTMLButtonElement | null = null;\n\n outerOnClick = (e: MouseEvent) => {\n if (this.link && this.link !== e.target) {\n this.link.click();\n }\n };\n\n get selectableColorClass() {\n const selectable = this.args.selectable;\n\n return selectable\n ? `euiCard--isSelectable--${euiCardSelectableColor(\n selectable.color,\n selectable.isSelected\n )}`\n : undefined;\n }\n\n get topClasses(): string {\n return ['euiCard__top', this.args.topClassName].join(' ');\n }\n\n get contentClasses(): string {\n return ['euiCard__content', this.args.contentClassName].join(' ');\n }\n\n get footerClasses(): string {\n return ['euiCard__footer', this.args.footerClassName].join(' ');\n }\n\n <template>\n {{#let\n (if @selectable (randomId))\n (and\n (not @isDisabled)\n (or @onClick @href (and @selectable (not @selectable.isDisabled)))\n )\n (argOrDefault @titleElement \"span\")\n (argOrDefault @layout \"vertical\")\n as |selectableId isClickable titleElement layout|\n }}\n <EuiPanel\n class={{classNames\n (if (eq layout \"horizontal\") \"euiCard--horizontal\")\n (if isClickable \"euiCard--isClickable\")\n (if @betaBadgeProps.label \"euiCard--hasBetaBadge\")\n (if\n @icon \"euiCard--hasIcon\" (if (has-block \"icon\") \"euiCard--hasIcon\")\n )\n (if @selectable \"euiCard--isSelectable\")\n (if (and @selectable @selectable.isSelected) \"euiCard-isSelected\")\n (if @isDisabled \"euiCard-isDisabled\")\n this.selectableColorClass\n componentName=\"EuiCard\"\n textAlign=(argOrDefault @textAlign \"center\")\n }}\n @color={{if @isDisabled \"subdued\" @display}}\n @onClick={{if isClickable this.outerOnClick}}\n @hasShadow={{if (or @isDisabled @display) true}}\n @hasBorder={{if @display true undefined}}\n @paddingSize={{@paddingSize}}\n ...attributes\n >\n\n {{#if (or (has-block \"icon\") (or @image @icon))}}\n <div class={{this.topClasses}}>\n {{#if (has-block \"icon\")}}\n {{yield \"euiCard__icon\" to=\"icon\"}}\n {{else}}\n {{#if (or @image @icon)}}\n {{#if (and @image (notEq layout \"horizontal\"))}}\n <div class=\"euiCard__image\">\n <img src={{@image}} alt=\"card-top\" />\n </div>\n {{/if}}\n {{#if @icon}}\n <EuiIcon\n @iconClasses=\"euiCard__icon\"\n @type={{@icon}}\n @size={{@iconSize}}\n />\n {{/if}}\n {{/if}}\n {{/if}}\n </div>\n {{/if}}\n\n <div class={{this.contentClasses}}>\n <EuiTitle\n class=\"euiCard__title\"\n @size={{argOrDefault @titleSize \"s\"}}\n >\n {{#if (has-block \"title\")}}\n {{yield (set this \"link\") to=\"title\"}}\n {{else if (and (not @isDisabled) @href)}}\n <a\n class=\"euiCard__titleAnchor\"\n target={{@target}}\n disabled={{@isDisabled}}\n href={{@href}}\n {{didInsert (set this \"link\")}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n\n </a>\n {{else if (or @isDisabled @onClick)}}\n <button\n type=\"button\"\n class=\"euiCard__titleButton\"\n disabled={{@isDisabled}}\n {{didInsert (set this \"link\")}}\n {{on \"click\" (optional @onClick)}}\n >\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n </button>\n {{else}}\n {{#if (notEq titleElement \"span\")}}\n {{#let (element titleElement) as |TitleElement|}}\n <TitleElement>{{@title}}</TitleElement>\n {{/let}}\n {{else}}\n <span>{{@title}}</span>\n {{/if}}\n {{/if}}\n </EuiTitle>\n {{#if (or @description (has-block \"description\"))}}\n <EuiText @grow={{true}} @size=\"s\" class=\"euiCard__description\">\n {{#if (has-block \"description\")}}\n <p>{{yield to=\"description\"}}</p>\n {{else}}\n <p>{{@description}}</p>\n {{/if}}\n </EuiText>\n {{/if}}\n {{yield to=\"body\"}}\n </div>\n {{#if @betaBadgeProps.label}}\n <span class=\"euiCard__betaBadgeWrapper\">\n <EuiBetaBadge\n class=\"euiCard__betaBadge\"\n @label={{@betaBadgeProps.label}}\n @title={{@betaBadgeProps.title}}\n @tooltipContent={{@betaBadgeProps.tooltipContent}}\n />\n </span>\n {{/if}}\n {{#if (and (eq layout \"vertical\") (or (has-block \"footer\") @footer))}}\n <div class={{this.footerClasses}}>\n {{#if (has-block \"footer\")}}\n {{yield to=\"footer\"}}\n {{else}}\n {{@footer}}\n {{/if}}\n </div>\n {{/if}}\n {{#if @selectable}}\n <EuiCardSelect\n @type={{@selectable.type}}\n @buttonId={{selectableId}}\n @isSelected={{@selectable.isSelected}}\n @isDisabled={{@selectable.isDisabled}}\n @color={{@selectable.color}}\n @isLoading={{@selectable.isLoading}}\n @href={{@selectable.href}}\n @iconSide={{@selectable.iconSide}}\n @flush={{@selectable.flush}}\n {{didInsert (set this \"link\")}}\n @onClick={{optional @selectable.onClick}}\n />\n {{/if}}\n </EuiPanel>\n {{/let}}\n </template>\n}\n"],"names":["EuiCardComponent","Component","g","prototype","tracked","i","void 0","outerOnClick","e","link","target","click","selectableColorClass","selectable","args","euiCardSelectableColor","color","isSelected","undefined","topClasses","topClassName","join","contentClasses","contentClassName","footerClasses","footerClassName","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","and","not","or","argOrDefault","EuiPanel","classNames","eq","notEq","EuiIcon","EuiTitle","set","didInsert","element","on","optional","EuiText","EuiBetaBadge","EuiCardSelect"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+Fe,MAAMA,yBAAyBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACrDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA6D,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;EAEnEC,YAAA,GAAgBC,CAAG,IAAA;IACjB,IAAI,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,KAAKD,CAAE,CAAAE,MAAM,EAAE;AACvC,MAAA,IAAI,CAACD,IAAI,CAACE,KAAK,EAAA;AACjB;GACA;EAEF,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,MAAMC,UAAa,GAAA,IAAI,CAACC,IAAI,CAACD,UAAU;AAEvC,IAAA,OAAOA,UACH,GAAA,CAA0BE,uBAAAA,EAAAA,sBACxB,CAAAF,UAAA,CAAWG,KAAK,EAChBH,UAAW,CAAAI,UAAU,CACrB,CAAA,CAAC,GACHC,SAAA;AACN;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,CAAC,cAAA,EAAgB,IAAI,CAACL,IAAI,CAACM,YAAY,CAAC,CAACC,IAAI,CAAC,GAAA,CAAA;AACvD;EAEA,IAAIC,cAAAA,GAAyB;AAC3B,IAAA,OAAO,CAAC,kBAAA,EAAoB,IAAI,CAACR,IAAI,CAACS,gBAAgB,CAAC,CAACF,IAAI,CAAC,GAAA,CAAA;AAC/D;EAEA,IAAIG,aAAAA,GAAwB;AAC1B,IAAA,OAAO,CAAC,iBAAA,EAAmB,IAAI,CAACV,IAAI,CAACW,eAAe,CAAC,CAACJ,IAAI,CAAC,GAAA,CAAA;AAC7D;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CA0JA,y0JAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,OAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,QAAA;iBAAAC,gBAAA;QAAAC,YAAA;AAAAC,uBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-checkbox.js b/dist/components/eui-checkbox.js | |
index 5aa39b6831c5ebfb0fc80e4ff7bbdf1c3570d4a9..2bf52324019c37001909a0139418d976fd9266e6 100644 | |
--- a/dist/components/eui-checkbox.js | |
+++ b/dist/components/eui-checkbox.js | |
@@ -1,5 +1,5 @@ | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { modifier } from 'ember-modifier'; | |
import { or, not, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
diff --git a/dist/components/eui-checkbox.js.map b/dist/components/eui-checkbox.js.map | |
index 9ed1d4884861f0f93b55301cc5c00f243dbc060d..276434d63b76d1a19e53e32a05be052323d719c2 100644 | |
--- a/dist/components/eui-checkbox.js.map | |
+++ b/dist/components/eui-checkbox.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-checkbox.js","sources":["../../src/components/eui-checkbox.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { modifier } from 'ember-modifier';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nconst indeterminateModifier = modifier(function invalidateIndeterminate(\n element: HTMLInputElement,\n [indeterminate]: [boolean?]\n) {\n if (element) {\n element.indeterminate = indeterminate!;\n }\n});\n\nexport interface EuiCheckboxSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n icon?: boolean;\n compressed?: boolean;\n label?: string;\n labelProps?: {\n className?: string;\n };\n containerClass?: string;\n className?: string;\n inputRef?: (element: HTMLInputElement) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n name?: string;\n };\n Blocks: {\n label?: [];\n };\n}\n\nconst EuiCheckbox: TemplateOnlyComponent<EuiCheckboxSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n (if @icon \"euiCheckbox--withIcon\")\n (if (not (or hasLabelBlock @label)) \"euiCheckbox--noLabel\")\n (if @compressed \"euiCheckbox--compressed\")\n \"euiCheckbox\"\n @className\n @containerClass\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiCheckbox__input\"\n type=\"checkbox\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n ...attributes\n {{indeterminateModifier @indeterminate}}\n {{didInsert (optional @inputRef)}}\n />\n <div class=\"euiCheckbox__square\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiCheckbox__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiCheckbox;\n"],"names":["indeterminateModifier","modifier","invalidateIndeterminate","element","indeterminate","EuiCheckbox","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;;AAYA,MAAMA,qBAAA,GAAwBC,QAAS,CAAA,SAASC,uBAC9CA,CAAAC,OAAyB,EACzB,CAACC,aAAiB,CAAS,EAAA;AAE3B,EAAA,IAAID,OAAS,EAAA;IACXA,OAAA,CAAQC,aAAa,GAAGA,aAAA;AAC1B;AACF,CAAA,CAAA;AA0BA,MAAMC,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CA6CjE,ygCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAf,qBAAA;IAAAgB,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-checkbox.js","sources":["../../src/components/eui-checkbox.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { modifier } from 'ember-modifier';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nconst indeterminateModifier = modifier(function invalidateIndeterminate(\n element: HTMLInputElement,\n [indeterminate]: [boolean?]\n) {\n if (element) {\n element.indeterminate = indeterminate!;\n }\n});\n\nexport interface EuiCheckboxSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n icon?: boolean;\n compressed?: boolean;\n label?: string;\n labelProps?: {\n className?: string;\n };\n containerClass?: string;\n className?: string;\n inputRef?: (element: HTMLInputElement) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n name?: string;\n };\n Blocks: {\n label?: [];\n };\n}\n\nconst EuiCheckbox: TemplateOnlyComponent<EuiCheckboxSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n (if @icon \"euiCheckbox--withIcon\")\n (if (not (or hasLabelBlock @label)) \"euiCheckbox--noLabel\")\n (if @compressed \"euiCheckbox--compressed\")\n \"euiCheckbox\"\n @className\n @containerClass\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiCheckbox__input\"\n type=\"checkbox\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n ...attributes\n {{indeterminateModifier @indeterminate}}\n {{didInsert (optional @inputRef)}}\n />\n <div class=\"euiCheckbox__square\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiCheckbox__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiCheckbox;\n"],"names":["indeterminateModifier","modifier","invalidateIndeterminate","element","indeterminate","EuiCheckbox","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;;AAYA,MAAMA,qBAAA,GAAwBC,QAAS,CAAA,SAASC,uBAC9CA,CAAAC,OAAyB,EACzB,CAACC,aAAiB,CAAS,EAAA;AAE3B,EAAA,IAAID,OAAS,EAAA;IACXA,OAAA,CAAQC,aAAa,GAAGA,aAAA;AAC1B;AACF,CAAA,CAAA;AA0BA,MAAMC,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CA6CjE,ygCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAf,qBAAA;IAAAgB,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-combo-box/trigger.js b/dist/components/eui-combo-box/trigger.js | |
index bc9255f2e63304bef968cba7b6f6596f168a12e0..93274100ed6b87ffe7a044f6529686d9d466ba44 100644 | |
--- a/dist/components/eui-combo-box/trigger.js | |
+++ b/dist/components/eui-combo-box/trigger.js | |
@@ -2,7 +2,7 @@ import { array, fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
import didUpdate from '@ember/render-modifiers/modifiers/did-update'; | |
import { EnsureSafeComponentHelper } from '@embroider/util'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import EmberPowerSelectMultipleTrigger from 'ember-power-select/components/power-select-multiple/trigger'; | |
import { not, or, and } from 'ember-truth-helpers'; | |
import argOrDefault from '../../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-combo-box/trigger.js.map b/dist/components/eui-combo-box/trigger.js.map | |
index bdff06cf4f292274182a9f8131a064f8fe01b747..a6a031c352e1118a473577fbdb2baee52d5fa94c 100644 | |
--- a/dist/components/eui-combo-box/trigger.js.map | |
+++ b/dist/components/eui-combo-box/trigger.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"trigger.js","sources":["../../../src/components/eui-combo-box/trigger.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport EmberPowerSelectMultipleTrigger from 'ember-power-select/components/power-select-multiple/trigger';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../../helpers/arg-or-default.ts';\nimport classNames from '../../helpers/class-names.ts';\nimport EuiComboBoxPill from '../eui-combo-box-pill.gts';\nimport EuiFormControlLayout from '../eui-form-control-layout.gts';\nimport EuiComboBoxTriggerInput from './trigger/input.gts';\n\nexport default class EuiComboBoxTriggerComponent extends EmberPowerSelectMultipleTrigger {\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <EuiFormControlLayout\n @icon={{argOrDefault @icon \"arrowDown\"}}\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @clear={{if\n (and @select.selected @allowClear)\n (fn @select.actions.select (array))\n }}\n @isLoading={{@isLoading}}\n @disabled={{@select.disabled}}\n >\n <:field>\n {{! template-lint-disable }}\n <ul\n id=\"ember-power-select-multiple-options-{{@select.uniqueId}}\"\n class={{classNames\n \"euiComboBox__inputWrap ember-power-select-multiple-options\"\n (if @compressed \"euiComboBox__inputWrap--compressed\")\n (if @fullWidth \"euiComboBox__inputWrap--fullWidth\")\n (if @singleSelection \"euiComboBox__inputWrap--noWrap\")\n (if @isLoading \"euiComboBox__inputWrap--isLoading\")\n (if @allowClear \"euiComboBox__inputWrap-isClearable\")\n }}\n ...attributes\n {{didUpdate this.openChanged @select.isOpen}}\n {{on \"touchstart\" this.chooseOption}}\n {{on \"mousedown\" this.chooseOption}}\n >\n {{! template-lint-enable }}\n {{#if\n (or\n (and @singleSelection (not @select.searchText))\n (not @singleSelection)\n )\n }}\n {{#each @select.selected as |opt idx|}}\n {{#if @selectedItemComponent}}\n {{#let\n (component\n (EnsureSafeComponentHelper @selectedItemComponent)\n extra=@extra\n option=opt\n select=@select\n )\n as |SelectedItemComponent|\n }}\n <SelectedItemComponent />\n {{/let}}\n {{else}}\n <EuiComboBoxPill\n class=\"ember-power-select-multiple-option\n {{if\n opt.disabled\n 'ember-power-select-multiple-option--disabled'\n }}\"\n @option={{opt}}\n @onClose={{if\n (or @select.disabled @singleSelection)\n false\n (if @onClose (fn (optional @onClose) opt) true)\n }}\n @dataSelectedIconIndex={{idx}}\n @color={{opt.color}}\n @asPlainText={{@singleSelection.asPlainText}}\n >\n {{yield opt @select}}\n </EuiComboBoxPill>\n {{/if}}\n {{else}}{{#if (and @placeholder (not @searchEnabled))}}\n <span class=\"ember-power-select-placeholder\">\n {{@placeholder}}\n </span>\n {{/if}}{{/each}}\n {{/if}}\n {{#if @searchEnabled}}\n {{#if (and this.maybePlaceholder (not @select.searchText))}}\n <p class=\"euiComboBoxPlaceholder\">\n {{this.maybePlaceholder}}\n </p>\n {{/if}}\n {{#let\n (component\n EuiComboBoxTriggerInput\n select=@select\n ariaActiveDescendant=@ariaActiveDescendant\n ariaLabelledBy=@ariaLabelledBy\n ariaLabel=@ariaLabel\n listboxId=@listboxId\n tabindex=@tabindex\n buildSelection=@buildSelection\n placeholder=@placeholder\n placeholderComponent=@placeholderComponent\n searchField=@searchField\n onFocus=@onFocus\n isInvalid=@isInvalid\n onBlur=@onBlur\n onKeydown=@onKeydown\n onInput=@onInput\n onCreateOption=@onCreateOption\n )\n as |InputComponent|\n }}\n {{#let\n (component\n (EnsureSafeComponentHelper @placeholderComponent)\n select=@select\n placeholder=@placeholder\n isMultipleWithSearch=true\n inputComponent=InputComponent\n displayPlaceholder=(and\n (not @select.searchText) (not @select.selected)\n )\n )\n as |PlaceholderComponent|\n }}\n <PlaceholderComponent />\n {{/let}}\n {{/let}}\n {{else}}\n {{! template-lint-disable }}\n <div\n class=\"euiComboBox__input\"\n style=\"font-size: 14px; display: inline-block;\"\n ></div>\n {{! template-lint-enable }}\n {{/if}}\n </ul>\n </:field>\n </EuiFormControlLayout>\n </template>\n}\n"],"names":["EuiComboBoxTriggerComponent","EmberPowerSelectMultipleTrigger","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","argOrDefault","and","fn","array","classNames","didUpdate","on","or","not","EnsureSafeComponentHelper","EuiComboBoxPill","optional","EuiComboBoxTriggerInput"],"mappings":";;;;;;;;;;;;;;;AAgBe,MAAMA,2BAAoC,SAAAC,+BAAA,CAAA;AACvD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAqIA,0hHAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,oBAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,UAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,GAAA;QAAAC,yBAAA;QAAAC,eAAA;QAAAC,QAAA;AAAAC,iCAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"trigger.js","sources":["../../../src/components/eui-combo-box/trigger.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport EmberPowerSelectMultipleTrigger from 'ember-power-select/components/power-select-multiple/trigger';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../../helpers/arg-or-default.ts';\nimport classNames from '../../helpers/class-names.ts';\nimport EuiComboBoxPill from '../eui-combo-box-pill.gts';\nimport EuiFormControlLayout from '../eui-form-control-layout.gts';\nimport EuiComboBoxTriggerInput from './trigger/input.gts';\n\nexport default class EuiComboBoxTriggerComponent extends EmberPowerSelectMultipleTrigger {\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <EuiFormControlLayout\n @icon={{argOrDefault @icon \"arrowDown\"}}\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @clear={{if\n (and @select.selected @allowClear)\n (fn @select.actions.select (array))\n }}\n @isLoading={{@isLoading}}\n @disabled={{@select.disabled}}\n >\n <:field>\n {{! template-lint-disable }}\n <ul\n id=\"ember-power-select-multiple-options-{{@select.uniqueId}}\"\n class={{classNames\n \"euiComboBox__inputWrap ember-power-select-multiple-options\"\n (if @compressed \"euiComboBox__inputWrap--compressed\")\n (if @fullWidth \"euiComboBox__inputWrap--fullWidth\")\n (if @singleSelection \"euiComboBox__inputWrap--noWrap\")\n (if @isLoading \"euiComboBox__inputWrap--isLoading\")\n (if @allowClear \"euiComboBox__inputWrap-isClearable\")\n }}\n ...attributes\n {{didUpdate this.openChanged @select.isOpen}}\n {{on \"touchstart\" this.chooseOption}}\n {{on \"mousedown\" this.chooseOption}}\n >\n {{! template-lint-enable }}\n {{#if\n (or\n (and @singleSelection (not @select.searchText))\n (not @singleSelection)\n )\n }}\n {{#each @select.selected as |opt idx|}}\n {{#if @selectedItemComponent}}\n {{#let\n (component\n (EnsureSafeComponentHelper @selectedItemComponent)\n extra=@extra\n option=opt\n select=@select\n )\n as |SelectedItemComponent|\n }}\n <SelectedItemComponent />\n {{/let}}\n {{else}}\n <EuiComboBoxPill\n class=\"ember-power-select-multiple-option\n {{if\n opt.disabled\n 'ember-power-select-multiple-option--disabled'\n }}\"\n @option={{opt}}\n @onClose={{if\n (or @select.disabled @singleSelection)\n false\n (if @onClose (fn (optional @onClose) opt) true)\n }}\n @dataSelectedIconIndex={{idx}}\n @color={{opt.color}}\n @asPlainText={{@singleSelection.asPlainText}}\n >\n {{yield opt @select}}\n </EuiComboBoxPill>\n {{/if}}\n {{else}}{{#if (and @placeholder (not @searchEnabled))}}\n <span class=\"ember-power-select-placeholder\">\n {{@placeholder}}\n </span>\n {{/if}}{{/each}}\n {{/if}}\n {{#if @searchEnabled}}\n {{#if (and this.maybePlaceholder (not @select.searchText))}}\n <p class=\"euiComboBoxPlaceholder\">\n {{this.maybePlaceholder}}\n </p>\n {{/if}}\n {{#let\n (component\n EuiComboBoxTriggerInput\n select=@select\n ariaActiveDescendant=@ariaActiveDescendant\n ariaLabelledBy=@ariaLabelledBy\n ariaLabel=@ariaLabel\n listboxId=@listboxId\n tabindex=@tabindex\n buildSelection=@buildSelection\n placeholder=@placeholder\n placeholderComponent=@placeholderComponent\n searchField=@searchField\n onFocus=@onFocus\n isInvalid=@isInvalid\n onBlur=@onBlur\n onKeydown=@onKeydown\n onInput=@onInput\n onCreateOption=@onCreateOption\n )\n as |InputComponent|\n }}\n {{#let\n (component\n (EnsureSafeComponentHelper @placeholderComponent)\n select=@select\n placeholder=@placeholder\n isMultipleWithSearch=true\n inputComponent=InputComponent\n displayPlaceholder=(and\n (not @select.searchText) (not @select.selected)\n )\n )\n as |PlaceholderComponent|\n }}\n <PlaceholderComponent />\n {{/let}}\n {{/let}}\n {{else}}\n {{! template-lint-disable }}\n <div\n class=\"euiComboBox__input\"\n style=\"font-size: 14px; display: inline-block;\"\n ></div>\n {{! template-lint-enable }}\n {{/if}}\n </ul>\n </:field>\n </EuiFormControlLayout>\n </template>\n}\n"],"names":["EuiComboBoxTriggerComponent","EmberPowerSelectMultipleTrigger","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","argOrDefault","and","fn","array","classNames","didUpdate","on","or","not","EnsureSafeComponentHelper","EuiComboBoxPill","optional","EuiComboBoxTriggerInput"],"mappings":";;;;;;;;;;;;;;;AAgBe,MAAMA,2BAAoC,SAAAC,+BAAA,CAAA;AACvD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAqIA,0hHAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,oBAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,UAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,GAAA;QAAAC,yBAAA;QAAAC,eAAA;QAAAC,QAAA;AAAAC,iCAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-combo-box-pill.js b/dist/components/eui-combo-box-pill.js | |
index ae64c87534a428d708f9a86311b4bfd9e311886a..9024dbf48bedbc2797e71d3a39000b31a2fa83a0 100644 | |
--- a/dist/components/eui-combo-box-pill.js | |
+++ b/dist/components/eui-combo-box-pill.js | |
@@ -1,5 +1,5 @@ | |
import { fn, hash } from '@ember/helper'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import classNames from '../helpers/class-names.js'; | |
import EuiBadge from './eui-badge.js'; | |
import { precompileTemplate } from '@ember/template-compilation'; | |
diff --git a/dist/components/eui-combo-box-pill.js.map b/dist/components/eui-combo-box-pill.js.map | |
index 2a5a93faceedd1f47597af6e56ef8b7cacdceebc..0a252d7f57fae2189783717e0d63e9718d467a87 100644 | |
--- a/dist/components/eui-combo-box-pill.js.map | |
+++ b/dist/components/eui-combo-box-pill.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-combo-box-pill.js","sources":["../../src/components/eui-combo-box-pill.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { fn } from '@ember/helper';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\n\nimport classNames from '../helpers/class-names.ts';\nimport EuiBadge from './eui-badge.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiComboBoxPill {\n Element: EuiBadgeSignature['Element'];\n Args: {\n /**\n * The color of the pill\n */\n asPlainText?: boolean;\n\n onClose?: (option: unknown) => void;\n\n color?: EuiBadgeSignature['Args']['color'];\n\n dataSelectedIconIndex?: number;\n\n iconOnClickAriaLabel?: string;\n\n option?: unknown;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiComboBoxPill: TemplateOnlyComponent<EuiComboBoxPill> = <template>\n {{#let\n (classNames\n \"euiComboBoxPill\" (if @asPlainText \"euiComboBoxPill--plainText\")\n )\n (optional @onClose)\n as |classes onClose|\n }}\n {{#if @onClose}}\n <EuiBadge\n class={{classes}}\n @closeButtonProps={{hash\n tabIndex=-1\n dataSelectedIconIndex=@dataSelectedIconIndex\n }}\n @color={{@color}}\n @iconOnClick={{fn onClose @option}}\n @iconOnClickAriaLabel={{@iconOnClickAriaLabel}}\n @iconSide=\"right\"\n @iconType=\"cross\"\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{else if @asPlainText}}\n <span class={{classes}}>\n {{yield}}\n </span>\n {{else}}\n <EuiBadge\n class={{classes}}\n @color={{@color}}\n @closeButtonProps={{hash dataSelectedIconIndex=@dataSelectedIconIndex}}\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{/if}}\n {{/let}}\n</template>;\n\nexport default EuiComboBoxPill;\n"],"names":["EuiComboBoxPill","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","optional","EuiBadge","hash","fn","templateOnly"],"mappings":";;;;;;;;AAkCA,MAAMA,eAA0D,GAAAC,oBAAA,CAAAC,kBAAA,CAuChE,oxBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-combo-box-pill.js","sources":["../../src/components/eui-combo-box-pill.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { fn } from '@ember/helper';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\n\nimport classNames from '../helpers/class-names.ts';\nimport EuiBadge from './eui-badge.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiComboBoxPill {\n Element: EuiBadgeSignature['Element'];\n Args: {\n /**\n * The color of the pill\n */\n asPlainText?: boolean;\n\n onClose?: (option: unknown) => void;\n\n color?: EuiBadgeSignature['Args']['color'];\n\n dataSelectedIconIndex?: number;\n\n iconOnClickAriaLabel?: string;\n\n option?: unknown;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiComboBoxPill: TemplateOnlyComponent<EuiComboBoxPill> = <template>\n {{#let\n (classNames\n \"euiComboBoxPill\" (if @asPlainText \"euiComboBoxPill--plainText\")\n )\n (optional @onClose)\n as |classes onClose|\n }}\n {{#if @onClose}}\n <EuiBadge\n class={{classes}}\n @closeButtonProps={{hash\n tabIndex=-1\n dataSelectedIconIndex=@dataSelectedIconIndex\n }}\n @color={{@color}}\n @iconOnClick={{fn onClose @option}}\n @iconOnClickAriaLabel={{@iconOnClickAriaLabel}}\n @iconSide=\"right\"\n @iconType=\"cross\"\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{else if @asPlainText}}\n <span class={{classes}}>\n {{yield}}\n </span>\n {{else}}\n <EuiBadge\n class={{classes}}\n @color={{@color}}\n @closeButtonProps={{hash dataSelectedIconIndex=@dataSelectedIconIndex}}\n ...attributes\n >\n {{yield}}\n </EuiBadge>\n {{/if}}\n {{/let}}\n</template>;\n\nexport default EuiComboBoxPill;\n"],"names":["EuiComboBoxPill","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","optional","EuiBadge","hash","fn","templateOnly"],"mappings":";;;;;;;;AAkCA,MAAMA,eAA0D,GAAAC,oBAAA,CAAAC,kBAAA,CAuChE,oxBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,IAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-combo-box.js b/dist/components/eui-combo-box.js | |
index 2fccc6711fcc992e951935394b0ad4b94dbbe391..229004bb9160c38f39a0cce670f250167ecd5896 100644 | |
--- a/dist/components/eui-combo-box.js | |
+++ b/dist/components/eui-combo-box.js | |
@@ -5,9 +5,9 @@ import { action } from '@ember/object'; | |
import { inject } from '@ember/service'; | |
import { isEqual } from '@ember/utils'; | |
import 'ember-basic-dropdown/styles'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
-import pipe from 'ember-composable-helpers/helpers/pipe'; | |
-import queue from 'ember-composable-helpers/helpers/queue'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
+import pipe from '@nullvoxpopuli/ember-composable-helpers/helpers/pipe'; | |
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue'; | |
import PowerSelectMultiple from 'ember-power-select/components/power-select-multiple'; | |
import { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group'; | |
import { not, and } from 'ember-truth-helpers'; | |
diff --git a/dist/components/eui-combo-box.js.map b/dist/components/eui-combo-box.js.map | |
index 51af9531b5736ec6c71d30cd5aa1d9875b500b62..e5fa268f0b1f70bae3a098c8d7656385349e2db9 100644 | |
--- a/dist/components/eui-combo-box.js.map | |
+++ b/dist/components/eui-combo-box.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-combo-box.js","sources":["../../src/components/eui-combo-box.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEqual } from '@ember/utils';\nimport 'ember-basic-dropdown/styles';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport pipe from 'ember-composable-helpers/helpers/pipe';\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';\nimport { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiComboBoxCreateOption from './eui-combo-box/create-option.gts';\nimport EuiComboBoxGroup from './eui-combo-box/group.gts';\nimport EuiComboBoxNoMatchesMessage from './eui-combo-box/no-matches-message.gts';\nimport EuiComboBoxOptions from './eui-combo-box/options.gts';\nimport EuiComboBoxSearchMessage from './eui-combo-box/search-message.gts';\nimport EuiComboBoxTrigger from './eui-combo-box/trigger.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\n\ninterface PromiseProxy<T> extends Promise<T> {\n content: any;\n}\n\ninterface Select {\n selected: any;\n actions: {\n search: (str: string) => void;\n };\n}\n\nexport interface EuiComboBoxSignature {\n Element: HTMLDivElement;\n Args: {\n singleSelection?:\n | boolean\n | {\n asPlainText?: boolean;\n };\n onCreateOption?: (search: string) => boolean | undefined;\n options: any[];\n search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;\n searchField?: string;\n isInvalid?: boolean;\n fullWidth?: boolean;\n searchMessage?: string;\n searchEnabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n readOnly?: boolean;\n searchMessageComponent?: any;\n compressed?: boolean;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n onClose?: (e: Event) => void;\n onOpen?: (e: Event) => void;\n renderInPlace?: boolean;\n customOptionText?: string;\n loadingMessage?: any;\n selectedItemComponent?: any;\n beforeOptionsComponent?: any;\n placeholderComponent?: any;\n afterOptionsComponent?: any;\n searchPlaceholder?: any;\n dropdownClass?: string;\n selectedOptions?: any[];\n onChange: (selected: any[]) => void;\n placeholder?: string;\n extra?: any;\n closeOnSelect?: boolean;\n autoFocus?: boolean;\n defaultHighlighted?: any;\n matchTriggerWidth?: boolean;\n tabindex?: number;\n initiallyOpen?: boolean;\n horizontalPosition?: string;\n verticalPosition?: string;\n destination?: string;\n preventScroll?: boolean;\n noMatchesMessage?: string;\n noMatchesMessageComponent?: any;\n };\n Blocks: {\n default: [any, number, Select];\n };\n}\n\ninterface Sliceable<T> {\n slice(): T[];\n}\n\nconst isSliceable = <T,>(coll: any): coll is Sliceable<T> => {\n return isArray(coll);\n};\n\nexport const toPlainArray = <T,>(collection: T[] | Sliceable<T>): T[] => {\n if (isSliceable<T>(collection)) {\n return collection.slice();\n } else {\n return collection;\n }\n};\n\nexport default class EuiComboBoxComponent extends Component<EuiComboBoxSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked select: any = null;\n @tracked private _resolvedOptions?: any[];\n @tracked searchText = '';\n @tracked private _searchResult?: any[];\n\n private _filterResultsCache: {\n results: any[];\n options: any[];\n searchText: string;\n } = { results: [], options: [], searchText: this.searchText };\n\n get loadingMessage() {\n return (\n this.args.loadingMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.loadingMessage',\n 'Loading options...'\n )\n );\n }\n\n get noMatchesMessage() {\n return (\n this.args.noMatchesMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.noMatchesMessage',\n 'No results found'\n )\n );\n }\n\n get searchMessage() {\n return (\n this.args.searchMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.searchMessage',\n 'Type to search'\n )\n );\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <PowerSelectMultiple\n ...attributes\n @onChange={{pipe this.onChange @onChange}}\n @onFocus={{@onFocus}}\n @onBlur={{@onBlur}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @placeholderComponent={{@placeholderComponent}}\n @searchMessage={{this.searchMessage}}\n @searchMessageComponent={{if\n @searchMessageComponent\n @searchMessageComponent\n EuiComboBoxSearchMessage\n }}\n @noMatchesMessage={{this.noMatchesMessage}}\n @matchTriggerWidth={{@matchTriggerWidth}}\n @options={{this.options}}\n @selected={{@selectedOptions}}\n @closeOnSelect={{@closeOnSelect}}\n @defaultHighlighted={{@defaultHighlighted}}\n @searchField={{@searchField}}\n @searchEnabled={{argOrDefault @searchEnabled true}}\n @tabindex={{@tabindex}}\n @initiallyOpened={{and (not @isDisabled) @autoFocus}}\n @triggerComponent={{component\n EuiComboBoxTrigger\n fullWidth=@fullWidth\n compressed=@compressed\n isInvalid=@isInvalid\n singleSelection=@singleSelection\n onClose=@removeTag\n onCreateOption=(if @onCreateOption this.onCreateOption)\n isLoading=@isLoading\n autoFocus=(and (not @isDisabled) @autoFocus)\n icon=@triggerIcon\n }}\n @matcher={{@matcher}}\n @initiallyOpen={{@initiallyOpen}}\n @typeAheadOptionMatcher={{@typeAheadOptionMatcher}}\n @buildSelection={{this.buildSelection}}\n @search={{@search}}\n @onInput={{@onInput}}\n @onKeydown={{@onKeydown}}\n @scrollTo={{this.scrollTo}}\n @registerAPI={{queue this.registerAPI (optional @registerApi)}}\n @horizontalPosition={{@horizontalPosition}}\n @destination={{@destination}}\n @preventScroll={{@preventScroll}}\n @renderInPlace={{@renderInPlace}}\n @verticalPosition={{@verticalPosition}}\n @disabled={{@isDisabled}}\n @calculatePosition={{@calculatePosition}}\n @eventType={{@eventType}}\n @ariaLabel={{@ariaLabel}}\n @ariaLabelledBy={{@ariaLabelledBy}}\n @required={{@required}}\n @triggerRole={{@triggerRole}}\n @title={{@title}}\n @triggerId={{@triggerId}}\n @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}}\n @loadingMessage={{this.loadingMessage}}\n @selectedItemComponent={{@selectedItemComponent}}\n @beforeOptionsComponent={{@beforeOptionsComponent}}\n @afterOptionsComponent={{@afterOptionsComponent}}\n @placeholder={{@placeholder}}\n @searchPlaceholder={{@searchPlaceholder}}\n @optionsComponent={{component\n EuiComboBoxOptions\n rowHeight=@rowHeight\n class=@optionsClass\n }}\n @extra={{@extra}}\n @groupComponent={{component EuiComboBoxGroup}}\n @triggerClass={{classNames\n \"euiComboBox\"\n (if @compressed \"euiComboBox--compressed\")\n (if @fullWidth \"euiComboBox--fullWidth\")\n (if @isDisabled \"euiComboBox-isDisabled\")\n (if @isInvalid \"euiComboBox-isInvalid\")\n (if this.select.isOpen \"euiComboBox-isOpen\")\n }}\n @noMatchesMessageComponent={{if\n @onCreateOption\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n )\n (component EuiComboBoxNoMatchesMessage)\n }}\n @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen euiComboBoxOptionsList__rowWrap {{@dropdownClass}}\"\n as |option i|\n >\n {{yield option i}}\n </PowerSelectMultiple>\n </template>\n\n //This is to allow scrolling between virtualized groups\n @cached\n get opts() {\n return this.results.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n @cached\n get options(): any[] {\n if (this._resolvedOptions) return toPlainArray(this._resolvedOptions);\n\n if (this.args.options) {\n return toPlainArray(this.args.options);\n } else {\n return [];\n }\n }\n\n @cached\n get results(): any[] {\n if (this.searchText.length > 0) {\n if (this.args.search) {\n return toPlainArray(this._searchResult || this.options);\n } else {\n if (\n this._filterResultsCache.options === this.options &&\n this._filterResultsCache.searchText === this.searchText\n ) {\n // This is an optimization to avoid filtering several times, which may be a bit expensive\n // if there are many options, if neither the options nor the searchtext have changed\n return this._filterResultsCache.results;\n }\n\n //@ts-ignore\n let results = this._filter(this.options, this.searchText);\n //eslint-disable-next-line\n this._filterResultsCache = {\n results,\n options: this.options,\n searchText: this.searchText\n };\n\n return results;\n }\n } else {\n return this.options;\n }\n }\n\n @action\n scrollTo(option: any, select: { results: []; uniqueId: string }): void {\n let optionsList = document.querySelector(\n `[aria-controls=\"ember-power-select-trigger-${select.uniqueId}\"]`\n ) as HTMLElement;\n\n if (!optionsList) {\n return;\n }\n\n let index = this.opts.indexOf(option);\n\n if (index === -1) {\n return;\n }\n\n let optionElement = optionsList.querySelector(\n `[data-option-index=\"${index}\"]`\n ) as HTMLElement;\n\n if (!optionElement) {\n return;\n }\n\n let optionTopScroll = optionElement.offsetTop;\n let optionBottomScroll = optionTopScroll + optionElement.offsetHeight;\n\n if (optionBottomScroll > optionsList.offsetHeight + optionsList.scrollTop) {\n optionsList.scrollTop = optionBottomScroll - optionsList.offsetHeight;\n } else if (optionTopScroll < optionsList.scrollTop) {\n optionsList.scrollTop = optionTopScroll;\n }\n }\n\n @action\n registerAPI(select: Select) {\n this.select = select;\n }\n\n @action\n onChange(selected: any[]) {\n if (this.args.singleSelection) {\n return selected.length > 0 ? [selected[selected.length - 1]] : [];\n }\n\n return selected;\n }\n\n @action\n onCreateOption() {\n let option;\n\n if (\n this.args.onCreateOption &&\n typeof this.args.onCreateOption === 'function'\n ) {\n // The `onCreateOption` function can be used to sanitize the input or explicitly return `false` to reject the input\n option = this.args.onCreateOption(this.select.searchText);\n\n if (option === false) {\n return;\n }\n }\n\n let search = option || this.select.searchText;\n\n this.select.actions.search('');\n this.select.actions.close();\n\n return search;\n }\n\n @action\n buildSelection(option: any, select: Select) {\n let newSelection = (select.selected || []).slice(0);\n let idx = -1;\n\n for (let i = 0; i < newSelection.length; i++) {\n if (isEqual(newSelection[i], option)) {\n idx = i;\n\n break;\n }\n }\n\n if (idx > -1) {\n newSelection.splice(idx, 1);\n } else {\n newSelection.push(option);\n }\n\n if (this.args.singleSelection && newSelection.length === 0) {\n select.actions.search('');\n }\n\n if (select?.selected?.length < newSelection.length) {\n select.actions.search('');\n }\n\n return newSelection;\n }\n}\n"],"names":["isSliceable","coll","isArray","toPlainArray","collection","slice","EuiComboBoxComponent","Component","g","prototype","service","i","void 0","tracked","_filterResultsCache","results","options","searchText","loadingMessage","args","euiI18n","lookupToken","noMatchesMessage","searchMessage","setComponentTemplate","precompileTemplate","strictMode","scope","PowerSelectMultiple","pipe","EuiComboBoxSearchMessage","argOrDefault","and","not","EuiComboBoxTrigger","queue","optional","EuiComboBoxOptions","EuiComboBoxGroup","classNames","EuiComboBoxCreateOption","EuiComboBoxNoMatchesMessage","opts","reduce","acc","curr","emberPowerSelectIsGroup","push","n","cached","_resolvedOptions","length","search","_searchResult","_filter","scrollTo","option","select","optionsList","document","querySelector","uniqueId","index","indexOf","optionElement","optionTopScroll","offsetTop","optionBottomScroll","offsetHeight","scrollTop","action","registerAPI","onChange","selected","singleSelection","onCreateOption","actions","close","buildSelection","newSelection","idx","isEqual","splice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkGA,MAAMA,cAAmBC,IAAS,IAAqB;EACrD,OAAOC,OAAQ,CAAAD,IAAA,CAAA;AACjB,CAAA;AAEaE,MAAAA,YAAe,GAAKC,UAAiC,IAAA;AAChE,EAAA,IAAIJ,WAAA,CAAeI,UAAa,CAAA,EAAA;AAC9B,IAAA,OAAOA,WAAWC,KAAK,EAAA;AACzB,GAAO,MAAA;AACL,IAAA,OAAOD,UAAA;AACT;AACF;AAEe,MAAME,6BAA6BC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACzDC,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAEAI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsB,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CAC3BI,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,iBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CACAI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAqB,EAAG;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CACxBI,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,SAAA;AAEOE,EAAAA,mBAAA,GAIJ;AAAEC,IAAAA,OAAA,EAAS,EAAE;AAAEC,IAAAA,OAAA,EAAS,EAAE;IAAEC,UAAY,EAAA,IAAI,CAACA;GAAa;EAE9D,IAAIC,cAAiBA,GAAA;AACnB,IAAA,OACE,IAAI,CAACC,IAAI,CAACD,cAAc,IACxB,IAAI,CAACE,OAAO,CAACC,WAAW,CACtB,8BACA,oBAEJ,CAAA;AACF;EAEA,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OACE,IAAI,CAACH,IAAI,CAACG,gBAAgB,IAC1B,IAAI,CAACF,OAAO,CAACC,WAAW,CACtB,gCACA,kBAEJ,CAAA;AACF;EAEA,IAAIE,aAAgBA,GAAA;AAClB,IAAA,OACE,IAAI,CAACJ,IAAI,CAACI,aAAa,IACvB,IAAI,CAACH,OAAO,CAACC,WAAW,CACtB,6BACA,gBAEJ,CAAA;AACF;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAkGA,ymGAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,mBAAA;QAAAC,IAAA;kCAAAC,sBAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,GAAA;4BAAAC,2BAAA;QAAAC,KAAA;QAAAC,QAAA;4BAAAC,2BAAA;QAAAC,gBAAA;QAAAC,UAAA;iCAAAC,8BAAA;AAAAC,qCAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AAEV;EACA,IACIC,IAAOA,GAAA;IACT,OAAO,IAAI,CAAC3B,OAAO,CAAC4B,MAAM,CAAC,CAACC,GAAK,EAAAC,IAAA,KAAA;AAC/B,MAAA,IAAIC,uBAAwB,CAAA,CAACD,IAAA,CAAK,CAAG,EAAA;QACnCD,GAAA,CAAIG,IAAI,CAACF,IAAS,EAAA,GAAAA,IAAA,CAAK7B,OAAO,CAAA;AAChC,OAAO,MAAA;AACL4B,QAAAA,GAAA,CAAIG,IAAI,CAACF,IAAA,CAAA;AACX;AAEA,MAAA,OAAOD,GAAA;KACT,EAAG,EAAE,CAAA;AACP;AAAA,EAAA;IAAAI,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,MAAA,EAAA,CAXCwC,MAAA,CAAA,CAAA;AAAA;EAaD,IACIjC,OAAAA,GAAiB;IACnB,IAAI,IAAI,CAACkC,gBAAgB,EAAE,OAAO/C,YAAa,CAAA,IAAI,CAAC+C,gBAAgB,CAAA;AAEpE,IAAA,IAAI,IAAI,CAAC/B,IAAI,CAACH,OAAO,EAAE;AACrB,MAAA,OAAOb,YAAa,CAAA,IAAI,CAACgB,IAAI,CAACH,OAAO,CAAA;AACvC,KAAO,MAAA;AACL,MAAA,OAAO,EAAE;AACX;AACF;AAAA,EAAA;IAAAgC,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,SAAA,EAAA,CATCwC,MAAA,CAAA,CAAA;AAAA;EAWD,IACIlC,OAAAA,GAAiB;AACnB,IAAA,IAAI,IAAI,CAACE,UAAU,CAACkC,MAAM,GAAG,CAAG,EAAA;AAC9B,MAAA,IAAI,IAAI,CAAChC,IAAI,CAACiC,MAAM,EAAE;QACpB,OAAOjD,aAAa,IAAI,CAACkD,aAAa,IAAI,IAAI,CAACrC,OAAO,CAAA;AACxD,OAAO,MAAA;AACL,QAAA,IACE,IAAI,CAACF,mBAAmB,CAACE,OAAO,KAAK,IAAI,CAACA,OAAO,IACjD,IAAI,CAACF,mBAAmB,CAACG,UAAU,KAAK,IAAI,CAACA,UAAU,EACvD;AACA;AACA;AACA,UAAA,OAAO,IAAI,CAACH,mBAAmB,CAACC,OAAO;AACzC;AAEA;AACA,QAAA,IAAIA,OAAA,GAAU,IAAI,CAACuC,OAAO,CAAC,IAAI,CAACtC,OAAO,EAAE,IAAI,CAACC,UAAU,CAAA;AACxD;QACA,IAAI,CAACH,mBAAmB,GAAG;UACzBC,OAAA;UACAC,OAAS,EAAA,IAAI,CAACA,OAAO;UACrBC,UAAY,EAAA,IAAI,CAACA;SACnB;AAEA,QAAA,OAAOF,OAAA;AACT;AACF,KAAO,MAAA;MACL,OAAO,IAAI,CAACC,OAAO;AACrB;AACF;AAAA,EAAA;IAAAgC,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,SAAA,EAAA,CA7BCwC,MAAA,CAAA,CAAA;AAAA;AAgCDM,EAAAA,QAASA,CAAAC,MAAW,EAAEC,MAAyC,EAAQ;IACrE,IAAIC,WAAc,GAAAC,QAAA,CAASC,aAAa,CACtC,CAAA,2CAAA,EAA8CH,MAAA,CAAOI,QAAQ,CAAA,EAAA,CAAI,CAC9D;IAEL,IAAI,CAACH,WAAa,EAAA;AAChB,MAAA;AACF;IAEA,IAAII,QAAQ,IAAI,CAACpB,IAAI,CAACqB,OAAO,CAACP,MAAA,CAAA;AAE9B,IAAA,IAAIM,KAAA,KAAU,EAAI,EAAA;AAChB,MAAA;AACF;IAEA,IAAIE,aAAA,GAAgBN,WAAY,CAAAE,aAAa,CAC3C,CAAA,oBAAA,EAAuBE,KAAA,CAAA,EAAA,CAAS,CAC7B;IAEL,IAAI,CAACE,aAAe,EAAA;AAClB,MAAA;AACF;AAEA,IAAA,IAAIC,eAAA,GAAkBD,cAAcE,SAAS;AAC7C,IAAA,IAAIC,kBAAA,GAAqBF,eAAkB,GAAAD,aAAA,CAAcI,YAAY;IAErE,IAAID,qBAAqBT,WAAY,CAAAU,YAAY,GAAGV,WAAA,CAAYW,SAAS,EAAE;AACzEX,MAAAA,WAAA,CAAYW,SAAS,GAAGF,kBAAqB,GAAAT,WAAA,CAAYU,YAAY;AACvE,KAAA,MAAO,IAAIH,eAAA,GAAkBP,WAAY,CAAAW,SAAS,EAAE;MAClDX,WAAA,CAAYW,SAAS,GAAGJ,eAAA;AAC1B;AACF;AAAA,EAAA;IAAAjB,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,UAAA,EAAA,CAhCC6D,MAAA,CAAA,CAAA;AAAA;EAmCDC,WAAYA,CAAAd,MAAc,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAA;AAChB;AAAA,EAAA;IAAAT,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,aAAA,EAAA,CAHC6D,MAAA,CAAA,CAAA;AAAA;EAMDE,QAASA,CAAAC,QAAe,EAAE;AACxB,IAAA,IAAI,IAAI,CAACtD,IAAI,CAACuD,eAAe,EAAE;AAC7B,MAAA,OAAOD,QAAA,CAAStB,MAAM,GAAG,CAAI,GAAA,CAACsB,QAAQ,CAACA,QAAA,CAAStB,MAAM,GAAG,CAAE,CAAA,CAAC,GAAG,EAAE;AACnE;AAEA,IAAA,OAAOsB,QAAA;AACT;AAAA,EAAA;IAAAzB,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,UAAA,EAAA,CAPC6D,MAAA,CAAA,CAAA;AAAA;AAUDK,EAAAA,cAAiBA,GAAA;AACf,IAAA,IAAInB,MAAA;AAEJ,IAAA,IACE,IAAI,CAACrC,IAAI,CAACwD,cAAc,IACxB,OAAO,IAAI,CAACxD,IAAI,CAACwD,cAAc,KAAK,UACpC,EAAA;AACA;AACAnB,MAAAA,MAAS,GAAA,IAAI,CAACrC,IAAI,CAACwD,cAAc,CAAC,IAAI,CAAClB,MAAM,CAACxC,UAAU,CAAA;MAExD,IAAIuC,WAAW,KAAO,EAAA;AACpB,QAAA;AACF;AACF;IAEA,IAAIJ,SAASI,MAAU,IAAA,IAAI,CAACC,MAAM,CAACxC,UAAU;IAE7C,IAAI,CAACwC,MAAM,CAACmB,OAAO,CAACxB,MAAM,CAAC,EAAA,CAAA;AAC3B,IAAA,IAAI,CAACK,MAAM,CAACmB,OAAO,CAACC,KAAK,EAAA;AAEzB,IAAA,OAAOzB,MAAA;AACT;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,gBAAA,EAAA,CAtBC6D,MAAA,CAAA,CAAA;AAAA;AAyBDQ,EAAAA,cAAAA,CAAetB,MAAW,EAAEC,MAAc,EAAE;AAC1C,IAAA,IAAIsB,YAAA,GAAe,CAACtB,MAAO,CAAAgB,QAAQ,IAAI,EAAE,EAAEpE,KAAK,CAAC,CAAA,CAAA;IACjD,IAAI2E,MAAM,EAAC;AAEX,IAAA,KAAK,IAAIrE,CAAI,GAAA,CAAA,EAAGA,IAAIoE,YAAa,CAAA5B,MAAM,EAAExC,CAAK,EAAA,EAAA;MAC5C,IAAIsE,OAAQ,CAAAF,YAAY,CAACpE,CAAA,CAAE,EAAE6C,MAAS,CAAA,EAAA;AACpCwB,QAAAA,GAAM,GAAArE,CAAA;AAEN,QAAA;AACF;AACF;AAEA,IAAA,IAAIqE,GAAA,GAAM,EAAI,EAAA;AACZD,MAAAA,YAAa,CAAAG,MAAM,CAACF,GAAK,EAAA,CAAA,CAAA;AAC3B,KAAO,MAAA;AACLD,MAAAA,YAAA,CAAahC,IAAI,CAACS,MAAA,CAAA;AACpB;IAEA,IAAI,IAAI,CAACrC,IAAI,CAACuD,eAAe,IAAIK,YAAA,CAAa5B,MAAM,KAAK,CAAG,EAAA;AAC1DM,MAAAA,MAAO,CAAAmB,OAAO,CAACxB,MAAM,CAAC,EAAA,CAAA;AACxB;IAEA,IAAIK,MAAQ,EAAAgB,QAAA,EAAUtB,MAAS,GAAA4B,YAAA,CAAa5B,MAAM,EAAE;AAClDM,MAAAA,MAAO,CAAAmB,OAAO,CAACxB,MAAM,CAAC,EAAA,CAAA;AACxB;AAEA,IAAA,OAAO2B,YAAA;AACT;AAAA,EAAA;IAAA/B,CAAA,CAAA,IAAA,CAAAvC,SAAA,EAAA,gBAAA,EAAA,CA5BC6D,MAAA,CAAA,CAAA;AAAA;AA6BH;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-combo-box.js","sources":["../../src/components/eui-combo-box.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEqual } from '@ember/utils';\nimport 'ember-basic-dropdown/styles';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport pipe from '@nullvoxpopuli/ember-composable-helpers/helpers/pipe';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';\nimport { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiComboBoxCreateOption from './eui-combo-box/create-option.gts';\nimport EuiComboBoxGroup from './eui-combo-box/group.gts';\nimport EuiComboBoxNoMatchesMessage from './eui-combo-box/no-matches-message.gts';\nimport EuiComboBoxOptions from './eui-combo-box/options.gts';\nimport EuiComboBoxSearchMessage from './eui-combo-box/search-message.gts';\nimport EuiComboBoxTrigger from './eui-combo-box/trigger.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\n\ninterface PromiseProxy<T> extends Promise<T> {\n content: any;\n}\n\ninterface Select {\n selected: any;\n actions: {\n search: (str: string) => void;\n };\n}\n\nexport interface EuiComboBoxSignature {\n Element: HTMLDivElement;\n Args: {\n singleSelection?:\n | boolean\n | {\n asPlainText?: boolean;\n };\n onCreateOption?: (search: string) => boolean | undefined;\n options: any[];\n search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;\n searchField?: string;\n isInvalid?: boolean;\n fullWidth?: boolean;\n searchMessage?: string;\n searchEnabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n readOnly?: boolean;\n searchMessageComponent?: any;\n compressed?: boolean;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n onClose?: (e: Event) => void;\n onOpen?: (e: Event) => void;\n renderInPlace?: boolean;\n customOptionText?: string;\n loadingMessage?: any;\n selectedItemComponent?: any;\n beforeOptionsComponent?: any;\n placeholderComponent?: any;\n afterOptionsComponent?: any;\n searchPlaceholder?: any;\n dropdownClass?: string;\n selectedOptions?: any[];\n onChange: (selected: any[]) => void;\n placeholder?: string;\n extra?: any;\n closeOnSelect?: boolean;\n autoFocus?: boolean;\n defaultHighlighted?: any;\n matchTriggerWidth?: boolean;\n tabindex?: number;\n initiallyOpen?: boolean;\n horizontalPosition?: string;\n verticalPosition?: string;\n destination?: string;\n preventScroll?: boolean;\n noMatchesMessage?: string;\n noMatchesMessageComponent?: any;\n };\n Blocks: {\n default: [any, number, Select];\n };\n}\n\ninterface Sliceable<T> {\n slice(): T[];\n}\n\nconst isSliceable = <T,>(coll: any): coll is Sliceable<T> => {\n return isArray(coll);\n};\n\nexport const toPlainArray = <T,>(collection: T[] | Sliceable<T>): T[] => {\n if (isSliceable<T>(collection)) {\n return collection.slice();\n } else {\n return collection;\n }\n};\n\nexport default class EuiComboBoxComponent extends Component<EuiComboBoxSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked select: any = null;\n @tracked private _resolvedOptions?: any[];\n @tracked searchText = '';\n @tracked private _searchResult?: any[];\n\n private _filterResultsCache: {\n results: any[];\n options: any[];\n searchText: string;\n } = { results: [], options: [], searchText: this.searchText };\n\n get loadingMessage() {\n return (\n this.args.loadingMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.loadingMessage',\n 'Loading options...'\n )\n );\n }\n\n get noMatchesMessage() {\n return (\n this.args.noMatchesMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.noMatchesMessage',\n 'No results found'\n )\n );\n }\n\n get searchMessage() {\n return (\n this.args.searchMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.searchMessage',\n 'Type to search'\n )\n );\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <PowerSelectMultiple\n ...attributes\n @onChange={{pipe this.onChange @onChange}}\n @onFocus={{@onFocus}}\n @onBlur={{@onBlur}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @placeholderComponent={{@placeholderComponent}}\n @searchMessage={{this.searchMessage}}\n @searchMessageComponent={{if\n @searchMessageComponent\n @searchMessageComponent\n EuiComboBoxSearchMessage\n }}\n @noMatchesMessage={{this.noMatchesMessage}}\n @matchTriggerWidth={{@matchTriggerWidth}}\n @options={{this.options}}\n @selected={{@selectedOptions}}\n @closeOnSelect={{@closeOnSelect}}\n @defaultHighlighted={{@defaultHighlighted}}\n @searchField={{@searchField}}\n @searchEnabled={{argOrDefault @searchEnabled true}}\n @tabindex={{@tabindex}}\n @initiallyOpened={{and (not @isDisabled) @autoFocus}}\n @triggerComponent={{component\n EuiComboBoxTrigger\n fullWidth=@fullWidth\n compressed=@compressed\n isInvalid=@isInvalid\n singleSelection=@singleSelection\n onClose=@removeTag\n onCreateOption=(if @onCreateOption this.onCreateOption)\n isLoading=@isLoading\n autoFocus=(and (not @isDisabled) @autoFocus)\n icon=@triggerIcon\n }}\n @matcher={{@matcher}}\n @initiallyOpen={{@initiallyOpen}}\n @typeAheadOptionMatcher={{@typeAheadOptionMatcher}}\n @buildSelection={{this.buildSelection}}\n @search={{@search}}\n @onInput={{@onInput}}\n @onKeydown={{@onKeydown}}\n @scrollTo={{this.scrollTo}}\n @registerAPI={{queue this.registerAPI (optional @registerApi)}}\n @horizontalPosition={{@horizontalPosition}}\n @destination={{@destination}}\n @preventScroll={{@preventScroll}}\n @renderInPlace={{@renderInPlace}}\n @verticalPosition={{@verticalPosition}}\n @disabled={{@isDisabled}}\n @calculatePosition={{@calculatePosition}}\n @eventType={{@eventType}}\n @ariaLabel={{@ariaLabel}}\n @ariaLabelledBy={{@ariaLabelledBy}}\n @required={{@required}}\n @triggerRole={{@triggerRole}}\n @title={{@title}}\n @triggerId={{@triggerId}}\n @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}}\n @loadingMessage={{this.loadingMessage}}\n @selectedItemComponent={{@selectedItemComponent}}\n @beforeOptionsComponent={{@beforeOptionsComponent}}\n @afterOptionsComponent={{@afterOptionsComponent}}\n @placeholder={{@placeholder}}\n @searchPlaceholder={{@searchPlaceholder}}\n @optionsComponent={{component\n EuiComboBoxOptions\n rowHeight=@rowHeight\n class=@optionsClass\n }}\n @extra={{@extra}}\n @groupComponent={{component EuiComboBoxGroup}}\n @triggerClass={{classNames\n \"euiComboBox\"\n (if @compressed \"euiComboBox--compressed\")\n (if @fullWidth \"euiComboBox--fullWidth\")\n (if @isDisabled \"euiComboBox-isDisabled\")\n (if @isInvalid \"euiComboBox-isInvalid\")\n (if this.select.isOpen \"euiComboBox-isOpen\")\n }}\n @noMatchesMessageComponent={{if\n @onCreateOption\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n )\n (component EuiComboBoxNoMatchesMessage)\n }}\n @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen euiComboBoxOptionsList__rowWrap {{@dropdownClass}}\"\n as |option i|\n >\n {{yield option i}}\n </PowerSelectMultiple>\n </template>\n\n //This is to allow scrolling between virtualized groups\n @cached\n get opts() {\n return this.results.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n @cached\n get options(): any[] {\n if (this._resolvedOptions) return toPlainArray(this._resolvedOptions);\n\n if (this.args.options) {\n return toPlainArray(this.args.options);\n } else {\n return [];\n }\n }\n\n @cached\n get results(): any[] {\n if (this.searchText.length > 0) {\n if (this.args.search) {\n return toPlainArray(this._searchResult || this.options);\n } else {\n if (\n this._filterResultsCache.options === this.options &&\n this._filterResultsCache.searchText === this.searchText\n ) {\n // This is an optimization to avoid filtering several times, which may be a bit expensive\n // if there are many options, if neither the options nor the searchtext have changed\n return this._filterResultsCache.results;\n }\n\n //@ts-ignore\n let results = this._filter(this.options, this.searchText);\n //eslint-disable-next-line\n this._filterResultsCache = {\n results,\n options: this.options,\n searchText: this.searchText\n };\n\n return results;\n }\n } else {\n return this.options;\n }\n }\n\n @action\n scrollTo(option: any, select: { results: []; uniqueId: string }): void {\n let optionsList = document.querySelector(\n `[aria-controls=\"ember-power-select-trigger-${select.uniqueId}\"]`\n ) as HTMLElement;\n\n if (!optionsList) {\n return;\n }\n\n let index = this.opts.indexOf(option);\n\n if (index === -1) {\n return;\n }\n\n let optionElement = optionsList.querySelector(\n `[data-option-index=\"${index}\"]`\n ) as HTMLElement;\n\n if (!optionElement) {\n return;\n }\n\n let optionTopScroll = optionElement.offsetTop;\n let optionBottomScroll = optionTopScroll + optionElement.offsetHeight;\n\n if (optionBottomScroll > optionsList.offsetHeight + optionsList.scrollTop) {\n optionsList.scrollTop = optionBottomScroll - optionsList.offsetHeight;\n } else if (optionTopScroll < optionsList.scrollTop) {\n optionsList.scrollTop = optionTopScroll;\n }\n }\n\n @action\n registerAPI(select: Select) {\n this.select = select;\n }\n\n @action\n onChange(selected: any[]) {\n if (this.args.singleSelection) {\n return selected.length > 0 ? [selected[selected.length - 1]] : [];\n }\n\n return selected;\n }\n\n @action\n onCreateOption() {\n let option;\n\n if (\n this.args.onCreateOption &&\n typeof this.args.onCreateOption === 'function'\n ) {\n // The `onCreateOption` function can be used to sanitize the input or explicitly return `false` to reject the input\n option = this.args.onCreateOption(this.select.searchText);\n\n if (option === false) {\n return;\n }\n }\n\n let search = option || this.select.searchText;\n\n this.select.actions.search('');\n this.select.actions.close();\n\n return search;\n }\n\n @action\n buildSelection(option: any, select: Select) {\n let newSelection = (select.selected || []).slice(0);\n let idx = -1;\n\n for (let i = 0; i < newSelection.length; i++) {\n if (isEqual(newSelection[i], option)) {\n idx = i;\n\n break;\n }\n }\n\n if (idx > -1) {\n newSelection.splice(idx, 1);\n } else {\n newSelection.push(option);\n }\n\n if (this.args.singleSelection && newSelection.length === 0) {\n select.actions.search('');\n }\n\n if (select?.selected?.length < newSelection.length) {\n select.actions.search('');\n }\n\n return newSelection;\n }\n}\n"],"names":["isSliceable","coll","isArray","toPlainArray","collection","slice","EuiComboBoxComponent","Component","g","prototype","service","i","void 0","tracked","_filterResultsCache","results","options","searchText","loadingMessage","args","euiI18n","lookupToken","noMatchesMessage","searchMessage","setComponentTemplate","precompileTemplate","strictMode","scope","PowerSelectMultiple","pipe","EuiComboBoxSearchMessage","argOrDefault","and","not","EuiComboBoxTrigger","queue","optional","EuiComboBoxOptions","EuiComboBoxGroup","classNames","EuiComboBoxCreateOption","EuiComboBoxNoMatchesMessage","opts","reduce","acc","curr","emberPowerSelectIsGroup","push","n","cached","_resolvedOptions","length","search","_searchResult","_filter","scrollTo","option","select","optionsList","document","querySelector","uniqueId","index","indexOf","optionElement","optionTopScroll","offsetTop","optionBottomScroll","offsetHeight","scrollTop","action","registerAPI","onChange","selected","singleSelection","onCreateOption","actions","close","buildSelection","newSelection","idx","isEqual","splice"],"mappings":"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"} | |
diff --git a/dist/components/eui-dual-range.js b/dist/components/eui-dual-range.js | |
index 53180dd4bc3d9e96c9043769cc38958bce7e19a7..4e97c2ead67a7d25a9d9b108ce22e2f8b479faf4 100644 | |
--- a/dist/components/eui-dual-range.js | |
+++ b/dist/components/eui-dual-range.js | |
@@ -6,7 +6,7 @@ import { action } from '@ember/object'; | |
import { guidFor } from '@ember/object/internals'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import { later } from '@ember/runloop'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import onKey from 'ember-keyboard/modifiers/on-key'; | |
import { eq, or, not, and } from 'ember-truth-helpers'; | |
import argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-dual-range.js.map b/dist/components/eui-dual-range.js.map | |
index 7821e11df320d84de53320070ff62293d91d815c..e96b9c651340863a46bc09a20a309a8878119fc3 100644 | |
--- a/dist/components/eui-dual-range.js.map | |
+++ b/dist/components/eui-dual-range.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { later } from '@ember/runloop';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type {\n EuiRangeInputArgs,\n EuiRangeInputSignature\n} from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport type ValueMember = number | string;\n\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (\n values: [ValueMember, ValueMember],\n isValid: boolean,\n event: Event | MouseEvent | KeyboardEvent\n ) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Specified ticks at specified values\n */\n ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n minInputProps?: Partial<EuiRangeInputArgs>;\n\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n maxInputProps?: Partial<EuiRangeInputArgs>;\n\n readOnly?: boolean;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n\n isAppendProvided?: boolean;\n\n isFakeMaxBlock?: boolean;\n\n isFakeMinBlock?: boolean;\n\n disable?: boolean;\n\n ariaDescribedby?: string;\n\n ariaLabel?: string;\n\n name?: string;\n\n id?: string;\n\n compressed?: boolean;\n\n showRange?: boolean;\n\n showTicks?: boolean;\n\n step?: number;\n\n min?: number;\n\n max?: number;\n}\n\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\n\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(true) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked hasFocus = false;\n @tracked rangeSliderRefAvailable = false;\n @tracked isPopoverOpen = false;\n @tracked rangeWidth: number | undefined;\n @tracked isVisible = true;\n ///\n\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n\n @action\n didInsertRangeSlider(ref: HTMLInputElement | null): void {\n this.rangeSliderRef = ref;\n\n this.rangeSliderRefAvailable = !!ref;\n this.rangeWidth = ref ? ref.clientWidth : undefined;\n\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n\n @action\n _determineInvalidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow = isWithinRange(this.min, lowerHalf, newVal);\n\n if (newValIsLow) {\n lower = newVal;\n upper = !this.upperValueIsValid ? this.max : upper;\n } else {\n lower = !this.lowerValueIsValid ? this.min : lower;\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineValidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (\n Math.abs((lower as number) - (newVal as number)) <\n Math.abs((upper as number) - (newVal as number))\n ) {\n lower = newVal;\n }\n // Upper thumb targeted or left-moving swap has occurred\n else {\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineThumbMovement(newVal: number, e: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n }\n\n @action\n _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void {\n const isValid =\n isWithinRange(this.min, upper, lower) &&\n isWithinRange(lower, this.max, upper);\n\n this.args.onChange([lower, upper], isValid, e);\n }\n\n @action\n handleSliderChange(e: Event): void {\n this._determineThumbMovement(\n Number((e.currentTarget as HTMLInputElement).value),\n e\n );\n }\n\n @action\n _resetToRangeEnds(e: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(\n this.min,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n\n @action\n _isDirectionalKeyPress(event: KeyboardEvent): boolean {\n return (\n [\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event.key as keys) > -1\n );\n }\n\n @action\n handleInputKeyDown(e: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e) && !this.isValid) {\n e.preventDefault();\n this._resetToRangeEnds(e);\n }\n }\n\n @action\n handleLowerInputChange(e: Event): void {\n this._handleOnChange(\n (e.target as HTMLInputElement).value,\n this.upperValue,\n e\n );\n }\n\n @action\n handleUpperInputChange(e: Event): void {\n this._handleOnChange(\n this.lowerValue,\n (e.target as HTMLInputElement).value,\n e\n );\n }\n\n @action\n _handleKeyDown(value: ValueMember, event: KeyboardEvent): number {\n let newVal = Number(value);\n let stepRemainder = 0;\n const step = this.args.step || 1;\n\n switch (event.key) {\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event.preventDefault();\n newVal += step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal - stepRemainder;\n }\n\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event.preventDefault();\n newVal -= step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal + (step - stepRemainder);\n }\n\n break;\n }\n\n return newVal;\n }\n\n @action\n handleLowerKeyDown(event: KeyboardEvent): void {\n let lower = this.lowerValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n lower = this._handleKeyDown(lower, event);\n }\n\n if (lower >= (this.upperValue as number) || lower < this.min) return;\n this._handleOnChange(lower, this.upperValue, event);\n }\n\n @action\n handleUpperKeyDown(event: KeyboardEvent): void {\n let upper = this.upperValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n upper = this._handleKeyDown(upper, event);\n }\n\n if (upper <= (this.lowerValue as number) || upper > this.max) return;\n this._handleOnChange(this.lowerValue, upper, event);\n }\n\n @action\n calculateThumbPositionStyle(value: number, width?: number): { left: string } {\n // Calculate the left position based on value\n const decimal = (value - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition = decimal <= 1 ? decimal : 1;\n\n valuePosition = valuePosition >= 0 ? valuePosition : 0;\n\n const trackWidth =\n this.args.showInput === 'inputWithPopover' && !!width\n ? width\n : this.rangeSliderRef?.clientWidth;\n\n let thumbToTrackRatio = 0;\n\n if (trackWidth) {\n thumbToTrackRatio = EUI_THUMB_SIZE / trackWidth;\n } else {\n thumbToTrackRatio = EUI_THUMB_SIZE / 1;\n }\n\n const trackPositionScale = (1 - thumbToTrackRatio) * 100;\n\n return { left: `${valuePosition * trackPositionScale}%` };\n }\n\n @action\n setPreventPopoverClose(value: boolean): void {\n this.preventPopoverClose = value;\n }\n\n get calculateLowerValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.lowerValue) || this.min,\n this.rangeWidth\n );\n }\n\n get calculateUpperValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.upperValue) || this.max,\n this.rangeWidth\n );\n }\n\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n\n @action\n onThumbFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.hasFocus = true;\n }\n\n @action\n onThumbBlur(e: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.hasFocus = false;\n }\n\n @action\n onInputFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: FocusEvent): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n onResize(width?: number): void {\n this.rangeWidth = width;\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiDualRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal","lower","upper","e","lowerHalf","Math","abs","newValIsLow","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","stepRemainder","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width","decimal","valuePosition","trackWidth","showInput","thumbToTrackRatio","EUI_THUMB_SIZE","trackPositionScale","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { later } from '@ember/runloop';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type {\n EuiRangeInputArgs,\n EuiRangeInputSignature\n} from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport type ValueMember = number | string;\n\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (\n values: [ValueMember, ValueMember],\n isValid: boolean,\n event: Event | MouseEvent | KeyboardEvent\n ) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Specified ticks at specified values\n */\n ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n minInputProps?: Partial<EuiRangeInputArgs>;\n\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */\n maxInputProps?: Partial<EuiRangeInputArgs>;\n\n readOnly?: boolean;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n\n isAppendProvided?: boolean;\n\n isFakeMaxBlock?: boolean;\n\n isFakeMinBlock?: boolean;\n\n disable?: boolean;\n\n ariaDescribedby?: string;\n\n ariaLabel?: string;\n\n name?: string;\n\n id?: string;\n\n compressed?: boolean;\n\n showRange?: boolean;\n\n showTicks?: boolean;\n\n step?: number;\n\n min?: number;\n\n max?: number;\n}\n\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\n\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(true) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked hasFocus = false;\n @tracked rangeSliderRefAvailable = false;\n @tracked isPopoverOpen = false;\n @tracked rangeWidth: number | undefined;\n @tracked isVisible = true;\n ///\n\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n\n @action\n didInsertRangeSlider(ref: HTMLInputElement | null): void {\n this.rangeSliderRef = ref;\n\n this.rangeSliderRefAvailable = !!ref;\n this.rangeWidth = ref ? ref.clientWidth : undefined;\n\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n\n @action\n _determineInvalidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow = isWithinRange(this.min, lowerHalf, newVal);\n\n if (newValIsLow) {\n lower = newVal;\n upper = !this.upperValueIsValid ? this.max : upper;\n } else {\n lower = !this.lowerValueIsValid ? this.min : lower;\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineValidThumbMovement(\n newVal: ValueMember,\n lower: ValueMember,\n upper: ValueMember,\n e: Event\n ): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (\n Math.abs((lower as number) - (newVal as number)) <\n Math.abs((upper as number) - (newVal as number))\n ) {\n lower = newVal;\n }\n // Upper thumb targeted or left-moving swap has occurred\n else {\n upper = newVal;\n }\n\n this._handleOnChange(lower, upper, e);\n }\n\n @action\n _determineThumbMovement(newVal: number, e: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(\n newVal,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n }\n\n @action\n _handleOnChange(lower: ValueMember, upper: ValueMember, e: Event): void {\n const isValid =\n isWithinRange(this.min, upper, lower) &&\n isWithinRange(lower, this.max, upper);\n\n this.args.onChange([lower, upper], isValid, e);\n }\n\n @action\n handleSliderChange(e: Event): void {\n this._determineThumbMovement(\n Number((e.currentTarget as HTMLInputElement).value),\n e\n );\n }\n\n @action\n _resetToRangeEnds(e: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(\n this.min,\n this.lowerValue,\n this.upperValue,\n e\n );\n }\n\n @action\n _isDirectionalKeyPress(event: KeyboardEvent): boolean {\n return (\n [\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event.key as keys) > -1\n );\n }\n\n @action\n handleInputKeyDown(e: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e) && !this.isValid) {\n e.preventDefault();\n this._resetToRangeEnds(e);\n }\n }\n\n @action\n handleLowerInputChange(e: Event): void {\n this._handleOnChange(\n (e.target as HTMLInputElement).value,\n this.upperValue,\n e\n );\n }\n\n @action\n handleUpperInputChange(e: Event): void {\n this._handleOnChange(\n this.lowerValue,\n (e.target as HTMLInputElement).value,\n e\n );\n }\n\n @action\n _handleKeyDown(value: ValueMember, event: KeyboardEvent): number {\n let newVal = Number(value);\n let stepRemainder = 0;\n const step = this.args.step || 1;\n\n switch (event.key) {\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event.preventDefault();\n newVal += step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal - stepRemainder;\n }\n\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event.preventDefault();\n newVal -= step;\n stepRemainder = (newVal - this.min) % step;\n\n if (step !== 1 && stepRemainder > 0) {\n newVal = newVal + (step - stepRemainder);\n }\n\n break;\n }\n\n return newVal;\n }\n\n @action\n handleLowerKeyDown(event: KeyboardEvent): void {\n let lower = this.lowerValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n lower = this._handleKeyDown(lower, event);\n }\n\n if (lower >= (this.upperValue as number) || lower < this.min) return;\n this._handleOnChange(lower, this.upperValue, event);\n }\n\n @action\n handleUpperKeyDown(event: KeyboardEvent): void {\n let upper = this.upperValue;\n\n switch (event.key) {\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event.preventDefault();\n this._resetToRangeEnds(event);\n\n return;\n }\n\n upper = this._handleKeyDown(upper, event);\n }\n\n if (upper <= (this.lowerValue as number) || upper > this.max) return;\n this._handleOnChange(this.lowerValue, upper, event);\n }\n\n @action\n calculateThumbPositionStyle(value: number, width?: number): { left: string } {\n // Calculate the left position based on value\n const decimal = (value - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition = decimal <= 1 ? decimal : 1;\n\n valuePosition = valuePosition >= 0 ? valuePosition : 0;\n\n const trackWidth =\n this.args.showInput === 'inputWithPopover' && !!width\n ? width\n : this.rangeSliderRef?.clientWidth;\n\n let thumbToTrackRatio = 0;\n\n if (trackWidth) {\n thumbToTrackRatio = EUI_THUMB_SIZE / trackWidth;\n } else {\n thumbToTrackRatio = EUI_THUMB_SIZE / 1;\n }\n\n const trackPositionScale = (1 - thumbToTrackRatio) * 100;\n\n return { left: `${valuePosition * trackPositionScale}%` };\n }\n\n @action\n setPreventPopoverClose(value: boolean): void {\n this.preventPopoverClose = value;\n }\n\n get calculateLowerValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.lowerValue) || this.min,\n this.rangeWidth\n );\n }\n\n get calculateUpperValueThumbPositionStyle(): { left: string } {\n return this.calculateThumbPositionStyle(\n Number(this.upperValue) || this.max,\n this.rangeWidth\n );\n }\n\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n\n @action\n onThumbFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.hasFocus = true;\n }\n\n @action\n onThumbBlur(e: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.hasFocus = false;\n }\n\n @action\n onInputFocus(e: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: FocusEvent): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n onResize(width?: number): void {\n this.rangeWidth = width;\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiDualRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal","lower","upper","e","lowerHalf","Math","abs","newValIsLow","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","stepRemainder","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width","decimal","valuePosition","trackWidth","showInput","thumbToTrackRatio","EUI_THUMB_SIZE","trackPositionScale","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"} | |
diff --git a/dist/components/eui-field-number.js b/dist/components/eui-field-number.js | |
index 11bfc51f8bdc0b0b61d44cf8998d28d5d33facd5..326e46d1ee11820bcd95994c3d1d72300a6808e1 100644 | |
--- a/dist/components/eui-field-number.js | |
+++ b/dist/components/eui-field-number.js | |
@@ -1,5 +1,5 @@ | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { or, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-field-number.js.map b/dist/components/eui-field-number.js.map | |
index 1557867f2c1659995c733e58b6809cf6a295c507..a8eeec85fff8af9b0d70a0c068bfb3dcb4d310b6 100644 | |
--- a/dist/components/eui-field-number.js.map | |
+++ b/dist/components/eui-field-number.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-field-number.js","sources":["../../src/components/eui-field-number.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { IconType } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport type EuiFieldNumberArgs = CommonArgs & {\n id?: string;\n icon?: IconType;\n isInvalid?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n min?: number | string;\n max?: number | string;\n value?: number | string;\n disabled?: boolean;\n\n /**\n * Specifies the granularity that the value must adhere to.\n * Accepts a `number` or the string `'any'` for no stepping to allow for any value.\n * Defaults to `1`\n */\n step?: number | 'any';\n inputRef?: (ele: Element) => void;\n\n /**\n * Creates an input group with element(s) coming before input.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n\n /**\n * Creates an input group with element(s) coming after input.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n\n /**\n * Completely removes form control layout wrapper and ignores\n * icon, prepend, and append. Best used inside EuiFormControlLayoutDelimited.\n */\n controlOnly?: boolean;\n\n /**\n * when `true` creates a shorter height input\n */\n compressed?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n};\n\nexport interface EuiFieldNumberSignature {\n Element: HTMLInputElement;\n Args: EuiFieldNumberArgs;\n Blocks: {\n default: [string];\n prepend: [string];\n append: [string];\n };\n}\n\nconst EuiFieldNumber: TemplateOnlyComponent<EuiFieldNumberSignature> =\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldNumber--withIcon\")\n (if @fullWidth \"euiFieldNumber--fullWidth\")\n (if @compressed \"euiFieldNumber--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldNumber--inGroup\")\n (if @isLoading \"euiFieldNumber--isLoading\")\n \"euiFieldNumber\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{@id}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldNumber;\n"],"names":["EuiFieldNumber","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AA2EA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAmEA,qkDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-field-number.js","sources":["../../src/components/eui-field-number.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { IconType } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport type EuiFieldNumberArgs = CommonArgs & {\n id?: string;\n icon?: IconType;\n isInvalid?: boolean;\n fullWidth?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n min?: number | string;\n max?: number | string;\n value?: number | string;\n disabled?: boolean;\n\n /**\n * Specifies the granularity that the value must adhere to.\n * Accepts a `number` or the string `'any'` for no stepping to allow for any value.\n * Defaults to `1`\n */\n step?: number | 'any';\n inputRef?: (ele: Element) => void;\n\n /**\n * Creates an input group with element(s) coming before input.\n * `string` | `Component` or an array of these\n */\n prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n\n /**\n * Creates an input group with element(s) coming after input.\n * `string` | `Component` or an array of these\n */\n append?: EuiFormControlLayoutSignature['Blocks']['append'];\n\n /**\n * Completely removes form control layout wrapper and ignores\n * icon, prepend, and append. Best used inside EuiFormControlLayoutDelimited.\n */\n controlOnly?: boolean;\n\n /**\n * when `true` creates a shorter height input\n */\n compressed?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n};\n\nexport interface EuiFieldNumberSignature {\n Element: HTMLInputElement;\n Args: EuiFieldNumberArgs;\n Blocks: {\n default: [string];\n prepend: [string];\n append: [string];\n };\n}\n\nconst EuiFieldNumber: TemplateOnlyComponent<EuiFieldNumberSignature> =\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldNumber--withIcon\")\n (if @fullWidth \"euiFieldNumber--fullWidth\")\n (if @compressed \"euiFieldNumber--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldNumber--inGroup\")\n (if @isLoading \"euiFieldNumber--isLoading\")\n \"euiFieldNumber\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{@id}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n value={{@value}}\n min={{@min}}\n max={{@max}}\n disabled={{@disabled}}\n step={{@step}}\n type=\"number\"\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldNumber;\n"],"names":["EuiFieldNumber","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AA2EA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAmEA,qkDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-field-password.js b/dist/components/eui-field-password.js | |
index 42175960ffdc50db4d1a4fa3466c625fc467e4a0..cd196465c3bfbce77bb2fe475409e9a9494ab09b 100644 | |
--- a/dist/components/eui-field-password.js | |
+++ b/dist/components/eui-field-password.js | |
@@ -1,7 +1,7 @@ | |
import { fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { or, eq, not, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-field-password.js.map b/dist/components/eui-field-password.js.map | |
index f755752a27344e8523d71c0320bf3c0fa029e90e..dac8b26cbe7578bad7d13e31672aef378e3dad5d 100644 | |
--- a/dist/components/eui-field-password.js.map | |
+++ b/dist/components/eui-field-password.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-field-password.js","sources":["../../src/components/eui-field-password.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldPasswordSignature {\n Element: HTMLInputElement;\n Args: {\n value?: string;\n id?: string;\n type?: 'dual' | 'text' | 'password';\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n inputRef?: (element: HTMLInputElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n placeholder?: string;\n };\n Blocks: {\n prepend: [unknown, string];\n append: [unknown, string];\n };\n}\n\nconst EuiFieldPassword: TemplateOnlyComponent<EuiFieldPasswordSignature> =\n <template>\n {{#let\n (argOrDefault @type \"dual\")\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |type hasPrepend hasAppend inputId|\n }}\n {{#let\n (useState (if (eq type \"dual\") \"password\" type))\n as |inputTypeState|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiFieldPassword--fullWidth\")\n (if @compressed \"euiFieldPassword--compressed\")\n (if\n (or hasPrepend hasAppend (eq type \"dual\"))\n \"euiFieldPassword--inGroup\"\n )\n (if @isLoading \"euiFieldPassword--isLoading\")\n (if (eq type \"dual\") \"euiFieldPassword--withToggle\")\n \"euiFieldPassword\"\n )\n as |classes|\n }}\n {{#let (eq inputTypeState.value \"text\") as |isVisible|}}\n <EuiFormControlLayout\n @icon=\"lock\"\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend (or hasAppend (eq type \"dual\"))}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n type={{inputTypeState.value}}\n value={{@value}}\n disabled={{@disabled}}\n placeholder={{@placeholder}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n {{#if (eq type \"dual\")}}\n <EuiButtonIcon\n tabindex=\"-1\"\n @iconType={{if isVisible \"eyeClosed\" \"eye\"}}\n {{on\n \"click\"\n (fn\n inputTypeState.setState (if isVisible \"password\" \"text\")\n )\n }}\n />\n {{/if}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldPassword;\n"],"names":["EuiFieldPassword","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","not","randomId","useState","eq","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","EuiButtonIcon","on","fn","templateOnly"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyEA,s6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,EAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;IAAAC,aAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-field-password.js","sources":["../../src/components/eui-field-password.gts"],"sourcesContent":["import { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldPasswordSignature {\n Element: HTMLInputElement;\n Args: {\n value?: string;\n id?: string;\n type?: 'dual' | 'text' | 'password';\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n clear?: EuiFormControlLayoutSignature['Args']['clear'];\n inputRef?: (element: HTMLInputElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n placeholder?: string;\n };\n Blocks: {\n prepend: [unknown, string];\n append: [unknown, string];\n };\n}\n\nconst EuiFieldPassword: TemplateOnlyComponent<EuiFieldPasswordSignature> =\n <template>\n {{#let\n (argOrDefault @type \"dual\")\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |type hasPrepend hasAppend inputId|\n }}\n {{#let\n (useState (if (eq type \"dual\") \"password\" type))\n as |inputTypeState|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiFieldPassword--fullWidth\")\n (if @compressed \"euiFieldPassword--compressed\")\n (if\n (or hasPrepend hasAppend (eq type \"dual\"))\n \"euiFieldPassword--inGroup\"\n )\n (if @isLoading \"euiFieldPassword--isLoading\")\n (if (eq type \"dual\") \"euiFieldPassword--withToggle\")\n \"euiFieldPassword\"\n )\n as |classes|\n }}\n {{#let (eq inputTypeState.value \"text\") as |isVisible|}}\n <EuiFormControlLayout\n @icon=\"lock\"\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend (or hasAppend (eq type \"dual\"))}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n class={{classes}}\n type={{inputTypeState.value}}\n value={{@value}}\n disabled={{@disabled}}\n placeholder={{@placeholder}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n {{#if (eq type \"dual\")}}\n <EuiButtonIcon\n tabindex=\"-1\"\n @iconType={{if isVisible \"eyeClosed\" \"eye\"}}\n {{on\n \"click\"\n (fn\n inputTypeState.setState (if isVisible \"password\" \"text\")\n )\n }}\n />\n {{/if}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n {{/let}}\n {{/let}}\n </template>;\n\nexport default EuiFieldPassword;\n"],"names":["EuiFieldPassword","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","and","not","randomId","useState","eq","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","EuiButtonIcon","on","fn","templateOnly"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyEA,s6DAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,EAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;IAAAC,aAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-field-text.js b/dist/components/eui-field-text.js | |
index 6218d8dd035bc39a99c3024643d21f89a0ae2752..90bf3b7072d35ceb3e2bd1595576e15ea22b0414 100644 | |
--- a/dist/components/eui-field-text.js | |
+++ b/dist/components/eui-field-text.js | |
@@ -1,5 +1,5 @@ | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { or, not, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-field-text.js.map b/dist/components/eui-field-text.js.map | |
index 9c8488ae260bcd38527d7eee40cb93657dfefc00..2b0d4f928f25b64c639d2a4de0db62b73d530435 100644 | |
--- a/dist/components/eui-field-text.js.map | |
+++ b/dist/components/eui-field-text.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-field-text.js","sources":["../../src/components/eui-field-text.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldTextSignature {\n Element: HTMLInputElement;\n Args: {\n id?: string;\n value?: string;\n placeholder?: string;\n icon?: EuiFormControlLayoutSignature['Args']['icon'];\n fullWidth?: boolean;\n isLoading?: boolean;\n compressed?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n clear?: () => void;\n controlOnly?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiFieldText: TemplateOnlyComponent<EuiFieldTextSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldText--withIcon\")\n (if @fullWidth \"euiFieldText--fullWidth\")\n (if @compressed \"euiFieldText--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldText--inGroup\")\n (if @isLoading \"euiFieldText--isLoading\")\n \"euiFieldText\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n readonly={{@readOnly}}\n ...attributes\n {{validatableControl @isInvalid}}\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiFieldText;\n"],"names":["EuiFieldText","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AAuCA,MAAMA,YAA6D,GAAAC,oBAAA,CAAAC,kBAAA,CAgEnE,gjDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-field-text.js","sources":["../../src/components/eui-field-text.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\n\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiFieldTextSignature {\n Element: HTMLInputElement;\n Args: {\n id?: string;\n value?: string;\n placeholder?: string;\n icon?: EuiFormControlLayoutSignature['Args']['icon'];\n fullWidth?: boolean;\n isLoading?: boolean;\n compressed?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n clear?: () => void;\n controlOnly?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiFieldText: TemplateOnlyComponent<EuiFieldTextSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @icon \"euiFieldText--withIcon\")\n (if @fullWidth \"euiFieldText--fullWidth\")\n (if @compressed \"euiFieldText--compressed\")\n (if (or hasPrepend hasAppend) \"euiFieldText--inGroup\")\n (if @isLoading \"euiFieldText--isLoading\")\n \"euiFieldText\"\n )\n as |classes|\n }}\n {{#if @controlOnly}}\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n />\n {{else}}\n <EuiFormControlLayout\n @icon={{@icon}}\n @clear={{@clear}}\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <input\n id={{inputId}}\n value={{@value}}\n class={{classes}}\n disabled={{@disabled}}\n type=\"text\"\n placeholder={{@placeholder}}\n readonly={{@readOnly}}\n ...attributes\n {{validatableControl @isInvalid}}\n />\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/if}}\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiFieldText;\n"],"names":["EuiFieldText","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","validatableControl","didInsert","optional","EuiFormControlLayout","templateOnly"],"mappings":";;;;;;;;;;;;AAuCA,MAAMA,YAA6D,GAAAC,oBAAA,CAAAC,kBAAA,CAgEnE,gjDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-global-toast-list.js b/dist/components/eui-global-toast-list.js | |
index 067db2d3db3fd5765c8f73fac84b586c224682cf..2459744449386d00e90709ad0bf906d7aa06b219 100644 | |
--- a/dist/components/eui-global-toast-list.js | |
+++ b/dist/components/eui-global-toast-list.js | |
@@ -5,8 +5,8 @@ import { on } from '@ember/modifier'; | |
import { action } from '@ember/object'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import { inject } from '@ember/service'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
-import queue from 'ember-composable-helpers/helpers/queue'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
import classNames from '../helpers/class-names.js'; | |
import Timer from '../utils/timer.js'; | |
diff --git a/dist/components/eui-global-toast-list.js.map b/dist/components/eui-global-toast-list.js.map | |
index f3a9f059900af703fe45a8628c92d7327edb4651..14718fa6e194518f5cbdb892126591662e2c7047 100644 | |
--- a/dist/components/eui-global-toast-list.js.map | |
+++ b/dist/components/eui-global-toast-list.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-global-toast-list.js","sources":["../../src/components/eui-global-toast-list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { inject as service } from '@ember/service';\nimport type Owner from '@ember/owner';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport queue from 'ember-composable-helpers/helpers/queue';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport Timer from '../utils/timer.ts';\nimport EuiToast from './eui-toast.gts';\n\nimport type EuiToasterService from '../services/eui-toaster';\nimport type {\n EuiToastProps,\n EuiToastPropsWithId\n} from '../services/eui-toaster';\nimport type { sideMapping } from '../utils/css-mappings/eui-global-toast-list.ts';\n\ntype EuiToastSide = keyof typeof sideMapping;\n\ntype GlobalToastListArgs = {\n dismissToast?: (this: EuiGlobalToastList, toast: EuiToastProps) => void;\n toastLifeTimeMs: number;\n\n /*\n Determines which side of the browser window the toasts should appear\n Default: 'right'\n\n */\n side?: EuiToastSide;\n};\n\nconst TOAST_FADE_OUT_MS = 250;\n\nexport interface EuiGlobalToastListItemSignature {\n Element: HTMLDivElement;\n Args: GlobalToastListArgs;\n}\n\nexport default class EuiGlobalToastList extends Component<EuiGlobalToastListItemSignature> {\n @service declare euiToaster: EuiToasterService;\n\n dismissTimeoutIds: number[] = [];\n toastIdToTimerMap: { [toastId: string]: Timer } = {};\n\n isScrollingToBottom = false;\n isScrolledToBottom = true;\n isUserInteracting = false;\n\n // See [Return Value](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#Return_value)\n // for information on initial value of 0\n isScrollingAnimationFrame = 0;\n startScrollingAnimationFrame = 0;\n\n listElement: Element | null = null;\n @tracked toastIdToDismissedMap: {\n [toastId: string]: boolean;\n } = {};\n\n startScrollingToBottom(): void {\n this.isScrollingToBottom = true;\n\n const scrollToBottom = () => {\n // Although we cancel the requestAnimationFrame in componentWillUnmount,\n // it's possible for this.listElement to become null in the meantime\n if (!this.listElement) {\n return;\n }\n\n const position = this.listElement.scrollTop;\n const destination =\n this.listElement.scrollHeight - this.listElement.clientHeight;\n const distanceToDestination = destination - position;\n\n if (distanceToDestination < 5) {\n this.listElement.scrollTop = destination;\n this.isScrollingToBottom = false;\n this.isScrolledToBottom = true;\n\n return;\n }\n\n this.listElement.scrollTop = position + distanceToDestination * 0.25;\n\n if (this.isScrollingToBottom) {\n this.isScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n };\n\n this.startScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n\n @action\n didInsertToast(toast: EuiToastPropsWithId): void {\n this.scheduleToastForDismissal(toast);\n\n if (!this.isUserInteracting) {\n // If the user has scrolled up the toast list then we don't want to annoy them by scrolling\n // all the way back to the bottom.\n if (this.isScrolledToBottom) {\n this.startScrollingToBottom();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n // Stop scrolling to bottom if we're in mid-scroll, because the user wants to interact with\n // the list.\n this.isScrollingToBottom = false;\n this.isUserInteracting = true;\n\n // Don't let toasts dismiss themselves while the user is interacting with them.\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.pause();\n }\n }\n }\n\n @action\n onMouseLeave(): void {\n this.isUserInteracting = false;\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.resume();\n }\n }\n }\n\n @action\n onScroll(): void {\n if (this.listElement) {\n this.isScrolledToBottom =\n this.listElement.scrollHeight - this.listElement.scrollTop ===\n this.listElement.clientHeight;\n }\n }\n\n scheduleAllToastsForDismissal(): void {\n this.euiToaster.toasts.forEach((toast) => {\n if (!this.toastIdToTimerMap[toast.id]) {\n this.scheduleToastForDismissal(toast);\n }\n });\n }\n\n @action\n scheduleToastForDismissal(toast: EuiToastPropsWithId): void {\n // Start fading the toast out once its lifetime elapses.\n this.toastIdToTimerMap[toast.id] = new Timer(\n this.dismissToast.bind(this, toast),\n toast.toastLifeTimeMs != null\n ? toast.toastLifeTimeMs\n : this.args.toastLifeTimeMs\n );\n }\n\n @action\n dismissToast(toast: EuiToastPropsWithId): void {\n // Remove the toast after it's done fading out.\n this.dismissTimeoutIds.push(\n window.setTimeout(() => {\n // Because this is wrapped in a setTimeout, and because React does not guarantee when\n // state updates happen, it is possible to double-dismiss a toast\n // including by double-clicking the \"x\" button on the toast\n // so, first check to make sure we haven't already dismissed this toast\n if (this.toastIdToTimerMap.hasOwnProperty(toast.id)) {\n if (this.args.dismissToast) {\n this.args.dismissToast.apply(this, [toast]);\n }\n\n this.toastIdToTimerMap[toast.id]!.clear();\n delete this.toastIdToTimerMap[toast.id];\n\n delete this.toastIdToDismissedMap[toast.id];\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap\n };\n this.euiToaster.remove(toast);\n }\n }, TOAST_FADE_OUT_MS)\n );\n\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap,\n [toast.id]: true\n };\n }\n\n constructor(owner: Owner, args: GlobalToastListArgs) {\n super(owner, args);\n this.scheduleAllToastsForDismissal();\n }\n\n @action\n didInsert(element: Element): void {\n this.listElement = element;\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.isScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.isScrollingAnimationFrame);\n }\n\n if (this.startScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.startScrollingAnimationFrame);\n }\n\n this.dismissTimeoutIds.forEach(clearTimeout);\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.clear();\n }\n }\n }\n\n <template>\n <div\n aria-live=\"polite\"\n role=\"region\"\n class={{classNames\n componentName=\"EuiGlobalToastList\"\n side=(argOrDefault @side \"right\")\n }}\n style={{unless this.euiToaster.toasts.length \"padding:0px;\"}}\n {{didInsert this.didInsert}}\n {{on \"scroll\" this.onScroll}}\n {{on \"mouseenter\" this.onMouseEnter}}\n {{on \"mouseleave\" this.onMouseLeave}}\n ...attributes\n >\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast\n class={{classNames\n \"euiGlobalToastListItem\"\n (if\n (get this.toastIdToDismissedMap toast.id)\n \"euiGlobalToastListItem-isDismissed\"\n )\n }}\n @title={{toast.title}}\n @useMarkdownFormat={{toast.useMarkdownFormat}}\n @body={{toast.body}}\n @color={{toast.color}}\n @iconType={{toast.iconType}}\n @onClose={{queue\n (fn this.dismissToast toast)\n (optional toast.onClose)\n }}\n {{didInsert (fn this.didInsertToast toast)}}\n {{on \"focus\" this.onMouseEnter}}\n {{on \"blur\" this.onMouseLeave}}\n />\n {{/each}}\n </div>\n </template>\n}\n"],"names":["TOAST_FADE_OUT_MS","EuiGlobalToastList","Component","g","prototype","service","i","void 0","dismissTimeoutIds","toastIdToTimerMap","isScrollingToBottom","isScrolledToBottom","isUserInteracting","isScrollingAnimationFrame","startScrollingAnimationFrame","listElement","tracked","startScrollingToBottom","scrollToBottom","position","scrollTop","destination","scrollHeight","clientHeight","distanceToDestination","window","requestAnimationFrame","didInsertToast","toast","scheduleToastForDismissal","n","action","onMouseEnter","toastId","hasOwnProperty","timer","pause","onMouseLeave","resume","onScroll","scheduleAllToastsForDismissal","euiToaster","toasts","forEach","id","Timer","dismissToast","bind","toastLifeTimeMs","args","push","setTimeout","apply","clear","toastIdToDismissedMap","remove","constructor","owner","didInsert","element","willDestroy","cancelAnimationFrame","clearTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","on","EuiToast","get","queue","fn","optional"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-global-toast-list.js","sources":["../../src/components/eui-global-toast-list.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { inject as service } from '@ember/service';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport Timer from '../utils/timer.ts';\nimport EuiToast from './eui-toast.gts';\n\nimport type EuiToasterService from '../services/eui-toaster';\nimport type {\n EuiToastProps,\n EuiToastPropsWithId\n} from '../services/eui-toaster';\nimport type { sideMapping } from '../utils/css-mappings/eui-global-toast-list.ts';\n\ntype EuiToastSide = keyof typeof sideMapping;\n\ntype GlobalToastListArgs = {\n dismissToast?: (this: EuiGlobalToastList, toast: EuiToastProps) => void;\n toastLifeTimeMs: number;\n\n /*\n Determines which side of the browser window the toasts should appear\n Default: 'right'\n\n */\n side?: EuiToastSide;\n};\n\nconst TOAST_FADE_OUT_MS = 250;\n\nexport interface EuiGlobalToastListItemSignature {\n Element: HTMLDivElement;\n Args: GlobalToastListArgs;\n}\n\nexport default class EuiGlobalToastList extends Component<EuiGlobalToastListItemSignature> {\n @service declare euiToaster: EuiToasterService;\n\n dismissTimeoutIds: number[] = [];\n toastIdToTimerMap: { [toastId: string]: Timer } = {};\n\n isScrollingToBottom = false;\n isScrolledToBottom = true;\n isUserInteracting = false;\n\n // See [Return Value](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#Return_value)\n // for information on initial value of 0\n isScrollingAnimationFrame = 0;\n startScrollingAnimationFrame = 0;\n\n listElement: Element | null = null;\n @tracked toastIdToDismissedMap: {\n [toastId: string]: boolean;\n } = {};\n\n startScrollingToBottom(): void {\n this.isScrollingToBottom = true;\n\n const scrollToBottom = () => {\n // Although we cancel the requestAnimationFrame in componentWillUnmount,\n // it's possible for this.listElement to become null in the meantime\n if (!this.listElement) {\n return;\n }\n\n const position = this.listElement.scrollTop;\n const destination =\n this.listElement.scrollHeight - this.listElement.clientHeight;\n const distanceToDestination = destination - position;\n\n if (distanceToDestination < 5) {\n this.listElement.scrollTop = destination;\n this.isScrollingToBottom = false;\n this.isScrolledToBottom = true;\n\n return;\n }\n\n this.listElement.scrollTop = position + distanceToDestination * 0.25;\n\n if (this.isScrollingToBottom) {\n this.isScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n };\n\n this.startScrollingAnimationFrame =\n window.requestAnimationFrame(scrollToBottom);\n }\n\n @action\n didInsertToast(toast: EuiToastPropsWithId): void {\n this.scheduleToastForDismissal(toast);\n\n if (!this.isUserInteracting) {\n // If the user has scrolled up the toast list then we don't want to annoy them by scrolling\n // all the way back to the bottom.\n if (this.isScrolledToBottom) {\n this.startScrollingToBottom();\n }\n }\n }\n\n @action\n onMouseEnter(): void {\n // Stop scrolling to bottom if we're in mid-scroll, because the user wants to interact with\n // the list.\n this.isScrollingToBottom = false;\n this.isUserInteracting = true;\n\n // Don't let toasts dismiss themselves while the user is interacting with them.\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.pause();\n }\n }\n }\n\n @action\n onMouseLeave(): void {\n this.isUserInteracting = false;\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.resume();\n }\n }\n }\n\n @action\n onScroll(): void {\n if (this.listElement) {\n this.isScrolledToBottom =\n this.listElement.scrollHeight - this.listElement.scrollTop ===\n this.listElement.clientHeight;\n }\n }\n\n scheduleAllToastsForDismissal(): void {\n this.euiToaster.toasts.forEach((toast) => {\n if (!this.toastIdToTimerMap[toast.id]) {\n this.scheduleToastForDismissal(toast);\n }\n });\n }\n\n @action\n scheduleToastForDismissal(toast: EuiToastPropsWithId): void {\n // Start fading the toast out once its lifetime elapses.\n this.toastIdToTimerMap[toast.id] = new Timer(\n this.dismissToast.bind(this, toast),\n toast.toastLifeTimeMs != null\n ? toast.toastLifeTimeMs\n : this.args.toastLifeTimeMs\n );\n }\n\n @action\n dismissToast(toast: EuiToastPropsWithId): void {\n // Remove the toast after it's done fading out.\n this.dismissTimeoutIds.push(\n window.setTimeout(() => {\n // Because this is wrapped in a setTimeout, and because React does not guarantee when\n // state updates happen, it is possible to double-dismiss a toast\n // including by double-clicking the \"x\" button on the toast\n // so, first check to make sure we haven't already dismissed this toast\n if (this.toastIdToTimerMap.hasOwnProperty(toast.id)) {\n if (this.args.dismissToast) {\n this.args.dismissToast.apply(this, [toast]);\n }\n\n this.toastIdToTimerMap[toast.id]!.clear();\n delete this.toastIdToTimerMap[toast.id];\n\n delete this.toastIdToDismissedMap[toast.id];\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap\n };\n this.euiToaster.remove(toast);\n }\n }, TOAST_FADE_OUT_MS)\n );\n\n this.toastIdToDismissedMap = {\n ...this.toastIdToDismissedMap,\n [toast.id]: true\n };\n }\n\n constructor(owner: Owner, args: GlobalToastListArgs) {\n super(owner, args);\n this.scheduleAllToastsForDismissal();\n }\n\n @action\n didInsert(element: Element): void {\n this.listElement = element;\n }\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.isScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.isScrollingAnimationFrame);\n }\n\n if (this.startScrollingAnimationFrame !== 0) {\n window.cancelAnimationFrame(this.startScrollingAnimationFrame);\n }\n\n this.dismissTimeoutIds.forEach(clearTimeout);\n\n for (const toastId in this.toastIdToTimerMap) {\n if (this.toastIdToTimerMap.hasOwnProperty(toastId)) {\n const timer = this.toastIdToTimerMap[toastId];\n\n timer?.clear();\n }\n }\n }\n\n <template>\n <div\n aria-live=\"polite\"\n role=\"region\"\n class={{classNames\n componentName=\"EuiGlobalToastList\"\n side=(argOrDefault @side \"right\")\n }}\n style={{unless this.euiToaster.toasts.length \"padding:0px;\"}}\n {{didInsert this.didInsert}}\n {{on \"scroll\" this.onScroll}}\n {{on \"mouseenter\" this.onMouseEnter}}\n {{on \"mouseleave\" this.onMouseLeave}}\n ...attributes\n >\n {{#each this.euiToaster.toasts as |toast|}}\n <EuiToast\n class={{classNames\n \"euiGlobalToastListItem\"\n (if\n (get this.toastIdToDismissedMap toast.id)\n \"euiGlobalToastListItem-isDismissed\"\n )\n }}\n @title={{toast.title}}\n @useMarkdownFormat={{toast.useMarkdownFormat}}\n @body={{toast.body}}\n @color={{toast.color}}\n @iconType={{toast.iconType}}\n @onClose={{queue\n (fn this.dismissToast toast)\n (optional toast.onClose)\n }}\n {{didInsert (fn this.didInsertToast toast)}}\n {{on \"focus\" this.onMouseEnter}}\n {{on \"blur\" this.onMouseLeave}}\n />\n {{/each}}\n </div>\n </template>\n}\n"],"names":["TOAST_FADE_OUT_MS","EuiGlobalToastList","Component","g","prototype","service","i","void 0","dismissTimeoutIds","toastIdToTimerMap","isScrollingToBottom","isScrolledToBottom","isUserInteracting","isScrollingAnimationFrame","startScrollingAnimationFrame","listElement","tracked","startScrollingToBottom","scrollToBottom","position","scrollTop","destination","scrollHeight","clientHeight","distanceToDestination","window","requestAnimationFrame","didInsertToast","toast","scheduleToastForDismissal","n","action","onMouseEnter","toastId","hasOwnProperty","timer","pause","onMouseLeave","resume","onScroll","scheduleAllToastsForDismissal","euiToaster","toasts","forEach","id","Timer","dismissToast","bind","toastLifeTimeMs","args","push","setTimeout","apply","clear","toastIdToDismissedMap","remove","constructor","owner","didInsert","element","willDestroy","cancelAnimationFrame","clearTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","on","EuiToast","get","queue","fn","optional"],"mappings":"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"} | |
diff --git a/dist/components/eui-header-section-item-button.js b/dist/components/eui-header-section-item-button.js | |
index 91fd0f29c8724f4400376928bac322d511d4a9b4..f29ce59bb278a124d9a5f944d0f1260d6482eace 100644 | |
--- a/dist/components/eui-header-section-item-button.js | |
+++ b/dist/components/eui-header-section-item-button.js | |
@@ -2,7 +2,7 @@ import Component from '@glimmer/component'; | |
import { tracked } from '@glimmer/tracking'; | |
import { on } from '@ember/modifier'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { eq } from 'ember-truth-helpers'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
import EuiButtonEmpty from './eui-button-empty.js'; | |
diff --git a/dist/components/eui-header-section-item-button.js.map b/dist/components/eui-header-section-item-button.js.map | |
index aad41838bd8edf587d1f4dde1c1631ad7f8fc6aa..bd15b2702eaadd2b8926c80b88c9d17aef319823 100644 | |
--- a/dist/components/eui-header-section-item-button.js.map | |
+++ b/dist/components/eui-header-section-item-button.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-header-section-item-button.js","sources":["../../src/components/eui-header-section-item-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiHideFor from './eui-hide-for.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiNotificationBadge from './eui-notification-badge.gts';\nimport EuiShowFor from './eui-show-for.gts';\n\nimport type {\n colorMapping,\n} from '../utils/css-mappings/eui-notification-badge.ts';\nimport type { EuiHideForBreakpoints } from './eui-hide-for';\n\nconst keyframes: Keyframe[] = [\n { transform: 'rotate(0)', offset: 0, easing: 'ease-in-out' },\n {\n transform: 'rotate(30deg)',\n offset: 0.01,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.03,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(34deg)',\n offset: 0.05,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-32deg)',\n offset: 0.07,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(30deg)',\n offset: 0.09,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.11,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(26deg)',\n offset: 0.13,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-24deg)',\n offset: 0.15,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(22deg)',\n offset: 0.17,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-20deg)',\n offset: 0.19,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(18deg)',\n offset: 0.21,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-16deg)',\n offset: 0.23,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(14deg)',\n offset: 0.25,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-12deg)',\n offset: 0.27,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(10deg)',\n offset: 0.29,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-8deg)',\n offset: 0.31,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(6deg)',\n offset: 0.33,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-4deg)',\n offset: 0.35,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(2deg)',\n offset: 0.37,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-1deg)',\n offset: 0.39,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(1deg)',\n offset: 0.41,\n easing: 'ease-in-out'\n },\n { transform: 'rotate(0)', offset: 0.43, easing: 'ease-in-out' },\n { transform: 'rotate(0)', offset: 1, easing: 'ease-in-out' }\n];\n\nexport interface EuiHeaderSectionItemButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement;\n Args: {\n ref?: (api: { euiAnimate: () => void }) => void;\n disabled?: boolean;\n href?: string;\n onClick?: (event: MouseEvent) => void;\n notification?: boolean | number;\n notificationColor?: keyof typeof colorMapping;\n };\n Blocks: { default: [] };\n}\n\nconst sizes: EuiHideForBreakpoints[] = ['xs'];\n\nexport default class EuiHeaderSectionItemButtonComponent extends Component<EuiHeaderSectionItemButtonSignature> {\n @tracked buttonRef: HTMLButtonElement | HTMLAnchorElement | undefined;\n @tracked animationTargetRef: HTMLSpanElement | undefined;\n\n setAnimationTargetRef = (ele: HTMLSpanElement) => {\n this.animationTargetRef = ele;\n this.args.ref?.({ euiAnimate: this.animate });\n };\n\n animate = () => {\n this.animationTargetRef?.animate(keyframes, { duration: 5000 });\n };\n\n setButtonRef = (ele: HTMLButtonElement | HTMLAnchorElement) => {\n this.buttonRef = ele;\n };\n\n <template>\n <EuiButtonEmpty\n class=\"euiHeaderSectionItemButton\"\n @isDisabled={{@disabled}}\n @href={{@href}}\n @color=\"text\"\n {{didInsert this.setButtonRef}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n <span\n {{didInsert this.setAnimationTargetRef}}\n class=\"euiHeaderSectionItemButton__content\"\n >\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge\n class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n >\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["keyframes","transform","offset","easing","sizes","EuiHeaderSectionItemButtonComponent","Component","g","prototype","tracked","i","void 0","setAnimationTargetRef","ele","animationTargetRef","args","ref","euiAnimate","animate","duration","setButtonRef","buttonRef","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","didInsert","on","optional","eq","EuiIcon","argOrDefault","EuiHideFor","EuiNotificationBadge","EuiShowFor"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-header-section-item-button.js","sources":["../../src/components/eui-header-section-item-button.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport EuiButtonEmpty from './eui-button-empty.gts';\nimport EuiHideFor from './eui-hide-for.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiNotificationBadge from './eui-notification-badge.gts';\nimport EuiShowFor from './eui-show-for.gts';\n\nimport type {\n colorMapping,\n} from '../utils/css-mappings/eui-notification-badge.ts';\nimport type { EuiHideForBreakpoints } from './eui-hide-for';\n\nconst keyframes: Keyframe[] = [\n { transform: 'rotate(0)', offset: 0, easing: 'ease-in-out' },\n {\n transform: 'rotate(30deg)',\n offset: 0.01,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.03,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(34deg)',\n offset: 0.05,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-32deg)',\n offset: 0.07,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(30deg)',\n offset: 0.09,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-28deg)',\n offset: 0.11,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(26deg)',\n offset: 0.13,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-24deg)',\n offset: 0.15,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(22deg)',\n offset: 0.17,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-20deg)',\n offset: 0.19,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(18deg)',\n offset: 0.21,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-16deg)',\n offset: 0.23,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(14deg)',\n offset: 0.25,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-12deg)',\n offset: 0.27,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(10deg)',\n offset: 0.29,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-8deg)',\n offset: 0.31,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(6deg)',\n offset: 0.33,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-4deg)',\n offset: 0.35,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(2deg)',\n offset: 0.37,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(-1deg)',\n offset: 0.39,\n easing: 'ease-in-out'\n },\n {\n transform: 'rotate(1deg)',\n offset: 0.41,\n easing: 'ease-in-out'\n },\n { transform: 'rotate(0)', offset: 0.43, easing: 'ease-in-out' },\n { transform: 'rotate(0)', offset: 1, easing: 'ease-in-out' }\n];\n\nexport interface EuiHeaderSectionItemButtonSignature {\n Element: HTMLButtonElement | HTMLAnchorElement;\n Args: {\n ref?: (api: { euiAnimate: () => void }) => void;\n disabled?: boolean;\n href?: string;\n onClick?: (event: MouseEvent) => void;\n notification?: boolean | number;\n notificationColor?: keyof typeof colorMapping;\n };\n Blocks: { default: [] };\n}\n\nconst sizes: EuiHideForBreakpoints[] = ['xs'];\n\nexport default class EuiHeaderSectionItemButtonComponent extends Component<EuiHeaderSectionItemButtonSignature> {\n @tracked buttonRef: HTMLButtonElement | HTMLAnchorElement | undefined;\n @tracked animationTargetRef: HTMLSpanElement | undefined;\n\n setAnimationTargetRef = (ele: HTMLSpanElement) => {\n this.animationTargetRef = ele;\n this.args.ref?.({ euiAnimate: this.animate });\n };\n\n animate = () => {\n this.animationTargetRef?.animate(keyframes, { duration: 5000 });\n };\n\n setButtonRef = (ele: HTMLButtonElement | HTMLAnchorElement) => {\n this.buttonRef = ele;\n };\n\n <template>\n <EuiButtonEmpty\n class=\"euiHeaderSectionItemButton\"\n @isDisabled={{@disabled}}\n @href={{@href}}\n @color=\"text\"\n {{didInsert this.setButtonRef}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n <span\n {{didInsert this.setAnimationTargetRef}}\n class=\"euiHeaderSectionItemButton__content\"\n >\n {{yield}}\n </span>\n {{#if @notification}}\n {{#if (eq @notification true)}}\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n {{else if @notification}}\n <EuiHideFor @sizes={{sizes}}>\n <EuiNotificationBadge\n class=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--badge\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n >\n {{@notification}}\n </EuiNotificationBadge>\n </EuiHideFor>\n <EuiShowFor @sizes={{sizes}}>\n <EuiIcon\n @iconClasses=\"euiHeaderSectionItemButton__notification euiHeaderSectionItemButton__notification--dot\"\n @color={{argOrDefault @notificationColor \"accent\"}}\n @type=\"dot\"\n @size=\"l\"\n />\n </EuiShowFor>\n {{/if}}\n {{/if}}\n </EuiButtonEmpty>\n </template>\n}\n"],"names":["keyframes","transform","offset","easing","sizes","EuiHeaderSectionItemButtonComponent","Component","g","prototype","tracked","i","void 0","setAnimationTargetRef","ele","animationTargetRef","args","ref","euiAnimate","animate","duration","setButtonRef","buttonRef","setComponentTemplate","precompileTemplate","strictMode","scope","EuiButtonEmpty","didInsert","on","optional","eq","EuiIcon","argOrDefault","EuiHideFor","EuiNotificationBadge","EuiShowFor"],"mappings":"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"} | |
diff --git a/dist/components/eui-list-group-item.js b/dist/components/eui-list-group-item.js | |
index 03f46fab6b22bb2a8e9bc5f98635b1adabc16dd0..9a184991208ca402fd6c09f0bbf5c947c2524a4e 100644 | |
--- a/dist/components/eui-list-group-item.js | |
+++ b/dist/components/eui-list-group-item.js | |
@@ -1,7 +1,6 @@ | |
import { on } from '@ember/modifier'; | |
import { EnsureSafeComponentHelper } from '@embroider/util'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
-import 'ember-composable-helpers/helpers/queue'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import 'ember-element-helper'; | |
import 'ember-set-helper/helpers/set'; | |
import { eq, not, and, or } from 'ember-truth-helpers'; | |
@@ -12,21 +11,27 @@ import { precompileTemplate } from '@ember/template-compilation'; | |
import { setComponentTemplate } from '@ember/component'; | |
import templateOnly from '@ember/component/template-only'; | |
-const EuiListGroupItem = setComponentTemplate(precompileTemplate("\n <li class={{classNames (if (or @href @onClick) \"euiListGroupItem-isClickable\") (if @isActive \"euiListGroupItem-isActive\") (if @isDisabled \"euiListGroupItem-isDisabled\") (if @wrapText \"euiListGroupItem-wrapText\") componentName=\"EuiListGroupItem\" size=(argOrDefault @size \"m\") color=(argOrDefault @color \"inherit\")}}>\n {{#if (and @href (not @isDisabled))}}\n <a class=\"euiListGroupItem__button\" href={{@href}} target={{@target}} {{on \"click\" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses=\"euiListGroupItem__icon\" @type={{@iconType}} />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button class=\"euiListGroupItem__button\" type=\"button\" disabled={{eq @isDisabled true}} {{on \"click\" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses=\"euiListGroupItem__icon\" @type={{@iconType}} @color=\"inherit\" />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class=\"euiListGroupItem__text\" ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses=\"euiListGroupItem__icon\" @type={{@iconType}} @color=\"inherit\" />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let (component (EnsureSafeComponentHelper @extraAction)) as |ExtraAction|}}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n ", { | |
- strictMode: true, | |
- scope: () => ({ | |
- classNames, | |
- or, | |
- argOrDefault, | |
- and, | |
- not, | |
- on, | |
- optional, | |
- EuiIcon, | |
- eq, | |
- EnsureSafeComponentHelper | |
- }) | |
-}), templateOnly()); | |
+const EuiListGroupItem = setComponentTemplate( | |
+ precompileTemplate( | |
+ '\n <li class={{classNames (if (or @href @onClick) "euiListGroupItem-isClickable") (if @isActive "euiListGroupItem-isActive") (if @isDisabled "euiListGroupItem-isDisabled") (if @wrapText "euiListGroupItem-wrapText") componentName="EuiListGroupItem" size=(argOrDefault @size "m") color=(argOrDefault @color "inherit")}}>\n {{#if (and @href (not @isDisabled))}}\n <a class="euiListGroupItem__button" href={{@href}} target={{@target}} {{on "click" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses="euiListGroupItem__icon" @type={{@iconType}} />\n {{/if}}\n <span class="euiListGroupItem__label">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button class="euiListGroupItem__button" type="button" disabled={{eq @isDisabled true}} {{on "click" (optional @onClick)}} ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses="euiListGroupItem__icon" @type={{@iconType}} @color="inherit" />\n {{/if}}\n <span class="euiListGroupItem__label">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class="euiListGroupItem__text" ...attributes>\n {{#if @iconType}}\n <EuiIcon @iconClasses="euiListGroupItem__icon" @type={{@iconType}} @color="inherit" />\n {{/if}}\n <span class="euiListGroupItem__label">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let (component (EnsureSafeComponentHelper @extraAction)) as |ExtraAction|}}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n ', | |
+ { | |
+ strictMode: true, | |
+ scope: () => ({ | |
+ classNames, | |
+ or, | |
+ argOrDefault, | |
+ and, | |
+ not, | |
+ on, | |
+ optional, | |
+ EuiIcon, | |
+ eq, | |
+ EnsureSafeComponentHelper, | |
+ }), | |
+ } | |
+ ), | |
+ templateOnly() | |
+); | |
export { EuiListGroupItem as default }; | |
//# sourceMappingURL=eui-list-group-item.js.map | |
diff --git a/dist/components/eui-list-group-item.js.map b/dist/components/eui-list-group-item.js.map | |
index d740722e39e903ed148c7bddd2f8100b5da14031..d2edee80b981e809eec90df8fa1a22a4c40aa8fd 100644 | |
--- a/dist/components/eui-list-group-item.js.map | |
+++ b/dist/components/eui-list-group-item.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-list-group-item.js","sources":["../../src/components/eui-list-group-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type {\n colorMapping,\n sizeMapping} from '../utils/css-mappings/eui-list-group-item.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiListGroupItemSignature {\n Element:\n | HTMLLIElement\n | HTMLAnchorElement\n | HTMLButtonElement\n | HTMLSpanElement;\n Args: {\n href?: string;\n target?: string;\n onClick?: (event: MouseEvent) => void;\n label?: string;\n iconType?: EuiIconSignature['Args']['type'];\n isActive?: boolean;\n isDisabled?: boolean;\n wrapText?: boolean;\n extraAction?: ComponentLike;\n size?: keyof typeof sizeMapping;\n color?: keyof typeof colorMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiListGroupItem: TemplateOnlyComponent<EuiListGroupItemSignature> =\n <template>\n <li\n class={{classNames\n (if (or @href @onClick) \"euiListGroupItem-isClickable\")\n (if @isActive \"euiListGroupItem-isActive\")\n (if @isDisabled \"euiListGroupItem-isDisabled\")\n (if @wrapText \"euiListGroupItem-wrapText\")\n componentName=\"EuiListGroupItem\"\n size=(argOrDefault @size \"m\")\n color=(argOrDefault @color \"inherit\")\n }}\n >\n {{#if (and @href (not @isDisabled))}}\n <a\n class=\"euiListGroupItem__button\"\n href={{@href}}\n target={{@target}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button\n class=\"euiListGroupItem__button\"\n type=\"button\"\n disabled={{eq @isDisabled true}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class=\"euiListGroupItem__text\" ...attributes>\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let\n (component (EnsureSafeComponentHelper @extraAction))\n as |ExtraAction|\n }}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n </template>;\n\nexport default EuiListGroupItem;\n"],"names":["EuiListGroupItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","or","argOrDefault","and","not","on","optional","EuiIcon","eq","EnsureSafeComponentHelper","templateOnly"],"mappings":";;;;;;;;;;;;;;AA4CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAqFA,6iEAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-list-group-item.js","sources":["../../src/components/eui-list-group-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { element } from 'ember-element-helper';\nimport set from 'ember-set-helper/helpers/set';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiIcon from './eui-icon.gts';\n\nimport type {\n colorMapping,\n sizeMapping} from '../utils/css-mappings/eui-list-group-item.ts';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiListGroupItemSignature {\n Element:\n | HTMLLIElement\n | HTMLAnchorElement\n | HTMLButtonElement\n | HTMLSpanElement;\n Args: {\n href?: string;\n target?: string;\n onClick?: (event: MouseEvent) => void;\n label?: string;\n iconType?: EuiIconSignature['Args']['type'];\n isActive?: boolean;\n isDisabled?: boolean;\n wrapText?: boolean;\n extraAction?: ComponentLike;\n size?: keyof typeof sizeMapping;\n color?: keyof typeof colorMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiListGroupItem: TemplateOnlyComponent<EuiListGroupItemSignature> =\n <template>\n <li\n class={{classNames\n (if (or @href @onClick) \"euiListGroupItem-isClickable\")\n (if @isActive \"euiListGroupItem-isActive\")\n (if @isDisabled \"euiListGroupItem-isDisabled\")\n (if @wrapText \"euiListGroupItem-wrapText\")\n componentName=\"EuiListGroupItem\"\n size=(argOrDefault @size \"m\")\n color=(argOrDefault @color \"inherit\")\n }}\n >\n {{#if (and @href (not @isDisabled))}}\n <a\n class=\"euiListGroupItem__button\"\n href={{@href}}\n target={{@target}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </a>\n {{else if (or @onClick (and @href @isDisabled))}}\n <button\n class=\"euiListGroupItem__button\"\n type=\"button\"\n disabled={{eq @isDisabled true}}\n {{on \"click\" (optional @onClick)}}\n ...attributes\n >\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </button>\n {{else}}\n <span class=\"euiListGroupItem__text\" ...attributes>\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiListGroupItem__icon\"\n @type={{@iconType}}\n @color=\"inherit\"\n />\n {{/if}}\n <span class=\"euiListGroupItem__label\">\n {{#if (has-block)}}\n {{yield}}\n {{else}}\n {{@label}}\n {{/if}}\n </span>\n </span>\n {{/if}}\n {{#if @extraAction}}\n {{#let\n (component (EnsureSafeComponentHelper @extraAction))\n as |ExtraAction|\n }}\n <ExtraAction />\n {{/let}}\n\n {{/if}}\n </li>\n </template>;\n\nexport default EuiListGroupItem;\n"],"names":["EuiListGroupItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","or","argOrDefault","and","not","on","optional","EuiIcon","eq","EnsureSafeComponentHelper","templateOnly"],"mappings":";;;;;;;;;;;;;;AA4CA,MAAMA,gBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAqFA,6iEAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-loading-content.js b/dist/components/eui-loading-content.js | |
index 4c713e2d42c8d76a9aaab4165cabc5e62e4dd950..a52ccd954a92b87c77b3466f68363612779a3dc0 100644 | |
--- a/dist/components/eui-loading-content.js | |
+++ b/dist/components/eui-loading-content.js | |
@@ -1,4 +1,4 @@ | |
-import repeat from 'ember-composable-helpers/helpers/repeat'; | |
+import repeat from '@nullvoxpopuli/ember-composable-helpers/helpers/repeat'; | |
import { lt, gt } from 'ember-truth-helpers'; | |
import classNames from '../helpers/class-names.js'; | |
import { precompileTemplate } from '@ember/template-compilation'; | |
diff --git a/dist/components/eui-loading-content.js.map b/dist/components/eui-loading-content.js.map | |
index 13ccfdbc963173cb642a9b4717ae5f23d923e93c..c9b60304a28b5e71e89e1f4f0faee569a6766936 100644 | |
--- a/dist/components/eui-loading-content.js.map | |
+++ b/dist/components/eui-loading-content.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-loading-content.js","sources":["../../src/components/eui-loading-content.gts"],"sourcesContent":["import repeat from 'ember-composable-helpers/helpers/repeat';\nimport { gt, lt } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiLoadingContentSignature {\n Element: HTMLSpanElement;\n Args: {\n lines?: number;\n singleLineClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiLoadingContent: TemplateOnlyComponent<EuiLoadingContentSignature> =\n <template>\n <span class=\"euiLoadingContent\" ...attributes>\n {{#each (repeat (if (gt @lines 10) 10 (if (lt @lines 1) 1 @lines)))}}\n <span\n class={{classNames\n \"euiLoadingContent__singleLine\"\n @singleLineClasses\n }}\n >\n <span class=\"euiLoadingContent__singleLineBackground\" />\n </span>\n {{/each}}\n </span>\n </template>;\n\nexport default EuiLoadingContent;\n"],"names":["EuiLoadingContent","setComponentTemplate","precompileTemplate","strictMode","scope","repeat","gt","lt","classNames","templateOnly"],"mappings":";;;;;;;AAkBA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAaA,wVAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-loading-content.js","sources":["../../src/components/eui-loading-content.gts"],"sourcesContent":["import repeat from '@nullvoxpopuli/ember-composable-helpers/helpers/repeat';\nimport { gt, lt } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiLoadingContentSignature {\n Element: HTMLSpanElement;\n Args: {\n lines?: number;\n singleLineClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiLoadingContent: TemplateOnlyComponent<EuiLoadingContentSignature> =\n <template>\n <span class=\"euiLoadingContent\" ...attributes>\n {{#each (repeat (if (gt @lines 10) 10 (if (lt @lines 1) 1 @lines)))}}\n <span\n class={{classNames\n \"euiLoadingContent__singleLine\"\n @singleLineClasses\n }}\n >\n <span class=\"euiLoadingContent__singleLineBackground\" />\n </span>\n {{/each}}\n </span>\n </template>;\n\nexport default EuiLoadingContent;\n"],"names":["EuiLoadingContent","setComponentTemplate","precompileTemplate","strictMode","scope","repeat","gt","lt","classNames","templateOnly"],"mappings":";;;;;;;AAkBA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAaA,wVAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,EAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-markdown-editor.js b/dist/components/eui-markdown-editor.js | |
index e173dd365e25ec1069c75ea675d8ba9360c7a64e..7fe49b7c84fc3cdb767e52c357aaf76e3a4bcd75 100644 | |
--- a/dist/components/eui-markdown-editor.js | |
+++ b/dist/components/eui-markdown-editor.js | |
@@ -7,7 +7,7 @@ import { guidFor } from '@ember/object/internals'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import didUpdate from '@ember/render-modifiers/modifiers/did-update'; | |
import { scheduleOnce } from '@ember/runloop'; | |
-import pick from 'ember-composable-helpers/helpers/pick'; | |
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick'; | |
import { modifier } from 'ember-modifier'; | |
import set from 'ember-set-helper/helpers/set'; | |
import style from 'ember-style-modifier/modifiers/style'; | |
diff --git a/dist/components/eui-markdown-editor.js.map b/dist/components/eui-markdown-editor.js.map | |
index 8d9a51468b83821564d52dbb79e26e0d6e75db1d..a296c5a32b3dbad2a62f5294696ba60d02f41c66 100644 | |
--- a/dist/components/eui-markdown-editor.js.map | |
+++ b/dist/components/eui-markdown-editor.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-markdown-editor.js","sources":["../../src/components/eui-markdown-editor.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport pick from 'ember-composable-helpers/helpers/pick';\nimport { modifier } from 'ember-modifier';\nimport set from 'ember-set-helper/helpers/set';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { eq } from 'ember-truth-helpers';\nimport unified from 'unified';\n\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport MarkdownActions, {\n insertText\n} from '../utils/markdown/markdown-actions.ts';\nimport { MODE_EDITING, MODE_VIEWING } from '../utils/markdown/markdown-modes.ts';\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport * as MarkdownTooltipPlugin from '../utils/markdown/plugins/markdown-tooltip/index.ts';\nimport EuiMarkdownEditorDropZone from './eui-markdown-editor-drop-zone.gts';\nimport EuiMarkdownEditorTextArea from './eui-markdown-editor-text-area.gts';\nimport EuiMarkdownEditorToolbar from './eui-markdown-editor-toolbar.gts';\nimport EuiMarkdownFormat from './eui-markdown-format.gts';\nimport EuiModal from './eui-modal.gts';\n\nimport type {\n EuiMarkdownAstNode,\n EuiMarkdownAstNodePosition,\n EuiMarkdownEditorUiPlugin\n} from '../utils/markdown/markdown-types';\nimport type { EuiMarkdownEditorTextAreaSignature } from './eui-markdown-editor-text-area';\nimport type { EuiMarkdownEditorToolbarSignature } from './eui-markdown-editor-toolbar';\nimport type { Processor } from 'unified';\n\nexport interface EuiMarkdownEditorArgs {\n initialViewMode?: string;\n editorId?: string;\n uiPlugins: EuiMarkdownEditorUiPlugin[];\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n value: string;\n onChange: (str: string) => void;\n onParse?: (\n parseError: unknown | null,\n parsed: { messages: any[]; ast: any }\n ) => void;\n height?: number | string;\n maxHeight?: number | string;\n autoExpandPreview?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n}\n\nexport interface EuiMarkdownEditorSignature {\n Element: EuiMarkdownEditorTextAreaSignature['Element'];\n Args: EuiMarkdownEditorArgs;\n Blocks: {\n default: [];\n };\n}\n\nexport const getCursorNode = (\n textareaRef: HTMLTextAreaElement,\n parsed: any\n): EuiMarkdownAstNode => {\n const { selectionStart } = textareaRef;\n\n let node: EuiMarkdownAstNode = parsed.result ?? parsed.contents;\n\n //eslint-disable-next-line\n outer: while (true) {\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n\n if (\n child &&\n child.position.start.offset < (selectionStart as number) &&\n (selectionStart as number) < child.position.end.offset\n ) {\n if (child.type === 'text') break outer; // don't dive into `text` nodes\n node = child;\n continue outer;\n }\n }\n }\n\n break;\n }\n\n return node;\n};\n\nfunction wrapper(\n textarea: HTMLTextAreaElement,\n parsed: any,\n callback: (node: EuiMarkdownAstNode) => void\n) {\n const node = getCursorNode(textarea, parsed);\n\n callback(node);\n}\n\nexport const getCursorNodeModifier = modifier(function getCursorNodeModifier(\n textarea: EuiMarkdownEditorTextAreaSignature['Element'],\n [parsed, onSelectedNode]: [any, (node: Node) => void]\n) {\n //@ts-expect-error\n const fn = wrapper.bind(null, textarea, parsed, onSelectedNode);\n\n textarea.addEventListener('keyup', fn);\n textarea.addEventListener('mouseup', fn);\n\n return () => {\n textarea.removeEventListener('keyup', fn);\n textarea.removeEventListener('mouseup', fn);\n };\n});\n\nfunction isNewLine(char: string | undefined): boolean {\n if (char == null) return true;\n\n return !!char.match(/[\\r\\n]/);\n}\n\nfunction padWithNewlinesIfNeeded(textarea: HTMLTextAreaElement, text: string) {\n const selectionStart = textarea.selectionStart;\n const selectionEnd = textarea.selectionEnd;\n\n // block parsing requires two leading new lines and none trailing, but we add an extra trailing line for readability\n const isPrevNewLine = isNewLine(textarea.value[selectionStart - 1]);\n const isPrevPrevNewLine = isNewLine(textarea.value[selectionStart - 2]);\n const isNextNewLine = isNewLine(textarea.value[selectionEnd]);\n\n // pad text with newlines as needed\n text = `${isPrevNewLine ? '' : '\\n'}${isPrevPrevNewLine ? '' : '\\n'}${text}${\n isNextNewLine ? '' : '\\n'\n }`;\n\n return text;\n}\n\nexport default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEditorSignature> {\n @tracked pluginEditorPlugin?: EuiMarkdownEditorUiPlugin;\n\n // Defaults\n @argOrDefaultDecorator(defaultParsingPlugins) declare parsingPluginList: typeof defaultParsingPlugins;\n\n @argOrDefaultDecorator(250) declare height: number | string;\n @argOrDefaultDecorator(500) declare maxHeight: number | string;\n @argOrDefaultDecorator(true) declare autoExpandPreview: boolean;\n\n @argOrDefaultDecorator(defaultProcessingPlugins) declare processingPluginList: typeof defaultProcessingPlugins;\n\n @tracked selectedNode: Node | null = null;\n @tracked editorId = this.args.editorId ?? guidFor({});\n @tracked viewMode = this.args.initialViewMode || MODE_EDITING;\n @tracked textareaRef: HTMLTextAreaElement | null = null;\n @tracked previewRef: HTMLDivElement | null = null;\n @tracked editorToolbarRef: HTMLDivElement | null = null;\n @tracked currentHeight: number | string = 250;\n @tracked editorFooterHeight: number = 0;\n @tracked editorToolbarHeight: number = 0;\n\n markdownActions: MarkdownActions;\n\n get toolbarPlugins() {\n return [MarkdownTooltipPlugin.plugin, ...(this.args.uiPlugins || [])];\n }\n\n constructor(owner: Owner, args: EuiMarkdownEditorArgs) {\n super(owner, args);\n this.markdownActions = new MarkdownActions(\n this.editorId,\n this.toolbarPlugins\n );\n this.currentHeight = this.height;\n }\n\n get previewHeight() {\n if (this.height === 'full') {\n return `calc(100% - ${this.editorFooterHeight}px)`;\n }\n\n return `${this.currentHeight}px`;\n }\n\n get textAreaHeight() {\n return this.height === 'full'\n ? '100%'\n : `calc(${(this.height as number) - this.editorFooterHeight}px)`;\n }\n\n get textAreaMaxHeight() {\n return this.height !== 'full'\n ? `${(this.maxHeight as number) - this.editorFooterHeight}px`\n : '';\n }\n\n get editorToggleContainerHeight() {\n return `calc(100% - ${this.editorToolbarHeight}px)`;\n }\n\n @action\n onResize() {\n if (this.textareaRef && this.isEditing && this.height !== 'full') {\n const resizedTextareaHeight =\n this.textareaRef.offsetHeight + this.editorFooterHeight;\n\n const update = () => {\n this.currentHeight = resizedTextareaHeight;\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n\n @action\n updateCurrentHeight() {\n let { isPreviewing, autoExpandPreview, height, previewRef, currentHeight } =\n this;\n\n if (isPreviewing && autoExpandPreview && height !== 'full' && previewRef) {\n //@ts-ignore\n if (previewRef.scrollHeight > currentHeight) {\n // scrollHeight does not include the border or margin\n // so we ask for the computed value for those,\n // which is always in pixels because getComputedValue\n // returns the resolved values\n const elementComputedStyle = window.getComputedStyle(previewRef);\n const borderWidth =\n parseFloat(elementComputedStyle.borderTopWidth) +\n parseFloat(elementComputedStyle.borderBottomWidth);\n const marginWidth =\n parseFloat(elementComputedStyle.marginTop) +\n parseFloat(elementComputedStyle.marginBottom);\n\n // then add an extra pixel for safety and because the scrollHeight value is rounded\n const extraHeight = borderWidth + marginWidth + 1;\n\n const update = () => {\n if (previewRef) {\n this.currentHeight = previewRef.scrollHeight + extraHeight;\n }\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n }\n\n getCursorNode = () => {};\n\n @action\n setTextAreaRef(ref: HTMLTextAreaElement) {\n this.textareaRef = ref;\n }\n\n @action\n setEditorToolbarRef(ref: EuiMarkdownEditorToolbarSignature['Element']) {\n this.editorToolbarRef = ref;\n this.editorToolbarHeight = ref.offsetHeight;\n }\n\n @action\n replaceNode(position: EuiMarkdownAstNodePosition, next: string) {\n let value = this.args.value;\n const leading = value.substr(0, position.start.offset);\n const trailing = value.substr(position.end.offset);\n\n this.args.onChange?.(`${leading}${next}${trailing}`);\n }\n\n get isEditing() {\n return this.viewMode === MODE_EDITING;\n }\n\n get isPreviewing() {\n return this.viewMode === MODE_VIEWING;\n }\n\n @action\n setViewMode() {\n this.viewMode = this.isPreviewing ? MODE_EDITING : MODE_VIEWING;\n }\n\n @cached\n get parser() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified().use(this.parsingPluginList).use(identityCompiler);\n }\n\n @cached\n get parsed(): [\n ReturnType<typeof this.parser.processSync> | null,\n null | unknown\n ] {\n try {\n const parsed = this.parser.processSync(this.args.value);\n\n return [parsed, null];\n } catch (e) {\n return [null, e];\n }\n }\n\n get vFile() {\n return this.parsed[0];\n }\n\n @action\n onParse() {\n if (this.args.onParse) {\n const [parsed, parseError] = this.parsed;\n const onParse = this.args.onParse;\n const messages = parsed ? parsed.messages : [];\n const ast = parsed ? parsed['result'] ?? parsed.contents : null;\n\n onParse(parseError, { messages, ast });\n }\n }\n\n @action\n setSelectedNode(node: Node) {\n this.selectedNode = node;\n }\n\n openPluginEditor = (plugin: EuiMarkdownEditorUiPlugin) => {\n this.pluginEditorPlugin = plugin;\n };\n\n onEditorPluginSave = (markdown: any, config: any) => {\n let { selectedNode, textareaRef } = this;\n\n if (\n this.pluginEditorPlugin &&\n selectedNode &&\n // @ts-expect-error\n selectedNode.type === this.pluginEditorPlugin.name &&\n // @ts-expect-error\n selectedNode.position\n ) {\n // modifying an existing node\n textareaRef!.setSelectionRange(\n // @ts-expect-error\n selectedNode.position.start.offset,\n // @ts-expect-error\n selectedNode.position.end.offset\n );\n } else {\n // creating a new node\n if (config.block) {\n // inject newlines if needed\n markdown = padWithNewlinesIfNeeded(textareaRef!, markdown);\n }\n }\n\n insertText(textareaRef!, {\n text: markdown,\n selectionStart: undefined,\n selectionEnd: undefined\n });\n\n this.pluginEditorPlugin = undefined;\n };\n\n <template>\n <div\n class={{classNames\n \"euiMarkdownEditor\"\n (if (eq this.height \"full\") \"euiMarkdownEditor--fullHeight\")\n (if this.isPreviewing \"euiMarkdownEditor--isPreviewing\")\n }}\n {{didUpdate\n this.updateCurrentHeight\n this.currentHeight\n this.isPreviewing\n this.height\n this.autoExpandPreview\n }}\n >\n <EuiMarkdownEditorToolbar\n @selectedNode={{this.selectedNode}}\n @markdownActions={{this.markdownActions}}\n @onClickPreview={{this.setViewMode}}\n @openPluginEditor={{this.openPluginEditor}}\n @viewMode={{this.viewMode}}\n @uiPlugins={{this.toolbarPlugins}}\n {{didInsert this.setEditorToolbarRef}}\n />\n {{#if this.isPreviewing}}\n <div\n class=\"euiMarkdownEditorPreview\"\n {{didInsert (set this \"previewRef\")}}\n {{style (hash height=this.previewHeight)}}\n >\n <EuiMarkdownFormat\n @parsingPluginList={{this.parsingPluginList}}\n @processingPluginList={{this.processingPluginList}}\n @value={{@value}}\n @replaceNode={{this.replaceNode}}\n />\n </div>\n {{/if}}\n\n <div\n class=\"euiMarkdownEditor__toggleContainer\"\n {{style height=this.editorToggleContainerHeight}}\n >\n <EuiMarkdownEditorDropZone\n @uiPlugins={{this.toolbarPlugins}}\n {{resizeObserver onResize=this.onResize}}\n >\n <EuiMarkdownEditorTextArea\n {{getCursorNodeModifier this.vFile this.setSelectedNode}}\n {{didUpdate this.onParse this.parsed}}\n {{didInsert this.setTextAreaRef}}\n disabled={{@disabled}}\n id={{this.editorId}}\n @height={{this.textAreaHeight}}\n @maxHeight={{this.textAreaMaxHeight}}\n value={{@value}}\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-describedby={{@ariaDescribedBy}}\n {{on \"input\" (pick \"target.value\" @onChange)}}\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </EuiMarkdownEditorDropZone>\n {{#if this.pluginEditorPlugin.editor}}\n <EuiModal @onClose={{set this \"pluginEditorPlugin\" undefined}}>\n {{#let (component this.pluginEditorPlugin.editor) as |Editor|}}\n <Editor\n @node={{this.selectedNode}}\n @onCancel={{set this \"pluginEditorPlugin\" undefined}}\n @onSave={{this.onEditorPluginSave}}\n />\n {{/let}}\n </EuiModal>\n {{/if}}\n </div>\n </div>\n </template>\n}\n"],"names":["getCursorNode","textareaRef","parsed","selectionStart","node","result","contents","outer","children","i","length","child","position","start","offset","end","type","wrapper","textarea","callback","getCursorNodeModifier","modifier","onSelectedNode","fn","bind","addEventListener","removeEventListener","isNewLine","char","match","padWithNewlinesIfNeeded","text","selectionEnd","isPrevNewLine","value","isPrevPrevNewLine","isNextNewLine","EuiMarkdownEditorComponent","Component","g","prototype","tracked","void 0","argOrDefaultDecorator","defaultParsingPlugins","defaultProcessingPlugins","args","editorId","guidFor","initialViewMode","MODE_EDITING","markdownActions","toolbarPlugins","MarkdownTooltipPlugin","uiPlugins","constructor","owner","MarkdownActions","currentHeight","height","previewHeight","editorFooterHeight","textAreaHeight","textAreaMaxHeight","maxHeight","editorToggleContainerHeight","editorToolbarHeight","onResize","isEditing","resizedTextareaHeight","offsetHeight","update","scheduleOnce","n","action","updateCurrentHeight","isPreviewing","autoExpandPreview","previewRef","scrollHeight","elementComputedStyle","window","getComputedStyle","borderWidth","parseFloat","borderTopWidth","borderBottomWidth","marginWidth","marginTop","marginBottom","extraHeight","setTextAreaRef","ref","setEditorToolbarRef","editorToolbarRef","replaceNode","next","leading","substr","trailing","onChange","viewMode","MODE_VIEWING","setViewMode","parser","Compiler","tree","identityCompiler","unified","use","parsingPluginList","cached","processSync","e","vFile","onParse","parseError","messages","ast","setSelectedNode","selectedNode","openPluginEditor","plugin","pluginEditorPlugin","onEditorPluginSave","markdown","config","name","setSelectionRange","block","insertText","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","didUpdate","EuiMarkdownEditorToolbar","didInsert","set","style","hash","EuiMarkdownFormat","EuiMarkdownEditorDropZone","resizeObserver","EuiMarkdownEditorTextArea","on","pick","validatableControl","EuiModal"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-markdown-editor.js","sources":["../../src/components/eui-markdown-editor.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\nimport { modifier } from 'ember-modifier';\nimport set from 'ember-set-helper/helpers/set';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { eq } from 'ember-truth-helpers';\nimport unified from 'unified';\n\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport resizeObserver from '../modifiers/resize-observer.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\nimport MarkdownActions, {\n insertText\n} from '../utils/markdown/markdown-actions.ts';\nimport { MODE_EDITING, MODE_VIEWING } from '../utils/markdown/markdown-modes.ts';\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport * as MarkdownTooltipPlugin from '../utils/markdown/plugins/markdown-tooltip/index.ts';\nimport EuiMarkdownEditorDropZone from './eui-markdown-editor-drop-zone.gts';\nimport EuiMarkdownEditorTextArea from './eui-markdown-editor-text-area.gts';\nimport EuiMarkdownEditorToolbar from './eui-markdown-editor-toolbar.gts';\nimport EuiMarkdownFormat from './eui-markdown-format.gts';\nimport EuiModal from './eui-modal.gts';\n\nimport type {\n EuiMarkdownAstNode,\n EuiMarkdownAstNodePosition,\n EuiMarkdownEditorUiPlugin\n} from '../utils/markdown/markdown-types';\nimport type { EuiMarkdownEditorTextAreaSignature } from './eui-markdown-editor-text-area';\nimport type { EuiMarkdownEditorToolbarSignature } from './eui-markdown-editor-toolbar';\nimport type { Processor } from 'unified';\n\nexport interface EuiMarkdownEditorArgs {\n initialViewMode?: string;\n editorId?: string;\n uiPlugins: EuiMarkdownEditorUiPlugin[];\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n value: string;\n onChange: (str: string) => void;\n onParse?: (\n parseError: unknown | null,\n parsed: { messages: any[]; ast: any }\n ) => void;\n height?: number | string;\n maxHeight?: number | string;\n autoExpandPreview?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n}\n\nexport interface EuiMarkdownEditorSignature {\n Element: EuiMarkdownEditorTextAreaSignature['Element'];\n Args: EuiMarkdownEditorArgs;\n Blocks: {\n default: [];\n };\n}\n\nexport const getCursorNode = (\n textareaRef: HTMLTextAreaElement,\n parsed: any\n): EuiMarkdownAstNode => {\n const { selectionStart } = textareaRef;\n\n let node: EuiMarkdownAstNode = parsed.result ?? parsed.contents;\n\n //eslint-disable-next-line\n outer: while (true) {\n if (node.children) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n\n if (\n child &&\n child.position.start.offset < (selectionStart as number) &&\n (selectionStart as number) < child.position.end.offset\n ) {\n if (child.type === 'text') break outer; // don't dive into `text` nodes\n node = child;\n continue outer;\n }\n }\n }\n\n break;\n }\n\n return node;\n};\n\nfunction wrapper(\n textarea: HTMLTextAreaElement,\n parsed: any,\n callback: (node: EuiMarkdownAstNode) => void\n) {\n const node = getCursorNode(textarea, parsed);\n\n callback(node);\n}\n\nexport const getCursorNodeModifier = modifier(function getCursorNodeModifier(\n textarea: EuiMarkdownEditorTextAreaSignature['Element'],\n [parsed, onSelectedNode]: [any, (node: Node) => void]\n) {\n //@ts-expect-error\n const fn = wrapper.bind(null, textarea, parsed, onSelectedNode);\n\n textarea.addEventListener('keyup', fn);\n textarea.addEventListener('mouseup', fn);\n\n return () => {\n textarea.removeEventListener('keyup', fn);\n textarea.removeEventListener('mouseup', fn);\n };\n});\n\nfunction isNewLine(char: string | undefined): boolean {\n if (char == null) return true;\n\n return !!char.match(/[\\r\\n]/);\n}\n\nfunction padWithNewlinesIfNeeded(textarea: HTMLTextAreaElement, text: string) {\n const selectionStart = textarea.selectionStart;\n const selectionEnd = textarea.selectionEnd;\n\n // block parsing requires two leading new lines and none trailing, but we add an extra trailing line for readability\n const isPrevNewLine = isNewLine(textarea.value[selectionStart - 1]);\n const isPrevPrevNewLine = isNewLine(textarea.value[selectionStart - 2]);\n const isNextNewLine = isNewLine(textarea.value[selectionEnd]);\n\n // pad text with newlines as needed\n text = `${isPrevNewLine ? '' : '\\n'}${isPrevPrevNewLine ? '' : '\\n'}${text}${\n isNextNewLine ? '' : '\\n'\n }`;\n\n return text;\n}\n\nexport default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEditorSignature> {\n @tracked pluginEditorPlugin?: EuiMarkdownEditorUiPlugin;\n\n // Defaults\n @argOrDefaultDecorator(defaultParsingPlugins) declare parsingPluginList: typeof defaultParsingPlugins;\n\n @argOrDefaultDecorator(250) declare height: number | string;\n @argOrDefaultDecorator(500) declare maxHeight: number | string;\n @argOrDefaultDecorator(true) declare autoExpandPreview: boolean;\n\n @argOrDefaultDecorator(defaultProcessingPlugins) declare processingPluginList: typeof defaultProcessingPlugins;\n\n @tracked selectedNode: Node | null = null;\n @tracked editorId = this.args.editorId ?? guidFor({});\n @tracked viewMode = this.args.initialViewMode || MODE_EDITING;\n @tracked textareaRef: HTMLTextAreaElement | null = null;\n @tracked previewRef: HTMLDivElement | null = null;\n @tracked editorToolbarRef: HTMLDivElement | null = null;\n @tracked currentHeight: number | string = 250;\n @tracked editorFooterHeight: number = 0;\n @tracked editorToolbarHeight: number = 0;\n\n markdownActions: MarkdownActions;\n\n get toolbarPlugins() {\n return [MarkdownTooltipPlugin.plugin, ...(this.args.uiPlugins || [])];\n }\n\n constructor(owner: Owner, args: EuiMarkdownEditorArgs) {\n super(owner, args);\n this.markdownActions = new MarkdownActions(\n this.editorId,\n this.toolbarPlugins\n );\n this.currentHeight = this.height;\n }\n\n get previewHeight() {\n if (this.height === 'full') {\n return `calc(100% - ${this.editorFooterHeight}px)`;\n }\n\n return `${this.currentHeight}px`;\n }\n\n get textAreaHeight() {\n return this.height === 'full'\n ? '100%'\n : `calc(${(this.height as number) - this.editorFooterHeight}px)`;\n }\n\n get textAreaMaxHeight() {\n return this.height !== 'full'\n ? `${(this.maxHeight as number) - this.editorFooterHeight}px`\n : '';\n }\n\n get editorToggleContainerHeight() {\n return `calc(100% - ${this.editorToolbarHeight}px)`;\n }\n\n @action\n onResize() {\n if (this.textareaRef && this.isEditing && this.height !== 'full') {\n const resizedTextareaHeight =\n this.textareaRef.offsetHeight + this.editorFooterHeight;\n\n const update = () => {\n this.currentHeight = resizedTextareaHeight;\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n\n @action\n updateCurrentHeight() {\n let { isPreviewing, autoExpandPreview, height, previewRef, currentHeight } =\n this;\n\n if (isPreviewing && autoExpandPreview && height !== 'full' && previewRef) {\n //@ts-ignore\n if (previewRef.scrollHeight > currentHeight) {\n // scrollHeight does not include the border or margin\n // so we ask for the computed value for those,\n // which is always in pixels because getComputedValue\n // returns the resolved values\n const elementComputedStyle = window.getComputedStyle(previewRef);\n const borderWidth =\n parseFloat(elementComputedStyle.borderTopWidth) +\n parseFloat(elementComputedStyle.borderBottomWidth);\n const marginWidth =\n parseFloat(elementComputedStyle.marginTop) +\n parseFloat(elementComputedStyle.marginBottom);\n\n // then add an extra pixel for safety and because the scrollHeight value is rounded\n const extraHeight = borderWidth + marginWidth + 1;\n\n const update = () => {\n if (previewRef) {\n this.currentHeight = previewRef.scrollHeight + extraHeight;\n }\n };\n\n scheduleOnce('afterRender', this, update);\n }\n }\n }\n\n getCursorNode = () => {};\n\n @action\n setTextAreaRef(ref: HTMLTextAreaElement) {\n this.textareaRef = ref;\n }\n\n @action\n setEditorToolbarRef(ref: EuiMarkdownEditorToolbarSignature['Element']) {\n this.editorToolbarRef = ref;\n this.editorToolbarHeight = ref.offsetHeight;\n }\n\n @action\n replaceNode(position: EuiMarkdownAstNodePosition, next: string) {\n let value = this.args.value;\n const leading = value.substr(0, position.start.offset);\n const trailing = value.substr(position.end.offset);\n\n this.args.onChange?.(`${leading}${next}${trailing}`);\n }\n\n get isEditing() {\n return this.viewMode === MODE_EDITING;\n }\n\n get isPreviewing() {\n return this.viewMode === MODE_VIEWING;\n }\n\n @action\n setViewMode() {\n this.viewMode = this.isPreviewing ? MODE_EDITING : MODE_VIEWING;\n }\n\n @cached\n get parser() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified().use(this.parsingPluginList).use(identityCompiler);\n }\n\n @cached\n get parsed(): [\n ReturnType<typeof this.parser.processSync> | null,\n null | unknown\n ] {\n try {\n const parsed = this.parser.processSync(this.args.value);\n\n return [parsed, null];\n } catch (e) {\n return [null, e];\n }\n }\n\n get vFile() {\n return this.parsed[0];\n }\n\n @action\n onParse() {\n if (this.args.onParse) {\n const [parsed, parseError] = this.parsed;\n const onParse = this.args.onParse;\n const messages = parsed ? parsed.messages : [];\n const ast = parsed ? parsed['result'] ?? parsed.contents : null;\n\n onParse(parseError, { messages, ast });\n }\n }\n\n @action\n setSelectedNode(node: Node) {\n this.selectedNode = node;\n }\n\n openPluginEditor = (plugin: EuiMarkdownEditorUiPlugin) => {\n this.pluginEditorPlugin = plugin;\n };\n\n onEditorPluginSave = (markdown: any, config: any) => {\n let { selectedNode, textareaRef } = this;\n\n if (\n this.pluginEditorPlugin &&\n selectedNode &&\n // @ts-expect-error\n selectedNode.type === this.pluginEditorPlugin.name &&\n // @ts-expect-error\n selectedNode.position\n ) {\n // modifying an existing node\n textareaRef!.setSelectionRange(\n // @ts-expect-error\n selectedNode.position.start.offset,\n // @ts-expect-error\n selectedNode.position.end.offset\n );\n } else {\n // creating a new node\n if (config.block) {\n // inject newlines if needed\n markdown = padWithNewlinesIfNeeded(textareaRef!, markdown);\n }\n }\n\n insertText(textareaRef!, {\n text: markdown,\n selectionStart: undefined,\n selectionEnd: undefined\n });\n\n this.pluginEditorPlugin = undefined;\n };\n\n <template>\n <div\n class={{classNames\n \"euiMarkdownEditor\"\n (if (eq this.height \"full\") \"euiMarkdownEditor--fullHeight\")\n (if this.isPreviewing \"euiMarkdownEditor--isPreviewing\")\n }}\n {{didUpdate\n this.updateCurrentHeight\n this.currentHeight\n this.isPreviewing\n this.height\n this.autoExpandPreview\n }}\n >\n <EuiMarkdownEditorToolbar\n @selectedNode={{this.selectedNode}}\n @markdownActions={{this.markdownActions}}\n @onClickPreview={{this.setViewMode}}\n @openPluginEditor={{this.openPluginEditor}}\n @viewMode={{this.viewMode}}\n @uiPlugins={{this.toolbarPlugins}}\n {{didInsert this.setEditorToolbarRef}}\n />\n {{#if this.isPreviewing}}\n <div\n class=\"euiMarkdownEditorPreview\"\n {{didInsert (set this \"previewRef\")}}\n {{style (hash height=this.previewHeight)}}\n >\n <EuiMarkdownFormat\n @parsingPluginList={{this.parsingPluginList}}\n @processingPluginList={{this.processingPluginList}}\n @value={{@value}}\n @replaceNode={{this.replaceNode}}\n />\n </div>\n {{/if}}\n\n <div\n class=\"euiMarkdownEditor__toggleContainer\"\n {{style height=this.editorToggleContainerHeight}}\n >\n <EuiMarkdownEditorDropZone\n @uiPlugins={{this.toolbarPlugins}}\n {{resizeObserver onResize=this.onResize}}\n >\n <EuiMarkdownEditorTextArea\n {{getCursorNodeModifier this.vFile this.setSelectedNode}}\n {{didUpdate this.onParse this.parsed}}\n {{didInsert this.setTextAreaRef}}\n disabled={{@disabled}}\n id={{this.editorId}}\n @height={{this.textAreaHeight}}\n @maxHeight={{this.textAreaMaxHeight}}\n value={{@value}}\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-describedby={{@ariaDescribedBy}}\n {{on \"input\" (pick \"target.value\" @onChange)}}\n {{validatableControl @isInvalid}}\n ...attributes\n />\n </EuiMarkdownEditorDropZone>\n {{#if this.pluginEditorPlugin.editor}}\n <EuiModal @onClose={{set this \"pluginEditorPlugin\" undefined}}>\n {{#let (component this.pluginEditorPlugin.editor) as |Editor|}}\n <Editor\n @node={{this.selectedNode}}\n @onCancel={{set this \"pluginEditorPlugin\" undefined}}\n @onSave={{this.onEditorPluginSave}}\n />\n {{/let}}\n </EuiModal>\n {{/if}}\n </div>\n </div>\n </template>\n}\n"],"names":["getCursorNode","textareaRef","parsed","selectionStart","node","result","contents","outer","children","i","length","child","position","start","offset","end","type","wrapper","textarea","callback","getCursorNodeModifier","modifier","onSelectedNode","fn","bind","addEventListener","removeEventListener","isNewLine","char","match","padWithNewlinesIfNeeded","text","selectionEnd","isPrevNewLine","value","isPrevPrevNewLine","isNextNewLine","EuiMarkdownEditorComponent","Component","g","prototype","tracked","void 0","argOrDefaultDecorator","defaultParsingPlugins","defaultProcessingPlugins","args","editorId","guidFor","initialViewMode","MODE_EDITING","markdownActions","toolbarPlugins","MarkdownTooltipPlugin","uiPlugins","constructor","owner","MarkdownActions","currentHeight","height","previewHeight","editorFooterHeight","textAreaHeight","textAreaMaxHeight","maxHeight","editorToggleContainerHeight","editorToolbarHeight","onResize","isEditing","resizedTextareaHeight","offsetHeight","update","scheduleOnce","n","action","updateCurrentHeight","isPreviewing","autoExpandPreview","previewRef","scrollHeight","elementComputedStyle","window","getComputedStyle","borderWidth","parseFloat","borderTopWidth","borderBottomWidth","marginWidth","marginTop","marginBottom","extraHeight","setTextAreaRef","ref","setEditorToolbarRef","editorToolbarRef","replaceNode","next","leading","substr","trailing","onChange","viewMode","MODE_VIEWING","setViewMode","parser","Compiler","tree","identityCompiler","unified","use","parsingPluginList","cached","processSync","e","vFile","onParse","parseError","messages","ast","setSelectedNode","selectedNode","openPluginEditor","plugin","pluginEditorPlugin","onEditorPluginSave","markdown","config","name","setSelectionRange","block","insertText","undefined","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","didUpdate","EuiMarkdownEditorToolbar","didInsert","set","style","hash","EuiMarkdownFormat","EuiMarkdownEditorDropZone","resizeObserver","EuiMarkdownEditorTextArea","on","pick","validatableControl","EuiModal"],"mappings":"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"} | |
diff --git a/dist/components/eui-markdown-format.js b/dist/components/eui-markdown-format.js | |
index e9fd8e6cc9a217cceaaa170b1b27d27b175cda4c..4780c44eec5b2a8f29e73d9d2b2d3335fe444a5a 100644 | |
--- a/dist/components/eui-markdown-format.js | |
+++ b/dist/components/eui-markdown-format.js | |
@@ -2,7 +2,7 @@ import Component from '@glimmer/component'; | |
import { cached } from '@glimmer/tracking'; | |
import { isArray } from '@ember/array'; | |
import { EnsureSafeComponentHelper } from '@embroider/util'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import unified from 'unified'; | |
import { defaultParsingPlugins } from '../utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js'; | |
import { defaultProcessingPlugins } from '../utils/markdown/plugins/markdown-default-plugins/processing-plugins.js'; | |
diff --git a/dist/components/eui-markdown-format.js.map b/dist/components/eui-markdown-format.js.map | |
index 2a67a8d5b224483f84c4d890e87e90624f022899..696e8aa85a826f404ad6abb9bdce2e4e6fe9951f 100644 | |
--- a/dist/components/eui-markdown-format.js.map | |
+++ b/dist/components/eui-markdown-format.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-markdown-format.js","sources":["../../src/components/eui-markdown-format.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport unified from 'unified';\n\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport { toDOM } from '../utils/markdown/plugins/to-dom.ts';\n\nimport type {\n EuiMarkdownAstNodePosition,\n RehypeNode} from '../utils/markdown/markdown-types';\nimport type { Processor } from 'unified';\n\nexport type Replacer = (\n position: EuiMarkdownAstNodePosition,\n str: string\n) => void;\n\nexport interface EuiMarkdownFormatSignature {\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n replaceNode?: Replacer;\n value: string;\n //you can pass in a string or an array of strings to be added to the root element\n rootClasses?: string | string[];\n}\n\nexport default class EuiMarkdownEditorToolbarComponent extends Component<EuiMarkdownFormatSignature> {\n get parsingPluginList() {\n return this.args.parsingPluginList || defaultParsingPlugins;\n }\n\n get processingPluginList() {\n return this.args.processingPluginList || defaultProcessingPlugins;\n }\n\n @cached\n get processor() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified()\n .use(this.parsingPluginList)\n .use(this.processingPluginList)\n .use(identityCompiler);\n }\n\n get rootClasses(): string[] {\n let baseClasses = ['euiMarkdownFormat', 'euiText', 'euiText--medium'];\n\n if (this.args.rootClasses) {\n let rootClasses = isArray(this.args.rootClasses)\n ? this.args.rootClasses\n : (this.args.rootClasses as string)?.trim()?.split(' ') || [];\n\n baseClasses = baseClasses.concat(rootClasses);\n }\n\n return baseClasses;\n }\n\n @cached\n get result() {\n try {\n const processed = this.processor.processSync(this.args.value);\n\n return toDOM(processed['result'] as RehypeNode, {\n rootClasses: this.rootClasses\n });\n //eslint-disable-next-line\n } catch (e) {\n console.warn(e);\n }\n \n return null;\n }\n\n <template>\n {{! This hbs was inspired by https://github.com/ampatspell/ember-cli-remark-static/blob/v3.0.5/addon/components/remark.hbs }}\n {{#if this.result}}\n {{this.result.element}}\n {{#each this.result.components as |CompNode|}}\n {{#in-element CompNode.element}}\n {{#if CompNode.componentName}}\n {{#let\n (component (EnsureSafeComponentHelper CompNode.componentName))\n as |DynamicComponent|\n }}\n <DynamicComponent\n @replaceNode={{optional @replaceNode}}\n @node={{CompNode}}\n />\n {{/let}}\n {{/if}}\n {{/in-element}}\n {{/each}}\n {{/if}}\n </template>\n}\n"],"names":["EuiMarkdownEditorToolbarComponent","Component","parsingPluginList","args","defaultParsingPlugins","processingPluginList","defaultProcessingPlugins","processor","Compiler","tree","identityCompiler","unified","use","n","prototype","cached","rootClasses","baseClasses","isArray","trim","split","concat","result","processed","processSync","value","toDOM","e","console","warn","setComponentTemplate","precompileTemplate","strictMode","scope","EnsureSafeComponentHelper","optional"],"mappings":";;;;;;;;;;;;;;AAiCe,MAAMA,0CAA0CC,SAAU,CAAA;EACvE,IAAIC,iBAAoBA,GAAA;AACtB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAIE,qBAAA;AACxC;EAEA,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,oBAAoB,IAAIC,wBAAA;AAC3C;EAEA,IACIC,SAAYA,GAAA;IACd,MAAMC,QAAA,GAAYC,IAAS,IAAA;AACzB,MAAA,OAAOA,IAAA;KACT;IAEA,SAASC,gBAAAA,GAAgC;AACvC;MACA,IAAI,CAACF,QAAQ,GAAGA,QAAA;AAClB;IAEA,OAAOG,OACJ,EAAA,CAAAC,GAAG,CAAC,IAAI,CAACV,iBAAiB,CAAA,CAC1BU,GAAG,CAAC,IAAI,CAACP,oBAAoB,CAAA,CAC7BO,GAAG,CAACF,gBAAA,CAAA;AACT;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAfCC,MAAA,CAAA,CAAA;AAAA;EAiBD,IAAIC,WAAAA,GAAwB;IAC1B,IAAIC,WAAc,GAAA,CAAC,mBAAA,EAAqB,SAAA,EAAW,iBAAA,CAAkB;AAErE,IAAA,IAAI,IAAI,CAACd,IAAI,CAACa,WAAW,EAAE;AACzB,MAAA,IAAIA,WAAA,GAAcE,OAAQ,CAAA,IAAI,CAACf,IAAI,CAACa,WAAW,CAC3C,GAAA,IAAI,CAACb,IAAI,CAACa,WAAW,GACpB,IAAI,CAACb,IAAI,CAACa,WAAW,EAAaG,IAAA,EAAA,EAAQC,KAAM,CAAA,GAAA,CAAA,IAAQ,EAAE;AAE/DH,MAAAA,WAAc,GAAAA,WAAA,CAAYI,MAAM,CAACL,WAAA,CAAA;AACnC;AAEA,IAAA,OAAOC,WAAA;AACT;EAEA,IACIK,MAASA,GAAA;IACX,IAAI;AACF,MAAA,MAAMC,SAAA,GAAY,IAAI,CAAChB,SAAS,CAACiB,WAAW,CAAC,IAAI,CAACrB,IAAI,CAACsB,KAAK,CAAA;AAE5D,MAAA,OAAOC,KAAM,CAAAH,SAAS,CAAC,QAAA,CAAS,EAAgB;QAC9CP,WAAa,EAAA,IAAI,CAACA;AACpB,OAAA,CAAA;AACA;KACF,CAAE,OAAOW,CAAG,EAAA;AACVC,MAAAA,OAAA,CAAQC,IAAI,CAACF,CAAA,CAAA;AACf;AAEA,IAAA,OAAO,IAAA;AACT;AAAA,EAAA;IAAAd,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAdCC,MAAA,CAAA,CAAA;AAAA;AAgBD,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CAoBA,wnBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,yBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-markdown-format.js","sources":["../../src/components/eui-markdown-format.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport unified from 'unified';\n\nimport {\n defaultParsingPlugins,\n defaultProcessingPlugins\n} from '../utils/markdown/plugins/markdown-default-plugins/index.ts';\nimport { toDOM } from '../utils/markdown/plugins/to-dom.ts';\n\nimport type {\n EuiMarkdownAstNodePosition,\n RehypeNode} from '../utils/markdown/markdown-types';\nimport type { Processor } from 'unified';\n\nexport type Replacer = (\n position: EuiMarkdownAstNodePosition,\n str: string\n) => void;\n\nexport interface EuiMarkdownFormatSignature {\n parsingPluginList?: typeof defaultParsingPlugins;\n processingPluginList?: typeof defaultProcessingPlugins;\n replaceNode?: Replacer;\n value: string;\n //you can pass in a string or an array of strings to be added to the root element\n rootClasses?: string | string[];\n}\n\nexport default class EuiMarkdownEditorToolbarComponent extends Component<EuiMarkdownFormatSignature> {\n get parsingPluginList() {\n return this.args.parsingPluginList || defaultParsingPlugins;\n }\n\n get processingPluginList() {\n return this.args.processingPluginList || defaultProcessingPlugins;\n }\n\n @cached\n get processor() {\n const Compiler = (tree: any) => {\n return tree;\n };\n\n function identityCompiler(this: Processor) {\n //eslint-disable-next-line\n this.Compiler = Compiler;\n }\n\n return unified()\n .use(this.parsingPluginList)\n .use(this.processingPluginList)\n .use(identityCompiler);\n }\n\n get rootClasses(): string[] {\n let baseClasses = ['euiMarkdownFormat', 'euiText', 'euiText--medium'];\n\n if (this.args.rootClasses) {\n let rootClasses = isArray(this.args.rootClasses)\n ? this.args.rootClasses\n : (this.args.rootClasses as string)?.trim()?.split(' ') || [];\n\n baseClasses = baseClasses.concat(rootClasses);\n }\n\n return baseClasses;\n }\n\n @cached\n get result() {\n try {\n const processed = this.processor.processSync(this.args.value);\n\n return toDOM(processed['result'] as RehypeNode, {\n rootClasses: this.rootClasses\n });\n //eslint-disable-next-line\n } catch (e) {\n console.warn(e);\n }\n \n return null;\n }\n\n <template>\n {{! This hbs was inspired by https://github.com/ampatspell/ember-cli-remark-static/blob/v3.0.5/addon/components/remark.hbs }}\n {{#if this.result}}\n {{this.result.element}}\n {{#each this.result.components as |CompNode|}}\n {{#in-element CompNode.element}}\n {{#if CompNode.componentName}}\n {{#let\n (component (EnsureSafeComponentHelper CompNode.componentName))\n as |DynamicComponent|\n }}\n <DynamicComponent\n @replaceNode={{optional @replaceNode}}\n @node={{CompNode}}\n />\n {{/let}}\n {{/if}}\n {{/in-element}}\n {{/each}}\n {{/if}}\n </template>\n}\n"],"names":["EuiMarkdownEditorToolbarComponent","Component","parsingPluginList","args","defaultParsingPlugins","processingPluginList","defaultProcessingPlugins","processor","Compiler","tree","identityCompiler","unified","use","n","prototype","cached","rootClasses","baseClasses","isArray","trim","split","concat","result","processed","processSync","value","toDOM","e","console","warn","setComponentTemplate","precompileTemplate","strictMode","scope","EnsureSafeComponentHelper","optional"],"mappings":";;;;;;;;;;;;;;AAiCe,MAAMA,0CAA0CC,SAAU,CAAA;EACvE,IAAIC,iBAAoBA,GAAA;AACtB,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAIE,qBAAA;AACxC;EAEA,IAAIC,oBAAuBA,GAAA;AACzB,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,oBAAoB,IAAIC,wBAAA;AAC3C;EAEA,IACIC,SAAYA,GAAA;IACd,MAAMC,QAAA,GAAYC,IAAS,IAAA;AACzB,MAAA,OAAOA,IAAA;KACT;IAEA,SAASC,gBAAAA,GAAgC;AACvC;MACA,IAAI,CAACF,QAAQ,GAAGA,QAAA;AAClB;IAEA,OAAOG,OACJ,EAAA,CAAAC,GAAG,CAAC,IAAI,CAACV,iBAAiB,CAAA,CAC1BU,GAAG,CAAC,IAAI,CAACP,oBAAoB,CAAA,CAC7BO,GAAG,CAACF,gBAAA,CAAA;AACT;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAfCC,MAAA,CAAA,CAAA;AAAA;EAiBD,IAAIC,WAAAA,GAAwB;IAC1B,IAAIC,WAAc,GAAA,CAAC,mBAAA,EAAqB,SAAA,EAAW,iBAAA,CAAkB;AAErE,IAAA,IAAI,IAAI,CAACd,IAAI,CAACa,WAAW,EAAE;AACzB,MAAA,IAAIA,WAAA,GAAcE,OAAQ,CAAA,IAAI,CAACf,IAAI,CAACa,WAAW,CAC3C,GAAA,IAAI,CAACb,IAAI,CAACa,WAAW,GACpB,IAAI,CAACb,IAAI,CAACa,WAAW,EAAaG,IAAA,EAAA,EAAQC,KAAM,CAAA,GAAA,CAAA,IAAQ,EAAE;AAE/DH,MAAAA,WAAc,GAAAA,WAAA,CAAYI,MAAM,CAACL,WAAA,CAAA;AACnC;AAEA,IAAA,OAAOC,WAAA;AACT;EAEA,IACIK,MAASA,GAAA;IACX,IAAI;AACF,MAAA,MAAMC,SAAA,GAAY,IAAI,CAAChB,SAAS,CAACiB,WAAW,CAAC,IAAI,CAACrB,IAAI,CAACsB,KAAK,CAAA;AAE5D,MAAA,OAAOC,KAAM,CAAAH,SAAS,CAAC,QAAA,CAAS,EAAgB;QAC9CP,WAAa,EAAA,IAAI,CAACA;AACpB,OAAA,CAAA;AACA;KACF,CAAE,OAAOW,CAAG,EAAA;AACVC,MAAAA,OAAA,CAAQC,IAAI,CAACF,CAAA,CAAA;AACf;AAEA,IAAA,OAAO,IAAA;AACT;AAAA,EAAA;IAAAd,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAdCC,MAAA,CAAA,CAAA;AAAA;AAgBD,EAAA;IAAAe,oBAAA,CAAAC,kBAAA,CAoBA,wnBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,yBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-modal.js b/dist/components/eui-modal.js | |
index 374448447e75d879129ad3100b520c9d96b3ba32..58e0a40d09b1d6c0225d71f30370549d9f7f11cf 100644 | |
--- a/dist/components/eui-modal.js | |
+++ b/dist/components/eui-modal.js | |
@@ -1,6 +1,6 @@ | |
import { hash } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import preventDefault from 'ember-event-helpers/helpers/prevent-default'; | |
import stopPropagation from 'ember-event-helpers/helpers/stop-propagation'; | |
import { focusTrap } from 'ember-focus-trap'; | |
diff --git a/dist/components/eui-modal.js.map b/dist/components/eui-modal.js.map | |
index ad5826f13b4fe3326574f38df695d0f784a51beb..f4b5bf96fc48e91f3fddbbd7d92b146972564bd3 100644 | |
--- a/dist/components/eui-modal.js.map | |
+++ b/dist/components/eui-modal.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-modal.js","sources":["../../src/components/eui-modal.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport preventDefault from 'ember-event-helpers/helpers/prevent-default';\nimport stopPropagation from 'ember-event-helpers/helpers/stop-propagation';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiOverlayMask from './eui-overlay-mask.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiModalSignature {\n Element: HTMLDivElement;\n Args: {\n onClose?: (e: Event) => void;\n maxWidth?: boolean | string;\n clickOutsideToClose?: boolean;\n isFocusTrapActive?: boolean;\n shouldSelfFocus?: boolean;\n isFocusTrapPaused?: boolean;\n focusTrapOptions?: {\n allowOutsideClick?: boolean;\n clickOutsideDeactivates?: boolean;\n initialFocus?: string | HTMLElement | (() => HTMLElement);\n fallbackFocus?: string | HTMLElement | (() => HTMLElement);\n escapeDeactivates?: boolean;\n returnFocusOnDeactivate?: boolean;\n preventScroll?: boolean;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiModal: TemplateOnlyComponent<EuiModalSignature> = <template>\n {{#let\n (if\n (and @maxWidth (notEq @maxWidth true))\n (inlineStyles\n componentName=\"EuiModal\" componentArgs=(hash maxWidth=@maxWidth)\n )\n (hash)\n )\n as |inlineStyles|\n }}\n <EuiOverlayMask\n @onClick={{if @clickOutsideToClose (optional @onClose) (optional)}}\n >\n <div\n class={{classNames\n \"euiModal\"\n (if (eq @maxWidth true) \"euiModal--maxWidth-default\")\n }}\n tabindex=\"0\"\n ...attributes\n {{style inlineStyles}}\n {{focusTrap\n isActive=(argOrDefault @isFocusTrapActive true)\n shouldSelfFocus=(argOrDefault @shouldSelfFocus true)\n isPaused=(argOrDefault @isFocusTrapPaused false)\n focusTrapOptions=(argOrDefault @focusTrapOptions (hash))\n }}\n {{onKey\n \"Escape\"\n (preventDefault (stopPropagation (optional @onClose)))\n }}\n >\n <EuiButtonIcon\n class=\"euiModal__closeIcon\"\n @iconType=\"cross\"\n @color=\"text\"\n {{on \"click\" (optional @onClose)}}\n />\n <div class=\"euiModal__flex\">\n {{yield}}\n </div>\n </div>\n </EuiOverlayMask>\n {{/let}}\n</template>;\n\nexport default EuiModal;\n"],"names":["EuiModal","setComponentTemplate","precompileTemplate","strictMode","scope","and","notEq","inlineStyles","hash","EuiOverlayMask","optional","classNames","eq","style","focusTrap","argOrDefault","onKey","preventDefault","stopPropagation","EuiButtonIcon","on","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA6C3D,q8BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,KAAA;IAAAC,YAAA;IAAAC,IAAA;oBAAAC,uBAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,KAAA;IAAAC,SAAA;IAAAC,YAAA;IAAAC,KAAA;IAAAC,cAAA;IAAAC,eAAA;IAAAC,aAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-modal.js","sources":["../../src/components/eui-modal.gts"],"sourcesContent":["import { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport preventDefault from 'ember-event-helpers/helpers/prevent-default';\nimport stopPropagation from 'ember-event-helpers/helpers/stop-propagation';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, notEq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiOverlayMask from './eui-overlay-mask.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiModalSignature {\n Element: HTMLDivElement;\n Args: {\n onClose?: (e: Event) => void;\n maxWidth?: boolean | string;\n clickOutsideToClose?: boolean;\n isFocusTrapActive?: boolean;\n shouldSelfFocus?: boolean;\n isFocusTrapPaused?: boolean;\n focusTrapOptions?: {\n allowOutsideClick?: boolean;\n clickOutsideDeactivates?: boolean;\n initialFocus?: string | HTMLElement | (() => HTMLElement);\n fallbackFocus?: string | HTMLElement | (() => HTMLElement);\n escapeDeactivates?: boolean;\n returnFocusOnDeactivate?: boolean;\n preventScroll?: boolean;\n };\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiModal: TemplateOnlyComponent<EuiModalSignature> = <template>\n {{#let\n (if\n (and @maxWidth (notEq @maxWidth true))\n (inlineStyles\n componentName=\"EuiModal\" componentArgs=(hash maxWidth=@maxWidth)\n )\n (hash)\n )\n as |inlineStyles|\n }}\n <EuiOverlayMask\n @onClick={{if @clickOutsideToClose (optional @onClose) (optional)}}\n >\n <div\n class={{classNames\n \"euiModal\"\n (if (eq @maxWidth true) \"euiModal--maxWidth-default\")\n }}\n tabindex=\"0\"\n ...attributes\n {{style inlineStyles}}\n {{focusTrap\n isActive=(argOrDefault @isFocusTrapActive true)\n shouldSelfFocus=(argOrDefault @shouldSelfFocus true)\n isPaused=(argOrDefault @isFocusTrapPaused false)\n focusTrapOptions=(argOrDefault @focusTrapOptions (hash))\n }}\n {{onKey\n \"Escape\"\n (preventDefault (stopPropagation (optional @onClose)))\n }}\n >\n <EuiButtonIcon\n class=\"euiModal__closeIcon\"\n @iconType=\"cross\"\n @color=\"text\"\n {{on \"click\" (optional @onClose)}}\n />\n <div class=\"euiModal__flex\">\n {{yield}}\n </div>\n </div>\n </EuiOverlayMask>\n {{/let}}\n</template>;\n\nexport default EuiModal;\n"],"names":["EuiModal","setComponentTemplate","precompileTemplate","strictMode","scope","and","notEq","inlineStyles","hash","EuiOverlayMask","optional","classNames","eq","style","focusTrap","argOrDefault","onKey","preventDefault","stopPropagation","EuiButtonIcon","on","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA6C3D,q8BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,KAAA;IAAAC,YAAA;IAAAC,IAAA;oBAAAC,uBAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,KAAA;IAAAC,SAAA;IAAAC,YAAA;IAAAC,KAAA;IAAAC,cAAA;IAAAC,eAAA;IAAAC,aAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-notification-event-messages.js b/dist/components/eui-notification-event-messages.js | |
index 655bfc7baf625bc3e4227c18274e4c42aeb008b2..87e5ea79fb71933d64ffa4486cef5d0678ab37af 100644 | |
--- a/dist/components/eui-notification-event-messages.js | |
+++ b/dist/components/eui-notification-event-messages.js | |
@@ -1,6 +1,6 @@ | |
import { concat } from '@ember/helper'; | |
-import objectAt from 'ember-composable-helpers/helpers/object-at'; | |
-import without from 'ember-composable-helpers/helpers/without'; | |
+import objectAt from '@nullvoxpopuli/ember-composable-helpers/helpers/object-at'; | |
+import without from '@nullvoxpopuli/ember-composable-helpers/helpers/without'; | |
import randomId from '../-private/random-id.js'; | |
import EuiAccordionAccordionComponent from './eui-accordion.js'; | |
import EuiTextComponent from './eui-text.js'; | |
diff --git a/dist/components/eui-notification-event-messages.js.map b/dist/components/eui-notification-event-messages.js.map | |
index d8ceee445c1e8ee8d1637aa42cb003f33f8ea939..a15da512b3951dc52de14d924e814b66a7563b76 100644 | |
--- a/dist/components/eui-notification-event-messages.js.map | |
+++ b/dist/components/eui-notification-event-messages.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-notification-event-messages.js","sources":["../../src/components/eui-notification-event-messages.gts"],"sourcesContent":["import { concat } from '@ember/helper';\n\nimport objectAt from 'ember-composable-helpers/helpers/object-at';\nimport without from 'ember-composable-helpers/helpers/without';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiAccordion from './eui-accordion.gts';\nimport EuiText from './eui-text.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventMessagesSignature {\n Element: HTMLDivElement;\n Args: {\n messages: string[];\n accordionButtonText?: string;\n accordionHideText?: string;\n accordionAriaLabelButtonText?: string;\n };\n}\n\nconst EuiNotificationEventMessages: TemplateOnlyComponent<EuiNotificationEventMessagesSignature> =\n <template>\n <div class=\"euiNotificationEventMessages\" ...attributes>\n {{#let\n (objectAt 0 @messages) (without (objectAt 0 @messages) @messages)\n as |first rest|\n }}\n\n {{#if first}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{first}}</p>\n </EuiText>\n {{/if}}\n\n {{#if rest}}\n\n <EuiAccordion\n id={{concat \"euiNotificationEventMessagesAccordion\" (randomId)}}\n class=\"euiNotificationEventMessages__accordion\"\n @buttonClassName=\"euiNotificationEventMessages__accordionButton\"\n @arrowDisplay=\"none\"\n >\n <:buttonContent as |isOpen|>\n {{@accordionButtonText}}\n {{#unless isOpen}}\n ({{@accordionHideText}})\n {{/unless}}\n </:buttonContent>\n\n <:content>\n <div class=\"euiNotificationEventMessages__accordionContent\">\n {{#each rest as |msg|}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{msg}}</p>\n </EuiText>\n {{/each}}\n </div>\n </:content>\n\n </EuiAccordion>\n {{/if}}\n\n {{/let}}\n </div>\n </template>;\n\nexport default EuiNotificationEventMessages;\n"],"names":["EuiNotificationEventMessages","setComponentTemplate","precompileTemplate","strictMode","scope","objectAt","without","EuiText","EuiAccordion","concat","randomId","templateOnly"],"mappings":";;;;;;;;;;AAqBA,MAAMA,4BACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,0rCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;aAAAC,gBAAA;kBAAAC,8BAAA;IAAAC,MAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-notification-event-messages.js","sources":["../../src/components/eui-notification-event-messages.gts"],"sourcesContent":["import { concat } from '@ember/helper';\n\nimport objectAt from '@nullvoxpopuli/ember-composable-helpers/helpers/object-at';\nimport without from '@nullvoxpopuli/ember-composable-helpers/helpers/without';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiAccordion from './eui-accordion.gts';\nimport EuiText from './eui-text.gts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventMessagesSignature {\n Element: HTMLDivElement;\n Args: {\n messages: string[];\n accordionButtonText?: string;\n accordionHideText?: string;\n accordionAriaLabelButtonText?: string;\n };\n}\n\nconst EuiNotificationEventMessages: TemplateOnlyComponent<EuiNotificationEventMessagesSignature> =\n <template>\n <div class=\"euiNotificationEventMessages\" ...attributes>\n {{#let\n (objectAt 0 @messages) (without (objectAt 0 @messages) @messages)\n as |first rest|\n }}\n\n {{#if first}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{first}}</p>\n </EuiText>\n {{/if}}\n\n {{#if rest}}\n\n <EuiAccordion\n id={{concat \"euiNotificationEventMessagesAccordion\" (randomId)}}\n class=\"euiNotificationEventMessages__accordion\"\n @buttonClassName=\"euiNotificationEventMessages__accordionButton\"\n @arrowDisplay=\"none\"\n >\n <:buttonContent as |isOpen|>\n {{@accordionButtonText}}\n {{#unless isOpen}}\n ({{@accordionHideText}})\n {{/unless}}\n </:buttonContent>\n\n <:content>\n <div class=\"euiNotificationEventMessages__accordionContent\">\n {{#each rest as |msg|}}\n <EuiText @size=\"s\" @color=\"subdued\">\n <p>{{msg}}</p>\n </EuiText>\n {{/each}}\n </div>\n </:content>\n\n </EuiAccordion>\n {{/if}}\n\n {{/let}}\n </div>\n </template>;\n\nexport default EuiNotificationEventMessages;\n"],"names":["EuiNotificationEventMessages","setComponentTemplate","precompileTemplate","strictMode","scope","objectAt","without","EuiText","EuiAccordion","concat","randomId","templateOnly"],"mappings":";;;;;;;;;;AAqBA,MAAMA,4BACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,0rCAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;aAAAC,gBAAA;kBAAAC,8BAAA;IAAAC,MAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-notification-event-meta.js b/dist/components/eui-notification-event-meta.js | |
index 1f1bd73b2fefb079e79595997edafe78a692c720..1dcd9efb479cc242b2fcbe1f2841e28438a2e432 100644 | |
--- a/dist/components/eui-notification-event-meta.js | |
+++ b/dist/components/eui-notification-event-meta.js | |
@@ -1,7 +1,7 @@ | |
import { concat, fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
-import queue from 'ember-composable-helpers/helpers/queue'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
+import queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue'; | |
import { and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-notification-event-meta.js.map b/dist/components/eui-notification-event-meta.js.map | |
index e4e108f910ce203e28cd02c2b97cd7514c141e60..7e8fa024ba9c1bdbfb3dac961b907f691dc21052 100644 | |
--- a/dist/components/eui-notification-event-meta.js.map | |
+++ b/dist/components/eui-notification-event-meta.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-notification-event-meta.js","sources":["../../src/components/eui-notification-event-meta.gts"],"sourcesContent":["import { concat } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport queue from 'ember-composable-helpers/helpers/queue';\nimport { and } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport EuiBadge from './eui-badge.gts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: HTMLDivElement;\n Args: {\n id?: string;\n time?: string;\n type?: string;\n severity?: string;\n iconType?: EuiIconSignature['Args']['type'];\n iconColor?: EuiIconSignature['Args']['color'];\n iconAriaLabel?: EuiIconSignature['Args']['aria-label'];\n badgeColor?: EuiBadgeSignature['Args']['color'];\n hasDefaultBlock?: boolean;\n onOpenContextMenu?: (e: MouseEvent) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (and (argOrDefault @hasDefaultBlock true) (has-block))\n as |hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiNotificationEventMeta\"\n (if hasDefaultBlock \"euiNotificationEventMeta--hasContextMenu\")\n }}\n ...attributes\n >\n <div class=\"euiNotificationEventMeta__section\">\n\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiNotificationEventMeta__icon\"\n @type={{@iconType}}\n @color={{@iconColor}}\n {{! TODO only add one of the following html attributes }}\n aria-label={{@iconAriaLabel}}\n aria-hidden={{if @iconAriaLabel false true}}\n />\n {{/if}}\n\n {{#if @type}}\n <EuiBadge\n class=\"euiNotificationEventMeta__badge\"\n @color={{@badgeColor}}\n >\n {{#if @severity}}\n {{@type}}:\n {{@severity}}\n {{else}}\n {{@type}}\n {{/if}}\n </EuiBadge>\n {{/if}}\n\n </div>\n\n <div class=\"euiNotificationEventMeta__section\">\n <span class=\"euiNotificationEventMeta__time\">{{@time}}</span>\n </div>\n\n {{#if hasDefaultBlock}}\n {{#let\n (randomId) (useState false)\n as |randomPopoverId isPopoverOpen|\n }}\n <div class=\"euiNotificationEventMeta__contextMenuWrapper\">\n <EuiPopover\n id={{randomPopoverId}}\n @ownFocus={{true}}\n @repositionOnScroll={{true}}\n @isOpen={{isPopoverOpen.value}}\n @panelPaddingSize=\"none\"\n @anchorPosition=\"leftUp\"\n @closePopover={{fn isPopoverOpen.setState false}}\n >\n\n <:button>\n <EuiButtonIcon\n {{! aria-label={contextMenuButton} }}\n aria-controls={{randomPopoverId}}\n aria-expanded={{isPopoverOpen.value}}\n aria-haspopup=\"true\"\n @iconType=\"boxesVertical\"\n @color=\"text\"\n data-test-subj={{concat @id \"-notificationEventMetaButton\"}}\n {{on\n \"click\"\n (if\n isPopoverOpen.value\n (fn isPopoverOpen.setState false)\n (fn isPopoverOpen.setState true)\n )\n }}\n />\n </:button>\n\n {{! The EuiContextMenu is wrapped with a div so it closes after an item is clicked }}\n <:content>\n <div\n {{on\n \"click\"\n (queue\n (optional @onOpenContextMenu)\n (fn isPopoverOpen.setState false)\n )\n }}\n role=\"button\"\n >\n {{yield}}\n </div>\n </:content>\n\n </EuiPopover>\n </div>\n {{/let}}\n {{/if}}\n\n </div>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","classNames","EuiIcon","EuiBadge","randomId","useState","EuiPopover","fn","EuiButtonIcon","concat","on","queue","optional","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAwGA,y4EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,QAAA;gBAAAC,mBAAA;IAAAC,EAAA;IAAAC,aAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,KAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-notification-event-meta.js","sources":["../../src/components/eui-notification-event-meta.gts"],"sourcesContent":["import { concat } from '@ember/helper';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport { and } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport useState from '../helpers/use-state.ts';\nimport EuiBadge from './eui-badge.gts';\nimport EuiButtonIcon from './eui-button-icon.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiPopover from './eui-popover.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: HTMLDivElement;\n Args: {\n id?: string;\n time?: string;\n type?: string;\n severity?: string;\n iconType?: EuiIconSignature['Args']['type'];\n iconColor?: EuiIconSignature['Args']['color'];\n iconAriaLabel?: EuiIconSignature['Args']['aria-label'];\n badgeColor?: EuiBadgeSignature['Args']['color'];\n hasDefaultBlock?: boolean;\n onOpenContextMenu?: (e: MouseEvent) => void;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (and (argOrDefault @hasDefaultBlock true) (has-block))\n as |hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiNotificationEventMeta\"\n (if hasDefaultBlock \"euiNotificationEventMeta--hasContextMenu\")\n }}\n ...attributes\n >\n <div class=\"euiNotificationEventMeta__section\">\n\n {{#if @iconType}}\n <EuiIcon\n @iconClasses=\"euiNotificationEventMeta__icon\"\n @type={{@iconType}}\n @color={{@iconColor}}\n {{! TODO only add one of the following html attributes }}\n aria-label={{@iconAriaLabel}}\n aria-hidden={{if @iconAriaLabel false true}}\n />\n {{/if}}\n\n {{#if @type}}\n <EuiBadge\n class=\"euiNotificationEventMeta__badge\"\n @color={{@badgeColor}}\n >\n {{#if @severity}}\n {{@type}}:\n {{@severity}}\n {{else}}\n {{@type}}\n {{/if}}\n </EuiBadge>\n {{/if}}\n\n </div>\n\n <div class=\"euiNotificationEventMeta__section\">\n <span class=\"euiNotificationEventMeta__time\">{{@time}}</span>\n </div>\n\n {{#if hasDefaultBlock}}\n {{#let\n (randomId) (useState false)\n as |randomPopoverId isPopoverOpen|\n }}\n <div class=\"euiNotificationEventMeta__contextMenuWrapper\">\n <EuiPopover\n id={{randomPopoverId}}\n @ownFocus={{true}}\n @repositionOnScroll={{true}}\n @isOpen={{isPopoverOpen.value}}\n @panelPaddingSize=\"none\"\n @anchorPosition=\"leftUp\"\n @closePopover={{fn isPopoverOpen.setState false}}\n >\n\n <:button>\n <EuiButtonIcon\n {{! aria-label={contextMenuButton} }}\n aria-controls={{randomPopoverId}}\n aria-expanded={{isPopoverOpen.value}}\n aria-haspopup=\"true\"\n @iconType=\"boxesVertical\"\n @color=\"text\"\n data-test-subj={{concat @id \"-notificationEventMetaButton\"}}\n {{on\n \"click\"\n (if\n isPopoverOpen.value\n (fn isPopoverOpen.setState false)\n (fn isPopoverOpen.setState true)\n )\n }}\n />\n </:button>\n\n {{! The EuiContextMenu is wrapped with a div so it closes after an item is clicked }}\n <:content>\n <div\n {{on\n \"click\"\n (queue\n (optional @onOpenContextMenu)\n (fn isPopoverOpen.setState false)\n )\n }}\n role=\"button\"\n >\n {{yield}}\n </div>\n </:content>\n\n </EuiPopover>\n </div>\n {{/let}}\n {{/if}}\n\n </div>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","classNames","EuiIcon","EuiBadge","randomId","useState","EuiPopover","fn","EuiButtonIcon","concat","on","queue","optional","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;AAwCA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAwGA,y4EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,QAAA;gBAAAC,mBAAA;IAAAC,EAAA;IAAAC,aAAA;IAAAC,MAAA;IAAAC,EAAA;IAAAC,KAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-notification-event.js b/dist/components/eui-notification-event.js | |
index 58be519e63b072cb74611811d5bd47bd98acd2ab..729885c7bb03fc5b1c2f53d21dfb57bac198b081 100644 | |
--- a/dist/components/eui-notification-event.js | |
+++ b/dist/components/eui-notification-event.js | |
@@ -1,5 +1,5 @@ | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { element } from 'ember-element-helper'; | |
import { or, eq, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
diff --git a/dist/components/eui-notification-event.js.map b/dist/components/eui-notification-event.js.map | |
index a2a66c3070f65404f209da589c1b3baffe86a776..7bde3f278f5d55a80703f4c9895482d74e301b8f 100644 | |
--- a/dist/components/eui-notification-event.js.map | |
+++ b/dist/components/eui-notification-event.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-notification-event.js","sources":["../../src/components/eui-notification-event.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport typeOf from '../helpers/type-of.ts';\nimport EuiLink from './eui-link.gts';\nimport EuiNotificationEventMessages from './eui-notification-event-messages.gts';\nimport EuiNotificationEventMeta from './eui-notification-event-meta.gts';\nimport EuiNotificationEventReadButton from './eui-notification-event-read-button.gts';\nimport EuiNotificationEventReadIcon from './eui-notification-event-read-icon.gts';\nimport TextBlock from './text-block.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiNotificationEventMessagesSignature } from './eui-notification-event-messages';\nimport type { TextBlockSignature } from './text-block';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: any;\n Args: {\n id?: string;\n tagName?: string;\n hasContextMenuBlock?: boolean;\n hasPrimaryActionBlock?: boolean;\n isRead?: boolean;\n href?: string;\n onClickTitle?: (event: MouseEvent) => void;\n onRead?: (event: MouseEvent) => void;\n onOpenContextMenu?: (event: MouseEvent) => void;\n title?: string;\n type?: string;\n severity?: string;\n badgeColor?: EuiBadgeSignature['Args']['color'];\n iconType?: EuiIconSignature['Args']['type'];\n iconAriaLabel?: string;\n time?: string;\n iconColor?: string;\n readIconColor?: string;\n headingLevel?: TextBlockSignature['Args']['tagName'];\n messages: EuiNotificationEventMessagesSignature['Args']['messages'];\n accordionButtonText?: EuiNotificationEventMessagesSignature['Args']['accordionButtonText'];\n accordionHideText?: EuiNotificationEventMessagesSignature['Args']['accordionHideText'];\n };\n Blocks: {\n default: [];\n contextMenu: [];\n primaryAction: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (randomId)\n (element (argOrDefault @tagName \"article\"))\n (and (argOrDefault @hasContextMenuBlock true) (has-block \"contextMenu\"))\n (and\n (argOrDefault @hasPrimaryActionBlock true) (has-block \"primaryAction\")\n )\n as |id Element hasContextMenuBlock hasPrimaryActionBlock|\n }}\n <Element\n aria-labelledby={{id}}\n key={{@id}}\n class={{classNames\n \"euiNotificationEvent\"\n (if\n (eq (typeOf @isRead) \"boolean\")\n \"euiNotificationEvent--withReadState\"\n )\n }}\n ...attributes\n >\n\n {{#if (eq (typeOf @isRead) \"boolean\")}}\n <div class=\"euiNotificationEvent__readButton\">\n {{#if @onRead}}\n <EuiNotificationEventReadButton\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n {{on \"click\" @onRead}}\n />\n {{else}}\n <EuiNotificationEventReadIcon\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n @readIconColor={{@readIconColor}}\n />\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"euiNotificationEvent__content\">\n <EuiNotificationEventMeta\n @id={{@id}}\n @type={{@type}}\n @severity={{@severity}}\n @badgeColor={{@badgeColor}}\n @iconType={{@iconType}}\n @iconAriaLabel={{@iconAriaLabel}}\n @time={{@time}}\n @onOpenContextMenu={{@onOpenContextMenu}}\n @hasDefaultBlock={{hasContextMenuBlock}}\n @iconColor={{@iconColor}}\n >\n {{yield to=\"contextMenu\"}}\n </EuiNotificationEventMeta>\n\n {{#let\n (classNames\n \"euiNotificationEvent__title\"\n (if @isRead \"euiNotificationEvent__title--isRead\")\n )\n (argOrDefault @headingLevel \"h2\")\n as |classNames headingLevel|\n }}\n {{#if (or @href @onClickTitle)}}\n <EuiLink\n class={{classNames}}\n id={{id}}\n @href={{@href}}\n {{on \"click\" (optional @onClickTitle)}}\n >\n <TextBlock @tagName={{headingLevel}}>\n {{@title}}\n </TextBlock>\n </EuiLink>\n {{else if @title}}\n <TextBlock\n id={{id}}\n class={{classNames}}\n @tagName={{headingLevel}}\n >\n {{@title}}\n </TextBlock>\n {{/if}}\n {{/let}}\n\n <EuiNotificationEventMessages\n @messages={{@messages}}\n @accordionButtonText={{@accordionButtonText}}\n @accordionHideText={{@accordionHideText}}\n />\n\n {{#if hasPrimaryActionBlock}}\n <div class=\"euiNotificationEvent__primaryAction\">\n {{yield to=\"primaryAction\"}}\n </div>\n {{/if}}\n\n </div>\n\n </Element>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","element","argOrDefault","and","classNames","eq","typeOf","EuiNotificationEventReadButton","on","EuiNotificationEventReadIcon","EuiNotificationEventMeta","or","EuiLink","optional","TextBlock","EuiNotificationEventMessages","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AAwDA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyGA,08EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,MAAA;IAAAC,8BAAA;IAAAC,EAAA;IAAAC,4BAAA;8BAAAC,sBAAA;IAAAC,EAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-notification-event.js","sources":["../../src/components/eui-notification-event.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport typeOf from '../helpers/type-of.ts';\nimport EuiLink from './eui-link.gts';\nimport EuiNotificationEventMessages from './eui-notification-event-messages.gts';\nimport EuiNotificationEventMeta from './eui-notification-event-meta.gts';\nimport EuiNotificationEventReadButton from './eui-notification-event-read-button.gts';\nimport EuiNotificationEventReadIcon from './eui-notification-event-read-icon.gts';\nimport TextBlock from './text-block.gts';\n\nimport type { EuiBadgeSignature } from './eui-badge';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { EuiNotificationEventMessagesSignature } from './eui-notification-event-messages';\nimport type { TextBlockSignature } from './text-block';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiNotificationEventSignature {\n Element: any;\n Args: {\n id?: string;\n tagName?: string;\n hasContextMenuBlock?: boolean;\n hasPrimaryActionBlock?: boolean;\n isRead?: boolean;\n href?: string;\n onClickTitle?: (event: MouseEvent) => void;\n onRead?: (event: MouseEvent) => void;\n onOpenContextMenu?: (event: MouseEvent) => void;\n title?: string;\n type?: string;\n severity?: string;\n badgeColor?: EuiBadgeSignature['Args']['color'];\n iconType?: EuiIconSignature['Args']['type'];\n iconAriaLabel?: string;\n time?: string;\n iconColor?: string;\n readIconColor?: string;\n headingLevel?: TextBlockSignature['Args']['tagName'];\n messages: EuiNotificationEventMessagesSignature['Args']['messages'];\n accordionButtonText?: EuiNotificationEventMessagesSignature['Args']['accordionButtonText'];\n accordionHideText?: EuiNotificationEventMessagesSignature['Args']['accordionHideText'];\n };\n Blocks: {\n default: [];\n contextMenu: [];\n primaryAction: [];\n };\n}\n\nconst EuiNotificationEvent: TemplateOnlyComponent<EuiNotificationEventSignature> =\n <template>\n {{#let\n (randomId)\n (element (argOrDefault @tagName \"article\"))\n (and (argOrDefault @hasContextMenuBlock true) (has-block \"contextMenu\"))\n (and\n (argOrDefault @hasPrimaryActionBlock true) (has-block \"primaryAction\")\n )\n as |id Element hasContextMenuBlock hasPrimaryActionBlock|\n }}\n <Element\n aria-labelledby={{id}}\n key={{@id}}\n class={{classNames\n \"euiNotificationEvent\"\n (if\n (eq (typeOf @isRead) \"boolean\")\n \"euiNotificationEvent--withReadState\"\n )\n }}\n ...attributes\n >\n\n {{#if (eq (typeOf @isRead) \"boolean\")}}\n <div class=\"euiNotificationEvent__readButton\">\n {{#if @onRead}}\n <EuiNotificationEventReadButton\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n {{on \"click\" @onRead}}\n />\n {{else}}\n <EuiNotificationEventReadIcon\n @id={{@id}}\n @isRead={{@isRead}}\n @eventName={{@title}}\n @readIconColor={{@readIconColor}}\n />\n {{/if}}\n </div>\n {{/if}}\n\n <div class=\"euiNotificationEvent__content\">\n <EuiNotificationEventMeta\n @id={{@id}}\n @type={{@type}}\n @severity={{@severity}}\n @badgeColor={{@badgeColor}}\n @iconType={{@iconType}}\n @iconAriaLabel={{@iconAriaLabel}}\n @time={{@time}}\n @onOpenContextMenu={{@onOpenContextMenu}}\n @hasDefaultBlock={{hasContextMenuBlock}}\n @iconColor={{@iconColor}}\n >\n {{yield to=\"contextMenu\"}}\n </EuiNotificationEventMeta>\n\n {{#let\n (classNames\n \"euiNotificationEvent__title\"\n (if @isRead \"euiNotificationEvent__title--isRead\")\n )\n (argOrDefault @headingLevel \"h2\")\n as |classNames headingLevel|\n }}\n {{#if (or @href @onClickTitle)}}\n <EuiLink\n class={{classNames}}\n id={{id}}\n @href={{@href}}\n {{on \"click\" (optional @onClickTitle)}}\n >\n <TextBlock @tagName={{headingLevel}}>\n {{@title}}\n </TextBlock>\n </EuiLink>\n {{else if @title}}\n <TextBlock\n id={{id}}\n class={{classNames}}\n @tagName={{headingLevel}}\n >\n {{@title}}\n </TextBlock>\n {{/if}}\n {{/let}}\n\n <EuiNotificationEventMessages\n @messages={{@messages}}\n @accordionButtonText={{@accordionButtonText}}\n @accordionHideText={{@accordionHideText}}\n />\n\n {{#if hasPrimaryActionBlock}}\n <div class=\"euiNotificationEvent__primaryAction\">\n {{yield to=\"primaryAction\"}}\n </div>\n {{/if}}\n\n </div>\n\n </Element>\n {{/let}}\n </template>;\n\nexport default EuiNotificationEvent;\n"],"names":["EuiNotificationEvent","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","element","argOrDefault","and","classNames","eq","typeOf","EuiNotificationEventReadButton","on","EuiNotificationEventReadIcon","EuiNotificationEventMeta","or","EuiLink","optional","TextBlock","EuiNotificationEventMessages","templateOnly"],"mappings":";;;;;;;;;;;;;;;;;;AAwDA,MAAMA,oBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAyGA,08EAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,QAAA;IAAAC,OAAA;IAAAC,YAAA;IAAAC,GAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,MAAA;IAAAC,8BAAA;IAAAC,EAAA;IAAAC,4BAAA;8BAAAC,sBAAA;IAAAC,EAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-page-header-content.js b/dist/components/eui-page-header-content.js | |
index fe323d180aa07168cd6a023d6798c4ab5c9e08d9..56496d86715709e17943e53b4a73db24dd1717ed 100644 | |
--- a/dist/components/eui-page-header-content.js | |
+++ b/dist/components/eui-page-header-content.js | |
@@ -1,7 +1,7 @@ | |
import Component from '@glimmer/component'; | |
import { array } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import style from 'ember-style-modifier/modifiers/style'; | |
import { eq, not, or, and } from 'ember-truth-helpers'; | |
import argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-page-header-content.js.map b/dist/components/eui-page-header-content.js.map | |
index 2f9c1e324c6ca540a69eba301dba2fd472b2548b..1874154f8890e4d0b96bf4aa652f6a51acee8b84 100644 | |
--- a/dist/components/eui-page-header-content.js.map | |
+++ b/dist/components/eui-page-header-content.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-page-header-content.js","sources":["../../src/components/eui-page-header-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport useState from '../helpers/use-state.ts';\nimport useIsWithinBreakpoints from '../modifiers/use-is-within-breakpoints.ts';\nimport EuiBreadcrumbs from './eui-breadcrumbs.gts';\nimport EuiFlexGroup from './eui-flex-group.gts';\nimport EuiFlexItem from './eui-flex-item.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiSpacer from './eui-spacer.gts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-page-content-body.ts';\nimport type { EuiButtomBarArgs } from './eui-bottom-bar';\nimport type { EuiBreadcrumbsSignature } from './eui-breadcrumbs';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { IEuiTab } from './eui-tab';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TEMPLATES = [\n 'default',\n 'centeredBody',\n 'centeredContent',\n 'empty'\n] as const;\n\ntype Tab = IEuiTab & {\n label?: string;\n onClick?: () => void;\n};\n\nexport type EuiPageHeaderContentProps = {\n template?: (typeof TEMPLATES)[number];\n /**\n * Gets passed along to the #EuiBottomBar component if `bottomBar` has contents\n */\n bottomBarProps?: EuiButtomBarArgs;\n /* Stretches or restricts the height to 100% of the parent;\n * `true`: scrolls the EuiPageContentBody;\n * `noscroll`: removes all scroll ability;\n * Only works when `template = 'default | empty'` and breakpoint is `m` and above\n */\n fullHeight?: boolean;\n /**\n * Minimum height in which to enforce scrolling\n */\n minHeight?: number;\n\n /**\n * Restrict the width of the page content body\n */\n restrictWidth?: boolean | string;\n\n /**\n * Adds a bottom border to the page header\n */\n bottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyBottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n /**\n * Adds a bottom border to the page content body\n */\n contentProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n\n alignItems?: 'top' | 'bottom' | 'center' | 'stretch';\n\n responsive?: boolean | 'reverse';\n\n hasDescriptionBlock?: boolean;\n\n hasRightSideItemsBlock?: boolean;\n\n hasPageTitleBlock?: boolean;\n\n hasDefaultBlock?: boolean;\n\n pageTitle?: string;\n\n breadcrumbs?: EuiBreadcrumbsSignature['Args']['breadcrumbs'];\n\n breadcrumbProps?: {\n className?: string;\n };\n\n rightSideGroupProps?: {\n className?: string;\n };\n\n pageTitleProps?: {\n className?: string;\n };\n\n iconType?: EuiIconSignature['Args']['type'];\n\n description?: string;\n\n iconProps?: {\n className?: string;\n };\n\n tabs?: Tab[];\n};\n\nexport interface EuiPageHeaderContentSignature {\n Element: HTMLDivElement;\n Args: EuiPageHeaderContentProps;\n Blocks: {\n default: [];\n pageTitle: [];\n description: [];\n rightSideItems: [WithBoundArgs<typeof EuiFlexItem, 'grow'>?];\n };\n}\n\nexport default class EuiPageHeaderContent extends Component<EuiPageHeaderContentSignature> {\n // Defaults\n @argOrDefaultDecorator(460) minHeight!: number;\n @argOrDefaultDecorator(false) fullHeight!: boolean;\n @argOrDefaultDecorator('default') template!: (typeof TEMPLATES)[number];\n\n get classes() {\n return 'euiPageTemplate '.concat(this.fullHeightClass);\n }\n\n get fullHeightClass() {\n return this.fullHeight && this.canFullHeight\n ? 'eui-fullHeight eui-yScroll'\n : '';\n }\n\n get canFullHeight() {\n return this.template === 'default' || this.template === 'empty';\n }\n\n <template>\n {{#let\n (argOrDefault @responsive true)\n (argOrDefault @alignItems \"top\")\n (useState false)\n (and (argOrDefault @hasDescriptionBlock true) (has-block \"description\"))\n (and\n (argOrDefault @hasRightSideItemsBlock true) (has-block \"rightSideItems\")\n )\n (or\n (and (argOrDefault @hasPageTitleBlock true) (has-block \"pageTitle\"))\n @pageTitle\n )\n (and (argOrDefault @hasDefaultBlock true) (has-block \"default\"))\n as |responsive alignItems isResponsiveBreakpoint hasDescriptionBlock hasRightSideItemsBlock hasPageTitleBlock hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiPageHeaderContent\"\n (if @restrictWidth \"euiPanel--restrictWidth-custom\" \"\")\n }}\n {{style (inlineStyles width=@restrictWidth)}}\n {{useIsWithinBreakpoints\n sizes=(array \"xs\" \"s\")\n isActive=(not (not responsive))\n setIsWithinBreakpointsValue=isResponsiveBreakpoint.setState\n }}\n ...attributes\n >\n {{#if @breadcrumbs}}\n <EuiBreadcrumbs\n @breadcrumbs={{@breadcrumbs}}\n class={{@breadcrumbProps.className}}\n />\n <EuiSpacer @size=\"s\" />\n {{/if}}\n {{#if (or (eq alignItems \"top\") isResponsiveBreakpoint.value)}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n @alignItems={{if hasPageTitleBlock \"flexStart\" \"baseline\"}}\n @gutterSize=\"l\"\n >\n {{#if (and isResponsiveBreakpoint.value (eq responsive \"reverse\"))}}\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{else}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n {{/if}}\n </EuiFlexGroup>\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs @size=\"l\" @display=\"condensed\" @bottomBorder={{false}}>\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n {{else}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n {{!@glint-expect-error}}\n @alignItems={{if (eq alignItems \"bottom\") \"flexEnd\" alignItems}}\n @gutterSize=\"l\"\n >\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs\n @size=\"l\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n </EuiFlexGroup>\n {{/if}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["TEMPLATES","EuiPageHeaderContent","Component","g","prototype","argOrDefaultDecorator","i","void 0","classes","concat","fullHeightClass","fullHeight","canFullHeight","template","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","useState","and","or","classNames","style","inlineStyles","useIsWithinBreakpoints","array","not","EuiBreadcrumbs","EuiSpacer","eq","EuiFlexGroup","EuiFlexItem","EuiTabs","EuiTab","on","optional","EuiTitle","EuiIcon","EuiText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BO,MAAMA,SAAY,GAAA,CACvB,SAAA,EACA,cAAA,EACA,iBAAA,EACA,OAAA;AA6Ga,MAAMC,6BAA6BC,SAAU,CAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CAEzDC,qBAAsB,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,EADvB;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CAECC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,UAAA,EAAA,CACtBC,qBAAsB,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,SAAA;EAEvB,IAAIC,OAAUA,GAAA;AACZ,IAAA,OAAO,kBAAmB,CAAAC,MAAM,CAAC,IAAI,CAACC,eAAe,CAAA;AACvD;EAEA,IAAIA,eAAkBA,GAAA;IACpB,OAAO,IAAI,CAACC,UAAU,IAAI,IAAI,CAACC,aAAa,GACxC,4BACA,GAAA,EAAA;AACN;EAEA,IAAIA,aAAgBA,GAAA;IAClB,OAAO,IAAI,CAACC,QAAQ,KAAK,aAAa,IAAI,CAACA,QAAQ,KAAK,OAAA;AAC1D;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAyTA,6kRAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,UAAA;QAAAC,KAAA;QAAAC,YAAA;QAAAC,sBAAA;QAAAC,KAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,WAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,OAAA;AAAAC,iBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-page-header-content.js","sources":["../../src/components/eui-page-header-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { array } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport style from 'ember-style-modifier/modifiers/style';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport inlineStyles from '../helpers/inline-styles.ts';\nimport useState from '../helpers/use-state.ts';\nimport useIsWithinBreakpoints from '../modifiers/use-is-within-breakpoints.ts';\nimport EuiBreadcrumbs from './eui-breadcrumbs.gts';\nimport EuiFlexGroup from './eui-flex-group.gts';\nimport EuiFlexItem from './eui-flex-item.gts';\nimport EuiIcon from './eui-icon.gts';\nimport EuiSpacer from './eui-spacer.gts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\nimport EuiText from './eui-text.gts';\nimport EuiTitle from './eui-title.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-page-content-body.ts';\nimport type { EuiButtomBarArgs } from './eui-bottom-bar';\nimport type { EuiBreadcrumbsSignature } from './eui-breadcrumbs';\nimport type { EuiIconSignature } from './eui-icon';\nimport type { IEuiTab } from './eui-tab';\nimport type { WithBoundArgs } from '@glint/template';\n\nexport const TEMPLATES = [\n 'default',\n 'centeredBody',\n 'centeredContent',\n 'empty'\n] as const;\n\ntype Tab = IEuiTab & {\n label?: string;\n onClick?: () => void;\n};\n\nexport type EuiPageHeaderContentProps = {\n template?: (typeof TEMPLATES)[number];\n /**\n * Gets passed along to the #EuiBottomBar component if `bottomBar` has contents\n */\n bottomBarProps?: EuiButtomBarArgs;\n /* Stretches or restricts the height to 100% of the parent;\n * `true`: scrolls the EuiPageContentBody;\n * `noscroll`: removes all scroll ability;\n * Only works when `template = 'default | empty'` and breakpoint is `m` and above\n */\n fullHeight?: boolean;\n /**\n * Minimum height in which to enforce scrolling\n */\n minHeight?: number;\n\n /**\n * Restrict the width of the page content body\n */\n restrictWidth?: boolean | string;\n\n /**\n * Adds a bottom border to the page header\n */\n bottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyBottomBorder?: boolean;\n\n /**\n * Adds a bottom border to the page content body\n */\n bodyProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n /**\n * Adds a bottom border to the page content body\n */\n contentProps?: {\n /**\n * Adds padding to the page content body\n */\n paddingSize?: keyof typeof paddingSizeMapping;\n };\n\n alignItems?: 'top' | 'bottom' | 'center' | 'stretch';\n\n responsive?: boolean | 'reverse';\n\n hasDescriptionBlock?: boolean;\n\n hasRightSideItemsBlock?: boolean;\n\n hasPageTitleBlock?: boolean;\n\n hasDefaultBlock?: boolean;\n\n pageTitle?: string;\n\n breadcrumbs?: EuiBreadcrumbsSignature['Args']['breadcrumbs'];\n\n breadcrumbProps?: {\n className?: string;\n };\n\n rightSideGroupProps?: {\n className?: string;\n };\n\n pageTitleProps?: {\n className?: string;\n };\n\n iconType?: EuiIconSignature['Args']['type'];\n\n description?: string;\n\n iconProps?: {\n className?: string;\n };\n\n tabs?: Tab[];\n};\n\nexport interface EuiPageHeaderContentSignature {\n Element: HTMLDivElement;\n Args: EuiPageHeaderContentProps;\n Blocks: {\n default: [];\n pageTitle: [];\n description: [];\n rightSideItems: [WithBoundArgs<typeof EuiFlexItem, 'grow'>?];\n };\n}\n\nexport default class EuiPageHeaderContent extends Component<EuiPageHeaderContentSignature> {\n // Defaults\n @argOrDefaultDecorator(460) minHeight!: number;\n @argOrDefaultDecorator(false) fullHeight!: boolean;\n @argOrDefaultDecorator('default') template!: (typeof TEMPLATES)[number];\n\n get classes() {\n return 'euiPageTemplate '.concat(this.fullHeightClass);\n }\n\n get fullHeightClass() {\n return this.fullHeight && this.canFullHeight\n ? 'eui-fullHeight eui-yScroll'\n : '';\n }\n\n get canFullHeight() {\n return this.template === 'default' || this.template === 'empty';\n }\n\n <template>\n {{#let\n (argOrDefault @responsive true)\n (argOrDefault @alignItems \"top\")\n (useState false)\n (and (argOrDefault @hasDescriptionBlock true) (has-block \"description\"))\n (and\n (argOrDefault @hasRightSideItemsBlock true) (has-block \"rightSideItems\")\n )\n (or\n (and (argOrDefault @hasPageTitleBlock true) (has-block \"pageTitle\"))\n @pageTitle\n )\n (and (argOrDefault @hasDefaultBlock true) (has-block \"default\"))\n as |responsive alignItems isResponsiveBreakpoint hasDescriptionBlock hasRightSideItemsBlock hasPageTitleBlock hasDefaultBlock|\n }}\n <div\n class={{classNames\n \"euiPageHeaderContent\"\n (if @restrictWidth \"euiPanel--restrictWidth-custom\" \"\")\n }}\n {{style (inlineStyles width=@restrictWidth)}}\n {{useIsWithinBreakpoints\n sizes=(array \"xs\" \"s\")\n isActive=(not (not responsive))\n setIsWithinBreakpointsValue=isResponsiveBreakpoint.setState\n }}\n ...attributes\n >\n {{#if @breadcrumbs}}\n <EuiBreadcrumbs\n @breadcrumbs={{@breadcrumbs}}\n class={{@breadcrumbProps.className}}\n />\n <EuiSpacer @size=\"s\" />\n {{/if}}\n {{#if (or (eq alignItems \"top\") isResponsiveBreakpoint.value)}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n @alignItems={{if hasPageTitleBlock \"flexStart\" \"baseline\"}}\n @gutterSize=\"l\"\n >\n {{#if (and isResponsiveBreakpoint.value (eq responsive \"reverse\"))}}\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{else}}\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n {{/if}}\n </EuiFlexGroup>\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs @size=\"l\" @display=\"condensed\" @bottomBorder={{false}}>\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n {{else}}\n <EuiFlexGroup\n class=\"euiPageHeaderContent__top\"\n @responsive={{not (not responsive)}}\n {{!@glint-expect-error}}\n @alignItems={{if (eq alignItems \"bottom\") \"flexEnd\" alignItems}}\n @gutterSize=\"l\"\n >\n <EuiFlexItem>\n {{#if (and (not hasPageTitleBlock) @tabs)}}\n <EuiTabs\n @size=\"xl\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n {{#if hasPageTitleBlock}}\n <EuiTitle\n class={{@pageTitleProps.className}}\n @size=\"l\"\n @tagName=\"h1\"\n >\n {{#if @iconType}}\n <EuiIcon\n @size=\"xl\"\n @type={{@iconType}}\n @iconClasses={{classNames\n \"euiPageHeaderContent__titleIcon\"\n @iconProps.className\n }}\n />\n {{/if}}\n\n {{@pageTitle}}\n {{yield to=\"pageTitle\"}}\n </EuiTitle>\n {{/if}}\n\n {{#if hasDescriptionBlock}}\n {{#if (or hasPageTitleBlock @tabs)}}\n <EuiSpacer />\n {{/if}}\n <EuiText @grow={{false}}>\n {{@description}}\n {{yield to=\"description\"}}\n </EuiText>\n {{/if}}\n {{#if (or hasDefaultBlock (and hasPageTitleBlock @tabs))}}\n <div class=\"euiPageHeaderContent__bottom\">\n <EuiSpacer />\n {{yield to=\"default\"}}\n {{#if hasPageTitleBlock}}\n <EuiTabs\n @size=\"l\"\n @display=\"condensed\"\n @bottomBorder={{false}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n @disabled={{tab.disabled}}\n @isSelected={{tab.isSelected}}\n @href={{tab.href}}\n {{on \"click\" (optional tab.onClick)}}\n >\n {{tab.label}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{/if}}\n </div>\n {{/if}}\n </EuiFlexItem>\n {{#if hasRightSideItemsBlock}}\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @wrap={{true}}\n @responsive={{false}}\n class={{classNames\n \"euiPageHeaderContent__rightSideItems\"\n @rightSideGroupProps.className\n }}\n >\n {{yield\n (component EuiFlexItem grow=false)\n to=\"rightSideItems\"\n }}\n </EuiFlexGroup>\n </EuiFlexItem>\n {{/if}}\n </EuiFlexGroup>\n {{/if}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["TEMPLATES","EuiPageHeaderContent","Component","g","prototype","argOrDefaultDecorator","i","void 0","classes","concat","fullHeightClass","fullHeight","canFullHeight","template","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","useState","and","or","classNames","style","inlineStyles","useIsWithinBreakpoints","array","not","EuiBreadcrumbs","EuiSpacer","eq","EuiFlexGroup","EuiFlexItem","EuiTabs","EuiTab","on","optional","EuiTitle","EuiIcon","EuiText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BO,MAAMA,SAAY,GAAA,CACvB,SAAA,EACA,cAAA,EACA,iBAAA,EACA,OAAA;AA6Ga,MAAMC,6BAA6BC,SAAU,CAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CAEzDC,qBAAsB,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,EADvB;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CAECC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,UAAA,EAAA,CACtBC,qBAAsB,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,SAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAAC,SAAA;EAEvB,IAAIC,OAAUA,GAAA;AACZ,IAAA,OAAO,kBAAmB,CAAAC,MAAM,CAAC,IAAI,CAACC,eAAe,CAAA;AACvD;EAEA,IAAIA,eAAkBA,GAAA;IACpB,OAAO,IAAI,CAACC,UAAU,IAAI,IAAI,CAACC,aAAa,GACxC,4BACA,GAAA,EAAA;AACN;EAEA,IAAIA,aAAgBA,GAAA;IAClB,OAAO,IAAI,CAACC,QAAQ,KAAK,aAAa,IAAI,CAACA,QAAQ,KAAK,OAAA;AAC1D;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAyTA,6kRAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,EAAA;QAAAC,UAAA;QAAAC,KAAA;QAAAC,YAAA;QAAAC,sBAAA;QAAAC,KAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,SAAA;QAAAC,EAAA;QAAAC,YAAA;QAAAC,WAAA;QAAAC,OAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,QAAA;QAAAC,OAAA;AAAAC,iBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-popover.js b/dist/components/eui-popover.js | |
index 94dbc8189d76e8f55e84c7c2ff29ff6a5ff6d17d..a134d76c5b5dc53081f1bbda972eadc86b59d202 100644 | |
--- a/dist/components/eui-popover.js | |
+++ b/dist/components/eui-popover.js | |
@@ -7,7 +7,7 @@ import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import didUpdate from '@ember/render-modifiers/modifiers/did-update'; | |
import { cancel, later, scheduleOnce } from '@ember/runloop'; | |
import { htmlSafe } from '@ember/template'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { focusTrap } from 'ember-focus-trap'; | |
import onKey from 'ember-keyboard/modifiers/on-key'; | |
import { and, not, or } from 'ember-truth-helpers'; | |
diff --git a/dist/components/eui-popover.js.map b/dist/components/eui-popover.js.map | |
index cb84a24bf55ae92176d2c22f2f24bafbe4d53638..91e999eee86882c0f5a6a929b483de9484026276 100644 | |
--- a/dist/components/eui-popover.js.map | |
+++ b/dist/components/eui-popover.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-popover.js","sources":["../../src/components/eui-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { cancel, later, scheduleOnce } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, not, or } from 'ember-truth-helpers';\nimport { tabbable } from 'tabbable';\n\nimport randomId from '../-private/random-id.ts';\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport merge from '../helpers/merge.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport outsideClickDetector from '../modifiers/outside-click-detector.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { cascadingMenuKeys } from '../utils/accesibility/index.ts';\nimport {\n anchorPositionMapping,\n displayMapping\n} from '../utils/css-mappings/eui-popover.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport {\n getTransitionTimings,\n getWaitDuration,\n performOnFrame\n} from '../utils/transition.ts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-panel.ts';\nimport type { EuiPopoverPosition } from '../utils/popover/types';\nimport type { EmberKeyboardEvent } from 'ember-keyboard/modifiers/on-key';\n\ntype PanelPaddingSize = keyof typeof paddingSizeMapping;\n\nexport type PopoverAnchorPosition =\n | 'upCenter'\n | 'upLeft'\n | 'upRight'\n | 'downCenter'\n | 'downLeft'\n | 'downRight'\n | 'leftCenter'\n | 'leftUp'\n | 'leftDown'\n | 'rightCenter'\n | 'rightUp'\n | 'rightDown';\n\nexport type EuiPopoverArgs = {\n /**\n * Class name passed to the direct parent of the button\n */\n anchorClassName?: string;\n /**\n * Alignment of the popover and arrow relative to the button\n */\n anchorPosition?: PopoverAnchorPosition;\n /**\n * Style and position alteration for arrow-less, left-aligned\n * attachment. Intended for use with inputs as anchors, e.g.\n * EuiInputPopover\n */\n attachToAnchor?: boolean;\n /**\n * Triggering element for which to align the popover to\n */\n button?: Component;\n buttonRef?: (e: HTMLDivElement) => unknown;\n /**\n * Callback to handle hiding of the popover\n */\n closePopover: () => void;\n /**\n * Restrict the popover's position within this element\n */\n container?: HTMLElement;\n /**\n * CSS display type for both the popover and anchor\n */\n display?: keyof typeof displayMapping;\n /**\n * Show arrow indicating to originating button\n */\n hasArrow?: boolean;\n /**\n * Specifies what element should initially have focus; Can be a DOM\n * node, or a selector string (which will be passed to\n * document.querySelector() to find the DOM node), or a function that\n * returns a DOM node\n */\n initialFocus?: FocusTarget | false;\n /**\n * Passed directly to EuiPortal for DOM positioning. Both properties are\n * required if prop is specified\n */\n insert?: {\n sibling: HTMLElement;\n position: 'before' | 'after';\n };\n /**\n * Visibility state of the popover\n */\n isOpen?: boolean;\n /**\n * Traps tab focus within the popover contents\n */\n ownFocus?: boolean;\n /**\n * Custom class added to the EuiPanel containing the popover contents\n */\n panelClassName?: string;\n /**\n * EuiPanel padding on all sides\n */\n panelPaddingSize?: PanelPaddingSize;\n /**\n * Standard DOM `style` attribute. Passed to the EuiPanel\n */\n panelStyle?: { [i: string]: string };\n panelRef?: (e: HTMLElement | null) => unknown;\n popoverRef?: (e: HTMLElement) => unknown;\n\n /**\n * when not `false`, the popover will check if this popover is inside another popover and if so. will reposition itself to be inside the other popover\n */\n shouldAccountForOtherPopovers?: boolean;\n\n /**\n * When `true`, the popover's position is re-calculated when the user\n * scrolls, this supports having fixed-position popover anchors\n */\n repositionOnScroll?: boolean;\n /**\n * By default, popover content inherits the z-index of the anchor\n * component; pass `zIndex` to override\n */\n zIndex?: number;\n /**\n * Function callback for when the focus trap is deactivated\n */\n onTrapDeactivation?: () => void;\n /**\n * Distance away from the anchor that the popover will render\n */\n offset?: number;\n /**\n * Minimum distance between the popover and the bounding container;\n * Pass an array of 4 values to adjust each side differently: `[top, right, bottom, left]`\n * Default is 16\n */\n buffer?: number | [number, number, number, number];\n /**\n * Element to pass as the child element of the arrow;\n * Use case is typically limited to an accompanying `EuiBeacon`\n */\n arrowChildren?: Component;\n /**\n * Provide a name to the popover panel\n */\n ariaLabel?: string;\n /**\n * Alternative option to `aria-label` that takes an `id`.\n * Usually takes the `id` of the popover title\n */\n ariaLabelledBy?: string;\n\n tabindex?: string | number;\n\n shouldSelfFocus?: boolean;\n\n isFocusTrapPaused?: boolean;\n\n focusTrapOptions?: {\n onClickOutside?: (e: Event) => void;\n };\n\n mutationObserverOptions?: {\n attributes?: boolean;\n childList?: boolean;\n characterData?: boolean;\n subtree?: boolean;\n };\n};\n\ntype AnchorPosition = 'up' | 'right' | 'down' | 'left';\n\nconst anchorPositionToPopoverPositionMap: {\n [position in AnchorPosition]: EuiPopoverPosition;\n} = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n};\n\nexport function getPopoverPositionFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the anchor position to the matching popover position\n // e.g. \"upLeft\" -> \"top\", \"downRight\" -> \"bottom\"\n\n // extract the first positional word from anchorPosition:\n // starts at the beginning (\" ^ \") of anchorPosition and\n // captures all of the characters (\" (.*?) \") until the\n // first capital letter (\" [A-Z] \") is encountered\n const match = anchorPosition.match(/^(.*?)[A-Z]/);\n\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[match[1] as AnchorPosition];\n }\n\n return anchorPositionToPopoverPositionMap['up'];\n}\n\nexport function getPopoverAlignFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the gravity to the matching popover position\n // e.g. \"upLeft\" -> \"left\", \"rightDown\" -> \"bottom\"\n\n // extract the second positional word from anchorPosition:\n // starts a capture group at the first capital letter\n // and includes everything after it\n const match = anchorPosition.match(/([A-Z].*)/);\n\n // this performs two tasks:\n // 1. normalizes the align position by lowercasing it\n // 2. `center` doesn't exist in the lookup map which converts it to `undefined` meaning no align\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[\n match[1]?.toLowerCase() as AnchorPosition\n ];\n }\n\n return anchorPositionToPopoverPositionMap['left'];\n}\n\nexport const ANCHOR_POSITIONS = Object.keys(anchorPositionMapping);\nexport const DISPLAY = Object.keys(displayMapping);\nexport type FocusTarget = HTMLElement | string | (() => HTMLElement);\n\nconst DEFAULT_POPOVER_STYLES = {\n top: 50,\n left: 50\n};\n\nfunction getElementFromInitialFocus(\n initialFocus?: FocusTarget\n): HTMLElement | null {\n const initialFocusType = typeof initialFocus;\n\n if (initialFocusType === 'string') {\n return document.querySelector(initialFocus as string);\n }\n\n if (initialFocusType === 'function') {\n return (initialFocus as () => HTMLElement | null)();\n }\n\n return initialFocus as HTMLElement | null;\n}\n\ntype CssProps = {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n zIndex?: number;\n};\n\nexport interface EuiPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiPopoverArgs;\n Blocks: {\n button: [];\n content: [];\n arrowChildren: [];\n };\n}\n\nexport default class EuiPopoverComponent extends Component<EuiPopoverSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isOpen!: boolean;\n @argOrDefaultDecorator(true) ownFocus!: boolean;\n @argOrDefaultDecorator('downCenter') anchorPosition!: PopoverAnchorPosition;\n @argOrDefaultDecorator('m') panelPaddingSize!: PanelPaddingSize;\n @argOrDefaultDecorator(true) hasArrow!: boolean;\n @argOrDefaultDecorator('inlineBlock') display!: string;\n @argOrDefaultDecorator(true) shouldSelfFocus!: boolean;\n @argOrDefaultDecorator(false) isFocusTrapPaused!: boolean;\n\n //State\n @tracked prevIsOpen: boolean | undefined;\n @tracked suppressingPopover: boolean | undefined;\n @tracked isClosing = false;\n @tracked isOpening = false;\n @tracked popoverStyles: CssProps = {};\n @tracked arrowStyles: CssProps | undefined = {};\n @tracked arrowPosition: EuiPopoverPosition | null = null;\n @tracked openPosition: EuiPopoverPosition | null = null;\n @tracked isOpenStable = false;\n @tracked isCurrentlyOpen: boolean | undefined;\n @tracked popoverHost?: HTMLElement | null = null;\n ///\n\n private respositionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionAnimationFrame: number | undefined;\n private updateFocusAnimationFrame: number | undefined;\n private hasSetInitialFocus: boolean = false;\n @tracked button: HTMLElement | null = null;\n @tracked panel: HTMLElement | null = null;\n\n constructor(owner: Owner, args: EuiPopoverArgs) {\n super(owner, args);\n assert(`Must provide closePopover function`, this.args.closePopover);\n this.prevIsOpen = this.isOpen;\n this.suppressingPopover = this.isOpen;\n this.isCurrentlyOpen = this.isOpen;\n }\n\n get insert() {\n if (this.args.insert) {\n return this.args.insert;\n }\n\n if (this.shouldAccountForOtherPopovers) {\n if (this.popoverHost) {\n return {\n sibling: this.popoverHost.children[0] as HTMLElement,\n position: 'after'\n };\n }\n }\n\n return undefined;\n }\n\n @action\n closePopover(): void {\n if (this.isOpen) {\n this.args.closePopover();\n }\n }\n\n @action\n onEscapeKey(event: Event, ekEvent?: EmberKeyboardEvent): void {\n if (this.isOpen) {\n ekEvent?.stopPropagation();\n ekEvent?.stopImmediatePropagation();\n event.preventDefault();\n event.stopPropagation();\n this.closePopover();\n }\n }\n\n @action\n onKeyDown(event: KeyboardEvent, ekEvent: EmberKeyboardEvent): void {\n if (event.key === cascadingMenuKeys.ESCAPE) {\n this.onEscapeKey(event as unknown as Event, ekEvent as unknown as Event);\n }\n }\n\n @action\n onClickOutside(event: Event): void {\n if (this.args.focusTrapOptions?.onClickOutside) {\n this.args.focusTrapOptions.onClickOutside(event);\n } else {\n // only close the popover if the event source isn't the anchor button\n // otherwise, it is up to the anchor to toggle the popover's open status\n if (this.button && this.button.contains(event.target as Node) === false) {\n this.closePopover();\n }\n }\n }\n\n updateFocus(): void {\n // Wait for the DOM to update.\n this.updateFocusAnimationFrame = window.requestAnimationFrame(() => {\n if (!this.ownFocus || !this.panel || this.args.initialFocus === false) {\n return;\n }\n\n // If we've already focused on something inside the panel, everything's fine.\n if (\n this.hasSetInitialFocus &&\n this.panel.contains(document.activeElement)\n ) {\n return;\n }\n\n // Otherwise let's focus the first tabbable item and expedite input from the user.\n let focusTarget;\n\n if (this.args.initialFocus != null) {\n focusTarget = getElementFromInitialFocus(this.args.initialFocus);\n } else {\n const tabbableItems = tabbable(this.panel);\n\n if (tabbableItems.length) {\n focusTarget = tabbableItems[0];\n }\n }\n\n // there's a race condition between the popover content becoming visible and this function call\n // if the element isn't visible yet (due to css styling) then it can't accept focus\n // so wait for another render and try again\n if (focusTarget == null) {\n // there isn't a focus target, one of two reasons:\n // #1 is the whole panel hidden? If so, schedule another check\n // #2 panel is visible but no tabbables exist, move focus to the panel\n const panelVisibility = window.getComputedStyle(this.panel).opacity;\n\n if (panelVisibility === '0') {\n // #1\n this.updateFocus();\n } else {\n // #2\n focusTarget = this.panel;\n }\n } else {\n // found an element to focus, but is it visible?\n const visibility = window.getComputedStyle(focusTarget).visibility;\n\n if (visibility === 'hidden') {\n // not visible, check again next render frame\n this.updateFocus();\n }\n }\n\n if (focusTarget != null) {\n this.hasSetInitialFocus = true;\n focusTarget.focus();\n }\n });\n }\n\n @action\n onOpenPopover(): void {\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n // We need to set this state a beat after the render takes place, so that the CSS\n // transition can take effect.\n this.closingTransitionAnimationFrame = window.requestAnimationFrame(() => {\n this.isOpening = true;\n });\n\n // for each child element of `this.panel`, find any transition duration we should wait for before stabilizing\n const { durationMatch, delayMatch } = Array.prototype.slice\n .call(this.panel ? this.panel.children : [])\n .reduce(\n (\n {\n durationMatch,\n delayMatch\n }: { durationMatch: number; delayMatch: number },\n element: HTMLElement\n ) => {\n const transitionTimings = getTransitionTimings(element);\n\n return {\n durationMatch: Math.max(\n durationMatch,\n transitionTimings.durationMatch\n ),\n delayMatch: Math.max(delayMatch, transitionTimings.delayMatch)\n };\n },\n { durationMatch: 0, delayMatch: 0 }\n );\n\n this.respositionTimeout = later(\n this,\n () => {\n this.isOpenStable = true;\n\n const fn = (): void => {\n this.positionPopoverFixed();\n this.updateFocus();\n };\n\n scheduleOnce('afterRender', this, fn);\n },\n durationMatch + delayMatch\n );\n }\n\n get shouldAccountForOtherPopovers() {\n return this.args.shouldAccountForOtherPopovers ?? true;\n }\n\n checkIfPopoverIsInsideAnotherPopover(ele: HTMLElement) {\n const otherPopover = ele.closest<HTMLDivElement>('div.euiPopover__panel');\n\n this.popoverHost = otherPopover;\n }\n\n @action\n didInsertPopover(ele: HTMLDivElement): void {\n if (this.suppressingPopover) {\n // component was created with isOpen=true; now that it's inserted\n // stop suppressing and start opening\n this.suppressingPopover = false;\n this.isOpening = true;\n\n const fn = (): void => this.onOpenPopover();\n\n scheduleOnce('afterRender', this, fn);\n }\n\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n }\n\n if (this.shouldAccountForOtherPopovers) {\n this.checkIfPopoverIsInsideAnotherPopover(ele);\n }\n\n this.updateFocus();\n }\n\n @action\n didUpdateRepositionOnScroll(): void {\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n } else {\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n }\n }\n\n @action\n didUpdateIsOpen(): void {\n this.isCurrentlyOpen = this.isOpen;\n\n if (!this.prevIsOpen && this.args.isOpen) {\n this.onOpenPopover();\n }\n\n if (this.prevIsOpen && !this.args.isOpen) {\n // If the user has just closed the popover, queue up the removal of the content after the\n // transition is complete.\n this.isClosing = true;\n this.isOpening = false;\n this.closingTransitionTimeout = later(\n this,\n () => {\n this.isClosing = false;\n },\n 250\n );\n }\n\n this.prevIsOpen = this.args.isOpen;\n }\n\n willDestroy(): void {\n super.willDestroy();\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n this.popoverHost = null;\n cancel(this.respositionTimeout as ReturnType<typeof later>);\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n cancelAnimationFrame(this.closingTransitionAnimationFrame as number);\n cancelAnimationFrame(this.updateFocusAnimationFrame as number);\n }\n\n @action\n onMutation(records: MutationRecord[]): void {\n const waitDuration = getWaitDuration(records);\n\n this.positionPopoverFixed();\n\n performOnFrame(waitDuration, this.positionPopoverFixed);\n }\n\n @action\n positionPopover(allowEnforcePosition: boolean): void {\n if (this.button == null || this.panel == null) return;\n\n let position = getPopoverPositionFromAnchorPosition(this.anchorPosition);\n let forcePosition = undefined;\n\n if (\n allowEnforcePosition &&\n this.isOpenStable &&\n this.openPosition != null\n ) {\n position = this.openPosition;\n forcePosition = true;\n }\n\n // get the position of the element relative to the offsetParent, which could be the document\n function getPos(ele: HTMLElement): [number, number] {\n let currTop = 0;\n let currLeft = 0;\n\n if (ele.offsetParent) {\n do {\n currTop += ele.offsetTop;\n currLeft += ele.offsetLeft;\n } while ((ele = ele.offsetParent as HTMLElement));\n } else {\n currTop = ele.offsetTop;\n currLeft = ele.offsetLeft;\n }\n\n return [currTop, currLeft];\n }\n\n const {\n top,\n left,\n position: foundPosition,\n arrow,\n anchorBoundingBox\n } = findPopoverPosition({\n container: this.args.container,\n host: this.shouldAccountForOtherPopovers ? this.popoverHost : null,\n position,\n forcePosition,\n align: getPopoverAlignFromAnchorPosition(this.anchorPosition),\n anchor: this.button,\n popover: this.panel,\n offset:\n !this.args.attachToAnchor && this.hasArrow\n ? 16 + (this.args.offset || 0)\n : 8 + (this.args.offset || 0),\n arrowConfig: {\n arrowWidth: 24,\n arrowBuffer: 10\n },\n returnBoundingBox: this.args.attachToAnchor,\n buffer: this.args.buffer\n });\n\n // the popover's z-index must inherit from the button\n // this keeps a button's popover under a flyout that would cover the button\n // but a popover triggered inside a flyout will appear over that flyout\n const { zIndex: zIndexProp } = this.args;\n const zIndex =\n zIndexProp == null\n ? getElementZIndex(this.button, this.panel) + 2000\n : zIndexProp;\n\n const popoverStyles = {\n top,\n left:\n this.args.attachToAnchor && anchorBoundingBox\n ? anchorBoundingBox.left\n : left,\n zIndex\n };\n\n const willRenderArrow = !this.args.attachToAnchor && this.hasArrow;\n const arrowStyles = willRenderArrow ? arrow : undefined;\n const arrowPosition = foundPosition;\n\n this.popoverStyles = popoverStyles;\n this.arrowStyles = arrowStyles;\n this.arrowPosition = arrowPosition;\n this.openPosition = foundPosition;\n }\n\n get _arrowStyles(): ReturnType<typeof htmlSafe> | undefined {\n const { arrowStyles } = this;\n\n return arrowStyles\n ? htmlSafe(`top: ${arrowStyles?.top}px; left: ${arrowStyles?.left}px;`)\n : undefined;\n }\n\n get _popoverStyles(): { [i: string]: string } {\n const { panelStyle } = this.args;\n const { popoverStyles } = this;\n\n return {\n ...panelStyle,\n top: `${popoverStyles.top}px`,\n left: `${popoverStyles.left}px`,\n zIndex: `${popoverStyles.zIndex}`\n };\n }\n\n get tabindex() {\n if (this.ownFocus) {\n return this.args.tabindex ?? '0';\n }\n\n return '-1';\n }\n\n @action\n positionPopoverFixed(): void {\n this.positionPopover(true);\n }\n\n @action\n positionPopoverFluid(): void {\n this.positionPopover(false);\n }\n\n @action\n registerButton(btn: HTMLDivElement): void {\n this.button = btn;\n this.args.buttonRef?.(btn);\n }\n\n @action\n registerPanel(panel: HTMLElement): void {\n this.panel = panel;\n this.args.panelRef?.(panel);\n\n if (panel === null) {\n // panel has unmounted, restore the state defaults\n this.popoverStyles = DEFAULT_POPOVER_STYLES;\n this.arrowStyles = {};\n this.arrowPosition = null;\n this.openPosition = null;\n this.isOpenStable = false;\n window.removeEventListener('resize', this.positionPopoverFluid);\n } else {\n // panel is coming into existence\n this.positionPopoverFluid();\n window.addEventListener('resize', this.positionPopoverFluid);\n }\n }\n\n <template>\n {{#let\n (randomId)\n (classNames\n (if this.isOpening \"euiPopover-isOpen\")\n position=this.anchorPosition\n display=this.display\n componentName=\"EuiPopover\"\n )\n (classNames\n \"euiPopover__panel\"\n (concat \"euiPopover__panel--\" this.arrowPosition)\n (if this.isOpening \"euiPopover__panel-isOpen\")\n (if\n (or (not this.hasArrow) @attachToAnchor) \"euiPopover__panel-noArrow\"\n )\n (if @attachToAnchor \"euiPopover__panel-isAttached\")\n @panelClassName\n )\n as |descriptionId classes panelClasses|\n }}\n <div\n class={{classes}}\n {{onKey \"_all\" this.onKeyDown priority=1}}\n {{didInsert this.didInsertPopover}}\n {{didUpdate this.didUpdateIsOpen @isOpen}}\n {{didUpdate this.didUpdateRepositionOnScroll @repositionOnScroll}}\n {{didInsert (optional @popoverRef)}}\n ...attributes\n >\n\n {{! button }}\n <div\n class=\"euiPopover__anchor {{@anchorClassName}}\"\n {{didInsert this.registerButton}}\n >\n {{yield to=\"button\"}}\n </div>\n\n {{! content }}\n {{#if\n (and\n (not this.suppressingPopover)\n (or this.isCurrentlyOpen this.isClosing)\n )\n }}\n <EuiPortal @insert={{this.insert}}>\n {{#let (randomId) as |panelId|}}\n <EuiPanel\n id={{panelId}}\n class={{panelClasses}}\n aria-live={{if this.ownFocus \"off\" \"assertive\"}}\n role=\"dialog\"\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-modal=\"true\"\n aria-describedby={{if this.ownFocus descriptionId}}\n tabindex={{this.tabindex}}\n @hasShadow={{false}}\n @paddingSize={{this.panelPaddingSize}}\n {{simpleStyle this._popoverStyles}}\n {{didInsert this.registerPanel}}\n {{outsideClickDetector onOutsideClick=this.onClickOutside}}\n {{onKey \"Escape\" this.onEscapeKey}}\n {{focusTrap\n isActive=(not\n (or\n (not this.ownFocus) (not this.isOpenStable) this.isClosing\n )\n )\n shouldSelfFocus=this.shouldSelfFocus\n isPaused=this.isFocusTrapPaused\n focusTrapOptions=(merge\n (hash\n returnFocusOnDeactivate=this.isOpenStable\n initialFocus=(or @initialFocus this.panel)\n onDeactivate=(optional @onTrapDeactivation)\n preventScroll=true\n clickOutsideDeactivates=true\n fallbackFocus=(concat \"#\" panelId)\n )\n @focusTrapOptions\n )\n }}\n >\n <div\n class={{concat\n \"euiPopover__panelArrow euiPopover__panelArrow--\"\n this.arrowPosition\n }}\n style={{this._arrowStyles}}\n >\n {{yield to=\"arrowChildren\"}}\n </div>\n {{#if this.ownFocus}}\n <p id={{descriptionId}} {{screenReaderOnly}}>\n You are in a dialog. To close this dialog, hit escape.\n </p>\n {{/if}}\n <div\n {{mutationObserver\n onMutation=this.onMutation\n observerOptions=(merge\n (hash\n attributes=true\n childList=true\n characterData=true\n subtree=true\n )\n @mutationObserverOptions\n )\n }}\n >\n {{yield to=\"content\"}}\n </div>\n </EuiPanel>\n {{/let}}\n </EuiPortal>\n {{/if}}\n\n </div>\n {{/let}}\n </template>\n}\n"],"names":["anchorPositionToPopoverPositionMap","up","right","down","left","getPopoverPositionFromAnchorPosition","anchorPosition","match","length","getPopoverAlignFromAnchorPosition","toLowerCase","ANCHOR_POSITIONS","Object","keys","anchorPositionMapping","DISPLAY","displayMapping","DEFAULT_POPOVER_STYLES","top","getElementFromInitialFocus","initialFocus","initialFocusType","document","querySelector","EuiPopoverComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","respositionTimeout","closingTransitionTimeout","closingTransitionAnimationFrame","updateFocusAnimationFrame","hasSetInitialFocus","constructor","owner","args","assert","closePopover","prevIsOpen","isOpen","suppressingPopover","isCurrentlyOpen","insert","shouldAccountForOtherPopovers","popoverHost","sibling","children","position","undefined","n","action","onEscapeKey","event","ekEvent","stopPropagation","stopImmediatePropagation","preventDefault","onKeyDown","key","cascadingMenuKeys","ESCAPE","onClickOutside","focusTrapOptions","button","contains","target","updateFocus","window","requestAnimationFrame","ownFocus","panel","activeElement","focusTarget","tabbableItems","tabbable","panelVisibility","getComputedStyle","opacity","visibility","focus","onOpenPopover","cancel","isOpening","durationMatch","delayMatch","Array","slice","call","reduce","element","transitionTimings","getTransitionTimings","Math","max","later","isOpenStable","fn","positionPopoverFixed","scheduleOnce","checkIfPopoverIsInsideAnotherPopover","ele","otherPopover","closest","didInsertPopover","repositionOnScroll","addEventListener","didUpdateRepositionOnScroll","removeEventListener","didUpdateIsOpen","isClosing","willDestroy","cancelAnimationFrame","onMutation","records","waitDuration","getWaitDuration","performOnFrame","positionPopover","allowEnforcePosition","forcePosition","openPosition","foundPosition","arrow","anchorBoundingBox","findPopoverPosition","container","host","align","anchor","popover","offset","attachToAnchor","hasArrow","arrowConfig","arrowWidth","arrowBuffer","returnBoundingBox","buffer","zIndex","zIndexProp","getElementZIndex","popoverStyles","willRenderArrow","arrowStyles","arrowPosition","_arrowStyles","htmlSafe","_popoverStyles","panelStyle","tabindex","positionPopoverFluid","registerButton","btn","buttonRef","registerPanel","panelRef","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","concat","or","not","onKey","didInsert","didUpdate","optional","and","EuiPortal","EuiPanel","simpleStyle","outsideClickDetector","focusTrap","merge","hash","screenReaderOnly","mutationObserver"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-popover.js","sources":["../../src/components/eui-popover.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { concat } from '@ember/helper';\nimport { action } from '@ember/object';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\nimport { cancel, later, scheduleOnce } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport type Owner from '@ember/owner';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { focusTrap } from 'ember-focus-trap';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, not, or } from 'ember-truth-helpers';\nimport { tabbable } from 'tabbable';\n\nimport randomId from '../-private/random-id.ts';\nimport { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport merge from '../helpers/merge.ts';\nimport mutationObserver from '../modifiers/mutation-observer.ts';\nimport outsideClickDetector from '../modifiers/outside-click-detector.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { cascadingMenuKeys } from '../utils/accesibility/index.ts';\nimport {\n anchorPositionMapping,\n displayMapping\n} from '../utils/css-mappings/eui-popover.ts';\nimport { findPopoverPosition, getElementZIndex } from '../utils/popover/index.ts';\nimport {\n getTransitionTimings,\n getWaitDuration,\n performOnFrame\n} from '../utils/transition.ts';\nimport EuiPanel from './eui-panel.gts';\nimport EuiPortal from './eui-portal.gts';\n\nimport type { paddingSizeMapping } from '../utils/css-mappings/eui-panel.ts';\nimport type { EuiPopoverPosition } from '../utils/popover/types';\nimport type { EmberKeyboardEvent } from 'ember-keyboard/modifiers/on-key';\n\ntype PanelPaddingSize = keyof typeof paddingSizeMapping;\n\nexport type PopoverAnchorPosition =\n | 'upCenter'\n | 'upLeft'\n | 'upRight'\n | 'downCenter'\n | 'downLeft'\n | 'downRight'\n | 'leftCenter'\n | 'leftUp'\n | 'leftDown'\n | 'rightCenter'\n | 'rightUp'\n | 'rightDown';\n\nexport type EuiPopoverArgs = {\n /**\n * Class name passed to the direct parent of the button\n */\n anchorClassName?: string;\n /**\n * Alignment of the popover and arrow relative to the button\n */\n anchorPosition?: PopoverAnchorPosition;\n /**\n * Style and position alteration for arrow-less, left-aligned\n * attachment. Intended for use with inputs as anchors, e.g.\n * EuiInputPopover\n */\n attachToAnchor?: boolean;\n /**\n * Triggering element for which to align the popover to\n */\n button?: Component;\n buttonRef?: (e: HTMLDivElement) => unknown;\n /**\n * Callback to handle hiding of the popover\n */\n closePopover: () => void;\n /**\n * Restrict the popover's position within this element\n */\n container?: HTMLElement;\n /**\n * CSS display type for both the popover and anchor\n */\n display?: keyof typeof displayMapping;\n /**\n * Show arrow indicating to originating button\n */\n hasArrow?: boolean;\n /**\n * Specifies what element should initially have focus; Can be a DOM\n * node, or a selector string (which will be passed to\n * document.querySelector() to find the DOM node), or a function that\n * returns a DOM node\n */\n initialFocus?: FocusTarget | false;\n /**\n * Passed directly to EuiPortal for DOM positioning. Both properties are\n * required if prop is specified\n */\n insert?: {\n sibling: HTMLElement;\n position: 'before' | 'after';\n };\n /**\n * Visibility state of the popover\n */\n isOpen?: boolean;\n /**\n * Traps tab focus within the popover contents\n */\n ownFocus?: boolean;\n /**\n * Custom class added to the EuiPanel containing the popover contents\n */\n panelClassName?: string;\n /**\n * EuiPanel padding on all sides\n */\n panelPaddingSize?: PanelPaddingSize;\n /**\n * Standard DOM `style` attribute. Passed to the EuiPanel\n */\n panelStyle?: { [i: string]: string };\n panelRef?: (e: HTMLElement | null) => unknown;\n popoverRef?: (e: HTMLElement) => unknown;\n\n /**\n * when not `false`, the popover will check if this popover is inside another popover and if so. will reposition itself to be inside the other popover\n */\n shouldAccountForOtherPopovers?: boolean;\n\n /**\n * When `true`, the popover's position is re-calculated when the user\n * scrolls, this supports having fixed-position popover anchors\n */\n repositionOnScroll?: boolean;\n /**\n * By default, popover content inherits the z-index of the anchor\n * component; pass `zIndex` to override\n */\n zIndex?: number;\n /**\n * Function callback for when the focus trap is deactivated\n */\n onTrapDeactivation?: () => void;\n /**\n * Distance away from the anchor that the popover will render\n */\n offset?: number;\n /**\n * Minimum distance between the popover and the bounding container;\n * Pass an array of 4 values to adjust each side differently: `[top, right, bottom, left]`\n * Default is 16\n */\n buffer?: number | [number, number, number, number];\n /**\n * Element to pass as the child element of the arrow;\n * Use case is typically limited to an accompanying `EuiBeacon`\n */\n arrowChildren?: Component;\n /**\n * Provide a name to the popover panel\n */\n ariaLabel?: string;\n /**\n * Alternative option to `aria-label` that takes an `id`.\n * Usually takes the `id` of the popover title\n */\n ariaLabelledBy?: string;\n\n tabindex?: string | number;\n\n shouldSelfFocus?: boolean;\n\n isFocusTrapPaused?: boolean;\n\n focusTrapOptions?: {\n onClickOutside?: (e: Event) => void;\n };\n\n mutationObserverOptions?: {\n attributes?: boolean;\n childList?: boolean;\n characterData?: boolean;\n subtree?: boolean;\n };\n};\n\ntype AnchorPosition = 'up' | 'right' | 'down' | 'left';\n\nconst anchorPositionToPopoverPositionMap: {\n [position in AnchorPosition]: EuiPopoverPosition;\n} = {\n up: 'top',\n right: 'right',\n down: 'bottom',\n left: 'left'\n};\n\nexport function getPopoverPositionFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the anchor position to the matching popover position\n // e.g. \"upLeft\" -> \"top\", \"downRight\" -> \"bottom\"\n\n // extract the first positional word from anchorPosition:\n // starts at the beginning (\" ^ \") of anchorPosition and\n // captures all of the characters (\" (.*?) \") until the\n // first capital letter (\" [A-Z] \") is encountered\n const match = anchorPosition.match(/^(.*?)[A-Z]/);\n\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[match[1] as AnchorPosition];\n }\n\n return anchorPositionToPopoverPositionMap['up'];\n}\n\nexport function getPopoverAlignFromAnchorPosition(\n anchorPosition: PopoverAnchorPosition\n): EuiPopoverPosition {\n // maps the gravity to the matching popover position\n // e.g. \"upLeft\" -> \"left\", \"rightDown\" -> \"bottom\"\n\n // extract the second positional word from anchorPosition:\n // starts a capture group at the first capital letter\n // and includes everything after it\n const match = anchorPosition.match(/([A-Z].*)/);\n\n // this performs two tasks:\n // 1. normalizes the align position by lowercasing it\n // 2. `center` doesn't exist in the lookup map which converts it to `undefined` meaning no align\n if (match?.length && match.length > 1) {\n return anchorPositionToPopoverPositionMap[\n match[1]?.toLowerCase() as AnchorPosition\n ];\n }\n\n return anchorPositionToPopoverPositionMap['left'];\n}\n\nexport const ANCHOR_POSITIONS = Object.keys(anchorPositionMapping);\nexport const DISPLAY = Object.keys(displayMapping);\nexport type FocusTarget = HTMLElement | string | (() => HTMLElement);\n\nconst DEFAULT_POPOVER_STYLES = {\n top: 50,\n left: 50\n};\n\nfunction getElementFromInitialFocus(\n initialFocus?: FocusTarget\n): HTMLElement | null {\n const initialFocusType = typeof initialFocus;\n\n if (initialFocusType === 'string') {\n return document.querySelector(initialFocus as string);\n }\n\n if (initialFocusType === 'function') {\n return (initialFocus as () => HTMLElement | null)();\n }\n\n return initialFocus as HTMLElement | null;\n}\n\ntype CssProps = {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n zIndex?: number;\n};\n\nexport interface EuiPopoverSignature {\n Element: HTMLDivElement;\n Args: EuiPopoverArgs;\n Blocks: {\n button: [];\n content: [];\n arrowChildren: [];\n };\n}\n\nexport default class EuiPopoverComponent extends Component<EuiPopoverSignature> {\n // Defaults\n @argOrDefaultDecorator(false) isOpen!: boolean;\n @argOrDefaultDecorator(true) ownFocus!: boolean;\n @argOrDefaultDecorator('downCenter') anchorPosition!: PopoverAnchorPosition;\n @argOrDefaultDecorator('m') panelPaddingSize!: PanelPaddingSize;\n @argOrDefaultDecorator(true) hasArrow!: boolean;\n @argOrDefaultDecorator('inlineBlock') display!: string;\n @argOrDefaultDecorator(true) shouldSelfFocus!: boolean;\n @argOrDefaultDecorator(false) isFocusTrapPaused!: boolean;\n\n //State\n @tracked prevIsOpen: boolean | undefined;\n @tracked suppressingPopover: boolean | undefined;\n @tracked isClosing = false;\n @tracked isOpening = false;\n @tracked popoverStyles: CssProps = {};\n @tracked arrowStyles: CssProps | undefined = {};\n @tracked arrowPosition: EuiPopoverPosition | null = null;\n @tracked openPosition: EuiPopoverPosition | null = null;\n @tracked isOpenStable = false;\n @tracked isCurrentlyOpen: boolean | undefined;\n @tracked popoverHost?: HTMLElement | null = null;\n ///\n\n private respositionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionTimeout: ReturnType<typeof later> | null = null;\n private closingTransitionAnimationFrame: number | undefined;\n private updateFocusAnimationFrame: number | undefined;\n private hasSetInitialFocus: boolean = false;\n @tracked button: HTMLElement | null = null;\n @tracked panel: HTMLElement | null = null;\n\n constructor(owner: Owner, args: EuiPopoverArgs) {\n super(owner, args);\n assert(`Must provide closePopover function`, this.args.closePopover);\n this.prevIsOpen = this.isOpen;\n this.suppressingPopover = this.isOpen;\n this.isCurrentlyOpen = this.isOpen;\n }\n\n get insert() {\n if (this.args.insert) {\n return this.args.insert;\n }\n\n if (this.shouldAccountForOtherPopovers) {\n if (this.popoverHost) {\n return {\n sibling: this.popoverHost.children[0] as HTMLElement,\n position: 'after'\n };\n }\n }\n\n return undefined;\n }\n\n @action\n closePopover(): void {\n if (this.isOpen) {\n this.args.closePopover();\n }\n }\n\n @action\n onEscapeKey(event: Event, ekEvent?: EmberKeyboardEvent): void {\n if (this.isOpen) {\n ekEvent?.stopPropagation();\n ekEvent?.stopImmediatePropagation();\n event.preventDefault();\n event.stopPropagation();\n this.closePopover();\n }\n }\n\n @action\n onKeyDown(event: KeyboardEvent, ekEvent: EmberKeyboardEvent): void {\n if (event.key === cascadingMenuKeys.ESCAPE) {\n this.onEscapeKey(event as unknown as Event, ekEvent as unknown as Event);\n }\n }\n\n @action\n onClickOutside(event: Event): void {\n if (this.args.focusTrapOptions?.onClickOutside) {\n this.args.focusTrapOptions.onClickOutside(event);\n } else {\n // only close the popover if the event source isn't the anchor button\n // otherwise, it is up to the anchor to toggle the popover's open status\n if (this.button && this.button.contains(event.target as Node) === false) {\n this.closePopover();\n }\n }\n }\n\n updateFocus(): void {\n // Wait for the DOM to update.\n this.updateFocusAnimationFrame = window.requestAnimationFrame(() => {\n if (!this.ownFocus || !this.panel || this.args.initialFocus === false) {\n return;\n }\n\n // If we've already focused on something inside the panel, everything's fine.\n if (\n this.hasSetInitialFocus &&\n this.panel.contains(document.activeElement)\n ) {\n return;\n }\n\n // Otherwise let's focus the first tabbable item and expedite input from the user.\n let focusTarget;\n\n if (this.args.initialFocus != null) {\n focusTarget = getElementFromInitialFocus(this.args.initialFocus);\n } else {\n const tabbableItems = tabbable(this.panel);\n\n if (tabbableItems.length) {\n focusTarget = tabbableItems[0];\n }\n }\n\n // there's a race condition between the popover content becoming visible and this function call\n // if the element isn't visible yet (due to css styling) then it can't accept focus\n // so wait for another render and try again\n if (focusTarget == null) {\n // there isn't a focus target, one of two reasons:\n // #1 is the whole panel hidden? If so, schedule another check\n // #2 panel is visible but no tabbables exist, move focus to the panel\n const panelVisibility = window.getComputedStyle(this.panel).opacity;\n\n if (panelVisibility === '0') {\n // #1\n this.updateFocus();\n } else {\n // #2\n focusTarget = this.panel;\n }\n } else {\n // found an element to focus, but is it visible?\n const visibility = window.getComputedStyle(focusTarget).visibility;\n\n if (visibility === 'hidden') {\n // not visible, check again next render frame\n this.updateFocus();\n }\n }\n\n if (focusTarget != null) {\n this.hasSetInitialFocus = true;\n focusTarget.focus();\n }\n });\n }\n\n @action\n onOpenPopover(): void {\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n // We need to set this state a beat after the render takes place, so that the CSS\n // transition can take effect.\n this.closingTransitionAnimationFrame = window.requestAnimationFrame(() => {\n this.isOpening = true;\n });\n\n // for each child element of `this.panel`, find any transition duration we should wait for before stabilizing\n const { durationMatch, delayMatch } = Array.prototype.slice\n .call(this.panel ? this.panel.children : [])\n .reduce(\n (\n {\n durationMatch,\n delayMatch\n }: { durationMatch: number; delayMatch: number },\n element: HTMLElement\n ) => {\n const transitionTimings = getTransitionTimings(element);\n\n return {\n durationMatch: Math.max(\n durationMatch,\n transitionTimings.durationMatch\n ),\n delayMatch: Math.max(delayMatch, transitionTimings.delayMatch)\n };\n },\n { durationMatch: 0, delayMatch: 0 }\n );\n\n this.respositionTimeout = later(\n this,\n () => {\n this.isOpenStable = true;\n\n const fn = (): void => {\n this.positionPopoverFixed();\n this.updateFocus();\n };\n\n scheduleOnce('afterRender', this, fn);\n },\n durationMatch + delayMatch\n );\n }\n\n get shouldAccountForOtherPopovers() {\n return this.args.shouldAccountForOtherPopovers ?? true;\n }\n\n checkIfPopoverIsInsideAnotherPopover(ele: HTMLElement) {\n const otherPopover = ele.closest<HTMLDivElement>('div.euiPopover__panel');\n\n this.popoverHost = otherPopover;\n }\n\n @action\n didInsertPopover(ele: HTMLDivElement): void {\n if (this.suppressingPopover) {\n // component was created with isOpen=true; now that it's inserted\n // stop suppressing and start opening\n this.suppressingPopover = false;\n this.isOpening = true;\n\n const fn = (): void => this.onOpenPopover();\n\n scheduleOnce('afterRender', this, fn);\n }\n\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n }\n\n if (this.shouldAccountForOtherPopovers) {\n this.checkIfPopoverIsInsideAnotherPopover(ele);\n }\n\n this.updateFocus();\n }\n\n @action\n didUpdateRepositionOnScroll(): void {\n if (this.args.repositionOnScroll) {\n window.addEventListener('scroll', this.positionPopoverFixed, true);\n } else {\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n }\n }\n\n @action\n didUpdateIsOpen(): void {\n this.isCurrentlyOpen = this.isOpen;\n\n if (!this.prevIsOpen && this.args.isOpen) {\n this.onOpenPopover();\n }\n\n if (this.prevIsOpen && !this.args.isOpen) {\n // If the user has just closed the popover, queue up the removal of the content after the\n // transition is complete.\n this.isClosing = true;\n this.isOpening = false;\n this.closingTransitionTimeout = later(\n this,\n () => {\n this.isClosing = false;\n },\n 250\n );\n }\n\n this.prevIsOpen = this.args.isOpen;\n }\n\n willDestroy(): void {\n super.willDestroy();\n window.removeEventListener('scroll', this.positionPopoverFixed, true);\n this.popoverHost = null;\n cancel(this.respositionTimeout as ReturnType<typeof later>);\n cancel(this.closingTransitionTimeout as ReturnType<typeof later>);\n cancelAnimationFrame(this.closingTransitionAnimationFrame as number);\n cancelAnimationFrame(this.updateFocusAnimationFrame as number);\n }\n\n @action\n onMutation(records: MutationRecord[]): void {\n const waitDuration = getWaitDuration(records);\n\n this.positionPopoverFixed();\n\n performOnFrame(waitDuration, this.positionPopoverFixed);\n }\n\n @action\n positionPopover(allowEnforcePosition: boolean): void {\n if (this.button == null || this.panel == null) return;\n\n let position = getPopoverPositionFromAnchorPosition(this.anchorPosition);\n let forcePosition = undefined;\n\n if (\n allowEnforcePosition &&\n this.isOpenStable &&\n this.openPosition != null\n ) {\n position = this.openPosition;\n forcePosition = true;\n }\n\n // get the position of the element relative to the offsetParent, which could be the document\n function getPos(ele: HTMLElement): [number, number] {\n let currTop = 0;\n let currLeft = 0;\n\n if (ele.offsetParent) {\n do {\n currTop += ele.offsetTop;\n currLeft += ele.offsetLeft;\n } while ((ele = ele.offsetParent as HTMLElement));\n } else {\n currTop = ele.offsetTop;\n currLeft = ele.offsetLeft;\n }\n\n return [currTop, currLeft];\n }\n\n const {\n top,\n left,\n position: foundPosition,\n arrow,\n anchorBoundingBox\n } = findPopoverPosition({\n container: this.args.container,\n host: this.shouldAccountForOtherPopovers ? this.popoverHost : null,\n position,\n forcePosition,\n align: getPopoverAlignFromAnchorPosition(this.anchorPosition),\n anchor: this.button,\n popover: this.panel,\n offset:\n !this.args.attachToAnchor && this.hasArrow\n ? 16 + (this.args.offset || 0)\n : 8 + (this.args.offset || 0),\n arrowConfig: {\n arrowWidth: 24,\n arrowBuffer: 10\n },\n returnBoundingBox: this.args.attachToAnchor,\n buffer: this.args.buffer\n });\n\n // the popover's z-index must inherit from the button\n // this keeps a button's popover under a flyout that would cover the button\n // but a popover triggered inside a flyout will appear over that flyout\n const { zIndex: zIndexProp } = this.args;\n const zIndex =\n zIndexProp == null\n ? getElementZIndex(this.button, this.panel) + 2000\n : zIndexProp;\n\n const popoverStyles = {\n top,\n left:\n this.args.attachToAnchor && anchorBoundingBox\n ? anchorBoundingBox.left\n : left,\n zIndex\n };\n\n const willRenderArrow = !this.args.attachToAnchor && this.hasArrow;\n const arrowStyles = willRenderArrow ? arrow : undefined;\n const arrowPosition = foundPosition;\n\n this.popoverStyles = popoverStyles;\n this.arrowStyles = arrowStyles;\n this.arrowPosition = arrowPosition;\n this.openPosition = foundPosition;\n }\n\n get _arrowStyles(): ReturnType<typeof htmlSafe> | undefined {\n const { arrowStyles } = this;\n\n return arrowStyles\n ? htmlSafe(`top: ${arrowStyles?.top}px; left: ${arrowStyles?.left}px;`)\n : undefined;\n }\n\n get _popoverStyles(): { [i: string]: string } {\n const { panelStyle } = this.args;\n const { popoverStyles } = this;\n\n return {\n ...panelStyle,\n top: `${popoverStyles.top}px`,\n left: `${popoverStyles.left}px`,\n zIndex: `${popoverStyles.zIndex}`\n };\n }\n\n get tabindex() {\n if (this.ownFocus) {\n return this.args.tabindex ?? '0';\n }\n\n return '-1';\n }\n\n @action\n positionPopoverFixed(): void {\n this.positionPopover(true);\n }\n\n @action\n positionPopoverFluid(): void {\n this.positionPopover(false);\n }\n\n @action\n registerButton(btn: HTMLDivElement): void {\n this.button = btn;\n this.args.buttonRef?.(btn);\n }\n\n @action\n registerPanel(panel: HTMLElement): void {\n this.panel = panel;\n this.args.panelRef?.(panel);\n\n if (panel === null) {\n // panel has unmounted, restore the state defaults\n this.popoverStyles = DEFAULT_POPOVER_STYLES;\n this.arrowStyles = {};\n this.arrowPosition = null;\n this.openPosition = null;\n this.isOpenStable = false;\n window.removeEventListener('resize', this.positionPopoverFluid);\n } else {\n // panel is coming into existence\n this.positionPopoverFluid();\n window.addEventListener('resize', this.positionPopoverFluid);\n }\n }\n\n <template>\n {{#let\n (randomId)\n (classNames\n (if this.isOpening \"euiPopover-isOpen\")\n position=this.anchorPosition\n display=this.display\n componentName=\"EuiPopover\"\n )\n (classNames\n \"euiPopover__panel\"\n (concat \"euiPopover__panel--\" this.arrowPosition)\n (if this.isOpening \"euiPopover__panel-isOpen\")\n (if\n (or (not this.hasArrow) @attachToAnchor) \"euiPopover__panel-noArrow\"\n )\n (if @attachToAnchor \"euiPopover__panel-isAttached\")\n @panelClassName\n )\n as |descriptionId classes panelClasses|\n }}\n <div\n class={{classes}}\n {{onKey \"_all\" this.onKeyDown priority=1}}\n {{didInsert this.didInsertPopover}}\n {{didUpdate this.didUpdateIsOpen @isOpen}}\n {{didUpdate this.didUpdateRepositionOnScroll @repositionOnScroll}}\n {{didInsert (optional @popoverRef)}}\n ...attributes\n >\n\n {{! button }}\n <div\n class=\"euiPopover__anchor {{@anchorClassName}}\"\n {{didInsert this.registerButton}}\n >\n {{yield to=\"button\"}}\n </div>\n\n {{! content }}\n {{#if\n (and\n (not this.suppressingPopover)\n (or this.isCurrentlyOpen this.isClosing)\n )\n }}\n <EuiPortal @insert={{this.insert}}>\n {{#let (randomId) as |panelId|}}\n <EuiPanel\n id={{panelId}}\n class={{panelClasses}}\n aria-live={{if this.ownFocus \"off\" \"assertive\"}}\n role=\"dialog\"\n aria-label={{@ariaLabel}}\n aria-labelledby={{@ariaLabelledBy}}\n aria-modal=\"true\"\n aria-describedby={{if this.ownFocus descriptionId}}\n tabindex={{this.tabindex}}\n @hasShadow={{false}}\n @paddingSize={{this.panelPaddingSize}}\n {{simpleStyle this._popoverStyles}}\n {{didInsert this.registerPanel}}\n {{outsideClickDetector onOutsideClick=this.onClickOutside}}\n {{onKey \"Escape\" this.onEscapeKey}}\n {{focusTrap\n isActive=(not\n (or\n (not this.ownFocus) (not this.isOpenStable) this.isClosing\n )\n )\n shouldSelfFocus=this.shouldSelfFocus\n isPaused=this.isFocusTrapPaused\n focusTrapOptions=(merge\n (hash\n returnFocusOnDeactivate=this.isOpenStable\n initialFocus=(or @initialFocus this.panel)\n onDeactivate=(optional @onTrapDeactivation)\n preventScroll=true\n clickOutsideDeactivates=true\n fallbackFocus=(concat \"#\" panelId)\n )\n @focusTrapOptions\n )\n }}\n >\n <div\n class={{concat\n \"euiPopover__panelArrow euiPopover__panelArrow--\"\n this.arrowPosition\n }}\n style={{this._arrowStyles}}\n >\n {{yield to=\"arrowChildren\"}}\n </div>\n {{#if this.ownFocus}}\n <p id={{descriptionId}} {{screenReaderOnly}}>\n You are in a dialog. To close this dialog, hit escape.\n </p>\n {{/if}}\n <div\n {{mutationObserver\n onMutation=this.onMutation\n observerOptions=(merge\n (hash\n attributes=true\n childList=true\n characterData=true\n subtree=true\n )\n @mutationObserverOptions\n )\n }}\n >\n {{yield to=\"content\"}}\n </div>\n </EuiPanel>\n {{/let}}\n </EuiPortal>\n {{/if}}\n\n </div>\n {{/let}}\n </template>\n}\n"],"names":["anchorPositionToPopoverPositionMap","up","right","down","left","getPopoverPositionFromAnchorPosition","anchorPosition","match","length","getPopoverAlignFromAnchorPosition","toLowerCase","ANCHOR_POSITIONS","Object","keys","anchorPositionMapping","DISPLAY","displayMapping","DEFAULT_POPOVER_STYLES","top","getElementFromInitialFocus","initialFocus","initialFocusType","document","querySelector","EuiPopoverComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","tracked","respositionTimeout","closingTransitionTimeout","closingTransitionAnimationFrame","updateFocusAnimationFrame","hasSetInitialFocus","constructor","owner","args","assert","closePopover","prevIsOpen","isOpen","suppressingPopover","isCurrentlyOpen","insert","shouldAccountForOtherPopovers","popoverHost","sibling","children","position","undefined","n","action","onEscapeKey","event","ekEvent","stopPropagation","stopImmediatePropagation","preventDefault","onKeyDown","key","cascadingMenuKeys","ESCAPE","onClickOutside","focusTrapOptions","button","contains","target","updateFocus","window","requestAnimationFrame","ownFocus","panel","activeElement","focusTarget","tabbableItems","tabbable","panelVisibility","getComputedStyle","opacity","visibility","focus","onOpenPopover","cancel","isOpening","durationMatch","delayMatch","Array","slice","call","reduce","element","transitionTimings","getTransitionTimings","Math","max","later","isOpenStable","fn","positionPopoverFixed","scheduleOnce","checkIfPopoverIsInsideAnotherPopover","ele","otherPopover","closest","didInsertPopover","repositionOnScroll","addEventListener","didUpdateRepositionOnScroll","removeEventListener","didUpdateIsOpen","isClosing","willDestroy","cancelAnimationFrame","onMutation","records","waitDuration","getWaitDuration","performOnFrame","positionPopover","allowEnforcePosition","forcePosition","openPosition","foundPosition","arrow","anchorBoundingBox","findPopoverPosition","container","host","align","anchor","popover","offset","attachToAnchor","hasArrow","arrowConfig","arrowWidth","arrowBuffer","returnBoundingBox","buffer","zIndex","zIndexProp","getElementZIndex","popoverStyles","willRenderArrow","arrowStyles","arrowPosition","_arrowStyles","htmlSafe","_popoverStyles","panelStyle","tabindex","positionPopoverFluid","registerButton","btn","buttonRef","registerPanel","panelRef","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","classNames","concat","or","not","onKey","didInsert","didUpdate","optional","and","EuiPortal","EuiPanel","simpleStyle","outsideClickDetector","focusTrap","merge","hash","screenReaderOnly","mutationObserver"],"mappings":"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"} | |
diff --git a/dist/components/eui-radio.js b/dist/components/eui-radio.js | |
index b381083322b88c7d98afffa351fa512377d4a2fd..86958e852142eb6bd08c53db0cd4f2f11b30bb65 100644 | |
--- a/dist/components/eui-radio.js | |
+++ b/dist/components/eui-radio.js | |
@@ -1,5 +1,5 @@ | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { or, not, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
diff --git a/dist/components/eui-radio.js.map b/dist/components/eui-radio.js.map | |
index e9aa170fdc3e7e30136d2886646d579b5e5326d0..25ac64f1fa211b8003ebcf2fbdaa02f6709874de 100644 | |
--- a/dist/components/eui-radio.js.map | |
+++ b/dist/components/eui-radio.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-radio.js","sources":["../../src/components/eui-radio.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiRadioSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n name?: string;\n label?: string;\n labelProps?: {\n className?: string;\n };\n compressed?: boolean;\n containerClass?: string;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n };\n Blocks: {\n label: [];\n };\n}\n\nconst EuiRadio: TemplateOnlyComponent<EuiRadioSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n @containerClass\n (if (not (or hasLabelBlock @label)) \"euiRadio--noLabel\")\n (if @compressed \"euiRadio--compressed\")\n \"euiRadio\"\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiRadio__input\"\n type=\"radio\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n <div class=\"euiRadio__circle\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiRadio__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiRadio;\n"],"names":["EuiRadio","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AAgCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0C3D,25BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-radio.js","sources":["../../src/components/eui-radio.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiRadioSignature {\n Element: HTMLInputElement;\n Args: {\n checked?: boolean;\n disabled?: boolean;\n name?: string;\n label?: string;\n labelProps?: {\n className?: string;\n };\n compressed?: boolean;\n containerClass?: string;\n inputRef?: (element: HTMLInputElement | null) => void;\n isFakeLabelBlock?: boolean;\n id?: string;\n };\n Blocks: {\n label: [];\n };\n}\n\nconst EuiRadio: TemplateOnlyComponent<EuiRadioSignature> = <template>\n {{#let\n (and (has-block \"label\") (not (argOrDefault @isFakeLabelBlock false)))\n (argOrDefault @id (randomId))\n as |hasLabelBlock id|\n }}\n {{#let\n (classNames\n @containerClass\n (if (not (or hasLabelBlock @label)) \"euiRadio--noLabel\")\n (if @compressed \"euiRadio--compressed\")\n \"euiRadio\"\n )\n as |classes|\n }}\n <div class={{classes}}>\n <input\n class=\"euiRadio__input\"\n type=\"radio\"\n id={{id}}\n checked={{@checked}}\n disabled={{@disabled}}\n name={{@name}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n />\n <div class=\"euiRadio__circle\"></div>\n {{#if (or hasLabelBlock @label)}}\n <label\n class={{classNames \"euiRadio__label\" @labelProps.className}}\n for={{id}}\n >\n {{#if hasLabelBlock}}\n {{yield to=\"label\"}}\n {{else}}\n {{@label}}\n {{/if}}\n </label>\n {{/if}}\n </div>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiRadio;\n"],"names":["EuiRadio","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AAgCA,MAAMA,QAAqD,GAAAC,oBAAA,CAAAC,kBAAA,CA0C3D,25BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-range-ticks.js b/dist/components/eui-range-ticks.js | |
index 30a1543af8a0ca24eefea1d9de781226dfa8c099..b8f35d8f9316b0aefa8664f9f42c33d49bac2534 100644 | |
--- a/dist/components/eui-range-ticks.js | |
+++ b/dist/components/eui-range-ticks.js | |
@@ -1,7 +1,7 @@ | |
import Component from '@glimmer/component'; | |
import { on } from '@ember/modifier'; | |
import { htmlSafe } from '@ember/template'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { eq } from 'ember-truth-helpers'; | |
import classNames from '../helpers/class-names.js'; | |
import getRangeTick from '../helpers/get-range-tick.js'; | |
diff --git a/dist/components/eui-range-ticks.js.map b/dist/components/eui-range-ticks.js.map | |
index e90131aec89ddefc32e8f1314ed3d582ba358164..6bf450ac7009ec8217dcaab2a6f1027c2d56f909 100644 | |
--- a/dist/components/eui-range-ticks.js.map | |
+++ b/dist/components/eui-range-ticks.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-range-ticks.js","sources":["../../src/components/eui-range-ticks.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { htmlSafe } from '@ember/template';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport getRangeTick from '../helpers/get-range-tick.ts';\n\nexport interface EuiRangeTick {\n value: number;\n label: Component;\n}\n\ntype Value = string | number;\n\nexport type EuiRangeTicksArgs = {\n ticks: EuiRangeTick[];\n tickSequence: number[];\n value?: Value | Value[];\n min: number;\n max: number;\n compressed?: boolean;\n interval?: number;\n disabled?: boolean;\n onChange?: (e: MouseEvent) => void;\n trackWidth: number;\n};\n\nexport interface EuiRangeTicksSignature {\n Element: HTMLDivElement;\n Args: EuiRangeTicksArgs;\n}\n\nexport default class EuiRangeTicksComponent extends Component<EuiRangeTicksSignature> {\n get percentageWidth(): number {\n const { max, min, interval = 1 } = this.args;\n\n return (interval / (max - min + interval)) * 100;\n }\n\n get ticksStyle(): ReturnType<typeof htmlSafe> | undefined {\n const { ticks } = this.args;\n\n return !ticks\n ? undefined\n : htmlSafe(`margin: 0 ${this.percentageWidth / -2}%; left: 0; right: 0;`);\n }\n\n <template>\n <div\n class=\"euiRangeTicks {{if @compressed 'euiRangeTicks--compressed'}}\"\n style={{this.ticksStyle}}\n ...attributes\n >\n {{#each @tickSequence key=\"value\" as |tickValue|}}\n {{#let\n (getRangeTick\n @ticks tickValue @min @max this.percentageWidth @trackWidth\n )\n as |derivedState|\n }}\n <button\n type=\"button\"\n class={{classNames\n (if (eq @value tickValue) \"euiRangeTick--selected\")\n (if derivedState.customTick \"euiRangeTick--isCustom\")\n \"euiRangeTick\"\n }}\n value={{tickValue}}\n disabled={{@disabled}}\n style={{derivedState.style}}\n tabindex=\"-1\"\n {{on \"click\" (optional @onChange)}}\n >\n {{!@glint-expect-error}}\n {{derivedState.label}}\n </button>\n {{/let}}\n {{/each}}\n </div>\n </template>\n}\n"],"names":["EuiRangeTicksComponent","Component","percentageWidth","max","min","interval","args","ticksStyle","ticks","undefined","htmlSafe","setComponentTemplate","precompileTemplate","strictMode","scope","getRangeTick","classNames","eq","on","optional"],"mappings":";;;;;;;;;;AAmCe,MAAMA,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,eAAAA,GAA0B;IAC5B,MAAM;MAAEC,GAAG;MAAEC,GAAG;AAAEC,MAAAA,QAAW,GAAA;KAAG,GAAG,IAAI,CAACC,IAAI;IAE5C,OAAQD,QAAW,IAACF,MAAMC,GAAM,GAAAC,QAAQ,CAAC,GAAI,GAAA;AAC/C;EAEA,IAAIE,UAAcA,GAAwC;IACxD,MAAM;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACF,IAAI;AAE3B,IAAA,OAAO,CAACE,KAAA,GACJC,SACA,GAAAC,QAAA,CAAS,CAAa,UAAA,EAAA,IAAI,CAACR,eAAe,GAAG,EAAC,uBAAwB,CAAA;AAC5E;AAEA,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAgCA,qvBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-range-ticks.js","sources":["../../src/components/eui-range-ticks.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { htmlSafe } from '@ember/template';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport classNames from '../helpers/class-names.ts';\nimport getRangeTick from '../helpers/get-range-tick.ts';\n\nexport interface EuiRangeTick {\n value: number;\n label: Component;\n}\n\ntype Value = string | number;\n\nexport type EuiRangeTicksArgs = {\n ticks: EuiRangeTick[];\n tickSequence: number[];\n value?: Value | Value[];\n min: number;\n max: number;\n compressed?: boolean;\n interval?: number;\n disabled?: boolean;\n onChange?: (e: MouseEvent) => void;\n trackWidth: number;\n};\n\nexport interface EuiRangeTicksSignature {\n Element: HTMLDivElement;\n Args: EuiRangeTicksArgs;\n}\n\nexport default class EuiRangeTicksComponent extends Component<EuiRangeTicksSignature> {\n get percentageWidth(): number {\n const { max, min, interval = 1 } = this.args;\n\n return (interval / (max - min + interval)) * 100;\n }\n\n get ticksStyle(): ReturnType<typeof htmlSafe> | undefined {\n const { ticks } = this.args;\n\n return !ticks\n ? undefined\n : htmlSafe(`margin: 0 ${this.percentageWidth / -2}%; left: 0; right: 0;`);\n }\n\n <template>\n <div\n class=\"euiRangeTicks {{if @compressed 'euiRangeTicks--compressed'}}\"\n style={{this.ticksStyle}}\n ...attributes\n >\n {{#each @tickSequence key=\"value\" as |tickValue|}}\n {{#let\n (getRangeTick\n @ticks tickValue @min @max this.percentageWidth @trackWidth\n )\n as |derivedState|\n }}\n <button\n type=\"button\"\n class={{classNames\n (if (eq @value tickValue) \"euiRangeTick--selected\")\n (if derivedState.customTick \"euiRangeTick--isCustom\")\n \"euiRangeTick\"\n }}\n value={{tickValue}}\n disabled={{@disabled}}\n style={{derivedState.style}}\n tabindex=\"-1\"\n {{on \"click\" (optional @onChange)}}\n >\n {{!@glint-expect-error}}\n {{derivedState.label}}\n </button>\n {{/let}}\n {{/each}}\n </div>\n </template>\n}\n"],"names":["EuiRangeTicksComponent","Component","percentageWidth","max","min","interval","args","ticksStyle","ticks","undefined","htmlSafe","setComponentTemplate","precompileTemplate","strictMode","scope","getRangeTick","classNames","eq","on","optional"],"mappings":";;;;;;;;;;AAmCe,MAAMA,+BAA+BC,SAAU,CAAA;EAC5D,IAAIC,eAAAA,GAA0B;IAC5B,MAAM;MAAEC,GAAG;MAAEC,GAAG;AAAEC,MAAAA,QAAW,GAAA;KAAG,GAAG,IAAI,CAACC,IAAI;IAE5C,OAAQD,QAAW,IAACF,MAAMC,GAAM,GAAAC,QAAQ,CAAC,GAAI,GAAA;AAC/C;EAEA,IAAIE,UAAcA,GAAwC;IACxD,MAAM;AAAEC,MAAAA;KAAO,GAAG,IAAI,CAACF,IAAI;AAE3B,IAAA,OAAO,CAACE,KAAA,GACJC,SACA,GAAAC,QAAA,CAAS,CAAa,UAAA,EAAA,IAAI,CAACR,eAAe,GAAG,EAAC,uBAAwB,CAAA;AAC5E;AAEA,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAgCA,qvBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,YAAA;QAAAC,UAAA;QAAAC,EAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-range.js b/dist/components/eui-range.js | |
index 492f9a1cff49a97f144e0e9851513c084282329f..628975cfde8506ece6b0a2bd67ea92039a48fe26 100644 | |
--- a/dist/components/eui-range.js | |
+++ b/dist/components/eui-range.js | |
@@ -5,7 +5,7 @@ import { on } from '@ember/modifier'; | |
import { action } from '@ember/object'; | |
import { guidFor } from '@ember/object/internals'; | |
import { later } from '@ember/runloop'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { eq, not, and } from 'ember-truth-helpers'; | |
import argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.js'; | |
import castTo from '../helpers/cast-to.js'; | |
diff --git a/dist/components/eui-range.js.map b/dist/components/eui-range.js.map | |
index 2b1a21ca7c49199728b47403ee36d274cc371d92..12cc2a79d7e712df486dbccd19d0c1ac2dcc96d8 100644 | |
--- a/dist/components/eui-range.js.map | |
+++ b/dist/components/eui-range.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-range.js","sources":["../../src/components/eui-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { later } from '@ember/runloop';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport classNames from '../helpers/class-names.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeTooltip from './eui-range-tooltip.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport interface EuiRangeArgs {\n compressed?: boolean;\n readOnly?: boolean;\n fullWidth?: boolean;\n id: string;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n step?: number;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: boolean | 'inputWithPopover';\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Shows a thick line from min to value\n */\n showRange?: boolean;\n /**\n * Shows clickable tick marks and labels at the given interval (`step`/`tickInterval`)\n */\n showTicks?: boolean;\n\n min?: number;\n max?: number;\n /**\n * Shows a tooltip styled value\n */\n showValue?: boolean;\n /**\n * Specified ticks at specified values\n */\n ticks: EuiRangeTick[];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Appends to the tooltip\n */\n valueAppend?: any;\n /**\n * Prepends to the tooltip\n */\n valuePrepend?: any;\n\n onChange?: (event: Event, isValid: boolean) => void;\n onBlur?: (event: Event) => void;\n onFocus?: (event: Event) => void;\n\n value?: number;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n isFakeMaxBlock?: boolean;\n isFakeMinBlock?: boolean;\n isFakeValueBlock?: boolean;\n isFakeValueAppendBlock?: boolean;\n isFakeValuePrependBlock?: boolean;\n isInvalid?: boolean;\n name?: string;\n isLoading?: boolean;\n}\n\nexport interface EuiRangeSignature {\n Element: HTMLInputElement;\n Args: EuiRangeArgs;\n Blocks: {\n min: [min: number];\n max: [max: number];\n value: [];\n valueAppend: [];\n valuePrepend: [];\n prepend: [classes: string];\n append: [classes: string];\n input: [];\n content: [];\n };\n}\n\nexport default class EuiRangeComponent extends Component<EuiRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(false) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator(false) showValue!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n preventPopoverClose = false;\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked isPopoverOpen = false;\n ///\n\n @action\n handleOnChange(e: Event): void {\n const isValid = isWithinRange(\n this.min,\n this.max,\n (e.currentTarget as HTMLInputElement).value\n );\n\n if (this.args.onChange) {\n this.args.onChange(e, isValid);\n }\n }\n\n get isValid(): boolean {\n return isWithinRange(this.min, this.max, this.args.value || '');\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n get showRangeTooltip(): boolean {\n return (\n this.showValue &&\n !!String(this.args.value).length &&\n this.args.value !== undefined\n );\n }\n\n @action\n onInputFocus(e: Event): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: Event): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n setPreventPopover(val: boolean): void {\n this.preventPopoverClose = val;\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n setPreventPopoverClose(bool: boolean): void {\n this.preventPopoverClose = bool;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n (and (not (argOrDefault @isFakeValueBlock false)) (has-block \"value\"))\n (and\n (not (argOrDefault @isFakeValueAppendBlock false))\n (has-block \"valueAppend\")\n )\n (and\n (not (argOrDefault @isFakeValuePrependBlock false))\n (has-block \"valuePrepend\")\n )\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock hasValueBlock hasValueAppendBlock hasValuePrependBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{@fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n >\n <:input>\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if this.canShowDropdown this.onInputFocus (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:input>\n <:content>\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly\n (fn this.setPreventPopoverClose true)\n (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown\n this.onInputFocus\n (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly (fn this.setPreventPopover true) (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","preventPopoverClose","tracked","args","id","guidFor","handleOnChange","e","isValid","isWithinRange","min","max","currentTarget","value","onChange","n","action","digitTolerance","Math","String","length","showInputOnly","showInput","canShowDropdown","readOnly","disabled","showRangeTooltip","showValue","undefined","onInputFocus","onFocus","isPopoverOpen","onInputBlur","later","onBlur","closePopover","setPreventPopover","val","setPreventPopoverClose","bool","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiRangeInput","on","optional","EuiRangeWrapper","classNames","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","castTo","EuiRangeSlider","fn","EuiRangeTooltip"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkHe,MAAMA,0BAA0BC,SAAU,CAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,KAAA,EAAA,CAEtDC,qBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAC,SAAA,EADvB;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,KAAA,EAAA,CAECC,qBAAsB,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,MAAA,EAAA,CACtBC,qBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,QAAA,EAAA,CACtBC,sBAAsB,EAAE,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,SAAA;AAEzBC,EAAAA,mBAAA,GAAsB,KAAM;AAE5B;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,IAAA,EAAA,CACCK,OAAA,CAAA,EAAA,YAAA;MAAA,OAAqB,IAAI,CAACC,IAAI,CAACC,EAAE,IAAIC,OAAQ,CAAA,EAAI,CAAA;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,GAAA,IAAAN,CAAA,CAAA,IAAA,EAAA,IAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CACjDK,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,SAAA;AAC/B;EAGAM,cAAAA,CAAeC,CAAQ,EAAQ;AAC7B,IAAA,MAAMC,UAAUC,aACd,CAAA,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACPJ,CAAE,CAAAK,aAAa,CAAsBC,KAAK,CAAA;AAG7C,IAAA,IAAI,IAAI,CAACV,IAAI,CAACW,QAAQ,EAAE;MACtB,IAAI,CAACX,IAAI,CAACW,QAAQ,CAACP,CAAG,EAAAC,OAAA,CAAA;AACxB;AACF;AAAA,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,gBAAA,EAAA,CAXCmB,MAAA,CAAA,CAAA;AAAA;EAaD,IAAIR,OAAAA,GAAmB;AACrB,IAAA,OAAOC,aAAc,CAAA,IAAI,CAACC,GAAG,EAAE,IAAI,CAACC,GAAG,EAAE,IAAI,CAACR,IAAI,CAACU,KAAK,IAAI,EAAA,CAAA;AAC9D;EAEA,IAAII,cAAAA,GAAyB;IAC3B,OAAOC,IAAK,CAAAP,GAAG,CAACQ,MAAA,CAAO,IAAI,CAACT,GAAG,CAAE,CAAAU,MAAM,EAAED,MAAO,CAAA,IAAI,CAACR,GAAG,EAAES,MAAM,CAAA;AAClE;EAEA,IAAIC,aAAAA,GAAyB;AAC3B,IAAA,OAAO,IAAI,CAACC,SAAS,KAAK,kBAAA;AAC5B;EAEA,IAAIC,eAAAA,GAA2B;AAC7B,IAAA,OAAO,IAAI,CAACF,aAAa,IAAI,CAAC,IAAI,CAAClB,IAAI,CAACqB,QAAQ,IAAI,CAAC,IAAI,CAACrB,IAAI,CAACsB,QAAQ;AACzE;EAEA,IAAIC,gBAAAA,GAA4B;IAC9B,OACE,IAAI,CAACC,SAAS,IACd,CAAC,CAACR,MAAO,CAAA,IAAI,CAAChB,IAAI,CAACU,KAAK,CAAA,CAAEO,MAAM,IAChC,IAAI,CAACjB,IAAI,CAACU,KAAK,KAAKe,SACtB;AACF;EAGAC,YAAAA,CAAatB,CAAQ,EAAQ;AAC3B,IAAA,IAAI,IAAI,CAACJ,IAAI,CAAC2B,OAAO,EAAE;AACrB,MAAA,IAAI,CAAC3B,IAAI,CAAC2B,OAAO,CAACvB,CAAA,CAAA;AACpB;IAEA,IAAI,CAACwB,aAAa,GAAG,IAAA;AACvB;AAAA,EAAA;IAAAhB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,cAAA,EAAA,CAPCmB,MAAA,CAAA,CAAA;AAAA;EAUDgB,WAAAA,CAAYzB,CAAQ,EAAQ;IAC1B0B,KAAA,CACE,IAAI,EACJ,MAAA;AACE;AACA;AACA;AACA;MACA,IAAI,IAAI,CAAChC,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,GAAG,KAAA;AAE3B,QAAA;AACF;AAEA,MAAA,IAAI,IAAI,CAACE,IAAI,CAAC+B,MAAM,EAAE;AACpB,QAAA,IAAI,CAAC/B,IAAI,CAAC+B,MAAM,CAAC3B,CAAA,CAAA;AACnB;MAEA,IAAI,CAAC4B,YAAY,EAAA;KAEnB,EAAA,GAAA,CAAA;AAEJ;AAAA,EAAA;IAAApB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,aAAA,EAAA,CAvBCmB,MAAA,CAAA,CAAA;AAAA;EA0BDoB,iBAAAA,CAAkBC,GAAY,EAAQ;IACpC,IAAI,CAACpC,mBAAmB,GAAGoC,GAAA;AAC7B;AAAA,EAAA;IAAAtB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,mBAAA,EAAA,CAHCmB,MAAA,CAAA,CAAA;AAAA;AAMDmB,EAAAA,YAAAA,GAAqB;IACnB,IAAI,CAAClC,mBAAmB,GAAG,KAAA;IAC3B,IAAI,CAAC8B,aAAa,GAAG,KAAA;AACvB;AAAA,EAAA;IAAAhB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,cAAA,EAAA,CAJCmB,MAAA,CAAA,CAAA;AAAA;EAODsB,sBAAAA,CAAuBC,IAAa,EAAQ;IAC1C,IAAI,CAACtC,mBAAmB,GAAGsC,IAAA;AAC7B;AAAA,EAAA;IAAAxB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,wBAAA,EAAA,CAHCmB,MAAA,CAAA,CAAA;AAAA;AAKD,EAAA;IAAAwB,oBAAA,CAAAC,kBAAA,CA0YA,24VAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,GAAA;QAAAC,YAAA;QAAAC,GAAA;yBAAAC,wBAAA;QAAAC,aAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,eAAA;QAAAC,UAAA;QAAAC,aAAA;uBAAAC,sBAAA;QAAAC,EAAA;QAAAC,iBAAA;QAAAC,MAAA;QAAAC,cAAA;QAAAC,EAAA;AAAAC,yBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-range.js","sources":["../../src/components/eui-range.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { later } from '@ember/runloop';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport classNames from '../helpers/class-names.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeTooltip from './eui-range-tooltip.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\n\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\n\nexport interface EuiRangeArgs {\n compressed?: boolean;\n readOnly?: boolean;\n fullWidth?: boolean;\n id: string;\n /**\n * Create colored indicators for certain intervals\n */\n levels?: EuiRangeLevel[];\n step?: number;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */\n showInput?: boolean | 'inputWithPopover';\n /**\n * Shows static min/max labels on the sides of the range slider\n */\n showLabels?: boolean;\n /**\n * Shows a thick line from min to value\n */\n showRange?: boolean;\n /**\n * Shows clickable tick marks and labels at the given interval (`step`/`tickInterval`)\n */\n showTicks?: boolean;\n\n min?: number;\n max?: number;\n /**\n * Shows a tooltip styled value\n */\n showValue?: boolean;\n /**\n * Specified ticks at specified values\n */\n ticks: EuiRangeTick[];\n /**\n * Modifies the number of tick marks and at what interval\n */\n tickInterval?: number;\n /**\n * Appends to the tooltip\n */\n valueAppend?: any;\n /**\n * Prepends to the tooltip\n */\n valuePrepend?: any;\n\n onChange?: (event: Event, isValid: boolean) => void;\n onBlur?: (event: Event) => void;\n onFocus?: (event: Event) => void;\n\n value?: number;\n\n disabled?: boolean;\n\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n isFakeMaxBlock?: boolean;\n isFakeMinBlock?: boolean;\n isFakeValueBlock?: boolean;\n isFakeValueAppendBlock?: boolean;\n isFakeValuePrependBlock?: boolean;\n isInvalid?: boolean;\n name?: string;\n isLoading?: boolean;\n}\n\nexport interface EuiRangeSignature {\n Element: HTMLInputElement;\n Args: EuiRangeArgs;\n Blocks: {\n min: [min: number];\n max: [max: number];\n value: [];\n valueAppend: [];\n valuePrepend: [];\n prepend: [classes: string];\n append: [classes: string];\n input: [];\n content: [];\n };\n}\n\nexport default class EuiRangeComponent extends Component<EuiRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0) min!: number;\n @argOrDefaultDecorator(100) max!: number;\n @argOrDefaultDecorator(1) step!: number;\n @argOrDefaultDecorator(false) fullWidth!: boolean;\n @argOrDefaultDecorator(false) compressed!: boolean;\n @argOrDefaultDecorator(false) isLoading!: boolean;\n @argOrDefaultDecorator(false) showLabels!: boolean;\n @argOrDefaultDecorator(false) showInput!: boolean | string;\n @argOrDefaultDecorator(false) showRange!: boolean;\n @argOrDefaultDecorator(false) showTicks!: boolean;\n @argOrDefaultDecorator(false) showValue!: boolean;\n @argOrDefaultDecorator([]) levels!: EuiRangeLevel[];\n\n preventPopoverClose = false;\n\n //State\n @tracked id: string = this.args.id || guidFor({});\n @tracked isPopoverOpen = false;\n ///\n\n @action\n handleOnChange(e: Event): void {\n const isValid = isWithinRange(\n this.min,\n this.max,\n (e.currentTarget as HTMLInputElement).value\n );\n\n if (this.args.onChange) {\n this.args.onChange(e, isValid);\n }\n }\n\n get isValid(): boolean {\n return isWithinRange(this.min, this.max, this.args.value || '');\n }\n\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n\n get showRangeTooltip(): boolean {\n return (\n this.showValue &&\n !!String(this.args.value).length &&\n this.args.value !== undefined\n );\n }\n\n @action\n onInputFocus(e: Event): void {\n if (this.args.onFocus) {\n this.args.onFocus(e);\n }\n\n this.isPopoverOpen = true;\n }\n\n @action\n onInputBlur(e: Event): void {\n later(\n this,\n () => {\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n\n return;\n }\n\n if (this.args.onBlur) {\n this.args.onBlur(e);\n }\n\n this.closePopover();\n },\n 200\n );\n }\n\n @action\n setPreventPopover(val: boolean): void {\n this.preventPopoverClose = val;\n }\n\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n\n @action\n setPreventPopoverClose(bool: boolean): void {\n this.preventPopoverClose = bool;\n }\n\n <template>\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n (and (not (argOrDefault @isFakeValueBlock false)) (has-block \"value\"))\n (and\n (not (argOrDefault @isFakeValueAppendBlock false))\n (has-block \"valueAppend\")\n )\n (and\n (not (argOrDefault @isFakeValuePrependBlock false))\n (has-block \"valuePrepend\")\n )\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock hasValueBlock hasValueAppendBlock hasValuePrependBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{@fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n >\n <:input>\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if this.canShowDropdown this.onInputFocus (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:input>\n <:content>\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly\n (fn this.setPreventPopoverClose true)\n (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown\n this.onInputFocus\n (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class={{classNames\n \"euiRange\"\n (if this.showInput \"euiRange--hasInput\")\n }}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{eq this.showInput true}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleOnChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo @value to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n aria-hidden={{if (eq this.showInput true) true false}}\n tabindex={{if (eq this.showInput true) \"-1\"}}\n @id={{if this.showInput undefined this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @showTicks={{this.showTicks}}\n @showRange={{this.showRange}}\n ...attributes\n {{on\n \"mousedown\"\n (if\n this.showInputOnly (fn this.setPreventPopover true) (optional)\n )\n }}\n {{on\n \"focus\"\n (if (eq this.showInput true) (optional) (optional @onFocus))\n }}\n {{on\n \"blur\"\n (if this.showInputOnly this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n />\n {{#if this.showRangeTooltip}}\n <EuiRangeTooltip\n @compressed={{@compressed}}\n @value={{@value}}\n @max={{this.max}}\n @min={{this.min}}\n @name={{@name}}\n @showTicks={{this.showTicks}}\n >\n <:valuePrepend>\n {{#if hasValuePrependBlock}}\n {{yield to=\"valuePrepend\"}}\n {{else}}\n {{@valuePrepend}}\n {{/if}}\n </:valuePrepend>\n <:value>\n {{#if hasValueBlock}}\n {{yield to=\"value\"}}\n {{else}}\n {{@value}}\n {{/if}}\n </:value>\n <:valueAppend>\n {{#if hasValueAppendBlock}}\n {{yield to=\"valueAppend\"}}\n {{else}}\n {{@valueAppend}}\n {{/if}}\n </:valueAppend>\n </EuiRangeTooltip>\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"max\" @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if (and this.showInput (not this.showInputOnly))}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{#if this.showInput}}\n <EuiRangeInput\n id={{this.id}}\n @min={{this.min}}\n @max={{this.max}}\n @digitTolerance={{this.digitTolerance}}\n @readOnly={{@readOnly}}\n @step={{this.step}}\n @value={{@value}}\n @disabled={{@disabled}}\n @compressed={{@compressed}}\n @name={{@name}}\n @fullWidth={{and this.showInputOnly this.fullWidth}}\n @isLoading={{and this.showInputOnly @isLoading}}\n @isInvalid={{@isInvalid}}\n @autoSize={{not this.showInputOnly}}\n @isPrependProvided={{hasPrepend}}\n @isAppendProvided={{hasAppend}}\n ...attributes\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if this.canShowDropdown this.onInputBlur (optional @onBlur))\n }}\n {{on \"input\" this.handleOnChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n {{/if}}\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiRangeComponent","Component","g","prototype","argOrDefaultDecorator","i","void 0","preventPopoverClose","tracked","args","id","guidFor","handleOnChange","e","isValid","isWithinRange","min","max","currentTarget","value","onChange","n","action","digitTolerance","Math","String","length","showInputOnly","showInput","canShowDropdown","readOnly","disabled","showRangeTooltip","showValue","undefined","onInputFocus","onFocus","isPopoverOpen","onInputBlur","later","onBlur","closePopover","setPreventPopover","val","setPreventPopoverClose","bool","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiRangeInput","on","optional","EuiRangeWrapper","classNames","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","castTo","EuiRangeSlider","fn","EuiRangeTooltip"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkHe,MAAMA,0BAA0BC,SAAU,CAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,MAAAC,SAAA,EAAA,KAAA,EAAA,CAEtDC,qBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAC,SAAA,EADvB;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,KAAA,EAAA,CAECC,qBAAsB,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,MAAA,EAAA,CACtBC,qBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,YAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;AAAAJ,IAAAA,CAAA,MAAAC,SAAA,EAAA,QAAA,EAAA,CACtBC,sBAAsB,EAAE,CAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,SAAA;AAEzBC,EAAAA,mBAAA,GAAsB,KAAM;AAE5B;AAAA,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,IAAA,EAAA,CACCK,OAAA,CAAA,EAAA,YAAA;MAAA,OAAqB,IAAI,CAACC,IAAI,CAACC,EAAE,IAAIC,OAAQ,CAAA,EAAI,CAAA;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,GAAA,IAAAN,CAAA,CAAA,IAAA,EAAA,IAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CACjDK,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,SAAA;AAC/B;EAGAM,cAAAA,CAAeC,CAAQ,EAAQ;AAC7B,IAAA,MAAMC,UAAUC,aACd,CAAA,IAAI,CAACC,GAAG,EACR,IAAI,CAACC,GAAG,EACPJ,CAAE,CAAAK,aAAa,CAAsBC,KAAK,CAAA;AAG7C,IAAA,IAAI,IAAI,CAACV,IAAI,CAACW,QAAQ,EAAE;MACtB,IAAI,CAACX,IAAI,CAACW,QAAQ,CAACP,CAAG,EAAAC,OAAA,CAAA;AACxB;AACF;AAAA,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,gBAAA,EAAA,CAXCmB,MAAA,CAAA,CAAA;AAAA;EAaD,IAAIR,OAAAA,GAAmB;AACrB,IAAA,OAAOC,aAAc,CAAA,IAAI,CAACC,GAAG,EAAE,IAAI,CAACC,GAAG,EAAE,IAAI,CAACR,IAAI,CAACU,KAAK,IAAI,EAAA,CAAA;AAC9D;EAEA,IAAII,cAAAA,GAAyB;IAC3B,OAAOC,IAAK,CAAAP,GAAG,CAACQ,MAAA,CAAO,IAAI,CAACT,GAAG,CAAE,CAAAU,MAAM,EAAED,MAAO,CAAA,IAAI,CAACR,GAAG,EAAES,MAAM,CAAA;AAClE;EAEA,IAAIC,aAAAA,GAAyB;AAC3B,IAAA,OAAO,IAAI,CAACC,SAAS,KAAK,kBAAA;AAC5B;EAEA,IAAIC,eAAAA,GAA2B;AAC7B,IAAA,OAAO,IAAI,CAACF,aAAa,IAAI,CAAC,IAAI,CAAClB,IAAI,CAACqB,QAAQ,IAAI,CAAC,IAAI,CAACrB,IAAI,CAACsB,QAAQ;AACzE;EAEA,IAAIC,gBAAAA,GAA4B;IAC9B,OACE,IAAI,CAACC,SAAS,IACd,CAAC,CAACR,MAAO,CAAA,IAAI,CAAChB,IAAI,CAACU,KAAK,CAAA,CAAEO,MAAM,IAChC,IAAI,CAACjB,IAAI,CAACU,KAAK,KAAKe,SACtB;AACF;EAGAC,YAAAA,CAAatB,CAAQ,EAAQ;AAC3B,IAAA,IAAI,IAAI,CAACJ,IAAI,CAAC2B,OAAO,EAAE;AACrB,MAAA,IAAI,CAAC3B,IAAI,CAAC2B,OAAO,CAACvB,CAAA,CAAA;AACpB;IAEA,IAAI,CAACwB,aAAa,GAAG,IAAA;AACvB;AAAA,EAAA;IAAAhB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,cAAA,EAAA,CAPCmB,MAAA,CAAA,CAAA;AAAA;EAUDgB,WAAAA,CAAYzB,CAAQ,EAAQ;IAC1B0B,KAAA,CACE,IAAI,EACJ,MAAA;AACE;AACA;AACA;AACA;MACA,IAAI,IAAI,CAAChC,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,GAAG,KAAA;AAE3B,QAAA;AACF;AAEA,MAAA,IAAI,IAAI,CAACE,IAAI,CAAC+B,MAAM,EAAE;AACpB,QAAA,IAAI,CAAC/B,IAAI,CAAC+B,MAAM,CAAC3B,CAAA,CAAA;AACnB;MAEA,IAAI,CAAC4B,YAAY,EAAA;KAEnB,EAAA,GAAA,CAAA;AAEJ;AAAA,EAAA;IAAApB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,aAAA,EAAA,CAvBCmB,MAAA,CAAA,CAAA;AAAA;EA0BDoB,iBAAAA,CAAkBC,GAAY,EAAQ;IACpC,IAAI,CAACpC,mBAAmB,GAAGoC,GAAA;AAC7B;AAAA,EAAA;IAAAtB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,mBAAA,EAAA,CAHCmB,MAAA,CAAA,CAAA;AAAA;AAMDmB,EAAAA,YAAAA,GAAqB;IACnB,IAAI,CAAClC,mBAAmB,GAAG,KAAA;IAC3B,IAAI,CAAC8B,aAAa,GAAG,KAAA;AACvB;AAAA,EAAA;IAAAhB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,cAAA,EAAA,CAJCmB,MAAA,CAAA,CAAA;AAAA;EAODsB,sBAAAA,CAAuBC,IAAa,EAAQ;IAC1C,IAAI,CAACtC,mBAAmB,GAAGsC,IAAA;AAC7B;AAAA,EAAA;IAAAxB,CAAA,CAAA,IAAA,CAAAlB,SAAA,EAAA,wBAAA,EAAA,CAHCmB,MAAA,CAAA,CAAA;AAAA;AAKD,EAAA;IAAAwB,oBAAA,CAAAC,kBAAA,CA0YA,24VAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,GAAA;QAAAC,YAAA;QAAAC,GAAA;yBAAAC,wBAAA;QAAAC,aAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,eAAA;QAAAC,UAAA;QAAAC,aAAA;uBAAAC,sBAAA;QAAAC,EAAA;QAAAC,iBAAA;QAAAC,MAAA;QAAAC,cAAA;QAAAC,EAAA;AAAAC,yBAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-select.js b/dist/components/eui-select.js | |
index 734269ac62d45606ae1e7996a513fbc44a223bcd..471d5009528cd741f87999b4db9f5f0f322f3b68 100644 | |
--- a/dist/components/eui-select.js | |
+++ b/dist/components/eui-select.js | |
@@ -1,5 +1,5 @@ | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { eq, or, not, and } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import EuiFormControlLayout from './eui-form-control-layout.js'; | |
diff --git a/dist/components/eui-select.js.map b/dist/components/eui-select.js.map | |
index a888174e60bfeebfd32bb1472a3513f6cd1fdc05..1e06674b5c8939fb58c3797605c77277aa81a4ad 100644 | |
--- a/dist/components/eui-select.js.map | |
+++ b/dist/components/eui-select.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-select.js","sources":["../../src/components/eui-select.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiFormControlLayout from '../components/eui-form-control-layout.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { EuiFormControlLayoutSignature } from '../components/eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSelectSignature {\n Element: HTMLSelectElement;\n Args: {\n id?: string;\n options: {\n value: string | number;\n text: string | number;\n disabled?: boolean;\n }[];\n value?: string | number;\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n hasNoInitialSelection?: boolean;\n isInvalid?: boolean;\n clear?: (v: any) => void;\n inputRef?: (element: HTMLSelectElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiSelect: TemplateOnlyComponent<EuiSelectSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiSelect--fullWidth\")\n (if @compressed \"euiSelect--compressed\")\n (if (or hasPrepend hasAppend) \"euiSelect--inGroup\")\n (if @isLoading \"euiSelect--isLoading\")\n \"euiSelect\"\n )\n (argOrDefault @hasNoInitialSelection false)\n as |classes hasNoInitialSelection|\n }}\n\n <EuiFormControlLayout\n @clear={{@clear}}\n @icon=\"arrowDown\"\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <select\n id={{inputId}}\n class={{classes}}\n disabled={{@disabled}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n >\n {{#if hasNoInitialSelection}}\n {{! template-lint-disable}}\n <option\n value=\"\"\n disabled\n hidden\n style=\"display: none\"\n selected={{not @value}}\n ></option>\n {{! template-lint-enable}}\n {{/if}}\n {{#each @options as |opt|}}\n <option\n value={{opt.value}}\n selected={{eq @value opt.value}}\n disabled={{eq opt.disabled true}}\n >\n {{opt.text}}\n </option>\n {{/each}}\n </select>\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiSelect;\n"],"names":["EuiSelect","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","eq","templateOnly"],"mappings":";;;;;;;;;;;;AAyCA,MAAMA,SAAuD,GAAAC,oBAAA,CAAAC,kBAAA,CAqE7D,kuDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-select.js","sources":["../../src/components/eui-select.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { and, eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiFormControlLayout from '../components/eui-form-control-layout.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { EuiFormControlLayoutSignature } from '../components/eui-form-control-layout';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSelectSignature {\n Element: HTMLSelectElement;\n Args: {\n id?: string;\n options: {\n value: string | number;\n text: string | number;\n disabled?: boolean;\n }[];\n value?: string | number;\n fullWidth?: boolean;\n compressed?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n hasNoInitialSelection?: boolean;\n isInvalid?: boolean;\n clear?: (v: any) => void;\n inputRef?: (element: HTMLSelectElement) => void;\n isFakePrependBlock?: boolean;\n isFakeAppendBlock?: boolean;\n };\n Blocks: {\n prepend: [...EuiFormControlLayoutSignature['Blocks']['prepend'], string];\n append: [...EuiFormControlLayoutSignature['Blocks']['append'], string];\n };\n}\n\nconst EuiSelect: TemplateOnlyComponent<EuiSelectSignature> = <template>\n {{#let\n (and (not (argOrDefault @isFakePrependBlock false)) (has-block \"prepend\"))\n (and (not (argOrDefault @isFakeAppendBlock false)) (has-block \"append\"))\n (argOrDefault @id (randomId))\n as |hasPrepend hasAppend inputId|\n }}\n {{#let\n (classNames\n (if @fullWidth \"euiSelect--fullWidth\")\n (if @compressed \"euiSelect--compressed\")\n (if (or hasPrepend hasAppend) \"euiSelect--inGroup\")\n (if @isLoading \"euiSelect--isLoading\")\n \"euiSelect\"\n )\n (argOrDefault @hasNoInitialSelection false)\n as |classes hasNoInitialSelection|\n }}\n\n <EuiFormControlLayout\n @clear={{@clear}}\n @icon=\"arrowDown\"\n @iconSide=\"right\"\n @fullWidth={{@fullWidth}}\n @isLoading={{@isLoading}}\n @compressed={{@compressed}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses inputId to=\"prepend\"}}\n </:prepend>\n <:field>\n <select\n id={{inputId}}\n class={{classes}}\n disabled={{@disabled}}\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n ...attributes\n >\n {{#if hasNoInitialSelection}}\n {{! template-lint-disable}}\n <option\n value=\"\"\n disabled\n hidden\n style=\"display: none\"\n selected={{not @value}}\n ></option>\n {{! template-lint-enable}}\n {{/if}}\n {{#each @options as |opt|}}\n <option\n value={{opt.value}}\n selected={{eq @value opt.value}}\n disabled={{eq opt.disabled true}}\n >\n {{opt.text}}\n </option>\n {{/each}}\n </select>\n </:field>\n <:append as |appendClasses|>\n {{yield appendClasses inputId to=\"append\"}}\n </:append>\n </EuiFormControlLayout>\n {{/let}}\n {{/let}}\n</template>;\n\nexport default EuiSelect;\n"],"names":["EuiSelect","setComponentTemplate","precompileTemplate","strictMode","scope","and","not","argOrDefault","randomId","classNames","or","EuiFormControlLayout","validatableControl","didInsert","optional","eq","templateOnly"],"mappings":";;;;;;;;;;;;AAyCA,MAAMA,SAAuD,GAAAC,oBAAA,CAAAC,kBAAA,CAqE7D,kuDAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,GAAA;IAAAC,GAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,SAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-side-nav-item.js b/dist/components/eui-side-nav-item.js | |
index 352764bc4939aed56a420eb469772dbb8cc6046c..4d56cdba8356fc161dcc866cf573a7c0913fed23 100644 | |
--- a/dist/components/eui-side-nav-item.js | |
+++ b/dist/components/eui-side-nav-item.js | |
@@ -1,5 +1,5 @@ | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import add from 'ember-math-helpers/helpers/add'; | |
import { not, or, gt, and, eq } from 'ember-truth-helpers'; | |
import EuiSideNavItemButton from './eui-side-nav-item/button.js'; | |
diff --git a/dist/components/eui-side-nav-item.js.map b/dist/components/eui-side-nav-item.js.map | |
index 6275944bb857586811f6d08ad4d75eacd211f147..9cbc8e00a74f28b4671a0928f632a34c9e512cec 100644 | |
--- a/dist/components/eui-side-nav-item.js.map | |
+++ b/dist/components/eui-side-nav-item.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-side-nav-item.js","sources":["../../src/components/eui-side-nav-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport add from 'ember-math-helpers/helpers/add';\nimport { and,eq, gt, not, or } from 'ember-truth-helpers';\n\nimport Button from '../components/eui-side-nav-item/button.gts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\n\nimport type { Item } from './eui-side-nav';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSideNavItemSignature {\n Args: {\n selectedItem?: string;\n isOpen?: boolean;\n isSelected?: boolean;\n isParent?: boolean;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n childrenOnly?: boolean;\n buttonIconClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiSideNavItem: TemplateOnlyComponent<EuiSideNavItemSignature> =\n <template>\n <div\n class={{classNames\n \"euiSideNavItem\"\n (if (eq @depth 1) \"euiSideNavItem--trunk\")\n (if (eq @depth 0) \"euiSideNavItem--root\")\n (if (and (eq @depth 0) @icon) \"euiSideNavItem--rootIcon\")\n (if (gt @depth 1) \"euiSideNavItem--branch\")\n (if @items.length \"euiSideNavItem--hasChildItems\")\n (if @emphasize \"euiSideNavItem--emphasized\")\n }}\n >\n {{#let\n (classNames\n \"euiSideNavItemButton\"\n (if (or @onClick @href) \"euiSideNavItemButton--isClickable\")\n (if\n (and (gt @depth 0) @isOpen (not @isSelected))\n \"euiSideNavItemButton-isOpen\"\n )\n (if @isSelected \"euiSideNavItemButton-isSelected\")\n @buttonClassName\n )\n (and (gt @depth 0) @isParent (not @isOpen) (not @isSelected))\n as |className caret|\n }}\n {{#if (and @href (not @disabled))}}\n <a\n class={{className}}\n href={{@href}}\n target={{@target}}\n rel={{@rel}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </a>\n {{else if (or @onClick @disabled)}}\n <button\n type=\"button\"\n class={{className}}\n disabled={{@disabled}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </button>\n {{else}}\n <div class={{className}}>\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </div>\n {{/if}}\n {{/let}}\n {{#if (or (eq @depth 0) (and @items.length @isOpen))}}\n <div class=\"euiSideNavItem__items\">\n {{#each @items as |item|}}\n {{#let\n (and\n (gt @depth 0)\n (not item.onClick)\n (not item.href)\n (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id @selectedItem)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{add @depth 1}}\n @name={{item.name}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n {{/if}}\n </div>\n </template>;\n\nexport default EuiSideNavItem;\n"],"names":["EuiSideNavItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","and","gt","or","not","on","optional","Button","isItemOpen","add","templateOnly"],"mappings":";;;;;;;;;;;AAyCA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAkHA,inFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;YAAAC,oBAAA;IAAAb,cAAA;IAAAc,UAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-side-nav-item.js","sources":["../../src/components/eui-side-nav-item.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport add from 'ember-math-helpers/helpers/add';\nimport { and,eq, gt, not, or } from 'ember-truth-helpers';\n\nimport Button from '../components/eui-side-nav-item/button.gts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\n\nimport type { Item } from './eui-side-nav';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiSideNavItemSignature {\n Args: {\n selectedItem?: string;\n isOpen?: boolean;\n isSelected?: boolean;\n isParent?: boolean;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n childrenOnly?: boolean;\n buttonIconClasses?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiSideNavItem: TemplateOnlyComponent<EuiSideNavItemSignature> =\n <template>\n <div\n class={{classNames\n \"euiSideNavItem\"\n (if (eq @depth 1) \"euiSideNavItem--trunk\")\n (if (eq @depth 0) \"euiSideNavItem--root\")\n (if (and (eq @depth 0) @icon) \"euiSideNavItem--rootIcon\")\n (if (gt @depth 1) \"euiSideNavItem--branch\")\n (if @items.length \"euiSideNavItem--hasChildItems\")\n (if @emphasize \"euiSideNavItem--emphasized\")\n }}\n >\n {{#let\n (classNames\n \"euiSideNavItemButton\"\n (if (or @onClick @href) \"euiSideNavItemButton--isClickable\")\n (if\n (and (gt @depth 0) @isOpen (not @isSelected))\n \"euiSideNavItemButton-isOpen\"\n )\n (if @isSelected \"euiSideNavItemButton-isSelected\")\n @buttonClassName\n )\n (and (gt @depth 0) @isParent (not @isOpen) (not @isSelected))\n as |className caret|\n }}\n {{#if (and @href (not @disabled))}}\n <a\n class={{className}}\n href={{@href}}\n target={{@target}}\n rel={{@rel}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </a>\n {{else if (or @onClick @disabled)}}\n <button\n type=\"button\"\n class={{className}}\n disabled={{@disabled}}\n {{on \"click\" (optional @onClick)}}\n >\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </button>\n {{else}}\n <div class={{className}}>\n <Button\n @icon={{@icon}}\n @truncate={{@truncate}}\n @buttonIconClasses={{@buttonIconClasses}}\n @caret={{caret}}\n >\n {{yield}}\n </Button>\n </div>\n {{/if}}\n {{/let}}\n {{#if (or (eq @depth 0) (and @items.length @isOpen))}}\n <div class=\"euiSideNavItem__items\">\n {{#each @items as |item|}}\n {{#let\n (and\n (gt @depth 0)\n (not item.onClick)\n (not item.href)\n (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id @selectedItem)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{add @depth 1}}\n @name={{item.name}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n {{/if}}\n </div>\n </template>;\n\nexport default EuiSideNavItem;\n"],"names":["EuiSideNavItem","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","eq","and","gt","or","not","on","optional","Button","isItemOpen","add","templateOnly"],"mappings":";;;;;;;;;;;AAyCA,MAAMA,cACJ,GAAAC,oBAAA,CAAAC,kBAAA,CAkHA,inFAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,GAAA;IAAAC,EAAA;IAAAC,QAAA;YAAAC,oBAAA;IAAAb,cAAA;IAAAc,UAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-side-nav.js b/dist/components/eui-side-nav.js | |
index e71f604b980116c0446217a35238a1a51e8cfdff..92595cea0baa321b6a3cf2c87e9629953b0d74cd 100644 | |
--- a/dist/components/eui-side-nav.js | |
+++ b/dist/components/eui-side-nav.js | |
@@ -1,7 +1,7 @@ | |
import Component from '@glimmer/component'; | |
import { fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { element } from 'ember-element-helper'; | |
import { eq, and, not, or } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
diff --git a/dist/components/eui-side-nav.js.map b/dist/components/eui-side-nav.js.map | |
index c54cd3ad8f67125081b4f920f0cbbdb582f8cfc8..239189231821e4f5206da4a2c03457b40de23fb2 100644 | |
--- a/dist/components/eui-side-nav.js.map | |
+++ b/dist/components/eui-side-nav.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-side-nav.js","sources":["../../src/components/eui-side-nav.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiButtonEmpty from '../components/eui-button-empty.gts';\nimport EuiHideFor from '../components/eui-hide-for.gts';\nimport EuiShowFor from '../components/eui-show-for.gts';\nimport EuiSideNavItem from '../components/eui-side-nav-item.gts';\nimport EuiTitle from '../components/eui-title.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\n\nimport type { EuiHideForSignature } from '../components/eui-hide-for';\n\nexport interface Item {\n id: string;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n isSelected?: boolean;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n}\n\nexport interface EuiSideNavSignature {\n Element: HTMLDivElement | HTMLUListElement | HTMLElement;\n Args: {\n mobileBreakpoints?: EuiHideForSignature['Args']['sizes'];\n isOpenMobile?: boolean;\n toggleOpenOnMobile?: () => void;\n heading?: string;\n headingProps?: {\n element?: string;\n id?: string;\n className?: string;\n screenReaderOnly?: boolean;\n };\n mobileTitle?: string;\n items?: Item[];\n selectedItem?: string;\n };\n Blocks: {\n default: [Item];\n heading: [];\n };\n}\n\nexport default class EuiSideNavComponent extends Component<EuiSideNavSignature> {\n get mobileBreakpoints() {\n return this.args.mobileBreakpoints || ['xs', 's'];\n }\n\n get contentClasses() {\n let mobileBreakpoints = Array.isArray(this.mobileBreakpoints)\n ? this.mobileBreakpoints\n : [this.mobileBreakpoints];\n\n return `euiSideNav__content ${mobileBreakpoints\n .map?.((breakpointName) => {\n return `euiSideNav__contentMobile-${breakpointName}`;\n })\n .join(' ')}`;\n }\n\n get hasMobileVersion() {\n return this.mobileBreakpoints?.length > 0;\n }\n\n <template>\n {{#let\n (classNames \"euiSideNav\" (if @isOpenMobile \"euiSideNav-isOpenMobile\"))\n (element (argOrDefault @headingProps.element \"h2\"))\n (argOrDefault @headingProps.id (randomId))\n (randomId)\n (or (has-block \"heading\") (not (not @heading)))\n as |classes HeadingElement headingId sideNavContentId hasHeader|\n }}\n {{#if this.hasMobileVersion}}\n <EuiShowFor @sizes={{this.mobileBreakpoints}}>\n <nav aria-labelledby={{headingId}} class={{classes}} ...attributes>\n <HeadingElement id={{headingId}} class={{@headingProps.className}}>\n <EuiButtonEmpty\n type=\"button\"\n class=\"euiSideNav__mobileToggle\"\n @contentClasses=\"euiSideNav__mobileToggleContent\"\n @textClasses=\"euiSideNav__mobileToggleText\"\n {{on\n \"click\"\n (fn (optional @toggleOpenOnMobile) (not @isOpenMobile))\n }}\n @iconType=\"apps\"\n @iconSide=\"right\"\n aria-controls={{sideNavContentId}}\n aria-expanded={{@isOpenMobile}}\n >\n {{#if @mobileTitle}}\n {{@mobileTitle}}\n {{else if (has-block \"heading\")}}\n {{yield to=\"heading\"}}\n {{else}}\n {{@heading}}\n {{/if}}\n </EuiButtonEmpty>\n </HeadingElement>\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and\n (not item.onClick) (not item.href) (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiShowFor>\n {{/if}}\n\n <EuiHideFor @sizes={{this.mobileBreakpoints}}>\n <nav\n aria-labelledby={{if hasHeader headingId}}\n class={{classes}}\n ...attributes\n >\n {{#if hasHeader}}\n {{#let\n (argOrDefault @headingProps.screenReaderOnly false)\n as |shouldScreenReader|\n }}\n {{#if (has-block \"heading\")}}\n {{#if shouldScreenReader}}\n <HeadingElement {{screenReaderOnly}}>\n {{yield to=\"heading\"}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n <HeadingElement>\n {{yield to=\"heading\"}}\n </HeadingElement>\n </EuiTitle>\n {{/if}}\n {{else}}\n {{#if screenReaderOnly}}\n <HeadingElement {{screenReaderOnly}}>\n {{@heading}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n {{@heading}}\n </EuiTitle>\n {{/if}}\n {{/if}}\n {{/let}}\n {{/if}}\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and (not item.onClick) (not item.href) (not (not item.items)))\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiHideFor>\n {{/let}}\n </template>\n}\n"],"names":["EuiSideNavComponent","Component","mobileBreakpoints","args","contentClasses","Array","isArray","map","breakpointName","join","hasMobileVersion","length","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","element","argOrDefault","randomId","or","not","EuiShowFor","EuiButtonEmpty","on","fn","optional","and","EuiSideNavItem","isItemOpen","eq","EuiHideFor","screenReaderOnly","EuiTitle"],"mappings":";;;;;;;;;;;;;;;;;;;AA+De,MAAMA,4BAA4BC,SAAU,CAAA;EACzD,IAAIC,iBAAoBA,GAAA;IACtB,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAI,CAAC,IAAA,EAAM,GAAA,CAAI;AACnD;EAEA,IAAIE,cAAiBA,GAAA;AACnB,IAAA,IAAIF,iBAAA,GAAoBG,KAAM,CAAAC,OAAO,CAAC,IAAI,CAACJ,iBAAiB,CACxD,GAAA,IAAI,CAACA,iBAAiB,GACtB,CAAC,IAAI,CAACA,iBAAiB,CAAC;AAE5B,IAAA,OAAO,uBAAuBA,iBAC3B,CAAAK,GAAG,GAAIC,cAAA,IAAA;MACN,OAAO,CAAA,0BAAA,EAA6BA,cAAA,CAAgB,CAAA;AACtD,KACC,CAAA,CAAAC,IAAA,CAAK,KAAM,CAAA;AAChB;EAEA,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,IAAI,CAACR,iBAAiB,EAAES,MAAS,GAAA,CAAA;AAC1C;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAiKA,q7IAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,UAAA;QAAAC,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,EAAA;QAAAC,GAAA;oBAAAC,mBAAA;QAAAC,cAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,EAAA;oBAAAC,mBAAA;QAAAC,gBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-side-nav.js","sources":["../../src/components/eui-side-nav.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { element } from 'ember-element-helper';\nimport { and,eq, not, or } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiButtonEmpty from '../components/eui-button-empty.gts';\nimport EuiHideFor from '../components/eui-hide-for.gts';\nimport EuiShowFor from '../components/eui-show-for.gts';\nimport EuiSideNavItem from '../components/eui-side-nav-item.gts';\nimport EuiTitle from '../components/eui-title.gts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport isItemOpen from '../helpers/is-item-open.ts';\nimport screenReaderOnly from '../modifiers/screen-reader-only.ts';\n\nimport type { EuiHideForSignature } from '../components/eui-hide-for';\n\nexport interface Item {\n id: string;\n icon?: string;\n onClick?: () => void;\n href?: string;\n className?: string;\n rel?: string;\n target?: string;\n items?: Item[];\n depth?: number;\n name?: string;\n renderItem?: unknown;\n isSelected?: boolean;\n disabled?: boolean;\n truncate?: boolean;\n emphasize?: boolean;\n buttonClassName?: string;\n}\n\nexport interface EuiSideNavSignature {\n Element: HTMLDivElement | HTMLUListElement | HTMLElement;\n Args: {\n mobileBreakpoints?: EuiHideForSignature['Args']['sizes'];\n isOpenMobile?: boolean;\n toggleOpenOnMobile?: () => void;\n heading?: string;\n headingProps?: {\n element?: string;\n id?: string;\n className?: string;\n screenReaderOnly?: boolean;\n };\n mobileTitle?: string;\n items?: Item[];\n selectedItem?: string;\n };\n Blocks: {\n default: [Item];\n heading: [];\n };\n}\n\nexport default class EuiSideNavComponent extends Component<EuiSideNavSignature> {\n get mobileBreakpoints() {\n return this.args.mobileBreakpoints || ['xs', 's'];\n }\n\n get contentClasses() {\n let mobileBreakpoints = Array.isArray(this.mobileBreakpoints)\n ? this.mobileBreakpoints\n : [this.mobileBreakpoints];\n\n return `euiSideNav__content ${mobileBreakpoints\n .map?.((breakpointName) => {\n return `euiSideNav__contentMobile-${breakpointName}`;\n })\n .join(' ')}`;\n }\n\n get hasMobileVersion() {\n return this.mobileBreakpoints?.length > 0;\n }\n\n <template>\n {{#let\n (classNames \"euiSideNav\" (if @isOpenMobile \"euiSideNav-isOpenMobile\"))\n (element (argOrDefault @headingProps.element \"h2\"))\n (argOrDefault @headingProps.id (randomId))\n (randomId)\n (or (has-block \"heading\") (not (not @heading)))\n as |classes HeadingElement headingId sideNavContentId hasHeader|\n }}\n {{#if this.hasMobileVersion}}\n <EuiShowFor @sizes={{this.mobileBreakpoints}}>\n <nav aria-labelledby={{headingId}} class={{classes}} ...attributes>\n <HeadingElement id={{headingId}} class={{@headingProps.className}}>\n <EuiButtonEmpty\n type=\"button\"\n class=\"euiSideNav__mobileToggle\"\n @contentClasses=\"euiSideNav__mobileToggleContent\"\n @textClasses=\"euiSideNav__mobileToggleText\"\n {{on\n \"click\"\n (fn (optional @toggleOpenOnMobile) (not @isOpenMobile))\n }}\n @iconType=\"apps\"\n @iconSide=\"right\"\n aria-controls={{sideNavContentId}}\n aria-expanded={{@isOpenMobile}}\n >\n {{#if @mobileTitle}}\n {{@mobileTitle}}\n {{else if (has-block \"heading\")}}\n {{yield to=\"heading\"}}\n {{else}}\n {{@heading}}\n {{/if}}\n </EuiButtonEmpty>\n </HeadingElement>\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and\n (not item.onClick) (not item.href) (not (not item.items))\n )\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiShowFor>\n {{/if}}\n\n <EuiHideFor @sizes={{this.mobileBreakpoints}}>\n <nav\n aria-labelledby={{if hasHeader headingId}}\n class={{classes}}\n ...attributes\n >\n {{#if hasHeader}}\n {{#let\n (argOrDefault @headingProps.screenReaderOnly false)\n as |shouldScreenReader|\n }}\n {{#if (has-block \"heading\")}}\n {{#if shouldScreenReader}}\n <HeadingElement {{screenReaderOnly}}>\n {{yield to=\"heading\"}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n <HeadingElement>\n {{yield to=\"heading\"}}\n </HeadingElement>\n </EuiTitle>\n {{/if}}\n {{else}}\n {{#if screenReaderOnly}}\n <HeadingElement {{screenReaderOnly}}>\n {{@heading}}\n </HeadingElement>\n {{else}}\n <EuiTitle\n class={{classNames\n \"euiSideNav__heading\"\n @headingProps.className\n }}\n @size=\"xs\"\n >\n {{@heading}}\n </EuiTitle>\n {{/if}}\n {{/if}}\n {{/let}}\n {{/if}}\n <div id={{sideNavContentId}} class={{this.contentClasses}}>\n {{#each @items as |item|}}\n {{#let\n (and (not item.onClick) (not item.href) (not (not item.items)))\n as |childrenOnly|\n }}\n <EuiSideNavItem\n @selectedItem={{@selectedItem}}\n @isOpen={{isItemOpen item @selectedItem}}\n @isSelected={{and\n (not childrenOnly)\n (eq item.id item.isSelected)\n }}\n @isParent={{not (not item.items)}}\n @icon={{item.icon}}\n @onClick={{item.onClick}}\n @href={{item.href}}\n @className={{item.className}}\n @rel={{item.rel}}\n @target={{item.target}}\n @items={{item.items}}\n @depth={{0}}\n @renderItem={{item.renderItem}}\n @disabled={{item.disabled}}\n @truncate={{item.truncate}}\n @emphasize={{item.emphasize}}\n @buttonClassName={{item.buttonClassName}}\n @childrenOnly={{childrenOnly}}\n >\n {{item.name}}\n </EuiSideNavItem>\n {{/let}}\n {{/each}}\n </div>\n </nav>\n </EuiHideFor>\n {{/let}}\n </template>\n}\n"],"names":["EuiSideNavComponent","Component","mobileBreakpoints","args","contentClasses","Array","isArray","map","breakpointName","join","hasMobileVersion","length","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","element","argOrDefault","randomId","or","not","EuiShowFor","EuiButtonEmpty","on","fn","optional","and","EuiSideNavItem","isItemOpen","eq","EuiHideFor","screenReaderOnly","EuiTitle"],"mappings":";;;;;;;;;;;;;;;;;;;AA+De,MAAMA,4BAA4BC,SAAU,CAAA;EACzD,IAAIC,iBAAoBA,GAAA;IACtB,OAAO,IAAI,CAACC,IAAI,CAACD,iBAAiB,IAAI,CAAC,IAAA,EAAM,GAAA,CAAI;AACnD;EAEA,IAAIE,cAAiBA,GAAA;AACnB,IAAA,IAAIF,iBAAA,GAAoBG,KAAM,CAAAC,OAAO,CAAC,IAAI,CAACJ,iBAAiB,CACxD,GAAA,IAAI,CAACA,iBAAiB,GACtB,CAAC,IAAI,CAACA,iBAAiB,CAAC;AAE5B,IAAA,OAAO,uBAAuBA,iBAC3B,CAAAK,GAAG,GAAIC,cAAA,IAAA;MACN,OAAO,CAAA,0BAAA,EAA6BA,cAAA,CAAgB,CAAA;AACtD,KACC,CAAA,CAAAC,IAAA,CAAK,KAAM,CAAA;AAChB;EAEA,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OAAO,IAAI,CAACR,iBAAiB,EAAES,MAAS,GAAA,CAAA;AAC1C;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAiKA,q7IAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,UAAA;QAAAC,OAAA;QAAAC,YAAA;QAAAC,QAAA;QAAAC,EAAA;QAAAC,GAAA;oBAAAC,mBAAA;QAAAC,cAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,QAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,UAAA;QAAAC,EAAA;oBAAAC,mBAAA;QAAAC,gBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-step-horizontal.js b/dist/components/eui-step-horizontal.js | |
index 97599b731627fd659f6bfe712fa2aeb31dd3f369..567d7aa0cff2f7805514bc81a9aef9b8f54e0483 100644 | |
--- a/dist/components/eui-step-horizontal.js | |
+++ b/dist/components/eui-step-horizontal.js | |
@@ -1,5 +1,5 @@ | |
import { on } from '@ember/modifier'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import { eq } from 'ember-truth-helpers'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
import classNames from '../helpers/class-names.js'; | |
diff --git a/dist/components/eui-step-horizontal.js.map b/dist/components/eui-step-horizontal.js.map | |
index 798331c51cb01460b144ab0d359b214d08fc55b9..a18380e6d36b82a90ca1a6939827c9fb8eded8ba 100644 | |
--- a/dist/components/eui-step-horizontal.js.map | |
+++ b/dist/components/eui-step-horizontal.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-step-horizontal.js","sources":["../../src/components/eui-step-horizontal.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiStepNumber from './eui-step-number.gts';\n\nimport type { EuiStepNumberSignature } from './eui-step-number';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiStepHorizontalSignature {\n Element: HTMLButtonElement;\n Args: {\n /**\n * The title of the step\n */\n title?: string;\n /**\n * The number of the step\n */\n step?: number;\n /**\n * Whether or not the step is selected\n */\n isSelected?: boolean;\n /**\n * Whether or not the step is complete\n */\n isComplete?: boolean;\n /**\n * Whether or not the step is disabled\n */\n disabled?: boolean;\n /**\n * The status of the step\n */\n status?: EuiStepNumberSignature['Args']['status'];\n /**\n * A callback for when the step is clicked\n */\n onStepClick?: (event: MouseEvent) => void;\n };\n}\n\nconst EuiStepHorizontal: TemplateOnlyComponent<EuiStepHorizontalSignature> =\n <template>\n {{#let\n (if\n @disabled\n \"disabled\"\n (if\n @isComplete\n \"complete\"\n (if @isSelected \"current\" (argOrDefault @status \"incomplete\"))\n )\n )\n as |status|\n }}\n <li\n class=\"euiStepHorizontal__item\"\n aria-current={{if @isSelected \"step\"}}\n >\n <button\n type=\"button\"\n class={{classNames\n \"euiStepHorizontal\"\n (if (eq status \"current\") \"euiStepHorizontal-isSelected\")\n (if (eq status \"complete\") \"euiStepHorizontal-isComplete\")\n (if (eq status \"incomplete\") \"euiStepHorizontal-isIncomplete\")\n (if (eq status \"disabled\") \"euiStepHorizontal-isDisabled\")\n }}\n title={{@title}}\n disabled={{@disabled}}\n ...attributes\n {{on \"click\" (optional @onStepClick)}}\n >\n <EuiStepNumber\n class=\"euiStepHorizontal__number\"\n {{!@glint-expect-error}}\n @status={{status}}\n @number={{@step}}\n />\n <span class=\"euiStepHorizontal__title\">\n {{@title}}\n </span>\n </button>\n </li>\n {{/let}}\n </template>;\n\nexport default EuiStepHorizontal;\n"],"names":["EuiStepHorizontal","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","classNames","eq","on","optional","EuiStepNumber","templateOnly"],"mappings":";;;;;;;;;;AA8CA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,g7BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-step-horizontal.js","sources":["../../src/components/eui-step-horizontal.gts"],"sourcesContent":["import { on } from '@ember/modifier';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport { eq } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiStepNumber from './eui-step-number.gts';\n\nimport type { EuiStepNumberSignature } from './eui-step-number';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiStepHorizontalSignature {\n Element: HTMLButtonElement;\n Args: {\n /**\n * The title of the step\n */\n title?: string;\n /**\n * The number of the step\n */\n step?: number;\n /**\n * Whether or not the step is selected\n */\n isSelected?: boolean;\n /**\n * Whether or not the step is complete\n */\n isComplete?: boolean;\n /**\n * Whether or not the step is disabled\n */\n disabled?: boolean;\n /**\n * The status of the step\n */\n status?: EuiStepNumberSignature['Args']['status'];\n /**\n * A callback for when the step is clicked\n */\n onStepClick?: (event: MouseEvent) => void;\n };\n}\n\nconst EuiStepHorizontal: TemplateOnlyComponent<EuiStepHorizontalSignature> =\n <template>\n {{#let\n (if\n @disabled\n \"disabled\"\n (if\n @isComplete\n \"complete\"\n (if @isSelected \"current\" (argOrDefault @status \"incomplete\"))\n )\n )\n as |status|\n }}\n <li\n class=\"euiStepHorizontal__item\"\n aria-current={{if @isSelected \"step\"}}\n >\n <button\n type=\"button\"\n class={{classNames\n \"euiStepHorizontal\"\n (if (eq status \"current\") \"euiStepHorizontal-isSelected\")\n (if (eq status \"complete\") \"euiStepHorizontal-isComplete\")\n (if (eq status \"incomplete\") \"euiStepHorizontal-isIncomplete\")\n (if (eq status \"disabled\") \"euiStepHorizontal-isDisabled\")\n }}\n title={{@title}}\n disabled={{@disabled}}\n ...attributes\n {{on \"click\" (optional @onStepClick)}}\n >\n <EuiStepNumber\n class=\"euiStepHorizontal__number\"\n {{!@glint-expect-error}}\n @status={{status}}\n @number={{@step}}\n />\n <span class=\"euiStepHorizontal__title\">\n {{@title}}\n </span>\n </button>\n </li>\n {{/let}}\n </template>;\n\nexport default EuiStepHorizontal;\n"],"names":["EuiStepHorizontal","setComponentTemplate","precompileTemplate","strictMode","scope","argOrDefault","classNames","eq","on","optional","EuiStepNumber","templateOnly"],"mappings":";;;;;;;;;;AA8CA,MAAMA,iBACJ,GAAAC,oBAAA,CAAAC,kBAAA,CA2CA,g7BAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,YAAA;IAAAC,UAAA;IAAAC,EAAA;IAAAC,EAAA;IAAAC,QAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js | |
index cf3f4e9cb28fc7dde30735f9a95a4de7e687ed2b..6dfb95408b6e928b78e56d52675be694b2445118 100644 | |
--- a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js | |
+++ b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js | |
@@ -4,7 +4,7 @@ import { helper } from '@ember/component/helper'; | |
import { fn, concat } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
import { action } from '@ember/object'; | |
-import pick from 'ember-composable-helpers/helpers/pick'; | |
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick'; | |
import { eq, not, and } from 'ember-truth-helpers'; | |
import moment from 'moment'; | |
import EuiFlexItem from '../../eui-flex-item.js'; | |
diff --git a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map | |
index 7a236274f0d1e273d25ae7e9346bc867e54eae6d..4b75493d20f5845044e1c7da11a4ae6a71c8e2c6 100644 | |
--- a/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map | |
+++ b/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"datetime-picker.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/datetime-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { helper } from '@ember/component/helper';\nimport { concat, fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport pick from 'ember-composable-helpers/helpers/pick';\nimport { and, eq, not } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiFormControlLayout from '../../eui-form-control-layout.gts';\nimport EuiIcon from '../../eui-icon.gts';\nimport EuiSelect from '../../eui-select.gts';\n\nconst isSameDayHelper = helper(function ([year, month, day, selectedDate]: [\n number,\n number,\n number,\n moment.Moment | undefined\n]) {\n if (!selectedDate) {\n return false;\n }\n\n return (\n selectedDate.year() === year &&\n selectedDate.month() === month &&\n selectedDate.date() === day\n );\n});\n\ninterface DatetimePickerArgs {\n selected?: moment.Moment | null;\n onChange: (value: string | Date | moment.Moment, e: Event) => void;\n iconClasses?: string;\n dateFormat?: string;\n}\n\ninterface Day {\n day: number;\n month?: number;\n year?: number;\n isOutside?: boolean;\n}\n\ninterface DatetimePickerSignature {\n Args: DatetimePickerArgs;\n}\n\nexport default class DatetimePicker extends Component<DatetimePickerSignature> {\n @tracked month: number = 0;\n @tracked year: number = 0;\n @tracked monthMoment: moment.Moment;\n // Used to style the days outside of the current month\n @tracked offset: number = 0;\n @tracked selectedDate?: moment.Moment;\n @tracked selectedTime?: string;\n @tracked today: moment.Moment;\n\n momentConfig: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n };\n\n constructor(owner: Owner, args: DatetimePickerArgs) {\n super(owner, args);\n\n if (this.args.selected) {\n this.monthMoment = this.args.selected;\n this.selectedDate = this.args.selected;\n } else {\n this.monthMoment = moment([this.year, this.month]);\n }\n\n this.momentConfig = {\n year: this.monthMoment.year(),\n month: this.monthMoment.month(),\n day: this.monthMoment.date(),\n hour: this.monthMoment.hour(),\n minute: this.monthMoment.minute(),\n second: 0,\n millisecond: 0\n };\n\n this.month = this.momentConfig.month;\n this.year = this.momentConfig.year;\n\n let hour = this.momentConfig.hour;\n let minute = this.momentConfig.minute;\n let hourStr = hour < 10 ? `0${hour}` : hour;\n let minuteStr = minute < 10 ? `0${minute}` : minute;\n\n this.selectedTime = `${hourStr}:${minuteStr}`;\n\n this.offset = this.monthMoment.clone().startOf('month').day();\n\n this.today = moment();\n }\n\n get monthNames() {\n return moment.months().map((month, i) => {\n return {\n text: month,\n value: i\n };\n });\n }\n\n get years() {\n return Array.from(Array(15).keys()).map((_, i) => {\n // Create a list of years +/- 7 from the current year\n let year = this.year - 7 + i;\n\n return {\n text: year,\n value: year\n };\n });\n }\n\n get times() {\n const timesArray = [];\n\n // Create entries every 30 minutes\n for (let i = 0; i < 24; i++) {\n let hour = i < 10 ? `0${i}` : i;\n\n timesArray.push(`${hour}:00`, `${hour}:30`);\n }\n\n return timesArray;\n }\n\n get days() {\n // Used for showing days outside of the current month\n // const prevMonth = moment([this.year, this.month - 1]);\n const prevMonth = this.monthMoment.clone().subtract(1, 'month');\n const nextMonth = this.monthMoment.clone().add(1, 'month');\n const offset = this.offset;\n let daysInMonth = this.monthMoment.daysInMonth();\n let daysInPrevMonth = prevMonth.daysInMonth();\n\n const daysArray = [];\n\n for (let i = 0; i < daysInMonth; i++) {\n daysArray[i] = {\n day: i + 1\n };\n }\n\n // Fill the previous and next month days\n for (let i = 0, d = daysInPrevMonth; i < offset; i++, d--) {\n daysArray.unshift({\n day: d,\n month: prevMonth.month(),\n year: prevMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n for (let d = 1, i = daysInMonth + offset; i < 42; d++, i++) {\n daysArray.push({\n day: d,\n month: nextMonth.month(),\n year: nextMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n // but depending on the starting day, one week may not be needed\n const daysMatrix = [];\n const weeks = daysInMonth + offset > 35 ? 6 : 5;\n\n for (let i = 0; i < weeks; i++) {\n daysMatrix[i] = daysArray.slice(i * 7, i * 7 + 7);\n }\n\n return daysMatrix;\n }\n\n updateDate() {\n this.year = this.monthMoment.year();\n this.month = this.monthMoment.month();\n this.offset = this.monthMoment.clone().startOf('month').day();\n }\n\n @action\n selectTime(time: string, e: Event) {\n this.selectedTime = time;\n\n const [hour, minute] = time.split(':');\n\n this.momentConfig.hour = parseInt(hour!);\n this.momentConfig.minute = parseInt(minute!);\n this.momentConfig.second = 0;\n this.momentConfig.millisecond = 0;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n }\n\n @action\n selectDate(day: Day, e: Event) {\n // Only outside days will have year/month\n this.momentConfig.year = day.year || this.year;\n this.momentConfig.month = day.month || this.month;\n this.momentConfig.day = day.day;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n\n // Update the state to show the selected month properly\n if (day.isOutside && day.month && day.year) {\n this.monthMoment.month(day.month);\n this.monthMoment.year(day.year);\n this.updateDate();\n }\n }\n\n @action\n setYear(year: string) {\n this.year = parseInt(year);\n }\n\n @action\n setMonth(month: string) {\n this.monthMoment.month(parseInt(month));\n this.updateDate();\n }\n\n @action\n increaseMonth() {\n this.monthMoment.add(1, 'month');\n this.updateDate();\n }\n\n @action\n decreaseMonth() {\n this.monthMoment.subtract(1, 'month');\n this.updateDate();\n }\n\n <template>\n <div class=\"euiDatePicker euiDatePicker--inline\">\n <EuiFormControlLayout>\n <div class=\"react-datepicker\">\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--previous\"\n aria-label=\"Previous month\"\n {{on \"click\" this.decreaseMonth}}\n >\n <EuiIcon @iconClasses=\"euiButtonIcon__icon\" @type=\"arrowLeft\" />\n </button>\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--next\"\n aria-label=\"Next month\"\n {{on \"click\" this.increaseMonth}}\n >\n <EuiIcon\n @iconClasses=\"euiButtonIcon__icon {{@iconClasses}}\"\n @type=\"arrowRight\"\n />\n </button>\n <div class=\"react-datepicker__month-container\">\n <div class=\"react-datepicker__header\">\n <div\n class=\"react-datepicker__header__dropdown react-datepicker__header__dropdown--scroll\"\n >\n <div\n class=\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__month-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.month}}\n @options={{this.monthNames}}\n {{on \"change\" (pick \"target.value\" this.setMonth)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n <div\n class=\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__year-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.year}}\n @options={{this.years}}\n {{on \"change\" (pick \"target.value\" this.setYear)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n </div>\n <div class=\"react-datepicker__day-names\">\n <div class=\"react-datepicker__day-name\">Su</div>\n <div class=\"react-datepicker__day-name\">Mo</div>\n <div class=\"react-datepicker__day-name\">Tu</div>\n <div class=\"react-datepicker__day-name\">We</div>\n <div class=\"react-datepicker__day-name\">Th</div>\n <div class=\"react-datepicker__day-name\">Fr</div>\n <div class=\"react-datepicker__day-name\">Sa</div>\n </div>\n </div>\n\n <div\n class=\"react-datepicker__month react-datepicker__month--accessible\"\n >\n {{#each this.days as |days|}}\n <div class=\"react-datepicker__week\">\n {{#each days as |day|}}\n <div\n role=\"button\"\n class={{concat\n \"react-datepicker__day\"\n (if\n (and\n (not day.isOutside)\n (isSameDayHelper\n this.year this.month day.day this.selectedDate\n )\n )\n \" react-datepicker__day--selected\"\n )\n (if\n (isSameDayHelper\n this.year this.month day.day this.today\n )\n \" react-datepicker__day--today\"\n )\n (if\n day.isOutside \" react-datepicker__day--outside-month\"\n )\n }}\n {{on \"click\" (fn this.selectDate day)}}\n >\n <div class=\"react-datepicker__day-text\">{{day.day}}</div>\n </div>\n {{/each}}\n </div>\n {{/each}}\n </div>\n </div>\n\n <div class=\"react-datepicker__time-container\">\n <div class=\"react-datepicker__time\">\n <div\n class=\"react-datepicker__time-box react-datepicker__time-box--accessible\"\n >\n <ul class=\"react-datepicker__time-list\">\n {{#each this.times as |time|}}\n <li\n role=\"option\"\n class={{concat\n \"react-datepicker__time-list-item\"\n (if\n (eq time this.selectedTime)\n \" react-datepicker__time-list-item--selected\"\n )\n }}\n {{on \"click\" (fn this.selectTime time)}}\n >\n {{time}}\n </li>\n {{/each}}\n </ul>\n </div>\n </div>\n </div>\n </div>\n </EuiFormControlLayout>\n </div>\n </template>\n}\n"],"names":["isSameDayHelper","helper","year","month","day","selectedDate","date","DatetimePicker","Component","g","prototype","tracked","i","void 0","momentConfig","constructor","owner","args","selected","monthMoment","moment","hour","minute","second","millisecond","hourStr","minuteStr","selectedTime","offset","clone","startOf","today","monthNames","months","map","text","value","years","Array","from","keys","_","times","timesArray","push","days","prevMonth","subtract","nextMonth","add","daysInMonth","daysInPrevMonth","daysArray","d","unshift","isOutside","daysMatrix","weeks","slice","updateDate","selectTime","time","e","split","parseInt","onChange","n","action","selectDate","setYear","setMonth","increaseMonth","decreaseMonth","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","on","EuiIcon","EuiFlexItem","EuiSelect","pick","concat","and","not","fn","eq"],"mappings":";;;;;;;;;;;;;;;;;AAiBA,MAAMA,kBAAkBC,MAAO,CAAA,UAAU,CAACC,IAAA,EAAMC,OAAOC,GAAK,EAAAC,YAAA,CAK3D,EAAA;EACC,IAAI,CAACA,YAAc,EAAA;AACjB,IAAA,OAAO,KAAA;AACT;EAEA,OACEA,YAAA,CAAaH,IAAI,EAAA,KAAOA,IACxB,IAAAG,YAAA,CAAaF,KAAK,EAAA,KAAOA,KACzB,IAAAE,YAAA,CAAaC,IAAI,EAAA,KAAOF,GAC1B;AACF,CAAA,CAAA;AAoBe,MAAMG,uBAAuBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CACnDC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,CAAE;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CAC1BC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuB,CAAE;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CACzBC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,YAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAEAC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAyB,CAAE;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,SAAA,EAD5B;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CAECC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,aAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CACAC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,aAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,OAAA,EAAA,CACAC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,MAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAAC,SAAA;EAEDC,YAAA;AAUAC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAwB,EAAE;AAClD,IAAA,KAAK,CAACD,KAAO,EAAAC,IAAA,CAAA;AAEb,IAAA,IAAI,IAAI,CAACA,IAAI,CAACC,QAAQ,EAAE;AACtB,MAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAACF,IAAI,CAACC,QAAQ;AACrC,MAAA,IAAI,CAACb,YAAY,GAAG,IAAI,CAACY,IAAI,CAACC,QAAQ;AACxC,KAAO,MAAA;AACL,MAAA,IAAI,CAACC,WAAW,GAAGC,MAAO,CAAA,CAAC,IAAI,CAAClB,IAAI,EAAE,IAAI,CAACC,KAAK,CAAC,CAAA;AACnD;IAEA,IAAI,CAACW,YAAY,GAAG;AAClBZ,MAAAA,IAAA,EAAM,IAAI,CAACiB,WAAW,CAACjB,IAAI,EAAA;AAC3BC,MAAAA,KAAA,EAAO,IAAI,CAACgB,WAAW,CAAChB,KAAK,EAAA;AAC7BC,MAAAA,GAAA,EAAK,IAAI,CAACe,WAAW,CAACb,IAAI,EAAA;AAC1Be,MAAAA,IAAA,EAAM,IAAI,CAACF,WAAW,CAACE,IAAI,EAAA;AAC3BC,MAAAA,MAAA,EAAQ,IAAI,CAACH,WAAW,CAACG,MAAM,EAAA;AAC/BC,MAAAA,MAAQ,EAAA,CAAA;AACRC,MAAAA,WAAa,EAAA;KACf;AAEA,IAAA,IAAI,CAACrB,KAAK,GAAG,IAAI,CAACW,YAAY,CAACX,KAAK;AACpC,IAAA,IAAI,CAACD,IAAI,GAAG,IAAI,CAACY,YAAY,CAACZ,IAAI;AAElC,IAAA,IAAImB,IAAO,GAAA,IAAI,CAACP,YAAY,CAACO,IAAI;AACjC,IAAA,IAAIC,MAAS,GAAA,IAAI,CAACR,YAAY,CAACQ,MAAM;IACrC,IAAIG,OAAA,GAAUJ,OAAO,EAAK,GAAA,CAAIA,CAAAA,EAAAA,IAAA,CAAM,CAAA,GAAGA,IAAA;IACvC,IAAIK,SAAA,GAAYJ,SAAS,EAAK,GAAA,CAAIA,CAAAA,EAAAA,MAAA,CAAQ,CAAA,GAAGA,MAAA;AAE7C,IAAA,IAAI,CAACK,YAAY,GAAG,GAAGF,OAAQ,CAAA,CAAA,EAAGC,SAAA,CAAW,CAAA;AAE7C,IAAA,IAAI,CAACE,MAAM,GAAG,IAAI,CAACT,WAAW,CAACU,KAAK,EAAG,CAAAC,OAAO,CAAC,OAAA,CAAA,CAAS1B,GAAG,EAAA;AAE3D,IAAA,IAAI,CAAC2B,KAAK,GAAGX,MAAA,EAAA;AACf;EAEA,IAAIY,UAAaA,GAAA;AACf,IAAA,OAAOZ,OAAOa,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAC/B,KAAO,EAAAS,CAAA,KAAA;MACjC,OAAO;AACLuB,QAAAA,IAAM,EAAAhC,KAAA;AACNiC,QAAAA,KAAO,EAAAxB;OACT;AACF,KAAA,CAAA;AACF;EAEA,IAAIyB,KAAQA,GAAA;IACV,OAAOC,KAAA,CAAMC,IAAI,CAACD,KAAM,CAAA,EAAA,CAAA,CAAIE,IAAI,EAAI,CAAA,CAAAN,GAAG,CAAC,CAACO,CAAG,EAAA7B,CAAA,KAAA;AAC1C;MACA,IAAIV,IAAO,GAAA,IAAI,CAACA,IAAI,GAAG,CAAI,GAAAU,CAAA;MAE3B,OAAO;AACLuB,QAAAA,IAAM,EAAAjC,IAAA;AACNkC,QAAAA,KAAO,EAAAlC;OACT;AACF,KAAA,CAAA;AACF;EAEA,IAAIwC,KAAQA,GAAA;IACV,MAAMC,aAAa,EAAE;AAErB;IACA,KAAK,IAAI/B,CAAA,GAAI,CAAG,EAAAA,CAAA,GAAI,IAAIA,CAAK,EAAA,EAAA;MAC3B,IAAIS,IAAA,GAAOT,IAAI,EAAK,GAAA,CAAIA,CAAAA,EAAAA,CAAA,CAAG,CAAA,GAAGA,CAAA;MAE9B+B,UAAA,CAAWC,IAAI,CAAC,CAAGvB,EAAAA,IAAK,KAAI,EAAE,CAAA,EAAGA,IAAK,CAAA,GAAA,CAAI,CAAA;AAC5C;AAEA,IAAA,OAAOsB,UAAA;AACT;EAEA,IAAIE,IAAOA,GAAA;AACT;AACA;AACA,IAAA,MAAMC,SAAA,GAAY,IAAI,CAAC3B,WAAW,CAACU,KAAK,EAAA,CAAGkB,QAAQ,CAAC,CAAG,EAAA,OAAA,CAAA;AACvD,IAAA,MAAMC,SAAA,GAAY,IAAI,CAAC7B,WAAW,CAACU,KAAK,EAAA,CAAGoB,GAAG,CAAC,CAAG,EAAA,OAAA,CAAA;AAClD,IAAA,MAAMrB,MAAA,GAAS,IAAI,CAACA,MAAM;IAC1B,IAAIsB,WAAc,GAAA,IAAI,CAAC/B,WAAW,CAAC+B,WAAW,EAAA;AAC9C,IAAA,IAAIC,eAAA,GAAkBL,UAAUI,WAAW,EAAA;IAE3C,MAAME,YAAY,EAAE;IAEpB,KAAK,IAAIxC,CAAA,GAAI,CAAG,EAAAA,CAAA,GAAIsC,aAAatC,CAAK,EAAA,EAAA;MACpCwC,SAAS,CAACxC,EAAE,GAAG;QACbR,GAAA,EAAKQ,CAAI,GAAA;OACX;AACF;AAEA;AACA,IAAA,KAAK,IAAIA,IAAI,CAAG,EAAAyC,CAAA,GAAIF,iBAAiBvC,CAAI,GAAAgB,MAAA,EAAQhB,KAAKyC,CAAK,EAAA,EAAA;MACzDD,SAAA,CAAUE,OAAO,CAAC;AAChBlD,QAAAA,GAAK,EAAAiD,CAAA;AACLlD,QAAAA,KAAA,EAAO2C,UAAU3C,KAAK,EAAA;AACtBD,QAAAA,IAAA,EAAM4C,UAAU5C,IAAI,EAAA;AACpBqD,QAAAA,SAAW,EAAA;AACb,OAAA,CAAA;AACF;AAEA;IACA,KAAK,IAAIF,IAAI,CAAG,EAAAzC,CAAA,GAAIsC,cAActB,MAAQ,EAAAhB,CAAA,GAAI,EAAI,EAAAyC,CAAA,EAAA,EAAKzC,CAAK,EAAA,EAAA;MAC1DwC,SAAA,CAAUR,IAAI,CAAC;AACbxC,QAAAA,GAAK,EAAAiD,CAAA;AACLlD,QAAAA,KAAA,EAAO6C,UAAU7C,KAAK,EAAA;AACtBD,QAAAA,IAAA,EAAM8C,UAAU9C,IAAI,EAAA;AACpBqD,QAAAA,SAAW,EAAA;AACb,OAAA,CAAA;AACF;AAEA;AACA;IACA,MAAMC,aAAa,EAAE;IACrB,MAAMC,KAAQ,GAAAP,WAAA,GAActB,MAAS,GAAA,EAAA,GAAK,CAAI,GAAA,CAAA;IAE9C,KAAK,IAAIhB,CAAA,GAAI,CAAG,EAAAA,CAAA,GAAI6C,OAAO7C,CAAK,EAAA,EAAA;AAC9B4C,MAAAA,UAAU,CAAC5C,EAAE,GAAGwC,SAAA,CAAUM,KAAK,CAAC9C,CAAA,GAAI,CAAG,EAAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AACjD;AAEA,IAAA,OAAO4C,UAAA;AACT;AAEAG,EAAAA,UAAaA,GAAA;IACX,IAAI,CAACzD,IAAI,GAAG,IAAI,CAACiB,WAAW,CAACjB,IAAI,EAAA;IACjC,IAAI,CAACC,KAAK,GAAG,IAAI,CAACgB,WAAW,CAAChB,KAAK,EAAA;AACnC,IAAA,IAAI,CAACyB,MAAM,GAAG,IAAI,CAACT,WAAW,CAACU,KAAK,EAAG,CAAAC,OAAO,CAAC,OAAA,CAAA,CAAS1B,GAAG,EAAA;AAC7D;AAGAwD,EAAAA,UAAAA,CAAWC,IAAY,EAAEC,CAAQ,EAAE;IACjC,IAAI,CAACnC,YAAY,GAAGkC,IAAA;IAEpB,MAAM,CAACxC,IAAM,EAAAC,MAAA,CAAO,GAAGuC,IAAA,CAAKE,KAAK,CAAC,GAAA,CAAA;IAElC,IAAI,CAACjD,YAAY,CAACO,IAAI,GAAG2C,QAAS,CAAA3C,IAAA,CAAA;IAClC,IAAI,CAACP,YAAY,CAACQ,MAAM,GAAG0C,QAAS,CAAA1C,MAAA,CAAA;AACpC,IAAA,IAAI,CAACR,YAAY,CAACS,MAAM,GAAG,CAAA;AAC3B,IAAA,IAAI,CAACT,YAAY,CAACU,WAAW,GAAG,CAAA;IAChC,IAAI,CAACnB,YAAY,GAAGe,MAAO,CAAA,IAAI,CAACN,YAAY,CAAA;IAC5C,IAAI,CAACG,IAAI,CAACgD,QAAQ,CAAC,IAAI,CAAC5D,YAAY,EAAEyD,CAAA,CAAA;AACxC;AAAA,EAAA;IAAAI,CAAA,CAAA,IAAA,CAAAxD,SAAA,EAAA,YAAA,EAAA,CAZCyD,MAAA,CAAA,CAAA;AAAA;AAeDC,EAAAA,UAAAA,CAAWhE,GAAQ,EAAE0D,CAAQ,EAAE;AAC7B;IACA,IAAI,CAAChD,YAAY,CAACZ,IAAI,GAAGE,IAAIF,IAAI,IAAI,IAAI,CAACA,IAAI;IAC9C,IAAI,CAACY,YAAY,CAACX,KAAK,GAAGC,IAAID,KAAK,IAAI,IAAI,CAACA,KAAK;AACjD,IAAA,IAAI,CAACW,YAAY,CAACV,GAAG,GAAGA,IAAIA,GAAG;IAC/B,IAAI,CAACC,YAAY,GAAGe,MAAO,CAAA,IAAI,CAACN,YAAY,CAAA;IAC5C,IAAI,CAACG,IAAI,CAACgD,QAAQ,CAAC,IAAI,CAAC5D,YAAY,EAAEyD,CAAA,CAAA;AAEtC;IACA,IAAI1D,GAAA,CAAImD,SAAS,IAAInD,GAAA,CAAID,KAAK,IAAIC,GAAA,CAAIF,IAAI,EAAE;MAC1C,IAAI,CAACiB,WAAW,CAAChB,KAAK,CAACC,IAAID,KAAK,CAAA;MAChC,IAAI,CAACgB,WAAW,CAACjB,IAAI,CAACE,IAAIF,IAAI,CAAA;MAC9B,IAAI,CAACyD,UAAU,EAAA;AACjB;AACF;AAAA,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAxD,SAAA,EAAA,YAAA,EAAA,CAfCyD,MAAA,CAAA,CAAA;AAAA;EAkBDE,OAAQA,CAAAnE,IAAY,EAAE;AACpB,IAAA,IAAI,CAACA,IAAI,GAAG8D,QAAS,CAAA9D,IAAA,CAAA;AACvB;AAAA,EAAA;IAAAgE,CAAA,CAAA,IAAA,CAAAxD,SAAA,EAAA,SAAA,EAAA,CAHCyD,MAAA,CAAA,CAAA;AAAA;EAMDG,QAASA,CAAAnE,KAAa,EAAE;IACtB,IAAI,CAACgB,WAAW,CAAChB,KAAK,CAAC6D,QAAS,CAAA7D,KAAA,CAAA,CAAA;IAChC,IAAI,CAACwD,UAAU,EAAA;AACjB;AAAA,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAxD,SAAA,EAAA,UAAA,EAAA,CAJCyD,MAAA,CAAA,CAAA;AAAA;AAODI,EAAAA,aAAgBA,GAAA;IACd,IAAI,CAACpD,WAAW,CAAC8B,GAAG,CAAC,CAAG,EAAA,OAAA,CAAA;IACxB,IAAI,CAACU,UAAU,EAAA;AACjB;AAAA,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAxD,SAAA,EAAA,eAAA,EAAA,CAJCyD,MAAA,CAAA,CAAA;AAAA;AAODK,EAAAA,aAAgBA,GAAA;IACd,IAAI,CAACrD,WAAW,CAAC4B,QAAQ,CAAC,CAAG,EAAA,OAAA,CAAA;IAC7B,IAAI,CAACY,UAAU,EAAA;AACjB;AAAA,EAAA;IAAAO,CAAA,CAAA,IAAA,CAAAxD,SAAA,EAAA,eAAA,EAAA,CAJCyD,MAAA,CAAA,CAAA;AAAA;AAMD,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CA+IA,otIAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,oBAAA;QAAAC,EAAA;QAAAC,OAAA;QAAAC,WAAA;QAAAC,SAAA;QAAAC,IAAA;QAAAC,MAAA;QAAAC,GAAA;QAAAC,GAAA;QAAArF,eAAA;QAAAsF,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"datetime-picker.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/datetime-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { helper } from '@ember/component/helper';\nimport { concat, fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\nimport { and, eq, not } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiFormControlLayout from '../../eui-form-control-layout.gts';\nimport EuiIcon from '../../eui-icon.gts';\nimport EuiSelect from '../../eui-select.gts';\n\nconst isSameDayHelper = helper(function ([year, month, day, selectedDate]: [\n number,\n number,\n number,\n moment.Moment | undefined\n]) {\n if (!selectedDate) {\n return false;\n }\n\n return (\n selectedDate.year() === year &&\n selectedDate.month() === month &&\n selectedDate.date() === day\n );\n});\n\ninterface DatetimePickerArgs {\n selected?: moment.Moment | null;\n onChange: (value: string | Date | moment.Moment, e: Event) => void;\n iconClasses?: string;\n dateFormat?: string;\n}\n\ninterface Day {\n day: number;\n month?: number;\n year?: number;\n isOutside?: boolean;\n}\n\ninterface DatetimePickerSignature {\n Args: DatetimePickerArgs;\n}\n\nexport default class DatetimePicker extends Component<DatetimePickerSignature> {\n @tracked month: number = 0;\n @tracked year: number = 0;\n @tracked monthMoment: moment.Moment;\n // Used to style the days outside of the current month\n @tracked offset: number = 0;\n @tracked selectedDate?: moment.Moment;\n @tracked selectedTime?: string;\n @tracked today: moment.Moment;\n\n momentConfig: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n };\n\n constructor(owner: Owner, args: DatetimePickerArgs) {\n super(owner, args);\n\n if (this.args.selected) {\n this.monthMoment = this.args.selected;\n this.selectedDate = this.args.selected;\n } else {\n this.monthMoment = moment([this.year, this.month]);\n }\n\n this.momentConfig = {\n year: this.monthMoment.year(),\n month: this.monthMoment.month(),\n day: this.monthMoment.date(),\n hour: this.monthMoment.hour(),\n minute: this.monthMoment.minute(),\n second: 0,\n millisecond: 0\n };\n\n this.month = this.momentConfig.month;\n this.year = this.momentConfig.year;\n\n let hour = this.momentConfig.hour;\n let minute = this.momentConfig.minute;\n let hourStr = hour < 10 ? `0${hour}` : hour;\n let minuteStr = minute < 10 ? `0${minute}` : minute;\n\n this.selectedTime = `${hourStr}:${minuteStr}`;\n\n this.offset = this.monthMoment.clone().startOf('month').day();\n\n this.today = moment();\n }\n\n get monthNames() {\n return moment.months().map((month, i) => {\n return {\n text: month,\n value: i\n };\n });\n }\n\n get years() {\n return Array.from(Array(15).keys()).map((_, i) => {\n // Create a list of years +/- 7 from the current year\n let year = this.year - 7 + i;\n\n return {\n text: year,\n value: year\n };\n });\n }\n\n get times() {\n const timesArray = [];\n\n // Create entries every 30 minutes\n for (let i = 0; i < 24; i++) {\n let hour = i < 10 ? `0${i}` : i;\n\n timesArray.push(`${hour}:00`, `${hour}:30`);\n }\n\n return timesArray;\n }\n\n get days() {\n // Used for showing days outside of the current month\n // const prevMonth = moment([this.year, this.month - 1]);\n const prevMonth = this.monthMoment.clone().subtract(1, 'month');\n const nextMonth = this.monthMoment.clone().add(1, 'month');\n const offset = this.offset;\n let daysInMonth = this.monthMoment.daysInMonth();\n let daysInPrevMonth = prevMonth.daysInMonth();\n\n const daysArray = [];\n\n for (let i = 0; i < daysInMonth; i++) {\n daysArray[i] = {\n day: i + 1\n };\n }\n\n // Fill the previous and next month days\n for (let i = 0, d = daysInPrevMonth; i < offset; i++, d--) {\n daysArray.unshift({\n day: d,\n month: prevMonth.month(),\n year: prevMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n for (let d = 1, i = daysInMonth + offset; i < 42; d++, i++) {\n daysArray.push({\n day: d,\n month: nextMonth.month(),\n year: nextMonth.year(),\n isOutside: true\n });\n }\n\n // All months fit within 6 weeks (42 days)\n // but depending on the starting day, one week may not be needed\n const daysMatrix = [];\n const weeks = daysInMonth + offset > 35 ? 6 : 5;\n\n for (let i = 0; i < weeks; i++) {\n daysMatrix[i] = daysArray.slice(i * 7, i * 7 + 7);\n }\n\n return daysMatrix;\n }\n\n updateDate() {\n this.year = this.monthMoment.year();\n this.month = this.monthMoment.month();\n this.offset = this.monthMoment.clone().startOf('month').day();\n }\n\n @action\n selectTime(time: string, e: Event) {\n this.selectedTime = time;\n\n const [hour, minute] = time.split(':');\n\n this.momentConfig.hour = parseInt(hour!);\n this.momentConfig.minute = parseInt(minute!);\n this.momentConfig.second = 0;\n this.momentConfig.millisecond = 0;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n }\n\n @action\n selectDate(day: Day, e: Event) {\n // Only outside days will have year/month\n this.momentConfig.year = day.year || this.year;\n this.momentConfig.month = day.month || this.month;\n this.momentConfig.day = day.day;\n this.selectedDate = moment(this.momentConfig);\n this.args.onChange(this.selectedDate, e);\n\n // Update the state to show the selected month properly\n if (day.isOutside && day.month && day.year) {\n this.monthMoment.month(day.month);\n this.monthMoment.year(day.year);\n this.updateDate();\n }\n }\n\n @action\n setYear(year: string) {\n this.year = parseInt(year);\n }\n\n @action\n setMonth(month: string) {\n this.monthMoment.month(parseInt(month));\n this.updateDate();\n }\n\n @action\n increaseMonth() {\n this.monthMoment.add(1, 'month');\n this.updateDate();\n }\n\n @action\n decreaseMonth() {\n this.monthMoment.subtract(1, 'month');\n this.updateDate();\n }\n\n <template>\n <div class=\"euiDatePicker euiDatePicker--inline\">\n <EuiFormControlLayout>\n <div class=\"react-datepicker\">\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--previous\"\n aria-label=\"Previous month\"\n {{on \"click\" this.decreaseMonth}}\n >\n <EuiIcon @iconClasses=\"euiButtonIcon__icon\" @type=\"arrowLeft\" />\n </button>\n <button\n type=\"button\"\n class=\"react-datepicker__navigation react-datepicker__navigation--next\"\n aria-label=\"Next month\"\n {{on \"click\" this.increaseMonth}}\n >\n <EuiIcon\n @iconClasses=\"euiButtonIcon__icon {{@iconClasses}}\"\n @type=\"arrowRight\"\n />\n </button>\n <div class=\"react-datepicker__month-container\">\n <div class=\"react-datepicker__header\">\n <div\n class=\"react-datepicker__header__dropdown react-datepicker__header__dropdown--scroll\"\n >\n <div\n class=\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__month-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.month}}\n @options={{this.monthNames}}\n {{on \"change\" (pick \"target.value\" this.setMonth)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n <div\n class=\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--scroll\"\n >\n {{!template-lint-disable}}\n <div\n class=\"react-datepicker__year-read-view\"\n style=\"padding: 0;\"\n >\n <EuiFlexItem @grow={{1}}>\n <EuiSelect\n @compressed={{true}}\n @value={{this.year}}\n @options={{this.years}}\n {{on \"change\" (pick \"target.value\" this.setYear)}}\n />\n </EuiFlexItem>\n </div>\n </div>\n </div>\n <div class=\"react-datepicker__day-names\">\n <div class=\"react-datepicker__day-name\">Su</div>\n <div class=\"react-datepicker__day-name\">Mo</div>\n <div class=\"react-datepicker__day-name\">Tu</div>\n <div class=\"react-datepicker__day-name\">We</div>\n <div class=\"react-datepicker__day-name\">Th</div>\n <div class=\"react-datepicker__day-name\">Fr</div>\n <div class=\"react-datepicker__day-name\">Sa</div>\n </div>\n </div>\n\n <div\n class=\"react-datepicker__month react-datepicker__month--accessible\"\n >\n {{#each this.days as |days|}}\n <div class=\"react-datepicker__week\">\n {{#each days as |day|}}\n <div\n role=\"button\"\n class={{concat\n \"react-datepicker__day\"\n (if\n (and\n (not day.isOutside)\n (isSameDayHelper\n this.year this.month day.day this.selectedDate\n )\n )\n \" react-datepicker__day--selected\"\n )\n (if\n (isSameDayHelper\n this.year this.month day.day this.today\n )\n \" react-datepicker__day--today\"\n )\n (if\n day.isOutside \" react-datepicker__day--outside-month\"\n )\n }}\n {{on \"click\" (fn this.selectDate day)}}\n >\n <div class=\"react-datepicker__day-text\">{{day.day}}</div>\n </div>\n {{/each}}\n </div>\n {{/each}}\n </div>\n </div>\n\n <div class=\"react-datepicker__time-container\">\n <div class=\"react-datepicker__time\">\n <div\n class=\"react-datepicker__time-box react-datepicker__time-box--accessible\"\n >\n <ul class=\"react-datepicker__time-list\">\n {{#each this.times as |time|}}\n <li\n role=\"option\"\n class={{concat\n \"react-datepicker__time-list-item\"\n (if\n (eq time this.selectedTime)\n \" react-datepicker__time-list-item--selected\"\n )\n }}\n {{on \"click\" (fn this.selectTime time)}}\n >\n {{time}}\n </li>\n {{/each}}\n </ul>\n </div>\n </div>\n </div>\n </div>\n </EuiFormControlLayout>\n </div>\n </template>\n}\n"],"names":["isSameDayHelper","helper","year","month","day","selectedDate","date","DatetimePicker","Component","g","prototype","tracked","i","void 0","momentConfig","constructor","owner","args","selected","monthMoment","moment","hour","minute","second","millisecond","hourStr","minuteStr","selectedTime","offset","clone","startOf","today","monthNames","months","map","text","value","years","Array","from","keys","_","times","timesArray","push","days","prevMonth","subtract","nextMonth","add","daysInMonth","daysInPrevMonth","daysArray","d","unshift","isOutside","daysMatrix","weeks","slice","updateDate","selectTime","time","e","split","parseInt","onChange","n","action","selectDate","setYear","setMonth","increaseMonth","decreaseMonth","setComponentTemplate","precompileTemplate","strictMode","scope","EuiFormControlLayout","on","EuiIcon","EuiFlexItem","EuiSelect","pick","concat","and","not","fn","eq"],"mappings":"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"} | |
diff --git a/dist/components/eui-super-date-picker/date-popover/relative-tab.js b/dist/components/eui-super-date-picker/date-popover/relative-tab.js | |
index b729dd805644c8e29274a94ed88652a8e9c1e124..d268a1397fab309f68a2265c5068490314ad8698 100644 | |
--- a/dist/components/eui-super-date-picker/date-popover/relative-tab.js | |
+++ b/dist/components/eui-super-date-picker/date-popover/relative-tab.js | |
@@ -3,7 +3,7 @@ import { tracked } from '@glimmer/tracking'; | |
import { on } from '@ember/modifier'; | |
import { action } from '@ember/object'; | |
import dateMath from '@elastic/datemath'; | |
-import pick from 'ember-composable-helpers/helpers/pick'; | |
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick'; | |
import EuiFieldNumber from '../../eui-field-number.js'; | |
import EuiFieldText from '../../eui-field-text.js'; | |
import EuiFlexGroup from '../../eui-flex-group.js'; | |
diff --git a/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map b/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map | |
index 30e2d569d5d2cb98f13da1603e26a306067ba350..d2b2017426075eeae72e5970bb6d28bf70a7cf63 100644 | |
--- a/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map | |
+++ b/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"relative-tab.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/relative-tab.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from 'ember-composable-helpers/helpers/pick';\n\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFieldText from '../../eui-field-text.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiForm from '../../eui-form.gts';\nimport EuiFormLabel from '../../eui-form-label.gts';\nimport EuiFormRow from '../../eui-form-row.gts';\nimport EuiPopoverFooter from '../../eui-popover-footer.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiSwitch from '../../eui-switch.gts';\nimport { INVALID_DATE, toRelativeStringFromParts } from '../utils/index.ts';\nimport { parseRelativeParts } from '../utils/index.ts';\n\nimport type { TimeOptions } from '../utils/time-options.ts';\nimport type { LocaleSpecifier } from 'moment';\n\ninterface RelativeTabArgs {\n dateFormat: string;\n locale?: LocaleSpecifier;\n value: string;\n onChange: (value: string, event?: Event) => void;\n roundUp?: boolean;\n position: 'start' | 'end';\n labelPrefix: string;\n timeOptions: TimeOptions;\n}\n\nexport interface RelativeTabSignature {\n Args: RelativeTabArgs;\n}\n\nexport default class RelativeTab extends Component<RelativeTabSignature> {\n @tracked count?: number;\n @tracked unit: any = 'm';\n @tracked round = false;\n\n roundUnit;\n\n constructor(owner: Owner, args: RelativeTabArgs) {\n super(owner, args);\n\n const parsed = parseRelativeParts(this.args.value);\n\n if (parsed) {\n this.count = parsed.count;\n this.unit = parsed.unit as any;\n this.round = parsed.round;\n this.roundUnit = parsed.roundUnit;\n }\n }\n\n get formattedValue() {\n const invalidDate = this.args.value === INVALID_DATE;\n const invalidValue = this.count === undefined || this.count < 0;\n const isInvalid = invalidValue || invalidDate;\n const parsedValue = dateMath.parse(this.args.value, {\n roundUp: this.args.roundUp\n });\n const invalid = isInvalid || !parsedValue || !parsedValue.isValid();\n\n return invalid\n ? ''\n : parsedValue\n .locale(this.args.locale || 'en')\n .format(this.args.dateFormat);\n }\n\n get roundingLabel() {\n //@ts-expect-error\n return this.args.timeOptions.relativeRoundingLabels[this.unit[0]];\n }\n\n @action\n onCountChange(e: Event) {\n const sanitizedValue = parseInt((e.target as HTMLInputElement).value, 10);\n\n this.count = isNaN(sanitizedValue) ? undefined : sanitizedValue;\n this.handleChange();\n }\n\n @action\n onUnitChange(unit: string) {\n this.unit = unit as any;\n this.handleChange();\n }\n\n @action\n onRoundChange(checked: boolean) {\n this.round = checked;\n this.handleChange();\n }\n\n handleChange(e?: Event) {\n if (this.count === undefined || this.count < 0) {\n return;\n }\n\n const date = toRelativeStringFromParts({\n count: this.count,\n round: this.round,\n roundUnit: this.roundUnit as any,\n unit: this.unit\n });\n\n this.args.onChange(date, e);\n }\n\n <template>\n <EuiForm class=\"euiDatePopoverContent__padded\">\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiFormRow>\n <EuiFieldNumber\n @compressed={{true}}\n @value={{this.count}}\n @min=\"0\"\n {{on \"input\" this.onCountChange}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiSelect\n @compressed={{true}}\n @value={{this.unit}}\n @options={{@timeOptions.relativeOptions}}\n {{on \"change\" (pick \"target.value\" this.onUnitChange)}}\n />\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFieldText\n @compressed={{true}}\n @value={{this.formattedValue}}\n @readOnly={{true}}\n >\n <:prepend>\n <EuiFormLabel>{{@labelPrefix}}</EuiFormLabel>\n </:prepend>\n </EuiFieldText>\n </EuiForm>\n <EuiPopoverFooter @paddingSize=\"s\">\n <EuiSwitch\n @label={{this.roundingLabel}}\n @checked={{this.round}}\n @onChange={{pick \"target.checked\" this.onRoundChange}}\n />\n </EuiPopoverFooter>\n </template>\n}\n"],"names":["RelativeTab","Component","g","prototype","tracked","i","void 0","roundUnit","constructor","owner","args","parsed","parseRelativeParts","value","count","unit","round","formattedValue","invalidDate","INVALID_DATE","invalidValue","undefined","isInvalid","parsedValue","dateMath","parse","roundUp","invalid","isValid","locale","format","dateFormat","roundingLabel","timeOptions","relativeRoundingLabels","onCountChange","e","sanitizedValue","parseInt","target","isNaN","handleChange","n","action","onUnitChange","onRoundChange","checked","date","toRelativeStringFromParts","onChange","setComponentTemplate","precompileTemplate","strictMode","scope","EuiForm","EuiFlexGroup","EuiFlexItem","EuiFormRow","EuiFieldNumber","on","EuiSelect","pick","EuiSpacer","EuiFieldText","EuiFormLabel","EuiPopoverFooter","EuiSwitch"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"relative-tab.js","sources":["../../../../src/components/eui-super-date-picker/date-popover/relative-tab.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\n\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFieldText from '../../eui-field-text.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiForm from '../../eui-form.gts';\nimport EuiFormLabel from '../../eui-form-label.gts';\nimport EuiFormRow from '../../eui-form-row.gts';\nimport EuiPopoverFooter from '../../eui-popover-footer.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiSwitch from '../../eui-switch.gts';\nimport { INVALID_DATE, toRelativeStringFromParts } from '../utils/index.ts';\nimport { parseRelativeParts } from '../utils/index.ts';\n\nimport type { TimeOptions } from '../utils/time-options.ts';\nimport type { LocaleSpecifier } from 'moment';\n\ninterface RelativeTabArgs {\n dateFormat: string;\n locale?: LocaleSpecifier;\n value: string;\n onChange: (value: string, event?: Event) => void;\n roundUp?: boolean;\n position: 'start' | 'end';\n labelPrefix: string;\n timeOptions: TimeOptions;\n}\n\nexport interface RelativeTabSignature {\n Args: RelativeTabArgs;\n}\n\nexport default class RelativeTab extends Component<RelativeTabSignature> {\n @tracked count?: number;\n @tracked unit: any = 'm';\n @tracked round = false;\n\n roundUnit;\n\n constructor(owner: Owner, args: RelativeTabArgs) {\n super(owner, args);\n\n const parsed = parseRelativeParts(this.args.value);\n\n if (parsed) {\n this.count = parsed.count;\n this.unit = parsed.unit as any;\n this.round = parsed.round;\n this.roundUnit = parsed.roundUnit;\n }\n }\n\n get formattedValue() {\n const invalidDate = this.args.value === INVALID_DATE;\n const invalidValue = this.count === undefined || this.count < 0;\n const isInvalid = invalidValue || invalidDate;\n const parsedValue = dateMath.parse(this.args.value, {\n roundUp: this.args.roundUp\n });\n const invalid = isInvalid || !parsedValue || !parsedValue.isValid();\n\n return invalid\n ? ''\n : parsedValue\n .locale(this.args.locale || 'en')\n .format(this.args.dateFormat);\n }\n\n get roundingLabel() {\n //@ts-expect-error\n return this.args.timeOptions.relativeRoundingLabels[this.unit[0]];\n }\n\n @action\n onCountChange(e: Event) {\n const sanitizedValue = parseInt((e.target as HTMLInputElement).value, 10);\n\n this.count = isNaN(sanitizedValue) ? undefined : sanitizedValue;\n this.handleChange();\n }\n\n @action\n onUnitChange(unit: string) {\n this.unit = unit as any;\n this.handleChange();\n }\n\n @action\n onRoundChange(checked: boolean) {\n this.round = checked;\n this.handleChange();\n }\n\n handleChange(e?: Event) {\n if (this.count === undefined || this.count < 0) {\n return;\n }\n\n const date = toRelativeStringFromParts({\n count: this.count,\n round: this.round,\n roundUnit: this.roundUnit as any,\n unit: this.unit\n });\n\n this.args.onChange(date, e);\n }\n\n <template>\n <EuiForm class=\"euiDatePopoverContent__padded\">\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiFormRow>\n <EuiFieldNumber\n @compressed={{true}}\n @value={{this.count}}\n @min=\"0\"\n {{on \"input\" this.onCountChange}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiSelect\n @compressed={{true}}\n @value={{this.unit}}\n @options={{@timeOptions.relativeOptions}}\n {{on \"change\" (pick \"target.value\" this.onUnitChange)}}\n />\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFieldText\n @compressed={{true}}\n @value={{this.formattedValue}}\n @readOnly={{true}}\n >\n <:prepend>\n <EuiFormLabel>{{@labelPrefix}}</EuiFormLabel>\n </:prepend>\n </EuiFieldText>\n </EuiForm>\n <EuiPopoverFooter @paddingSize=\"s\">\n <EuiSwitch\n @label={{this.roundingLabel}}\n @checked={{this.round}}\n @onChange={{pick \"target.checked\" this.onRoundChange}}\n />\n </EuiPopoverFooter>\n </template>\n}\n"],"names":["RelativeTab","Component","g","prototype","tracked","i","void 0","roundUnit","constructor","owner","args","parsed","parseRelativeParts","value","count","unit","round","formattedValue","invalidDate","INVALID_DATE","invalidValue","undefined","isInvalid","parsedValue","dateMath","parse","roundUp","invalid","isValid","locale","format","dateFormat","roundingLabel","timeOptions","relativeRoundingLabels","onCountChange","e","sanitizedValue","parseInt","target","isNaN","handleChange","n","action","onUnitChange","onRoundChange","checked","date","toRelativeStringFromParts","onChange","setComponentTemplate","precompileTemplate","strictMode","scope","EuiForm","EuiFlexGroup","EuiFlexItem","EuiFormRow","EuiFieldNumber","on","EuiSelect","pick","EuiSpacer","EuiFieldText","EuiFormLabel","EuiPopoverFooter","EuiSwitch"],"mappings":"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"} | |
diff --git a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js | |
index 6aae5fe395d106c377a7d2d1f99743c7fe935d32..14b0afb608d5ac3b390244707b026107d84e7cab 100644 | |
--- a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js | |
+++ b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js | |
@@ -3,7 +3,7 @@ import { tracked } from '@glimmer/tracking'; | |
import { on } from '@ember/modifier'; | |
import { action } from '@ember/object'; | |
import dateMath from '@elastic/datemath'; | |
-import pick from 'ember-composable-helpers/helpers/pick'; | |
+import pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick'; | |
import set from 'ember-set-helper/helpers/set'; | |
import { lte } from 'ember-truth-helpers'; | |
import moment from 'moment'; | |
diff --git a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map | |
index 05516b7ac5b25a19b603e0e2f83150404510183b..c6c06e13d23962e0aecf8ee2d13b41bade3114f9 100644 | |
--- a/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map | |
+++ b/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-quick-select.js","sources":["../../../../src/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from 'ember-composable-helpers/helpers/pick';\nimport set from 'ember-set-helper/helpers/set';\nimport { lte } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport randomId from '../../../-private/random-id.ts';\nimport EuiButton from '../../eui-button.gts';\nimport EuiButtonIcon from '../../eui-button-icon.gts';\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiI18n from '../../eui-i18n.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiToolTip from '../../eui-tool-tip.gts';\nimport { parseTimeParts } from '../utils/quick-select.ts';\nimport { NEXT } from '../utils/time-options.ts';\n\nimport type { ApplyTime, TimeUnitId } from '../types/global';\nimport type { TimeOptions } from '../utils/time-options.ts';\n\ninterface EuiQuickSelectState {\n timeTense: string;\n timeValue: number;\n timeUnits: TimeUnitId;\n}\n\ninterface EuiQuickSelectArgs {\n applyTime: ApplyTime;\n start: string;\n end: string;\n prevQuickSelect?: EuiQuickSelectState;\n timeOptions: TimeOptions;\n}\n\nexport interface EuiQuickSelectSignature {\n Args: EuiQuickSelectArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiQuickSelect extends Component<EuiQuickSelectSignature> {\n @tracked timeTense: string;\n @tracked timeValue: number;\n @tracked timeUnits: TimeUnitId;\n\n constructor(owner: Owner, args: EuiQuickSelectArgs) {\n super(owner, args);\n\n const {\n timeTense: timeTenseDefault,\n timeUnits: timeUnitsDefault,\n timeValue: timeValueDefault\n } = parseTimeParts(this.args.start, this.args.end);\n\n this.timeTense =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeTense\n ? this.args.prevQuickSelect.timeTense\n : timeTenseDefault;\n this.timeValue =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeValue\n ? this.args.prevQuickSelect.timeValue\n : timeValueDefault;\n this.timeUnits =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeUnits\n ? this.args.prevQuickSelect.timeUnits\n : timeUnitsDefault;\n }\n\n getBounds() {\n const startMoment = dateMath.parse(this.args.start);\n const endMoment = dateMath.parse(this.args.end, { roundUp: true });\n\n return {\n min:\n startMoment && startMoment.isValid()\n ? startMoment\n : moment().subtract(15, 'minute'),\n max: endMoment && endMoment.isValid() ? endMoment : moment()\n };\n }\n\n @action\n applyQuickSelect() {\n if (this.timeTense === NEXT) {\n this.args.applyTime({\n start: 'now',\n end: `now+${this.timeValue}${this.timeUnits}`\n // quickSelect: { ...this.state },\n });\n } else {\n this.args.applyTime({\n start: `now-${this.timeValue}${this.timeUnits}`,\n end: 'now'\n // quickSelect: { ...this.state },\n });\n }\n }\n\n @action\n stepForward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(max).add(1, 'ms').toISOString(),\n end: moment(max)\n .add(diff + 1, 'ms')\n .toISOString(),\n keepPopoverOpen: true\n });\n }\n\n @action\n stepBackward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(min)\n .subtract(diff + 1, 'ms')\n .toISOString(),\n end: moment(min).subtract(1, 'ms').toISOString(),\n keepPopoverOpen: true\n });\n }\n\n <template>\n {{#let (randomId) as |legendId|}}\n <fieldset>\n <EuiFlexGroup\n @responsive={{false}}\n @alignItems=\"center\"\n @justifyContent=\"spaceBetween\"\n @gutterSize=\"s\"\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.quickSelectTitle\"\n @default=\"Quick select\"\n as |Token|\n >\n <Token as |quickSelectTitle|>\n <div aria-hidden class=\"euiFormLabel\">\n {{quickSelectTitle}}\n </div>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @alignItems=\"center\"\n @gutterSize=\"s\"\n @responsive={{false}}\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.previousLabel\"\n @default=\"Previous time window\"\n as |Token|\n >\n <Token as |previousLabel|>\n <EuiToolTip @content={{previousLabel}}>\n <EuiButtonIcon\n aria-label={{previousLabel}}\n @iconType=\"arrowLeft\"\n {{on \"click\" this.stepBackward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.nextLabel\"\n @default=\"Next time window\"\n as |Token|\n >\n <Token as |nextLabel|>\n <EuiToolTip @content={{nextLabel}}>\n <EuiButtonIcon\n aria-label={{nextLabel}}\n @iconType=\"arrowRight\"\n {{on \"click\" this.stepForward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.tenseLabel\"\n @default=\"Time tense\"\n as |Token|\n >\n <Token as |tenseLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{tenseLabel}}\n @value={{this.timeTense}}\n @options={{@timeOptions.timeTenseOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeTense\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.valueLabel\"\n @default=\"Time value\"\n as |Token|\n >\n <Token as |valueLabel|>\n <EuiFieldNumber\n @compressed={{true}}\n aria-label={{valueLabel}}\n @value={{this.timeValue}}\n {{on \"input\" (pick \"target.value\" (set this \"timeValue\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.unitLabel\"\n @default=\"Time unit\"\n as |Token|\n >\n <Token as |unitLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{unitLabel}}\n @value={{this.timeUnits}}\n @options={{@timeOptions.timeUnitsOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeUnits\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiButton\n class=\"euiQuickSelect__applyButton\"\n @size=\"s\"\n @disabled={{lte this.timeValue 0}}\n {{on \"click\" this.applyQuickSelect}}\n >\n <EuiI18n\n @token=\"euiQuickSelect.applyButton\"\n @default=\"Apply\"\n as |Token|\n >\n <Token as |value|>\n {{value}}\n </Token>\n </EuiI18n>\n </EuiButton>\n </EuiFlexItem>\n </EuiFlexGroup>\n </fieldset>\n {{/let}}\n </template>\n}\n"],"names":["EuiQuickSelect","Component","g","prototype","tracked","i","void 0","constructor","owner","args","timeTense","timeTenseDefault","timeUnits","timeUnitsDefault","timeValue","timeValueDefault","parseTimeParts","start","end","prevQuickSelect","getBounds","startMoment","dateMath","parse","endMoment","roundUp","min","isValid","moment","subtract","max","applyQuickSelect","NEXT","applyTime","n","action","stepForward","diff","add","toISOString","keepPopoverOpen","stepBackward","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiFlexGroup","EuiFlexItem","EuiI18n","EuiToolTip","EuiButtonIcon","on","EuiSpacer","EuiSelect","pick","set","EuiFieldNumber","EuiButton","lte"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-quick-select.js","sources":["../../../../src/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\n\nimport dateMath from '@elastic/datemath';\nimport pick from '@nullvoxpopuli/ember-composable-helpers/helpers/pick';\nimport set from 'ember-set-helper/helpers/set';\nimport { lte } from 'ember-truth-helpers';\nimport moment from 'moment';\n\nimport randomId from '../../../-private/random-id.ts';\nimport EuiButton from '../../eui-button.gts';\nimport EuiButtonIcon from '../../eui-button-icon.gts';\nimport EuiFieldNumber from '../../eui-field-number.gts';\nimport EuiFlexGroup from '../../eui-flex-group.gts';\nimport EuiFlexItem from '../../eui-flex-item.gts';\nimport EuiI18n from '../../eui-i18n.gts';\nimport EuiSelect from '../../eui-select.gts';\nimport EuiSpacer from '../../eui-spacer.gts';\nimport EuiToolTip from '../../eui-tool-tip.gts';\nimport { parseTimeParts } from '../utils/quick-select.ts';\nimport { NEXT } from '../utils/time-options.ts';\n\nimport type { ApplyTime, TimeUnitId } from '../types/global';\nimport type { TimeOptions } from '../utils/time-options.ts';\n\ninterface EuiQuickSelectState {\n timeTense: string;\n timeValue: number;\n timeUnits: TimeUnitId;\n}\n\ninterface EuiQuickSelectArgs {\n applyTime: ApplyTime;\n start: string;\n end: string;\n prevQuickSelect?: EuiQuickSelectState;\n timeOptions: TimeOptions;\n}\n\nexport interface EuiQuickSelectSignature {\n Args: EuiQuickSelectArgs;\n Blocks: { default: [] };\n}\n\nexport default class EuiQuickSelect extends Component<EuiQuickSelectSignature> {\n @tracked timeTense: string;\n @tracked timeValue: number;\n @tracked timeUnits: TimeUnitId;\n\n constructor(owner: Owner, args: EuiQuickSelectArgs) {\n super(owner, args);\n\n const {\n timeTense: timeTenseDefault,\n timeUnits: timeUnitsDefault,\n timeValue: timeValueDefault\n } = parseTimeParts(this.args.start, this.args.end);\n\n this.timeTense =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeTense\n ? this.args.prevQuickSelect.timeTense\n : timeTenseDefault;\n this.timeValue =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeValue\n ? this.args.prevQuickSelect.timeValue\n : timeValueDefault;\n this.timeUnits =\n this.args.prevQuickSelect && this.args.prevQuickSelect.timeUnits\n ? this.args.prevQuickSelect.timeUnits\n : timeUnitsDefault;\n }\n\n getBounds() {\n const startMoment = dateMath.parse(this.args.start);\n const endMoment = dateMath.parse(this.args.end, { roundUp: true });\n\n return {\n min:\n startMoment && startMoment.isValid()\n ? startMoment\n : moment().subtract(15, 'minute'),\n max: endMoment && endMoment.isValid() ? endMoment : moment()\n };\n }\n\n @action\n applyQuickSelect() {\n if (this.timeTense === NEXT) {\n this.args.applyTime({\n start: 'now',\n end: `now+${this.timeValue}${this.timeUnits}`\n // quickSelect: { ...this.state },\n });\n } else {\n this.args.applyTime({\n start: `now-${this.timeValue}${this.timeUnits}`,\n end: 'now'\n // quickSelect: { ...this.state },\n });\n }\n }\n\n @action\n stepForward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(max).add(1, 'ms').toISOString(),\n end: moment(max)\n .add(diff + 1, 'ms')\n .toISOString(),\n keepPopoverOpen: true\n });\n }\n\n @action\n stepBackward() {\n const { min, max } = this.getBounds();\n const diff = max.diff(min);\n\n this.args.applyTime({\n start: moment(min)\n .subtract(diff + 1, 'ms')\n .toISOString(),\n end: moment(min).subtract(1, 'ms').toISOString(),\n keepPopoverOpen: true\n });\n }\n\n <template>\n {{#let (randomId) as |legendId|}}\n <fieldset>\n <EuiFlexGroup\n @responsive={{false}}\n @alignItems=\"center\"\n @justifyContent=\"spaceBetween\"\n @gutterSize=\"s\"\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.quickSelectTitle\"\n @default=\"Quick select\"\n as |Token|\n >\n <Token as |quickSelectTitle|>\n <div aria-hidden class=\"euiFormLabel\">\n {{quickSelectTitle}}\n </div>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiFlexGroup\n @alignItems=\"center\"\n @gutterSize=\"s\"\n @responsive={{false}}\n >\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.previousLabel\"\n @default=\"Previous time window\"\n as |Token|\n >\n <Token as |previousLabel|>\n <EuiToolTip @content={{previousLabel}}>\n <EuiButtonIcon\n aria-label={{previousLabel}}\n @iconType=\"arrowLeft\"\n {{on \"click\" this.stepBackward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiI18n\n @token=\"euiQuickSelect.nextLabel\"\n @default=\"Next time window\"\n as |Token|\n >\n <Token as |nextLabel|>\n <EuiToolTip @content={{nextLabel}}>\n <EuiButtonIcon\n aria-label={{nextLabel}}\n @iconType=\"arrowRight\"\n {{on \"click\" this.stepForward}}\n />\n </EuiToolTip>\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiFlexItem>\n </EuiFlexGroup>\n <EuiSpacer @size=\"s\" />\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.tenseLabel\"\n @default=\"Time tense\"\n as |Token|\n >\n <Token as |tenseLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{tenseLabel}}\n @value={{this.timeTense}}\n @options={{@timeOptions.timeTenseOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeTense\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.valueLabel\"\n @default=\"Time value\"\n as |Token|\n >\n <Token as |valueLabel|>\n <EuiFieldNumber\n @compressed={{true}}\n aria-label={{valueLabel}}\n @value={{this.timeValue}}\n {{on \"input\" (pick \"target.value\" (set this \"timeValue\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem>\n <EuiI18n\n @token=\"euiQuickSelect.unitLabel\"\n @default=\"Time unit\"\n as |Token|\n >\n <Token as |unitLabel|>\n <EuiSelect\n @compressed={{true}}\n aria-label={{unitLabel}}\n @value={{this.timeUnits}}\n @options={{@timeOptions.timeUnitsOptions}}\n {{on \"change\" (pick \"target.value\" (set this \"timeUnits\"))}}\n />\n </Token>\n </EuiI18n>\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n <EuiButton\n class=\"euiQuickSelect__applyButton\"\n @size=\"s\"\n @disabled={{lte this.timeValue 0}}\n {{on \"click\" this.applyQuickSelect}}\n >\n <EuiI18n\n @token=\"euiQuickSelect.applyButton\"\n @default=\"Apply\"\n as |Token|\n >\n <Token as |value|>\n {{value}}\n </Token>\n </EuiI18n>\n </EuiButton>\n </EuiFlexItem>\n </EuiFlexGroup>\n </fieldset>\n {{/let}}\n </template>\n}\n"],"names":["EuiQuickSelect","Component","g","prototype","tracked","i","void 0","constructor","owner","args","timeTense","timeTenseDefault","timeUnits","timeUnitsDefault","timeValue","timeValueDefault","parseTimeParts","start","end","prevQuickSelect","getBounds","startMoment","dateMath","parse","endMoment","roundUp","min","isValid","moment","subtract","max","applyQuickSelect","NEXT","applyTime","n","action","stepForward","diff","add","toISOString","keepPopoverOpen","stepBackward","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiFlexGroup","EuiFlexItem","EuiI18n","EuiToolTip","EuiButtonIcon","on","EuiSpacer","EuiSelect","pick","set","EuiFieldNumber","EuiButton","lte"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA+Ce,MAAMA,uBAAuBC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACnDC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACAC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACAC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,SAAA;AAEDC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAwB,EAAE;AAClD,IAAA,KAAK,CAACD,KAAO,EAAAC,IAAA,CAAA;IAEb,MAAM;AACJC,MAAAA,WAAWC,gBAAgB;AAC3BC,MAAAA,WAAWC,gBAAgB;AAC3BC,MAAAA,SAAW,EAAAC;AACZ,KAAA,GAAGC,eAAe,IAAI,CAACP,IAAI,CAACQ,KAAK,EAAE,IAAI,CAACR,IAAI,CAACS,GAAG,CAAA;IAEjD,IAAI,CAACR,SAAS,GACZ,IAAI,CAACD,IAAI,CAACU,eAAe,IAAI,IAAI,CAACV,IAAI,CAACU,eAAe,CAACT,SAAS,GAC5D,IAAI,CAACD,IAAI,CAACU,eAAe,CAACT,SAAS,GACnCC,gBAAA;IACN,IAAI,CAACG,SAAS,GACZ,IAAI,CAACL,IAAI,CAACU,eAAe,IAAI,IAAI,CAACV,IAAI,CAACU,eAAe,CAACL,SAAS,GAC5D,IAAI,CAACL,IAAI,CAACU,eAAe,CAACL,SAAS,GACnCC,gBAAA;IACN,IAAI,CAACH,SAAS,GACZ,IAAI,CAACH,IAAI,CAACU,eAAe,IAAI,IAAI,CAACV,IAAI,CAACU,eAAe,CAACP,SAAS,GAC5D,IAAI,CAACH,IAAI,CAACU,eAAe,CAACP,SAAS,GACnCC,gBAAA;AACR;AAEAO,EAAAA,SAAYA,GAAA;IACV,MAAMC,WAAA,GAAcC,SAASC,KAAK,CAAC,IAAI,CAACd,IAAI,CAACQ,KAAK,CAAA;IAClD,MAAMO,SAAA,GAAYF,SAASC,KAAK,CAAC,IAAI,CAACd,IAAI,CAACS,GAAG,EAAE;AAAEO,MAAAA,OAAS,EAAA;AAAK,KAAA,CAAA;IAEhE,OAAO;MACLC,GACE,EAAAL,WAAA,IAAeA,YAAYM,OAAO,EAAA,GAC9BN,cACAO,MAAS,EAAA,CAAAC,QAAQ,CAAC,EAAI,EAAA,QAAA,CAAA;AAC5BC,MAAAA,GAAA,EAAKN,SAAa,IAAAA,SAAA,CAAUG,OAAO,EAAA,GAAKH,SAAY,GAAAI,MAAA;KACtD;AACF;AAGAG,EAAAA,gBAAmBA,GAAA;AACjB,IAAA,IAAI,IAAI,CAACrB,SAAS,KAAKsB,IAAM,EAAA;AAC3B,MAAA,IAAI,CAACvB,IAAI,CAACwB,SAAS,CAAC;AAClBhB,QAAAA,KAAO,EAAA,KAAA;QACPC,GAAA,EAAK,OAAO,IAAI,CAACJ,SAAS,CAAG,EAAA,IAAI,CAACF,SAAS,CAAA;AAE7C,OAAA,CAAA;AACF,KAAO,MAAA;AACL,MAAA,IAAI,CAACH,IAAI,CAACwB,SAAS,CAAC;QAClBhB,KAAA,EAAO,OAAO,IAAI,CAACH,SAAS,CAAG,EAAA,IAAI,CAACF,SAAS,CAAE,CAAA;AAC/CM,QAAAA,GAAK,EAAA;AAEP,OAAA,CAAA;AACF;AACF;AAAA,EAAA;IAAAgB,CAAA,CAAA,IAAA,CAAA/B,SAAA,EAAA,kBAAA,EAAA,CAfCgC,MAAA,CAAA,CAAA;AAAA;AAkBDC,EAAAA,WAAcA,GAAA;IACZ,MAAM;MAAEV,GAAG;AAAEI,MAAAA;KAAK,GAAG,IAAI,CAACV,SAAS,EAAA;AACnC,IAAA,MAAMiB,IAAA,GAAOP,GAAI,CAAAO,IAAI,CAACX,GAAA,CAAA;AAEtB,IAAA,IAAI,CAACjB,IAAI,CAACwB,SAAS,CAAC;AAClBhB,MAAAA,KAAA,EAAOW,OAAOE,GAAK,CAAA,CAAAQ,GAAG,CAAC,CAAA,EAAG,MAAMC,WAAW,EAAA;AAC3CrB,MAAAA,GAAA,EAAKU,OAAOE,GACT,CAAA,CAAAQ,GAAG,CAACD,IAAO,GAAA,CAAA,EAAG,MACdE,WAAW,EAAA;AACdC,MAAAA,eAAiB,EAAA;AACnB,KAAA,CAAA;AACF;AAAA,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAA/B,SAAA,EAAA,aAAA,EAAA,CAZCgC,MAAA,CAAA,CAAA;AAAA;AAeDM,EAAAA,YAAeA,GAAA;IACb,MAAM;MAAEf,GAAG;AAAEI,MAAAA;KAAK,GAAG,IAAI,CAACV,SAAS,EAAA;AACnC,IAAA,MAAMiB,IAAA,GAAOP,GAAI,CAAAO,IAAI,CAACX,GAAA,CAAA;AAEtB,IAAA,IAAI,CAACjB,IAAI,CAACwB,SAAS,CAAC;AAClBhB,MAAAA,KAAA,EAAOW,OAAOF,GACX,CAAA,CAAAG,QAAQ,CAACQ,IAAO,GAAA,CAAA,EAAG,MACnBE,WAAW,EAAA;AACdrB,MAAAA,GAAA,EAAKU,OAAOF,GAAK,CAAA,CAAAG,QAAQ,CAAC,CAAA,EAAG,MAAMU,WAAW,EAAA;AAC9CC,MAAAA,eAAiB,EAAA;AACnB,KAAA,CAAA;AACF;AAAA,EAAA;IAAAN,CAAA,CAAA,IAAA,CAAA/B,SAAA,EAAA,cAAA,EAAA,CAZCgC,MAAA,CAAA,CAAA;AAAA;AAcD,EAAA;IAAAO,oBAAA,CAAAC,kBAAA,CA0IA,+mHAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,YAAA;QAAAC,WAAA;iBAAAC,gBAAA;QAAAC,UAAA;QAAAC,aAAA;QAAAC,EAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,IAAA;QAAAC,GAAA;QAAAC,cAAA;QAAAC,SAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-tabbed-content.js b/dist/components/eui-tabbed-content.js | |
index 97238e891bc5e75f3b911394e3be4669a131631c..8326be3b5b6cf85f16be3018809aeb60dd678695 100644 | |
--- a/dist/components/eui-tabbed-content.js | |
+++ b/dist/components/eui-tabbed-content.js | |
@@ -4,7 +4,7 @@ import { fn } from '@ember/helper'; | |
import { on } from '@ember/modifier'; | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
import { scheduleOnce } from '@ember/runloop'; | |
-import findBy from 'ember-composable-helpers/helpers/find-by'; | |
+import findBy from '@nullvoxpopuli/ember-composable-helpers/helpers/find-by'; | |
import { eq } from 'ember-truth-helpers'; | |
import randomId from '../-private/random-id.js'; | |
import EuiTab from './eui-tab.js'; | |
diff --git a/dist/components/eui-tabbed-content.js.map b/dist/components/eui-tabbed-content.js.map | |
index 10fd55cfb0b26e30e1a542dd7a656e543a5b2352..73e0362181378f8cf79baaf0aca7545e58ea37a4 100644 | |
--- a/dist/components/eui-tabbed-content.js.map | |
+++ b/dist/components/eui-tabbed-content.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-tabbed-content.js","sources":["../../src/components/eui-tabbed-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport findBy from 'ember-composable-helpers/helpers/find-by';\nimport { eq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiTabsSignature } from './eui-tabs';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiTabbedContentTab {\n id: string;\n name: string;\n content?: ComponentLike;\n disabled?: boolean;\n}\n\nexport type EuiTabbedContentArgs = CommonArgs & {\n /**\n * When tabbing into the tabs, set the focus on `initial` for the first tab,\n * or `selected` for the currently selected tab. Best use case is for inside of\n * overlay content like popovers or flyouts.\n */\n autoFocus?: 'initial' | 'selected';\n /**\n * Choose `default` or alternative `condensed` display styles\n */\n display?: EuiTabsSignature['Args']['display'];\n /**\n * Evenly stretches each tab to fill the horizontal space\n */\n expand?: boolean;\n /**\n * Use this prop to set the initially selected tab while letting the tabbed content component\n * control selection state internally\n */\n initialSelectedTab?: EuiTabbedContentTab;\n onTabClick?: (selectedTab: EuiTabbedContentTab) => void;\n /**\n * Use this prop if you want to control selection state within the owner component\n */\n selectedTab?: EuiTabbedContentTab;\n size?: EuiTabsSignature['Args']['size'];\n /**\n * Each tab needs id and content properties, so we can associate it with its panel for accessibility.\n * The name property (a node) is also required to display to the user.\n */\n tabs: EuiTabbedContentTab[];\n};\n\nexport interface EuiTabbedContentSignature {\n Element: HTMLDivElement;\n Args: EuiTabbedContentArgs;\n Blocks: {\n default: [EuiTabbedContentTab];\n selectedTabContent: [EuiTabbedContentTab];\n };\n}\n\nexport default class EuiTabbedContentComponent extends Component<EuiTabbedContentSignature> {\n @tracked selectedTabId;\n @tracked inFocus: boolean = false;\n tabsRef?: Element;\n\n get autoFocus() {\n return this.args.autoFocus || 'initial';\n }\n\n constructor(owner: Owner, args: EuiTabbedContentArgs) {\n super(owner, args);\n\n const { initialSelectedTab, selectedTab, tabs } = this.args;\n\n // Only track selection state if it's not controlled externally.\n if (!selectedTab) {\n this.selectedTabId =\n (initialSelectedTab && initialSelectedTab.id) || tabs[0]?.id;\n }\n }\n\n get selectedTab() {\n const { selectedTab: externalSelectedTab, tabs } = this.args;\n\n return (\n externalSelectedTab ||\n tabs.find((tab: EuiTabbedContentTab) => tab.id === this.selectedTabId)\n );\n }\n\n setTabsRef = (element: Element) => {\n this.tabsRef = element;\n // Current short-term solution for event listener (see https://github.com/elastic/eui/pull/2717)\n //@ts-expect-error\n this.tabsRef.addEventListener('focusout', this.removeFocus);\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.tabsRef) {\n //@ts-expect-error\n this.tabsRef.removeEventListener('focusout', this.removeFocus);\n }\n }\n\n removeFocus = (blurEvent: FocusEvent) => {\n // only set inFocus to false if the wrapping div doesn't contain the now-focusing element\n const currentTarget = blurEvent.currentTarget! as HTMLElement;\n const relatedTarget = blurEvent.relatedTarget! as HTMLElement;\n\n if (currentTarget.contains(relatedTarget) === false) {\n this.inFocus = true;\n }\n };\n\n onTabClick = (selectedTab: EuiTabbedContentTab) => {\n const { onTabClick, selectedTab: externalSelectedTab } = this.args;\n\n if (onTabClick) {\n onTabClick(selectedTab);\n }\n\n // Only track selection state if it's not controlled externally.\n if (!externalSelectedTab) {\n this.selectedTabId = selectedTab.id;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n focusTab = () => {\n if (this.tabsRef) {\n const targetTab: HTMLDivElement | null = this.tabsRef.querySelector(\n `#${this.selectedTabId}`\n );\n\n targetTab!.focus();\n }\n };\n\n initializeFocus = () => {\n if (!this.inFocus && this.autoFocus === 'selected') {\n // Must wait for setState to finish before calling `.focus()`\n // as the focus call triggers a blur on the first tab\n this.inFocus = true;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n <template>\n {{#let (randomId) as |rootId|}}\n <div class={{@className}} ...attributes>\n <EuiTabs\n @expand={{@expand}}\n @display={{@display}}\n @size={{@size}}\n {{on \"focus\" this.initializeFocus}}\n {{didInsert this.setTabsRef}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n aria-controls={{rootId}}\n @isSelected={{eq tab.id this.selectedTab.id}}\n @disabled={{tab.disabled}}\n {{on \"click\" (fn this.onTabClick tab)}}\n >\n {{tab.name}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{#let (findBy \"id\" this.selectedTab.id @tabs) as |currentTab|}}\n <div role=\"tabpanel\" id={{rootId}} aria-labelledby={{currentTab.id}}>\n {{#if (has-block \"selectedTabContent\")}}\n {{yield currentTab to=\"selectedTabContent\"}}\n {{else}}\n {{currentTab.content}}\n {{/if}}\n </div>\n {{/let}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["EuiTabbedContentComponent","Component","g","prototype","tracked","i","void 0","tabsRef","autoFocus","args","constructor","owner","initialSelectedTab","selectedTab","tabs","selectedTabId","id","externalSelectedTab","find","tab","setTabsRef","element","addEventListener","removeFocus","willDestroy","removeEventListener","blurEvent","currentTarget","relatedTarget","contains","inFocus","onTabClick","focusTab","scheduleOnce","targetTab","querySelector","focus","initializeFocus","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiTabs","on","didInsert","EuiTab","eq","fn","findBy"],"mappings":"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"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-tabbed-content.js","sources":["../../src/components/eui-tabbed-content.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { scheduleOnce } from '@ember/runloop';\nimport type Owner from '@ember/owner';\n\nimport findBy from '@nullvoxpopuli/ember-composable-helpers/helpers/find-by';\nimport { eq } from 'ember-truth-helpers';\n\nimport randomId from '../-private/random-id.ts';\nimport EuiTab from './eui-tab.gts';\nimport EuiTabs from './eui-tabs.gts';\n\nimport type { CommonArgs } from './common.ts';\nimport type { EuiTabsSignature } from './eui-tabs';\nimport type { ComponentLike } from '@glint/template';\n\nexport interface EuiTabbedContentTab {\n id: string;\n name: string;\n content?: ComponentLike;\n disabled?: boolean;\n}\n\nexport type EuiTabbedContentArgs = CommonArgs & {\n /**\n * When tabbing into the tabs, set the focus on `initial` for the first tab,\n * or `selected` for the currently selected tab. Best use case is for inside of\n * overlay content like popovers or flyouts.\n */\n autoFocus?: 'initial' | 'selected';\n /**\n * Choose `default` or alternative `condensed` display styles\n */\n display?: EuiTabsSignature['Args']['display'];\n /**\n * Evenly stretches each tab to fill the horizontal space\n */\n expand?: boolean;\n /**\n * Use this prop to set the initially selected tab while letting the tabbed content component\n * control selection state internally\n */\n initialSelectedTab?: EuiTabbedContentTab;\n onTabClick?: (selectedTab: EuiTabbedContentTab) => void;\n /**\n * Use this prop if you want to control selection state within the owner component\n */\n selectedTab?: EuiTabbedContentTab;\n size?: EuiTabsSignature['Args']['size'];\n /**\n * Each tab needs id and content properties, so we can associate it with its panel for accessibility.\n * The name property (a node) is also required to display to the user.\n */\n tabs: EuiTabbedContentTab[];\n};\n\nexport interface EuiTabbedContentSignature {\n Element: HTMLDivElement;\n Args: EuiTabbedContentArgs;\n Blocks: {\n default: [EuiTabbedContentTab];\n selectedTabContent: [EuiTabbedContentTab];\n };\n}\n\nexport default class EuiTabbedContentComponent extends Component<EuiTabbedContentSignature> {\n @tracked selectedTabId;\n @tracked inFocus: boolean = false;\n tabsRef?: Element;\n\n get autoFocus() {\n return this.args.autoFocus || 'initial';\n }\n\n constructor(owner: Owner, args: EuiTabbedContentArgs) {\n super(owner, args);\n\n const { initialSelectedTab, selectedTab, tabs } = this.args;\n\n // Only track selection state if it's not controlled externally.\n if (!selectedTab) {\n this.selectedTabId =\n (initialSelectedTab && initialSelectedTab.id) || tabs[0]?.id;\n }\n }\n\n get selectedTab() {\n const { selectedTab: externalSelectedTab, tabs } = this.args;\n\n return (\n externalSelectedTab ||\n tabs.find((tab: EuiTabbedContentTab) => tab.id === this.selectedTabId)\n );\n }\n\n setTabsRef = (element: Element) => {\n this.tabsRef = element;\n // Current short-term solution for event listener (see https://github.com/elastic/eui/pull/2717)\n //@ts-expect-error\n this.tabsRef.addEventListener('focusout', this.removeFocus);\n };\n\n willDestroy(): void {\n super.willDestroy();\n\n if (this.tabsRef) {\n //@ts-expect-error\n this.tabsRef.removeEventListener('focusout', this.removeFocus);\n }\n }\n\n removeFocus = (blurEvent: FocusEvent) => {\n // only set inFocus to false if the wrapping div doesn't contain the now-focusing element\n const currentTarget = blurEvent.currentTarget! as HTMLElement;\n const relatedTarget = blurEvent.relatedTarget! as HTMLElement;\n\n if (currentTarget.contains(relatedTarget) === false) {\n this.inFocus = true;\n }\n };\n\n onTabClick = (selectedTab: EuiTabbedContentTab) => {\n const { onTabClick, selectedTab: externalSelectedTab } = this.args;\n\n if (onTabClick) {\n onTabClick(selectedTab);\n }\n\n // Only track selection state if it's not controlled externally.\n if (!externalSelectedTab) {\n this.selectedTabId = selectedTab.id;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n focusTab = () => {\n if (this.tabsRef) {\n const targetTab: HTMLDivElement | null = this.tabsRef.querySelector(\n `#${this.selectedTabId}`\n );\n\n targetTab!.focus();\n }\n };\n\n initializeFocus = () => {\n if (!this.inFocus && this.autoFocus === 'selected') {\n // Must wait for setState to finish before calling `.focus()`\n // as the focus call triggers a blur on the first tab\n this.inFocus = true;\n\n const focusTab = () => {\n this.focusTab();\n };\n\n scheduleOnce('afterRender', this, focusTab);\n }\n };\n\n <template>\n {{#let (randomId) as |rootId|}}\n <div class={{@className}} ...attributes>\n <EuiTabs\n @expand={{@expand}}\n @display={{@display}}\n @size={{@size}}\n {{on \"focus\" this.initializeFocus}}\n {{didInsert this.setTabsRef}}\n >\n {{#each @tabs as |tab|}}\n <EuiTab\n @id={{tab.id}}\n aria-controls={{rootId}}\n @isSelected={{eq tab.id this.selectedTab.id}}\n @disabled={{tab.disabled}}\n {{on \"click\" (fn this.onTabClick tab)}}\n >\n {{tab.name}}\n </EuiTab>\n {{/each}}\n </EuiTabs>\n {{#let (findBy \"id\" this.selectedTab.id @tabs) as |currentTab|}}\n <div role=\"tabpanel\" id={{rootId}} aria-labelledby={{currentTab.id}}>\n {{#if (has-block \"selectedTabContent\")}}\n {{yield currentTab to=\"selectedTabContent\"}}\n {{else}}\n {{currentTab.content}}\n {{/if}}\n </div>\n {{/let}}\n </div>\n {{/let}}\n </template>\n}\n"],"names":["EuiTabbedContentComponent","Component","g","prototype","tracked","i","void 0","tabsRef","autoFocus","args","constructor","owner","initialSelectedTab","selectedTab","tabs","selectedTabId","id","externalSelectedTab","find","tab","setTabsRef","element","addEventListener","removeFocus","willDestroy","removeEventListener","blurEvent","currentTarget","relatedTarget","contains","inFocus","onTabClick","focusTab","scheduleOnce","targetTab","querySelector","focus","initializeFocus","setComponentTemplate","precompileTemplate","strictMode","scope","randomId","EuiTabs","on","didInsert","EuiTab","eq","fn","findBy"],"mappings":";;;;;;;;;;;;;;;AAoEe,MAAMA,kCAAkCC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CAC9DC,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,SAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACAC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA2B,KAAM;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,SAAA;EAClCC,OAAA;EAEA,IAAIC,SAAYA,GAAA;AACd,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,SAAS,IAAI,SAAA;AAChC;AAEAE,EAAAA,WAAAA,CAAYC,KAAY,EAAEF,IAA0B,EAAE;AACpD,IAAA,KAAK,CAACE,KAAO,EAAAF,IAAA,CAAA;IAEb,MAAM;MAAEG,kBAAkB;MAAEC,WAAW;AAAEC,MAAAA;KAAM,GAAG,IAAI,CAACL,IAAI;AAE3D;IACA,IAAI,CAACI,WAAa,EAAA;AAChB,MAAA,IAAI,CAACE,aAAa,GACfH,kBAAA,IAAsBA,kBAAmB,CAAAI,EAAE,IAAKF,IAAI,CAAC,CAAA,CAAE,EAAEE,EAAA;AAC9D;AACF;EAEA,IAAIH,WAAcA,GAAA;IAChB,MAAM;AAAEA,MAAAA,aAAaI,mBAAmB;AAAEH,MAAAA;KAAM,GAAG,IAAI,CAACL,IAAI;AAE5D,IAAA,OACEQ,mBAAA,IACAH,IAAK,CAAAI,IAAI,CAAEC,GAA6B,IAAAA,GAAA,CAAIH,EAAE,KAAK,IAAI,CAACD,aAAa,CACvE;AACF;EAEAK,UAAA,GAAcC,OAAS,IAAA;IACrB,IAAI,CAACd,OAAO,GAAGc,OAAA;AACf;AACA;IACA,IAAI,CAACd,OAAO,CAACe,gBAAgB,CAAC,UAAY,EAAA,IAAI,CAACC,WAAW,CAAA;GAC1D;AAEFC,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;IAEN,IAAI,IAAI,CAACjB,OAAO,EAAE;AAChB;MACA,IAAI,CAACA,OAAO,CAACkB,mBAAmB,CAAC,UAAY,EAAA,IAAI,CAACF,WAAW,CAAA;AAC/D;AACF;EAEAA,WAAA,GAAeG,SAAW,IAAA;AACxB;AACA,IAAA,MAAMC,aAAA,GAAgBD,SAAU,CAAAC,aAAkB;AAClD,IAAA,MAAMC,aAAA,GAAgBF,SAAU,CAAAE,aAAkB;IAElD,IAAID,aAAc,CAAAE,QAAQ,CAACD,aAAA,CAAA,KAAmB,KAAO,EAAA;MACnD,IAAI,CAACE,OAAO,GAAG,IAAA;AACjB;GACA;EAEFC,UAAA,GAAclB,WAAa,IAAA;IACzB,MAAM;MAAEkB,UAAU;AAAElB,MAAAA,WAAA,EAAaI;KAAqB,GAAG,IAAI,CAACR,IAAI;AAElE,IAAA,IAAIsB,UAAY,EAAA;MACdA,UAAW,CAAAlB,WAAA,CAAA;AACb;AAEA;IACA,IAAI,CAACI,mBAAqB,EAAA;AACxB,MAAA,IAAI,CAACF,aAAa,GAAGF,WAAA,CAAYG,EAAE;MAEnC,MAAMgB,QAAW,GAAAA,MAAA;QACf,IAAI,CAACA,QAAQ,EAAA;OACf;AAEAC,MAAAA,YAAa,CAAA,aAAA,EAAe,IAAI,EAAED,QAAA,CAAA;AACpC;GACA;EAEFA,QAAW,GAAAA,MAAA;IACT,IAAI,IAAI,CAACzB,OAAO,EAAE;AAChB,MAAA,MAAM2B,SAAgC,GAAG,IAAI,CAAC3B,OAAO,CAAC4B,aAAa,CACjE,CAAI,CAAA,EAAA,IAAI,CAACpB,aAAa,EAAE,CAAA;MAG1BmB,SAAA,CAAWE,KAAK,EAAA;AAClB;GACA;EAEFC,eAAkB,GAAAA,MAAA;IAChB,IAAI,CAAC,IAAI,CAACP,OAAO,IAAI,IAAI,CAACtB,SAAS,KAAK,UAAY,EAAA;AAClD;AACA;MACA,IAAI,CAACsB,OAAO,GAAG,IAAA;MAEf,MAAME,QAAW,GAAAA,MAAA;QACf,IAAI,CAACA,QAAQ,EAAA;OACf;AAEAC,MAAAA,YAAa,CAAA,aAAA,EAAe,IAAI,EAAED,QAAA,CAAA;AACpC;GACA;AAEF,EAAA;IAAAM,oBAAA,CAAAC,kBAAA,CAiCA,m8BAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,OAAA;QAAAC,EAAA;QAAAC,SAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,EAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"} | |
diff --git a/dist/components/eui-text-area.js b/dist/components/eui-text-area.js | |
index 60604effedc64b2053a2b3e9c6a1c782e99fd92a..94083d90454c49df0d6329f3935eceffb90af003 100644 | |
--- a/dist/components/eui-text-area.js | |
+++ b/dist/components/eui-text-area.js | |
@@ -1,5 +1,5 @@ | |
import didInsert from '@ember/render-modifiers/modifiers/did-insert'; | |
-import optional from 'ember-composable-helpers/helpers/optional'; | |
+import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional'; | |
import randomId from '../-private/random-id.js'; | |
import argOrDefault from '../helpers/arg-or-default.js'; | |
import classNames from '../helpers/class-names.js'; | |
diff --git a/dist/components/eui-text-area.js.map b/dist/components/eui-text-area.js.map | |
index 229b1e475d252be3c891238a8ced82c47cd422be..8cc2b7aa271cba85a3b3450f69288ade462b2554 100644 | |
--- a/dist/components/eui-text-area.js.map | |
+++ b/dist/components/eui-text-area.js.map | |
@@ -1 +1 @@ | |
-{"version":3,"file":"eui-text-area.js","sources":["../../src/components/eui-text-area.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from 'ember-composable-helpers/helpers/optional';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { resizeMapping } from '../utils/css-mappings/eui-text-area.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiTextAreaSignature {\n Element: HTMLTextAreaElement;\n Args: {\n id?: string;\n value?: string;\n fullWidth?: boolean;\n compressed?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLTextAreaElement | null) => void;\n rows?: number;\n resize?: keyof typeof resizeMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiTextArea: TemplateOnlyComponent<EuiTextAreaSignature> = <template>\n {{#let\n (classNames\n (if @fullWidth \"euiTextArea--fullWidth\")\n (if @compressed \"euiTextArea--compressed\")\n componentName=\"EuiTextArea\"\n resize=(argOrDefault @resize \"vertical\")\n )\n (if @rows @rows (if @compressed 3 6))\n (argOrDefault @id (randomId))\n as |classes definedRows id|\n }}\n <textarea\n id={{id}}\n value={{@value}}\n class={{classes}}\n rows={{definedRows}}\n disabled={{@disabled}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n >\n {{yield}}\n </textarea>\n {{/let}}\n</template>;\n\nexport default EuiTextArea;\n"],"names":["EuiTextArea","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","randomId","validatableControl","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AA8BA,MAAMA,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CAyBjE,wgBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,kBAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
\ No newline at end of file | |
+{"version":3,"file":"eui-text-area.js","sources":["../../src/components/eui-text-area.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\n\nimport randomId from '../-private/random-id.ts';\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport validatableControl from '../modifiers/validatable-control.ts';\n\nimport type { resizeMapping } from '../utils/css-mappings/eui-text-area.ts';\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface EuiTextAreaSignature {\n Element: HTMLTextAreaElement;\n Args: {\n id?: string;\n value?: string;\n fullWidth?: boolean;\n compressed?: boolean;\n disabled?: boolean;\n isInvalid?: boolean;\n inputRef?: (element: HTMLTextAreaElement | null) => void;\n rows?: number;\n resize?: keyof typeof resizeMapping;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst EuiTextArea: TemplateOnlyComponent<EuiTextAreaSignature> = <template>\n {{#let\n (classNames\n (if @fullWidth \"euiTextArea--fullWidth\")\n (if @compressed \"euiTextArea--compressed\")\n componentName=\"EuiTextArea\"\n resize=(argOrDefault @resize \"vertical\")\n )\n (if @rows @rows (if @compressed 3 6))\n (argOrDefault @id (randomId))\n as |classes definedRows id|\n }}\n <textarea\n id={{id}}\n value={{@value}}\n class={{classes}}\n rows={{definedRows}}\n disabled={{@disabled}}\n ...attributes\n {{validatableControl @isInvalid}}\n {{didInsert (optional @inputRef)}}\n >\n {{yield}}\n </textarea>\n {{/let}}\n</template>;\n\nexport default EuiTextArea;\n"],"names":["EuiTextArea","setComponentTemplate","precompileTemplate","strictMode","scope","classNames","argOrDefault","randomId","validatableControl","didInsert","optional","templateOnly"],"mappings":";;;;;;;;;;AA8BA,MAAMA,WAA2D,GAAAC,oBAAA,CAAAC,kBAAA,CAyBjE,wgBAAA,EAAA;EAAAC,UAAA,EAAA,IAAA;AAAAC,EAAAA,KAAA,EAAAA,OAAA;IAAAC,UAAA;IAAAC,YAAA;IAAAC,QAAA;IAAAC,kBAAA;IAAAC,SAAA;AAAAC,IAAAA;AAAA,GAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"} | |
diff --git a/package.json b/package.json | |
index f5cba7ed6bfab263ba57590164d14b832e3ff07b..1f870bae8ede58bf88b13623b7f3bc905152f920 100644 | |
--- a/package.json | |
+++ b/package.json | |
@@ -31,6 +31,7 @@ | |
"default": "./dist/*.js" | |
}, | |
"./addon-main.js": "./addon-main.js", | |
+ "./styles/*": "./dist/styles/*", | |
"./themes/dark.css": "./vendor/eui_theme_dark.min.css", | |
"./themes/light.css": "./vendor/eui_theme_light.min.css" | |
}, | |
@@ -139,7 +140,7 @@ | |
"@html-next/vertical-collection": "4.0.0", | |
"chroma-js": "^2.1.0", | |
"ember-auto-import": "^2.10.0", | |
- "ember-composable-helpers": "^5.0.0", | |
+ "@nullvoxpopuli/ember-composable-helpers": "^5.2.8", | |
"ember-element-helper": "^0.8.6", | |
"ember-event-helpers": "^0.1.1", | |
"ember-keyboard": "^9.0.1", | |
@@ -430,122 +431,7 @@ | |
"./modifiers/validatable-control.js": "./dist/_app_/modifiers/validatable-control.js", | |
"./services/eui-config.js": "./dist/_app_/services/eui-config.js", | |
"./services/eui-i18n.js": "./dist/_app_/services/eui-i18n.js", | |
- "./services/eui-toaster.js": "./dist/_app_/services/eui-toaster.js", | |
- "./utils/accesibility/accessible-click-keys.js": "./dist/_app_/utils/accesibility/accessible-click-keys.js", | |
- "./utils/accesibility/cascading-menu-keys.js": "./dist/_app_/utils/accesibility/cascading-menu-keys.js", | |
- "./utils/accesibility/combo-box-keys.js": "./dist/_app_/utils/accesibility/combo-box-keys.js", | |
- "./utils/accesibility/index.js": "./dist/_app_/utils/accesibility/index.js", | |
- "./utils/breakpoint.js": "./dist/_app_/utils/breakpoint.js", | |
- "./utils/browser/browser.js": "./dist/_app_/utils/browser/browser.js", | |
- "./utils/browser/index.js": "./dist/_app_/utils/browser/index.js", | |
- "./utils/code/utils.js": "./dist/_app_/utils/code/utils.js", | |
- "./utils/color/color_palette.js": "./dist/_app_/utils/color/color_palette.js", | |
- "./utils/color/eui_palettes.js": "./dist/_app_/utils/color/eui_palettes.js", | |
- "./utils/color/index.js": "./dist/_app_/utils/color/index.js", | |
- "./utils/copy-to-clipboard.js": "./dist/_app_/utils/copy-to-clipboard.js", | |
- "./utils/css-mappings/eui-accordion.js": "./dist/_app_/utils/css-mappings/eui-accordion.js", | |
- "./utils/css-mappings/eui-avatar.js": "./dist/_app_/utils/css-mappings/eui-avatar.js", | |
- "./utils/css-mappings/eui-badge-group.js": "./dist/_app_/utils/css-mappings/eui-badge-group.js", | |
- "./utils/css-mappings/eui-badge.js": "./dist/_app_/utils/css-mappings/eui-badge.js", | |
- "./utils/css-mappings/eui-beta-badge.js": "./dist/_app_/utils/css-mappings/eui-beta-badge.js", | |
- "./utils/css-mappings/eui-bottom-bar.js": "./dist/_app_/utils/css-mappings/eui-bottom-bar.js", | |
- "./utils/css-mappings/eui-button-empty.js": "./dist/_app_/utils/css-mappings/eui-button-empty.js", | |
- "./utils/css-mappings/eui-button-group-button.js": "./dist/_app_/utils/css-mappings/eui-button-group-button.js", | |
- "./utils/css-mappings/eui-button-group.js": "./dist/_app_/utils/css-mappings/eui-button-group.js", | |
- "./utils/css-mappings/eui-button-icon.js": "./dist/_app_/utils/css-mappings/eui-button-icon.js", | |
- "./utils/css-mappings/eui-button.js": "./dist/_app_/utils/css-mappings/eui-button.js", | |
- "./utils/css-mappings/eui-call-out.js": "./dist/_app_/utils/css-mappings/eui-call-out.js", | |
- "./utils/css-mappings/eui-card-select.js": "./dist/_app_/utils/css-mappings/eui-card-select.js", | |
- "./utils/css-mappings/eui-card.js": "./dist/_app_/utils/css-mappings/eui-card.js", | |
- "./utils/css-mappings/eui-code-block.js": "./dist/_app_/utils/css-mappings/eui-code-block.js", | |
- "./utils/css-mappings/eui-collapsible-nav-group.js": "./dist/_app_/utils/css-mappings/eui-collapsible-nav-group.js", | |
- "./utils/css-mappings/eui-comment-event.js": "./dist/_app_/utils/css-mappings/eui-comment-event.js", | |
- "./utils/css-mappings/eui-comment-timeline-icon.js": "./dist/_app_/utils/css-mappings/eui-comment-timeline-icon.js", | |
- "./utils/css-mappings/eui-context-menu-item.js": "./dist/_app_/utils/css-mappings/eui-context-menu-item.js", | |
- "./utils/css-mappings/eui-described-form-group.js": "./dist/_app_/utils/css-mappings/eui-described-form-group.js", | |
- "./utils/css-mappings/eui-description-list.js": "./dist/_app_/utils/css-mappings/eui-description-list.js", | |
- "./utils/css-mappings/eui-empty-prompt.js": "./dist/_app_/utils/css-mappings/eui-empty-prompt.js", | |
- "./utils/css-mappings/eui-file-picker.js": "./dist/_app_/utils/css-mappings/eui-file-picker.js", | |
- "./utils/css-mappings/eui-flex-grid.js": "./dist/_app_/utils/css-mappings/eui-flex-grid.js", | |
- "./utils/css-mappings/eui-flex-group.js": "./dist/_app_/utils/css-mappings/eui-flex-group.js", | |
- "./utils/css-mappings/eui-flex-item.js": "./dist/_app_/utils/css-mappings/eui-flex-item.js", | |
- "./utils/css-mappings/eui-flyout.js": "./dist/_app_/utils/css-mappings/eui-flyout.js", | |
- "./utils/css-mappings/eui-form-control-layout-clear-button.js": "./dist/_app_/utils/css-mappings/eui-form-control-layout-clear-button.js", | |
- "./utils/css-mappings/eui-form-row.js": "./dist/_app_/utils/css-mappings/eui-form-row.js", | |
- "./utils/css-mappings/eui-global-toast-list.js": "./dist/_app_/utils/css-mappings/eui-global-toast-list.js", | |
- "./utils/css-mappings/eui-header-links.js": "./dist/_app_/utils/css-mappings/eui-header-links.js", | |
- "./utils/css-mappings/eui-header-section-item.js": "./dist/_app_/utils/css-mappings/eui-header-section-item.js", | |
- "./utils/css-mappings/eui-header-section.js": "./dist/_app_/utils/css-mappings/eui-header-section.js", | |
- "./utils/css-mappings/eui-header.js": "./dist/_app_/utils/css-mappings/eui-header.js", | |
- "./utils/css-mappings/eui-health.js": "./dist/_app_/utils/css-mappings/eui-health.js", | |
- "./utils/css-mappings/eui-horizontal-rule.js": "./dist/_app_/utils/css-mappings/eui-horizontal-rule.js", | |
- "./utils/css-mappings/eui-icon.js": "./dist/_app_/utils/css-mappings/eui-icon.js", | |
- "./utils/css-mappings/eui-image.js": "./dist/_app_/utils/css-mappings/eui-image.js", | |
- "./utils/css-mappings/eui-link.js": "./dist/_app_/utils/css-mappings/eui-link.js", | |
- "./utils/css-mappings/eui-list-group-item.js": "./dist/_app_/utils/css-mappings/eui-list-group-item.js", | |
- "./utils/css-mappings/eui-list-group.js": "./dist/_app_/utils/css-mappings/eui-list-group.js", | |
- "./utils/css-mappings/eui-loading-spinner.js": "./dist/_app_/utils/css-mappings/eui-loading-spinner.js", | |
- "./utils/css-mappings/eui-modal.js": "./dist/_app_/utils/css-mappings/eui-modal.js", | |
- "./utils/css-mappings/eui-notification-badge.js": "./dist/_app_/utils/css-mappings/eui-notification-badge.js", | |
- "./utils/css-mappings/eui-page-body.js": "./dist/_app_/utils/css-mappings/eui-page-body.js", | |
- "./utils/css-mappings/eui-page-content-body.js": "./dist/_app_/utils/css-mappings/eui-page-content-body.js", | |
- "./utils/css-mappings/eui-page-content.js": "./dist/_app_/utils/css-mappings/eui-page-content.js", | |
- "./utils/css-mappings/eui-page-header.js": "./dist/_app_/utils/css-mappings/eui-page-header.js", | |
- "./utils/css-mappings/eui-page-side-bar.js": "./dist/_app_/utils/css-mappings/eui-page-side-bar.js", | |
- "./utils/css-mappings/eui-page.js": "./dist/_app_/utils/css-mappings/eui-page.js", | |
- "./utils/css-mappings/eui-panel.js": "./dist/_app_/utils/css-mappings/eui-panel.js", | |
- "./utils/css-mappings/eui-popover-footer.js": "./dist/_app_/utils/css-mappings/eui-popover-footer.js", | |
- "./utils/css-mappings/eui-popover-title.js": "./dist/_app_/utils/css-mappings/eui-popover-title.js", | |
- "./utils/css-mappings/eui-popover.js": "./dist/_app_/utils/css-mappings/eui-popover.js", | |
- "./utils/css-mappings/eui-progress-data.js": "./dist/_app_/utils/css-mappings/eui-progress-data.js", | |
- "./utils/css-mappings/eui-progress.js": "./dist/_app_/utils/css-mappings/eui-progress.js", | |
- "./utils/css-mappings/eui-range-highlight.js": "./dist/_app_/utils/css-mappings/eui-range-highlight.js", | |
- "./utils/css-mappings/eui-range-input.js": "./dist/_app_/utils/css-mappings/eui-range-input.js", | |
- "./utils/css-mappings/eui-range-levels.js": "./dist/_app_/utils/css-mappings/eui-range-levels.js", | |
- "./utils/css-mappings/eui-selectable-list-item.js": "./dist/_app_/utils/css-mappings/eui-selectable-list-item.js", | |
- "./utils/css-mappings/eui-spacer.js": "./dist/_app_/utils/css-mappings/eui-spacer.js", | |
- "./utils/css-mappings/eui-stat.js": "./dist/_app_/utils/css-mappings/eui-stat.js", | |
- "./utils/css-mappings/eui-step-number.js": "./dist/_app_/utils/css-mappings/eui-step-number.js", | |
- "./utils/css-mappings/eui-tabs.js": "./dist/_app_/utils/css-mappings/eui-tabs.js", | |
- "./utils/css-mappings/eui-text-align.js": "./dist/_app_/utils/css-mappings/eui-text-align.js", | |
- "./utils/css-mappings/eui-text-area.js": "./dist/_app_/utils/css-mappings/eui-text-area.js", | |
- "./utils/css-mappings/eui-text-color.js": "./dist/_app_/utils/css-mappings/eui-text-color.js", | |
- "./utils/css-mappings/eui-text.js": "./dist/_app_/utils/css-mappings/eui-text.js", | |
- "./utils/css-mappings/eui-title.js": "./dist/_app_/utils/css-mappings/eui-title.js", | |
- "./utils/css-mappings/eui-toast.js": "./dist/_app_/utils/css-mappings/eui-toast.js", | |
- "./utils/css-mappings/eui-tool-tip.js": "./dist/_app_/utils/css-mappings/eui-tool-tip.js", | |
- "./utils/css-mappings/index.js": "./dist/_app_/utils/css-mappings/index.js", | |
- "./utils/detect-element-resize.js": "./dist/_app_/utils/detect-element-resize.js", | |
- "./utils/index.js": "./dist/_app_/utils/index.js", | |
- "./utils/keys.js": "./dist/_app_/utils/keys.js", | |
- "./utils/markdown/markdown-actions.js": "./dist/_app_/utils/markdown/markdown-actions.js", | |
- "./utils/markdown/markdown-modes.js": "./dist/_app_/utils/markdown/markdown-modes.js", | |
- "./utils/markdown/markdown-types.js": "./dist/_app_/utils/markdown/markdown-types.js", | |
- "./utils/markdown/plugins/markdown-add-components/index.js": "./dist/_app_/utils/markdown/plugins/markdown-add-components/index.js", | |
- "./utils/markdown/plugins/markdown-add-components/processor.js": "./dist/_app_/utils/markdown/plugins/markdown-add-components/processor.js", | |
- "./utils/markdown/plugins/markdown-checkbox/index.js": "./dist/_app_/utils/markdown/plugins/markdown-checkbox/index.js", | |
- "./utils/markdown/plugins/markdown-checkbox/parser.js": "./dist/_app_/utils/markdown/plugins/markdown-checkbox/parser.js", | |
- "./utils/markdown/plugins/markdown-default-plugins/index.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/index.js", | |
- "./utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/parsing-plugins.js", | |
- "./utils/markdown/plugins/markdown-default-plugins/plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/plugins.js", | |
- "./utils/markdown/plugins/markdown-default-plugins/processing-plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/processing-plugins.js", | |
- "./utils/markdown/plugins/markdown-default-plugins/ui-plugins.js": "./dist/_app_/utils/markdown/plugins/markdown-default-plugins/ui-plugins.js", | |
- "./utils/markdown/plugins/markdown-tooltip/index.js": "./dist/_app_/utils/markdown/plugins/markdown-tooltip/index.js", | |
- "./utils/markdown/plugins/markdown-tooltip/parser.js": "./dist/_app_/utils/markdown/plugins/markdown-tooltip/parser.js", | |
- "./utils/markdown/plugins/markdown-tooltip/plugin.js": "./dist/_app_/utils/markdown/plugins/markdown-tooltip/plugin.js", | |
- "./utils/markdown/plugins/to-dom.js": "./dist/_app_/utils/markdown/plugins/to-dom.js", | |
- "./utils/markdown/remark/remark-prismjs.js": "./dist/_app_/utils/markdown/remark/remark-prismjs.js", | |
- "./utils/maybe-unwrap-proxy.js": "./dist/_app_/utils/maybe-unwrap-proxy.js", | |
- "./utils/number/index.js": "./dist/_app_/utils/number/index.js", | |
- "./utils/number/number.js": "./dist/_app_/utils/number/number.js", | |
- "./utils/popover/index.js": "./dist/_app_/utils/popover/index.js", | |
- "./utils/popover/types.js": "./dist/_app_/utils/popover/types.js", | |
- "./utils/predicate/common_predicates.js": "./dist/_app_/utils/predicate/common_predicates.js", | |
- "./utils/predicate/index.js": "./dist/_app_/utils/predicate/index.js", | |
- "./utils/predicate/lodash_predicates.js": "./dist/_app_/utils/predicate/lodash_predicates.js", | |
- "./utils/range/index.js": "./dist/_app_/utils/range/index.js", | |
- "./utils/timer.js": "./dist/_app_/utils/timer.js", | |
- "./utils/transition.js": "./dist/_app_/utils/transition.js" | |
+ "./services/eui-toaster.js": "./dist/_app_/services/eui-toaster.js" | |
}, | |
"public-assets": { | |
"./vendor/eui_theme_dark.min.css": "/@ember-eui/core/themes/dark.css", | |
@@ -570,3 +456,4 @@ | |
"start:types": "glint --build --watch" | |
} | |
} | |
+ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"pnpm": { | |
"patchedDependencies": { | |
"@ember-eui/core": "patches/@ember-eui__core.patch" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment