@nanoporetech-digital/components 3.13.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/dist/cjs/{algolia-data-533e3a95.js → algolia-data-ed53eaa8.js} +2 -2
- package/dist/cjs/{algolia-data-533e3a95.js.map → algolia-data-ed53eaa8.js.map} +1 -1
- package/dist/cjs/{component-store-5ad4de07.js → component-store-74d25f63.js} +2 -2
- package/dist/cjs/{component-store-5ad4de07.js.map → component-store-74d25f63.js.map} +1 -1
- package/dist/cjs/{form-control-80c69d1d.js → form-control-2e900f54.js} +2 -2
- package/dist/cjs/{form-control-80c69d1d.js.map → form-control-2e900f54.js.map} +1 -1
- package/dist/cjs/{index-46286eea.js → index-71f899a7.js} +85 -42
- package/dist/cjs/index-71f899a7.js.map +1 -0
- package/dist/cjs/{index-b13f69e7.js → index-99649bef.js} +2 -2
- package/dist/cjs/{index-b13f69e7.js.map → index-99649bef.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-input.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +3 -3
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +3 -3
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/nano-demo.cjs.entry.js +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +2 -2
- package/dist/cjs/nano-dialog.cjs.entry.js +3 -3
- package/dist/cjs/nano-drawer.cjs.entry.js +2 -2
- package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +2 -2
- package/dist/cjs/nano-file-upload.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +5 -5
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +61 -75
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +1 -1
- package/dist/cjs/nano-grid_3.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +2 -2
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +2 -2
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +2 -2
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +282 -0
- package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-progress-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-progress-bar_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +1 -1
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +4 -4
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +11 -14
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +4 -4
- package/dist/cjs/nano-tab.cjs.entry.js +2 -2
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-60c06885.js → nano-table-737365b7.js} +4 -4
- package/dist/cjs/{nano-table-60c06885.js.map → nano-table-737365b7.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +3 -3
- package/dist/cjs/{scroll-a197d9c4.js → scroll-6a9bedb4.js} +15 -8
- package/dist/cjs/scroll-6a9bedb4.js.map +1 -0
- package/dist/cjs/{table.worker-f902766e.js → table.worker-c3b11144.js} +4 -4
- package/dist/cjs/table.worker-c3b11144.js.map +1 -0
- package/dist/cjs/{transitions-5cd8f697.js → transitions-1205f12b.js} +3 -3
- package/dist/cjs/transitions-1205f12b.js.map +1 -0
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/checkbox/checkbox.css +3 -3
- package/dist/collection/components/drawer/drawer.css +1 -1
- package/dist/collection/components/global-nav/global-nav-user-profile.js +1 -1
- package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +60 -73
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +4 -3
- package/dist/collection/components/hero/hero.css +2 -2
- package/dist/collection/components/icon/utils.js +1 -1
- package/dist/collection/components/icon/utils.js.map +1 -1
- package/dist/collection/components/img/img.css +1 -1
- package/dist/collection/components/input/input.css +3 -3
- package/dist/collection/components/nav-item/nav-item.css +2 -0
- package/dist/collection/components/overflow-nav/overflow-nav.css +223 -0
- package/dist/collection/components/overflow-nav/overflow-nav.js +441 -0
- package/dist/collection/components/overflow-nav/overflow-nav.js.map +1 -0
- package/dist/collection/components/progress-bar/progress-bar.css +2 -2
- package/dist/collection/components/range/range.css +1 -1
- package/dist/collection/components/resize-observe/resize-observe.js +5 -5
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +3 -3
- package/dist/collection/components/slides/slides.css +5 -1
- package/dist/collection/components/slides/slides.js +9 -12
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/spinner/spinner.css +2 -2
- package/dist/collection/components/tabs/tab.css +3 -3
- package/dist/collection/utils/scroll.js +14 -7
- package/dist/collection/utils/scroll.js.map +1 -1
- package/dist/collection/utils/transitions.js +2 -2
- package/dist/collection/utils/transitions.js.map +1 -1
- package/dist/components/global-nav-user-profile.js +1 -1
- package/dist/components/global-nav-user-profile.js.map +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/icon.js.map +1 -1
- package/dist/components/img.js +1 -1
- package/dist/components/img.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/nano-drawer.js.map +1 -1
- package/dist/components/nano-global-nav.js +59 -74
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-hero.js +1 -1
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-overflow-nav.d.ts +11 -0
- package/dist/components/nano-overflow-nav.js +317 -0
- package/dist/components/nano-overflow-nav.js.map +1 -0
- package/dist/components/nano-range.js.map +1 -1
- package/dist/components/nano-slides.js +10 -13
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-tab.js +1 -1
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nav-item.js +1 -1
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/resize-observe.js +3 -3
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/scroll.js +14 -7
- package/dist/components/scroll.js.map +1 -1
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/transitions.js +2 -2
- package/dist/components/transitions.js.map +1 -1
- package/dist/esm/{algolia-data-e5e86f12.js → algolia-data-ef2829e0.js} +2 -2
- package/dist/esm/{algolia-data-e5e86f12.js.map → algolia-data-ef2829e0.js.map} +1 -1
- package/dist/esm/{component-store-2044c2c2.js → component-store-244a8431.js} +2 -2
- package/dist/esm/{component-store-2044c2c2.js.map → component-store-244a8431.js.map} +1 -1
- package/dist/esm/{form-control-4f3a88a1.js → form-control-269ba84f.js} +2 -2
- package/dist/esm/{form-control-4f3a88a1.js.map → form-control-269ba84f.js.map} +1 -1
- package/dist/esm/{index-728dda31.js → index-5d0f4704.js} +2 -2
- package/dist/esm/{index-728dda31.js.map → index-5d0f4704.js.map} +1 -1
- package/dist/esm/{index-52b0408e.js → index-dad5627b.js} +85 -42
- package/dist/esm/index-dad5627b.js.map +1 -0
- package/dist/esm/loader.js +4 -4
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/nano-accordion.entry.js +1 -1
- package/dist/esm/nano-alert.entry.js +2 -2
- package/dist/esm/nano-algolia-filter.entry.js +3 -3
- package/dist/esm/nano-algolia-input.entry.js +3 -3
- package/dist/esm/nano-algolia-pagination.entry.js +2 -2
- package/dist/esm/nano-algolia-results.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +3 -3
- package/dist/esm/nano-aspect-ratio.entry.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +1 -1
- package/dist/esm/nano-checkbox.entry.js +1 -1
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +4 -4
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +1 -1
- package/dist/esm/nano-date-input.entry.js +1 -1
- package/dist/esm/nano-date-picker.entry.js +1 -1
- package/dist/esm/nano-demo.entry.js +1 -1
- package/dist/esm/nano-details.entry.js +2 -2
- package/dist/esm/nano-dialog.entry.js +3 -3
- package/dist/esm/nano-drawer.entry.js +2 -2
- package/dist/esm/nano-drawer.entry.js.map +1 -1
- package/dist/esm/nano-dropdown.entry.js +1 -1
- package/dist/esm/nano-field-validator.entry.js +2 -2
- package/dist/esm/nano-file-upload.entry.js +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +5 -5
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +61 -75
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +1 -1
- package/dist/esm/nano-grid_3.entry.js +2 -2
- package/dist/esm/nano-grid_3.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +2 -2
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button.entry.js +1 -1
- package/dist/esm/nano-icon.entry.js +2 -2
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +2 -2
- package/dist/esm/nano-menu-drawer.entry.js +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +278 -0
- package/dist/esm/nano-overflow-nav.entry.js.map +1 -0
- package/dist/esm/nano-progress-bar_2.entry.js +1 -1
- package/dist/esm/nano-progress-bar_2.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +1 -1
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-rating.entry.js +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +4 -4
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/nano-slides.entry.js +11 -14
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-spinner.entry.js +1 -1
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +1 -1
- package/dist/esm/nano-sticker.entry.js +1 -1
- package/dist/esm/nano-tab-content.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +4 -4
- package/dist/esm/nano-tab.entry.js +2 -2
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-e64af51e.js → nano-table-75d755ae.js} +4 -4
- package/dist/esm/{nano-table-e64af51e.js.map → nano-table-75d755ae.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +3 -3
- package/dist/esm/{scroll-e5825d8d.js → scroll-952d292a.js} +15 -8
- package/dist/esm/scroll-952d292a.js.map +1 -0
- package/dist/esm/{table.worker-2f887b5f.js → table.worker-d60d6df4.js} +4 -4
- package/dist/esm/table.worker-d60d6df4.js.map +1 -0
- package/dist/esm/{transitions-71cca3ed.js → transitions-686c5fec.js} +3 -3
- package/dist/esm/transitions-686c5fec.js.map +1 -0
- package/dist/nano-components/nano-components.css +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/{p-f25d2e90.entry.js → p-053eb1df.entry.js} +2 -2
- package/dist/nano-components/{p-ad3ddbc8.entry.js → p-068bdd89.entry.js} +2 -2
- package/dist/nano-components/{p-e4505f00.entry.js → p-0d1ca590.entry.js} +2 -2
- package/dist/nano-components/{p-ece694af.entry.js → p-104b7e3a.entry.js} +2 -2
- package/dist/nano-components/p-104b7e3a.entry.js.map +1 -0
- package/dist/nano-components/p-107d4549.entry.js +5 -0
- package/dist/nano-components/p-107d4549.entry.js.map +1 -0
- package/dist/nano-components/p-15217442.entry.js +5 -0
- package/dist/nano-components/p-15217442.entry.js.map +1 -0
- package/dist/nano-components/p-1b7bad31.entry.js +5 -0
- package/dist/nano-components/{p-93bece01.entry.js → p-1c6c94cb.entry.js} +2 -2
- package/dist/nano-components/{p-a9beb006.entry.js → p-207a1fbc.entry.js} +2 -2
- package/dist/nano-components/{p-d32dafd9.entry.js → p-239d343a.entry.js} +2 -2
- package/dist/nano-components/{p-d32dafd9.entry.js.map → p-239d343a.entry.js.map} +1 -1
- package/dist/nano-components/{p-dab8526f.entry.js → p-288dbe6b.entry.js} +2 -2
- package/dist/nano-components/{p-7b21ec0b.entry.js → p-30d55046.entry.js} +2 -2
- package/dist/nano-components/{p-add3ac22.js → p-42e7f253.js} +2 -2
- package/dist/nano-components/{p-378fe272.entry.js → p-57085052.entry.js} +2 -2
- package/dist/nano-components/{p-8f888280.entry.js → p-578f5e8d.entry.js} +2 -2
- package/dist/nano-components/{p-17eebe94.entry.js → p-583d8d70.entry.js} +2 -2
- package/dist/nano-components/p-583d8d70.entry.js.map +1 -0
- package/dist/nano-components/{p-6bb4545b.entry.js → p-5984ae16.entry.js} +2 -2
- package/dist/nano-components/{p-76d8a8a8.js → p-5ac74848.js} +2 -2
- package/dist/nano-components/{p-ebb61a70.entry.js → p-5d466a58.entry.js} +2 -2
- package/dist/nano-components/p-60a8c896.js +5 -0
- package/dist/nano-components/{p-e113074e.entry.js → p-68928c59.entry.js} +2 -2
- package/dist/nano-components/p-68928c59.entry.js.map +1 -0
- package/dist/nano-components/{p-3667832c.entry.js → p-7304107c.entry.js} +2 -2
- package/dist/nano-components/{p-16e45583.entry.js → p-76a650b1.entry.js} +2 -2
- package/dist/nano-components/{p-09751447.entry.js → p-7d6065c6.entry.js} +2 -2
- package/dist/nano-components/{p-07b6af21.entry.js → p-935aef3d.entry.js} +2 -2
- package/dist/nano-components/{p-8065d85b.entry.js → p-93cfbdb6.entry.js} +2 -2
- package/dist/nano-components/p-9dfe2c55.entry.js +5 -0
- package/dist/nano-components/{p-f486c940.entry.js.map → p-9dfe2c55.entry.js.map} +1 -1
- package/dist/nano-components/{p-b65e0e63.js → p-9ebbb814.js} +2 -2
- package/dist/nano-components/{p-a26a7de3.entry.js → p-a1c0afb6.entry.js} +2 -2
- package/dist/nano-components/{p-76ab079e.entry.js → p-a5a560e7.entry.js} +2 -2
- package/dist/nano-components/{p-9d1432be.js → p-a6ff5ca6.js} +2 -2
- package/dist/nano-components/{p-4bbb04d3.entry.js → p-a761ac89.entry.js} +2 -2
- package/dist/nano-components/p-a761ac89.entry.js.map +1 -0
- package/dist/nano-components/{p-62e3646b.entry.js → p-ac0ac58f.entry.js} +2 -2
- package/dist/nano-components/p-b2655717.entry.js +5 -0
- package/dist/nano-components/p-b2655717.entry.js.map +1 -0
- package/dist/nano-components/{p-63f1e229.entry.js → p-b6306aff.entry.js} +2 -2
- package/dist/nano-components/p-b6306aff.entry.js.map +1 -0
- package/dist/nano-components/{p-3e7153c8.entry.js → p-cba50c3e.entry.js} +2 -2
- package/dist/nano-components/{p-ce07df57.entry.js → p-cd2f5e97.entry.js} +2 -2
- package/dist/nano-components/p-d0e15e46.entry.js +5 -0
- package/dist/nano-components/p-d0e15e46.entry.js.map +1 -0
- package/dist/nano-components/p-d4cebdef.entry.js +5 -0
- package/dist/nano-components/p-d4cebdef.entry.js.map +1 -0
- package/dist/nano-components/{p-dc88e52b.entry.js → p-d792f692.entry.js} +2 -2
- package/dist/nano-components/p-d792f692.entry.js.map +1 -0
- package/dist/nano-components/p-d7c34990.js +5 -0
- package/dist/nano-components/{p-45b7682a.js.map → p-d7c34990.js.map} +1 -1
- package/dist/nano-components/p-d98c6a62.js +5 -0
- package/dist/nano-components/{p-3d27d563.entry.js → p-db370094.entry.js} +4 -4
- package/dist/nano-components/{p-3d27d563.entry.js.map → p-db370094.entry.js.map} +1 -1
- package/dist/nano-components/{p-47866646.entry.js → p-e41baa11.entry.js} +2 -2
- package/dist/nano-components/{p-9be2cba5.entry.js → p-e43f76c8.entry.js} +2 -2
- package/dist/nano-components/{p-7f545755.entry.js → p-eab09335.entry.js} +2 -2
- package/dist/nano-components/p-f471a392.entry.js +5 -0
- package/dist/nano-components/p-f471a392.entry.js.map +1 -0
- package/dist/nano-components/p-f6a8467a.js +6 -0
- package/dist/nano-components/p-f6a8467a.js.map +1 -0
- package/dist/nano-components/p-f6de2d5d.js +5 -0
- package/dist/nano-components/p-f6de2d5d.js.map +1 -0
- package/dist/nano-components/{p-a20d2028.entry.js → p-f93bd976.entry.js} +2 -2
- package/dist/nano-components/{p-36a2f1c0.entry.js → p-fe7a0158.entry.js} +2 -2
- package/dist/nano-components/{p-6a5ae656.entry.js → p-fecb72b9.entry.js} +2 -2
- package/dist/themes/nanopore.cn.css +1 -0
- package/dist/themes/nanopore.cn.css.map +1 -0
- package/dist/types/components/global-nav/global-nav.d.ts +2 -1
- package/dist/types/components/overflow-nav/overflow-nav.d.ts +78 -0
- package/dist/types/components/resize-observe/resize-observe.d.ts +4 -2
- package/dist/types/components.d.ts +90 -1
- package/dist/types/utils/transitions.d.ts +1 -1
- package/docs-json.json +299 -23
- package/docs-vscode.json +26 -1
- package/hydrate/index.js +431 -116
- package/package.json +3 -3
- package/dist/cjs/index-46286eea.js.map +0 -1
- package/dist/cjs/scroll-a197d9c4.js.map +0 -1
- package/dist/cjs/table.worker-f902766e.js.map +0 -1
- package/dist/cjs/transitions-5cd8f697.js.map +0 -1
- package/dist/esm/index-52b0408e.js.map +0 -1
- package/dist/esm/scroll-e5825d8d.js.map +0 -1
- package/dist/esm/table.worker-2f887b5f.js.map +0 -1
- package/dist/esm/transitions-71cca3ed.js.map +0 -1
- package/dist/nano-components/p-0e2f0040.entry.js +0 -5
- package/dist/nano-components/p-0e2f0040.entry.js.map +0 -1
- package/dist/nano-components/p-167b9165.js +0 -5
- package/dist/nano-components/p-167b9165.js.map +0 -1
- package/dist/nano-components/p-17eebe94.entry.js.map +0 -1
- package/dist/nano-components/p-1aff5304.entry.js +0 -5
- package/dist/nano-components/p-1aff5304.entry.js.map +0 -1
- package/dist/nano-components/p-45b7682a.js +0 -5
- package/dist/nano-components/p-4bbb04d3.entry.js.map +0 -1
- package/dist/nano-components/p-63f1e229.entry.js.map +0 -1
- package/dist/nano-components/p-6ef53fa1.js +0 -6
- package/dist/nano-components/p-6ef53fa1.js.map +0 -1
- package/dist/nano-components/p-7733f1f8.entry.js +0 -5
- package/dist/nano-components/p-7733f1f8.entry.js.map +0 -1
- package/dist/nano-components/p-80ddfa30.entry.js +0 -5
- package/dist/nano-components/p-80ecc273.entry.js +0 -5
- package/dist/nano-components/p-80ecc273.entry.js.map +0 -1
- package/dist/nano-components/p-a145fbc1.js +0 -5
- package/dist/nano-components/p-b4b55f64.entry.js +0 -5
- package/dist/nano-components/p-b4b55f64.entry.js.map +0 -1
- package/dist/nano-components/p-d518b939.js +0 -5
- package/dist/nano-components/p-dc88e52b.entry.js.map +0 -1
- package/dist/nano-components/p-e113074e.entry.js.map +0 -1
- package/dist/nano-components/p-ece694af.entry.js.map +0 -1
- package/dist/nano-components/p-f486c940.entry.js +0 -5
- /package/dist/nano-components/{p-f25d2e90.entry.js.map → p-053eb1df.entry.js.map} +0 -0
- /package/dist/nano-components/{p-ad3ddbc8.entry.js.map → p-068bdd89.entry.js.map} +0 -0
- /package/dist/nano-components/{p-e4505f00.entry.js.map → p-0d1ca590.entry.js.map} +0 -0
- /package/dist/nano-components/{p-80ddfa30.entry.js.map → p-1b7bad31.entry.js.map} +0 -0
- /package/dist/nano-components/{p-93bece01.entry.js.map → p-1c6c94cb.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a9beb006.entry.js.map → p-207a1fbc.entry.js.map} +0 -0
- /package/dist/nano-components/{p-dab8526f.entry.js.map → p-288dbe6b.entry.js.map} +0 -0
- /package/dist/nano-components/{p-7b21ec0b.entry.js.map → p-30d55046.entry.js.map} +0 -0
- /package/dist/nano-components/{p-add3ac22.js.map → p-42e7f253.js.map} +0 -0
- /package/dist/nano-components/{p-378fe272.entry.js.map → p-57085052.entry.js.map} +0 -0
- /package/dist/nano-components/{p-8f888280.entry.js.map → p-578f5e8d.entry.js.map} +0 -0
- /package/dist/nano-components/{p-6bb4545b.entry.js.map → p-5984ae16.entry.js.map} +0 -0
- /package/dist/nano-components/{p-76d8a8a8.js.map → p-5ac74848.js.map} +0 -0
- /package/dist/nano-components/{p-ebb61a70.entry.js.map → p-5d466a58.entry.js.map} +0 -0
- /package/dist/nano-components/{p-d518b939.js.map → p-60a8c896.js.map} +0 -0
- /package/dist/nano-components/{p-3667832c.entry.js.map → p-7304107c.entry.js.map} +0 -0
- /package/dist/nano-components/{p-16e45583.entry.js.map → p-76a650b1.entry.js.map} +0 -0
- /package/dist/nano-components/{p-09751447.entry.js.map → p-7d6065c6.entry.js.map} +0 -0
- /package/dist/nano-components/{p-07b6af21.entry.js.map → p-935aef3d.entry.js.map} +0 -0
- /package/dist/nano-components/{p-8065d85b.entry.js.map → p-93cfbdb6.entry.js.map} +0 -0
- /package/dist/nano-components/{p-b65e0e63.js.map → p-9ebbb814.js.map} +0 -0
- /package/dist/nano-components/{p-a26a7de3.entry.js.map → p-a1c0afb6.entry.js.map} +0 -0
- /package/dist/nano-components/{p-76ab079e.entry.js.map → p-a5a560e7.entry.js.map} +0 -0
- /package/dist/nano-components/{p-9d1432be.js.map → p-a6ff5ca6.js.map} +0 -0
- /package/dist/nano-components/{p-62e3646b.entry.js.map → p-ac0ac58f.entry.js.map} +0 -0
- /package/dist/nano-components/{p-3e7153c8.entry.js.map → p-cba50c3e.entry.js.map} +0 -0
- /package/dist/nano-components/{p-ce07df57.entry.js.map → p-cd2f5e97.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a145fbc1.js.map → p-d98c6a62.js.map} +0 -0
- /package/dist/nano-components/{p-47866646.entry.js.map → p-e41baa11.entry.js.map} +0 -0
- /package/dist/nano-components/{p-9be2cba5.entry.js.map → p-e43f76c8.entry.js.map} +0 -0
- /package/dist/nano-components/{p-7f545755.entry.js.map → p-eab09335.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a20d2028.entry.js.map → p-f93bd976.entry.js.map} +0 -0
- /package/dist/nano-components/{p-36a2f1c0.entry.js.map → p-fe7a0158.entry.js.map} +0 -0
- /package/dist/nano-components/{p-6a5ae656.entry.js.map → p-fecb72b9.entry.js.map} +0 -0
@@ -0,0 +1,441 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import { Host, h, } from '@stencil/core';
|
5
|
+
import { getDirectChildren, getOffset } from '../../utils/dom';
|
6
|
+
import { debounce } from '../../utils/throttle';
|
7
|
+
/**
|
8
|
+
* Primarily used to display navigational items that may not fit on smaller screens.
|
9
|
+
*
|
10
|
+
* - Accepts any collection of elements
|
11
|
+
* - Gives visual cues of 'more' with auto display fade effect and scroll buttons
|
12
|
+
* - Auto scrolls to the active item onload
|
13
|
+
*
|
14
|
+
* @slot - Default slot to place items.
|
15
|
+
*
|
16
|
+
* @part base - root, wrapper element
|
17
|
+
* @part scroller - the scrolling element
|
18
|
+
* @part items - the item wrapper element
|
19
|
+
* @part indicator - the animated, indicator element
|
20
|
+
* @part scroll-button - The buttons shown at either side of the scrolling area
|
21
|
+
* @part scroll-button-prev - The button shown at the start of the scrolling area
|
22
|
+
* @part scroll-button-next - The button shown at the end of the scrolling area
|
23
|
+
*/
|
24
|
+
export class OverflowNav {
|
25
|
+
// private state
|
26
|
+
constructor() {
|
27
|
+
this.updateScrollControls = () => {
|
28
|
+
this.hasScrollControls =
|
29
|
+
this.nav[this.scrollProp] > this.nav[this.clientDimProp] &&
|
30
|
+
this.nav[this.scrollProp] > this.itemContainer[this.clientDimProp];
|
31
|
+
this.handleScroll();
|
32
|
+
};
|
33
|
+
this.handleScroll = () => {
|
34
|
+
if (!this.hasScrollControls) {
|
35
|
+
this.hideControlStart = this.hideControlEnd = true;
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
const finishEnd = this.isRtl
|
39
|
+
? this.nav[this.scrollOffset] === 0
|
40
|
+
: Math.abs(this.nav[this.clientDimProp] -
|
41
|
+
(this.nav[this.scrollProp] - this.nav[this.scrollOffset])) < 2;
|
42
|
+
const finishStart = this.isRtl
|
43
|
+
? Math.abs(this.nav[this.scrollProp] +
|
44
|
+
this.nav[this.scrollOffset] -
|
45
|
+
this.nav[this.clientDimProp]) < 2
|
46
|
+
: this.nav[this.scrollOffset] === 0;
|
47
|
+
if (finishStart) {
|
48
|
+
this.hideControlStart = true;
|
49
|
+
this.hideControlEnd = false;
|
50
|
+
}
|
51
|
+
else if (finishEnd) {
|
52
|
+
this.hideControlStart = false;
|
53
|
+
this.hideControlEnd = true;
|
54
|
+
}
|
55
|
+
else {
|
56
|
+
this.hideControlEnd = false;
|
57
|
+
this.hideControlStart = false;
|
58
|
+
}
|
59
|
+
};
|
60
|
+
this.handleBtnClick = (goEnd = false) => {
|
61
|
+
const navDim = this.navDim;
|
62
|
+
let scrollAmt;
|
63
|
+
if (goEnd)
|
64
|
+
scrollAmt = this.nav[this.scrollOffset] + navDim - 20;
|
65
|
+
else
|
66
|
+
scrollAmt = this.nav[this.scrollOffset] - navDim + 20;
|
67
|
+
try {
|
68
|
+
this.nav.scroll({
|
69
|
+
left: this.orientation === 'horizontal' ? scrollAmt : 0,
|
70
|
+
top: this.orientation === 'vertical' ? scrollAmt : 0,
|
71
|
+
behavior: 'smooth',
|
72
|
+
});
|
73
|
+
}
|
74
|
+
catch (e) {
|
75
|
+
this.nav[this.scrollOffset] = scrollAmt;
|
76
|
+
}
|
77
|
+
};
|
78
|
+
this.slotChangeHandler = () => {
|
79
|
+
if (this.allActiveItems.length < 2)
|
80
|
+
return;
|
81
|
+
const item = this.allActiveItems.find((el) => this.isActiveHandler(el));
|
82
|
+
if (item)
|
83
|
+
this.activeItem = item;
|
84
|
+
this.recalculatePositions();
|
85
|
+
};
|
86
|
+
this.handleClick = (event) => {
|
87
|
+
if (this.allActiveItems.length < 2)
|
88
|
+
return;
|
89
|
+
const foundItem = event
|
90
|
+
.composedPath()
|
91
|
+
.find((e) => this.allActiveItems.includes(e));
|
92
|
+
if (foundItem)
|
93
|
+
this.activeItem = foundItem;
|
94
|
+
};
|
95
|
+
this.handleKeyDown = (event) => {
|
96
|
+
// Activate a tab
|
97
|
+
if (['Enter', ' '].includes(event.key)) {
|
98
|
+
const foundItem = event
|
99
|
+
.composedPath()
|
100
|
+
.find((e) => this.allActiveItems.includes(e));
|
101
|
+
if (foundItem)
|
102
|
+
this.activeItem = foundItem;
|
103
|
+
}
|
104
|
+
};
|
105
|
+
this.recalculatePositions = (init) => {
|
106
|
+
this.updateScrollControls();
|
107
|
+
this.syncActiveItemIndicator(init);
|
108
|
+
setTimeout(() => this.scrollToActiveItem(init), 300);
|
109
|
+
};
|
110
|
+
this.scrollControls = true;
|
111
|
+
this.orientation = 'horizontal';
|
112
|
+
this.activeHandler = (item) => item.classList.add('active');
|
113
|
+
this.inActiveHandler = (item) => item.classList.remove('active');
|
114
|
+
this.isActiveHandler = (item) => item.classList.contains('active');
|
115
|
+
this.hasScrollControls = false;
|
116
|
+
this.hideControlEnd = true;
|
117
|
+
this.hideControlStart = true;
|
118
|
+
this.recalculatePositions = debounce(this.recalculatePositions, 50);
|
119
|
+
}
|
120
|
+
get scrollProp() {
|
121
|
+
return this.orientation === 'horizontal' ? 'scrollWidth' : 'scrollHeight';
|
122
|
+
}
|
123
|
+
get clientDimProp() {
|
124
|
+
return this.orientation === 'horizontal' ? 'clientWidth' : 'clientHeight';
|
125
|
+
}
|
126
|
+
get scrollOffset() {
|
127
|
+
return this.orientation === 'horizontal' ? 'scrollLeft' : 'scrollTop';
|
128
|
+
}
|
129
|
+
watchScrollControls() {
|
130
|
+
if (this.hasScrollControls)
|
131
|
+
this.handleScroll();
|
132
|
+
else
|
133
|
+
this.hideControlStart = this.hideControlEnd = true;
|
134
|
+
}
|
135
|
+
hideEndBtn() {
|
136
|
+
if (!this.endBtn)
|
137
|
+
return;
|
138
|
+
this.activateBtn(this.endBtn, !this.hideControlEnd);
|
139
|
+
}
|
140
|
+
hideStartBtn() {
|
141
|
+
if (!this.startBtn)
|
142
|
+
return;
|
143
|
+
this.activateBtn(this.startBtn, !this.hideControlStart);
|
144
|
+
}
|
145
|
+
// private logic
|
146
|
+
activateBtn(btn, activate = true) {
|
147
|
+
if (!activate) {
|
148
|
+
btn.tabIndex = -1;
|
149
|
+
btn.disabled = true;
|
150
|
+
btn.classList.remove('is-shown');
|
151
|
+
return;
|
152
|
+
}
|
153
|
+
btn.tabIndex = 0;
|
154
|
+
btn.disabled = false;
|
155
|
+
btn.classList.add('is-shown');
|
156
|
+
}
|
157
|
+
get allActiveItems() {
|
158
|
+
return this.allItems.filter((el) => !el.disabled || el.classList.contains('disabled'));
|
159
|
+
}
|
160
|
+
get allItems() {
|
161
|
+
return getDirectChildren(this.host, '*', true);
|
162
|
+
}
|
163
|
+
get activeItem() {
|
164
|
+
if (this._activeItem)
|
165
|
+
return this._activeItem;
|
166
|
+
return this.allActiveItems.find((el) => this.isActiveHandler(el));
|
167
|
+
}
|
168
|
+
set activeItem(item) {
|
169
|
+
if (!item ||
|
170
|
+
item === this.activeItem ||
|
171
|
+
item.disabled ||
|
172
|
+
!this.allActiveItems.includes(item)) {
|
173
|
+
return;
|
174
|
+
}
|
175
|
+
this._activeItem = item;
|
176
|
+
this.allActiveItems.forEach((el) => {
|
177
|
+
if (el === this._activeItem)
|
178
|
+
this.activeHandler(el);
|
179
|
+
else
|
180
|
+
this.inActiveHandler(el);
|
181
|
+
});
|
182
|
+
this.syncActiveItemIndicator();
|
183
|
+
this.scrollToActiveItem();
|
184
|
+
}
|
185
|
+
get navDim() {
|
186
|
+
if (!this.nav)
|
187
|
+
return 0;
|
188
|
+
const computedStyle = getComputedStyle(this.nav);
|
189
|
+
let clientDim = this.nav[this.clientDimProp];
|
190
|
+
if (this.orientation === 'horizontal') {
|
191
|
+
return (clientDim -=
|
192
|
+
parseFloat(computedStyle.paddingLeft) +
|
193
|
+
parseFloat(computedStyle.paddingRight));
|
194
|
+
}
|
195
|
+
else {
|
196
|
+
return (clientDim -=
|
197
|
+
parseFloat(computedStyle.paddingTop) +
|
198
|
+
parseFloat(computedStyle.paddingBottom));
|
199
|
+
}
|
200
|
+
}
|
201
|
+
scrollToActiveItem(instant) {
|
202
|
+
if (!this.nav || !this.activeItem)
|
203
|
+
return;
|
204
|
+
requestAnimationFrame(() => {
|
205
|
+
this.activeItem.scrollIntoView({
|
206
|
+
behavior: instant ? 'auto' : 'smooth',
|
207
|
+
block: 'center',
|
208
|
+
inline: 'center',
|
209
|
+
});
|
210
|
+
});
|
211
|
+
}
|
212
|
+
syncActiveItemIndicator(instant) {
|
213
|
+
if (!this.activeItem)
|
214
|
+
return;
|
215
|
+
const item = this.activeItem;
|
216
|
+
const width = item.clientWidth || 0;
|
217
|
+
const height = item.clientHeight + 2 || 0;
|
218
|
+
const offset = getOffset(item, this.itemContainer);
|
219
|
+
if (!this.activeIndicator)
|
220
|
+
return;
|
221
|
+
const offsetTop = offset.top;
|
222
|
+
const offsetLeft = offset.left;
|
223
|
+
if (instant)
|
224
|
+
this.activeIndicator.style.transition = 'none';
|
225
|
+
switch (this.orientation) {
|
226
|
+
case 'horizontal':
|
227
|
+
this.activeIndicator.style.width = `${width}px`;
|
228
|
+
this.activeIndicator.style.height = null;
|
229
|
+
this.activeIndicator.style.transform = `translateX(${offsetLeft}px)`;
|
230
|
+
break;
|
231
|
+
case 'vertical':
|
232
|
+
this.activeIndicator.style.width = null;
|
233
|
+
this.activeIndicator.style.height = `${height}px`;
|
234
|
+
this.activeIndicator.style.transform = `translateY(${offsetTop}px)`;
|
235
|
+
break;
|
236
|
+
}
|
237
|
+
setTimeout(() => (this.activeIndicator.style.transition = null), 400);
|
238
|
+
}
|
239
|
+
// lifecycle
|
240
|
+
connectedCallback() {
|
241
|
+
this.isRtl =
|
242
|
+
this.orientation === 'horizontal' && !!this.host.closest('[dir="rtl"]');
|
243
|
+
if (!window['ResizeObserver'])
|
244
|
+
return;
|
245
|
+
if (this.ro) {
|
246
|
+
this.ro.disconnect();
|
247
|
+
this.ro = undefined;
|
248
|
+
}
|
249
|
+
const mo = (this.ro = new ResizeObserver(this.recalculatePositions));
|
250
|
+
mo.observe(this.host);
|
251
|
+
}
|
252
|
+
componentDidLoad() {
|
253
|
+
this.recalculatePositions(true);
|
254
|
+
}
|
255
|
+
disconnectedCallback() {
|
256
|
+
if (this.ro) {
|
257
|
+
this.ro.disconnect();
|
258
|
+
this.ro = undefined;
|
259
|
+
}
|
260
|
+
}
|
261
|
+
render() {
|
262
|
+
return (h(Host, { dir: this.isRtl ? 'rtl' : null }, h("div", { part: "base", class: {
|
263
|
+
onav: true,
|
264
|
+
[`onav--${this.orientation}`]: true,
|
265
|
+
'onav--has-scroll-controls': this.hasScrollControls,
|
266
|
+
'onav--has-scroll-controls-start': !this.hideControlStart,
|
267
|
+
'onav--has-scroll-controls-end': !this.hideControlEnd,
|
268
|
+
}, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("div", { class: "onav__nav" }, this.scrollControls && (h("nano-icon-button", { part: "scroll-button scroll-button-prev", class: {
|
269
|
+
'onav__scroll-button': true,
|
270
|
+
'onav__scroll-button--start': true,
|
271
|
+
}, ref: (btn) => (this.startBtn = btn), onClick: () => this.handleBtnClick(false), label: "Click to scroll", iconName: this.orientation === 'horizontal'
|
272
|
+
? 'light/chevron-left'
|
273
|
+
: 'light/chevron-up' })), h("div", { part: "scroller", ref: (el) => (this.nav = el), class: "onav__scroller", onScroll: this.handleScroll }, h("div", { part: "items", ref: (el) => (this.itemContainer = el), class: "onav__items" }, h("div", { part: "indicator", ref: (el) => (this.activeIndicator = el), class: "onav__active-indicator" }), h("slot", { onSlotchange: this.slotChangeHandler }))), this.scrollControls && (h("nano-icon-button", { part: "scroll-button scroll-button-next", class: {
|
274
|
+
'onav__scroll-button': true,
|
275
|
+
'onav__scroll-button--end': true,
|
276
|
+
}, ref: (btn) => (this.endBtn = btn), onClick: () => this.handleBtnClick(true), label: "Click to scroll", iconName: this.orientation === 'horizontal'
|
277
|
+
? 'light/chevron-right'
|
278
|
+
: 'light/chevron-down' }))))));
|
279
|
+
}
|
280
|
+
static get is() { return "nano-overflow-nav"; }
|
281
|
+
static get encapsulation() { return "shadow"; }
|
282
|
+
static get originalStyleUrls() {
|
283
|
+
return {
|
284
|
+
"$": ["overflow-nav.scss"]
|
285
|
+
};
|
286
|
+
}
|
287
|
+
static get styleUrls() {
|
288
|
+
return {
|
289
|
+
"$": ["overflow-nav.css"]
|
290
|
+
};
|
291
|
+
}
|
292
|
+
static get properties() {
|
293
|
+
return {
|
294
|
+
"scrollControls": {
|
295
|
+
"type": "boolean",
|
296
|
+
"mutable": false,
|
297
|
+
"complexType": {
|
298
|
+
"original": "boolean",
|
299
|
+
"resolved": "boolean",
|
300
|
+
"references": {}
|
301
|
+
},
|
302
|
+
"required": false,
|
303
|
+
"optional": false,
|
304
|
+
"docs": {
|
305
|
+
"tags": [],
|
306
|
+
"text": "Disables the scroll arrow buttons that appear when content overflows"
|
307
|
+
},
|
308
|
+
"getter": false,
|
309
|
+
"setter": false,
|
310
|
+
"attribute": "scroll-controls",
|
311
|
+
"reflect": false,
|
312
|
+
"defaultValue": "true"
|
313
|
+
},
|
314
|
+
"orientation": {
|
315
|
+
"type": "string",
|
316
|
+
"mutable": false,
|
317
|
+
"complexType": {
|
318
|
+
"original": "'horizontal' | 'vertical'",
|
319
|
+
"resolved": "\"horizontal\" | \"vertical\"",
|
320
|
+
"references": {}
|
321
|
+
},
|
322
|
+
"required": false,
|
323
|
+
"optional": false,
|
324
|
+
"docs": {
|
325
|
+
"tags": [],
|
326
|
+
"text": "The flex direction of the element"
|
327
|
+
},
|
328
|
+
"getter": false,
|
329
|
+
"setter": false,
|
330
|
+
"attribute": "orientation",
|
331
|
+
"reflect": true,
|
332
|
+
"defaultValue": "'horizontal'"
|
333
|
+
},
|
334
|
+
"activeHandler": {
|
335
|
+
"type": "unknown",
|
336
|
+
"mutable": false,
|
337
|
+
"complexType": {
|
338
|
+
"original": "(item: HTMLElement) => void",
|
339
|
+
"resolved": "(item: HTMLElement) => void",
|
340
|
+
"references": {
|
341
|
+
"HTMLElement": {
|
342
|
+
"location": "global"
|
343
|
+
}
|
344
|
+
}
|
345
|
+
},
|
346
|
+
"required": false,
|
347
|
+
"optional": false,
|
348
|
+
"docs": {
|
349
|
+
"tags": [{
|
350
|
+
"name": "param",
|
351
|
+
"text": "item"
|
352
|
+
}, {
|
353
|
+
"name": "returns",
|
354
|
+
"text": "void"
|
355
|
+
}],
|
356
|
+
"text": "A function called when an item becomes 'active' (via click or keyboard)"
|
357
|
+
},
|
358
|
+
"getter": false,
|
359
|
+
"setter": false,
|
360
|
+
"defaultValue": "(item: HTMLElement) => item.classList.add('active')"
|
361
|
+
},
|
362
|
+
"inActiveHandler": {
|
363
|
+
"type": "unknown",
|
364
|
+
"mutable": false,
|
365
|
+
"complexType": {
|
366
|
+
"original": "(item: HTMLElement) => void",
|
367
|
+
"resolved": "(item: HTMLElement) => void",
|
368
|
+
"references": {
|
369
|
+
"HTMLElement": {
|
370
|
+
"location": "global"
|
371
|
+
}
|
372
|
+
}
|
373
|
+
},
|
374
|
+
"required": false,
|
375
|
+
"optional": false,
|
376
|
+
"docs": {
|
377
|
+
"tags": [{
|
378
|
+
"name": "param",
|
379
|
+
"text": "item"
|
380
|
+
}, {
|
381
|
+
"name": "returns",
|
382
|
+
"text": "void"
|
383
|
+
}],
|
384
|
+
"text": "A function called when an item becomes 'inactive'\n(because another item was made active)"
|
385
|
+
},
|
386
|
+
"getter": false,
|
387
|
+
"setter": false,
|
388
|
+
"defaultValue": "(item: HTMLElement) =>\n item.classList.remove('active')"
|
389
|
+
},
|
390
|
+
"isActiveHandler": {
|
391
|
+
"type": "unknown",
|
392
|
+
"mutable": false,
|
393
|
+
"complexType": {
|
394
|
+
"original": "(item: HTMLElement) => boolean",
|
395
|
+
"resolved": "(item: HTMLElement) => boolean",
|
396
|
+
"references": {
|
397
|
+
"HTMLElement": {
|
398
|
+
"location": "global"
|
399
|
+
}
|
400
|
+
}
|
401
|
+
},
|
402
|
+
"required": false,
|
403
|
+
"optional": false,
|
404
|
+
"docs": {
|
405
|
+
"tags": [{
|
406
|
+
"name": "param",
|
407
|
+
"text": "item"
|
408
|
+
}, {
|
409
|
+
"name": "returns",
|
410
|
+
"text": "void"
|
411
|
+
}],
|
412
|
+
"text": "A function called to assess an initial, active item"
|
413
|
+
},
|
414
|
+
"getter": false,
|
415
|
+
"setter": false,
|
416
|
+
"defaultValue": "(item: HTMLElement) =>\n item.classList.contains('active')"
|
417
|
+
}
|
418
|
+
};
|
419
|
+
}
|
420
|
+
static get states() {
|
421
|
+
return {
|
422
|
+
"hasScrollControls": {},
|
423
|
+
"hideControlEnd": {},
|
424
|
+
"hideControlStart": {}
|
425
|
+
};
|
426
|
+
}
|
427
|
+
static get elementRef() { return "host"; }
|
428
|
+
static get watchers() {
|
429
|
+
return [{
|
430
|
+
"propName": "hasScrollControls",
|
431
|
+
"methodName": "watchScrollControls"
|
432
|
+
}, {
|
433
|
+
"propName": "hideControlEnd",
|
434
|
+
"methodName": "hideEndBtn"
|
435
|
+
}, {
|
436
|
+
"propName": "hideControlStart",
|
437
|
+
"methodName": "hideStartBtn"
|
438
|
+
}];
|
439
|
+
}
|
440
|
+
}
|
441
|
+
//# sourceMappingURL=overflow-nav.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"overflow-nav.js","sourceRoot":"","sources":["../../../src/components/overflow-nav/overflow-nav.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Host,\n h,\n Element,\n Prop,\n Watch,\n State,\n} from '@stencil/core';\nimport { getDirectChildren, getOffset } from '../../utils/dom';\nimport { debounce } from '../../utils/throttle';\n\n/**\n * Primarily used to display navigational items that may not fit on smaller screens.\n *\n * - Accepts any collection of elements\n * - Gives visual cues of 'more' with auto display fade effect and scroll buttons\n * - Auto scrolls to the active item onload\n *\n * @slot - Default slot to place items.\n *\n * @part base - root, wrapper element\n * @part scroller - the scrolling element\n * @part items - the item wrapper element\n * @part indicator - the animated, indicator element\n * @part scroll-button - The buttons shown at either side of the scrolling area\n * @part scroll-button-prev - The button shown at the start of the scrolling area\n * @part scroll-button-next - The button shown at the end of the scrolling area\n */\n\n@Component({\n tag: 'nano-overflow-nav',\n styleUrl: 'overflow-nav.scss',\n shadow: true,\n})\nexport class OverflowNav implements ComponentInterface {\n // public surface\n\n /** Disables the scroll arrow buttons that appear when content overflows */\n @Prop() scrollControls = true;\n\n /** The flex direction of the element */\n @Prop({ reflect: true }) orientation: 'horizontal' | 'vertical' =\n 'horizontal';\n\n /**\n * A function called when an item becomes 'active' (via click or keyboard)\n * @param item\n * @returns void */\n @Prop() activeHandler = (item: HTMLElement) => item.classList.add('active');\n\n /**\n * A function called when an item becomes 'inactive'\n * (because another item was made active)\n * @param item\n * @returns void */\n @Prop() inActiveHandler = (item: HTMLElement) =>\n item.classList.remove('active');\n\n /**\n * A function called to assess an initial, active item\n * @param item\n * @returns void */\n @Prop() isActiveHandler = (item: HTMLElement) =>\n item.classList.contains('active');\n\n // private state\n\n constructor() {\n this.recalculatePositions = debounce(this.recalculatePositions, 50);\n }\n\n private ro?: ResizeObserver;\n private nav?: HTMLElement;\n private itemContainer?: HTMLElement;\n private isRtl?: boolean;\n private endBtn: HTMLNanoIconButtonElement;\n private startBtn: HTMLNanoIconButtonElement;\n private activeIndicator: HTMLElement;\n\n get scrollProp() {\n return this.orientation === 'horizontal' ? 'scrollWidth' : 'scrollHeight';\n }\n\n get clientDimProp() {\n return this.orientation === 'horizontal' ? 'clientWidth' : 'clientHeight';\n }\n\n get scrollOffset() {\n return this.orientation === 'horizontal' ? 'scrollLeft' : 'scrollTop';\n }\n\n @Element() host: HTMLNanoOverflowNavElement;\n\n @State() hasScrollControls = false;\n\n @Watch('hasScrollControls')\n watchScrollControls() {\n if (this.hasScrollControls) this.handleScroll();\n else this.hideControlStart = this.hideControlEnd = true;\n }\n\n @State() hideControlEnd = true;\n\n @Watch('hideControlEnd')\n hideEndBtn() {\n if (!this.endBtn) return;\n this.activateBtn(this.endBtn, !this.hideControlEnd);\n }\n\n @State() hideControlStart = true;\n\n @Watch('hideControlStart')\n hideStartBtn() {\n if (!this.startBtn) return;\n this.activateBtn(this.startBtn, !this.hideControlStart);\n }\n\n // private logic\n\n private activateBtn(btn: HTMLNanoIconButtonElement, activate = true) {\n if (!activate) {\n btn.tabIndex = -1;\n btn.disabled = true;\n btn.classList.remove('is-shown');\n return;\n }\n btn.tabIndex = 0;\n btn.disabled = false;\n btn.classList.add('is-shown');\n }\n\n get allActiveItems() {\n return this.allItems.filter(\n (el: any) => !el.disabled || el.classList.contains('disabled')\n );\n }\n\n get allItems() {\n return getDirectChildren<HTMLElement>(this.host, '*', true);\n }\n\n get activeItem() {\n if (this._activeItem) return this._activeItem;\n return this.allActiveItems.find((el) => this.isActiveHandler(el));\n }\n\n set activeItem(item: HTMLElement) {\n if (\n !item ||\n item === this.activeItem ||\n (item as any).disabled ||\n !this.allActiveItems.includes(item)\n ) {\n return;\n }\n\n this._activeItem = item;\n this.allActiveItems.forEach((el) => {\n if (el === this._activeItem) this.activeHandler(el);\n else this.inActiveHandler(el);\n });\n this.syncActiveItemIndicator();\n this.scrollToActiveItem();\n }\n private _activeItem: HTMLElement;\n\n get navDim() {\n if (!this.nav) return 0;\n\n const computedStyle = getComputedStyle(this.nav);\n let clientDim = this.nav[this.clientDimProp];\n\n if (this.orientation === 'horizontal') {\n return (clientDim -=\n parseFloat(computedStyle.paddingLeft) +\n parseFloat(computedStyle.paddingRight));\n } else {\n return (clientDim -=\n parseFloat(computedStyle.paddingTop) +\n parseFloat(computedStyle.paddingBottom));\n }\n }\n\n private scrollToActiveItem(instant?: boolean) {\n if (!this.nav || !this.activeItem) return;\n requestAnimationFrame(() => {\n this.activeItem.scrollIntoView({\n behavior: instant ? 'auto' : 'smooth',\n block: 'center',\n inline: 'center',\n });\n });\n }\n\n private syncActiveItemIndicator(instant?: boolean) {\n if (!this.activeItem) return;\n\n const item = this.activeItem;\n const width = item.clientWidth || 0;\n const height = item.clientHeight + 2 || 0;\n const offset = getOffset(item, this.itemContainer);\n\n if (!this.activeIndicator) return;\n\n const offsetTop = offset.top;\n const offsetLeft = offset.left;\n\n if (instant) this.activeIndicator.style.transition = 'none';\n\n switch (this.orientation) {\n case 'horizontal':\n this.activeIndicator.style.width = `${width}px`;\n this.activeIndicator.style.height = null;\n this.activeIndicator.style.transform = `translateX(${offsetLeft}px)`;\n break;\n\n case 'vertical':\n this.activeIndicator.style.width = null;\n this.activeIndicator.style.height = `${height}px`;\n this.activeIndicator.style.transform = `translateY(${offsetTop}px)`;\n break;\n }\n setTimeout(() => (this.activeIndicator.style.transition = null), 400);\n }\n\n private updateScrollControls = () => {\n this.hasScrollControls =\n this.nav[this.scrollProp] > this.nav[this.clientDimProp] &&\n this.nav[this.scrollProp] > this.itemContainer[this.clientDimProp];\n this.handleScroll();\n };\n\n private handleScroll = () => {\n if (!this.hasScrollControls) {\n this.hideControlStart = this.hideControlEnd = true;\n return;\n }\n const finishEnd = this.isRtl\n ? this.nav[this.scrollOffset] === 0\n : Math.abs(\n this.nav[this.clientDimProp] -\n (this.nav[this.scrollProp] - this.nav[this.scrollOffset])\n ) < 2;\n\n const finishStart = this.isRtl\n ? Math.abs(\n this.nav[this.scrollProp] +\n this.nav[this.scrollOffset] -\n this.nav[this.clientDimProp]\n ) < 2\n : this.nav[this.scrollOffset] === 0;\n\n if (finishStart) {\n this.hideControlStart = true;\n this.hideControlEnd = false;\n } else if (finishEnd) {\n this.hideControlStart = false;\n this.hideControlEnd = true;\n } else {\n this.hideControlEnd = false;\n this.hideControlStart = false;\n }\n };\n\n private handleBtnClick = (goEnd: boolean = false) => {\n const navDim = this.navDim;\n let scrollAmt;\n if (goEnd) scrollAmt = this.nav[this.scrollOffset] + navDim - 20;\n else scrollAmt = this.nav[this.scrollOffset] - navDim + 20;\n\n try {\n this.nav.scroll({\n left: this.orientation === 'horizontal' ? scrollAmt : 0,\n top: this.orientation === 'vertical' ? scrollAmt : 0,\n behavior: 'smooth',\n });\n } catch (e) {\n this.nav[this.scrollOffset] = scrollAmt;\n }\n };\n\n private slotChangeHandler = () => {\n if (this.allActiveItems.length < 2) return;\n const item = this.allActiveItems.find((el) => this.isActiveHandler(el));\n if (item) this.activeItem = item;\n this.recalculatePositions();\n };\n\n private handleClick = (event: MouseEvent) => {\n if (this.allActiveItems.length < 2) return;\n const foundItem = event\n .composedPath()\n .find((e) => this.allActiveItems.includes(e as any)) as HTMLElement;\n if (foundItem) this.activeItem = foundItem;\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Activate a tab\n if (['Enter', ' '].includes(event.key)) {\n const foundItem = event\n .composedPath()\n .find((e) => this.allActiveItems.includes(e as any)) as HTMLElement;\n if (foundItem) this.activeItem = foundItem;\n }\n };\n\n private recalculatePositions = (init?: any) => {\n this.updateScrollControls();\n this.syncActiveItemIndicator(init);\n setTimeout(() => this.scrollToActiveItem(init), 300);\n };\n\n // lifecycle\n\n connectedCallback(): void {\n this.isRtl =\n this.orientation === 'horizontal' && !!this.host.closest('[dir=\"rtl\"]');\n\n if (!window['ResizeObserver']) return;\n\n if (this.ro) {\n this.ro.disconnect();\n this.ro = undefined;\n }\n const mo = (this.ro = new ResizeObserver(this.recalculatePositions));\n mo.observe(this.host);\n }\n\n componentDidLoad(): void {\n this.recalculatePositions(true);\n }\n\n disconnectedCallback(): void {\n if (this.ro) {\n this.ro.disconnect();\n this.ro = undefined;\n }\n }\n\n render() {\n return (\n <Host dir={this.isRtl ? 'rtl' : null}>\n <div\n part=\"base\"\n class={{\n onav: true,\n [`onav--${this.orientation}`]: true,\n 'onav--has-scroll-controls': this.hasScrollControls,\n 'onav--has-scroll-controls-start': !this.hideControlStart,\n 'onav--has-scroll-controls-end': !this.hideControlEnd,\n }}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"onav__nav\">\n {this.scrollControls && (\n <nano-icon-button\n part=\"scroll-button scroll-button-prev\"\n class={{\n 'onav__scroll-button': true,\n 'onav__scroll-button--start': true,\n }}\n ref={(btn) => (this.startBtn = btn)}\n onClick={() => this.handleBtnClick(false)}\n label=\"Click to scroll\"\n iconName={\n this.orientation === 'horizontal'\n ? 'light/chevron-left'\n : 'light/chevron-up'\n }\n />\n )}\n\n <div\n part=\"scroller\"\n ref={(el) => (this.nav = el)}\n class=\"onav__scroller\"\n onScroll={this.handleScroll}\n >\n <div\n part=\"items\"\n ref={(el) => (this.itemContainer = el)}\n class=\"onav__items\"\n >\n <div\n part=\"indicator\"\n ref={(el) => (this.activeIndicator = el)}\n class=\"onav__active-indicator\"\n />\n <slot onSlotchange={this.slotChangeHandler} />\n </div>\n </div>\n\n {this.scrollControls && (\n <nano-icon-button\n part=\"scroll-button scroll-button-next\"\n class={{\n 'onav__scroll-button': true,\n 'onav__scroll-button--end': true,\n }}\n ref={(btn) => (this.endBtn = btn)}\n onClick={() => this.handleBtnClick(true)}\n label=\"Click to scroll\"\n iconName={\n this.orientation === 'horizontal'\n ? 'light/chevron-right'\n : 'light/chevron-down'\n }\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
@@ -12,8 +12,8 @@
|
|
12
12
|
}
|
13
13
|
/**
|
14
14
|
* @prop --height: The progress bar's height. Default 1em
|
15
|
-
* @prop --track-color: The track color. Default
|
16
|
-
* @prop --indicator-color: The indicator color. Default
|
15
|
+
* @prop --track-color: The track color. Default rgb(var(--nano-track-rgb, 228 230 232) / 100%);
|
16
|
+
* @prop --indicator-color: The indicator color. Default rgb(var(--nano-indicator-rgb, 84 140 175) / 100%);
|
17
17
|
* @prop --label-color: The label color. Default var(--nano-color-white, white);
|
18
18
|
*/
|
19
19
|
:host {
|
@@ -21,7 +21,7 @@
|
|
21
21
|
* @prop --height: Height of the range. Defaults to 42px;
|
22
22
|
* @prop --knob-background: Background of the range knob. Defaults to var(--nano-color-primary, #007495);
|
23
23
|
* @prop --knob-border-radius: Border radius of the range knob. Defaults to 50%;
|
24
|
-
* @prop --knob-box-shadow: Box shadow of the range knob; Defaults to 0 2px 4px 0
|
24
|
+
* @prop --knob-box-shadow: Box shadow of the range knob; Defaults to 0 2px 4px 0 rgb(0 0 0 / 30%);
|
25
25
|
* @prop --knob-size: Size of the range knob; Defaults to 30px;
|
26
26
|
* @prop --pin-background: Background of the range pin; Defaults to var(--nano-color-primary, #007495);
|
27
27
|
* @prop --pin-color: Color of the range pin; Defaults to var(--nano-color-primary-contrast, #fff);
|
@@ -46,7 +46,7 @@ export class ResizeObserve {
|
|
46
46
|
if (hasChanged)
|
47
47
|
this.applyChanges(changedStates);
|
48
48
|
else if (!this.classNames.includes('is-ready'))
|
49
|
-
this.classNames = ['is-ready'];
|
49
|
+
this.classNames = [...this.classNames, 'is-ready'];
|
50
50
|
};
|
51
51
|
this.currentWidth = undefined;
|
52
52
|
this.currentHeight = undefined;
|
@@ -187,10 +187,10 @@ export class ResizeObserve {
|
|
187
187
|
this.ro.observe(this.host);
|
188
188
|
}
|
189
189
|
componentWillLoad() {
|
190
|
+
this.classNames = Array.from(this.host.classList);
|
190
191
|
this.statesChanged();
|
191
192
|
// set all class as 'not-' by deafult
|
192
193
|
this.applyChanges(this.appliedStates);
|
193
|
-
this.classNames = Array.from(this.host.classList);
|
194
194
|
if (!this.currentWidth && !this.currentHeight) {
|
195
195
|
readTask(() => {
|
196
196
|
const { width, height } = this.host.getBoundingClientRect();
|
@@ -219,7 +219,7 @@ export class ResizeObserve {
|
|
219
219
|
}
|
220
220
|
static get is() { return "nano-resize-observe"; }
|
221
221
|
static get encapsulation() { return "shadow"; }
|
222
|
-
static get styles() { return "nano-resize-observe { display:
|
222
|
+
static get styles() { return "nano-resize-observe { display: contents }"; }
|
223
223
|
static get properties() {
|
224
224
|
return {
|
225
225
|
"notifyContentFit": {
|
@@ -253,7 +253,7 @@ export class ResizeObserve {
|
|
253
253
|
"optional": false,
|
254
254
|
"docs": {
|
255
255
|
"tags": [],
|
256
|
-
"text": "string list of sizes and optional class-names
|
256
|
+
"text": "string list of sizes and optional class-names.\nAdds class-names and fires nanoResizeStateChange events. Upon hitting breakpoints.\nFormat: `states=\"800w, 300h class1 class2\"`"
|
257
257
|
},
|
258
258
|
"getter": false,
|
259
259
|
"setter": false,
|
@@ -315,7 +315,7 @@ export class ResizeObserve {
|
|
315
315
|
"composed": true,
|
316
316
|
"docs": {
|
317
317
|
"tags": [],
|
318
|
-
"text": "Fires when the content either begins or stops
|
318
|
+
"text": "Fires when the content either begins or stops fitting.\nWill only work when `notifyContentFit` is set."
|
319
319
|
},
|
320
320
|
"complexType": {
|
321
321
|
"original": "{\n x: boolean;\n y: boolean;\n }",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resize-observe.js","sourceRoot":"","sources":["../../../src/components/resize-observe/resize-observe.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n Element,\n Host,\n State,\n Watch,\n ComponentInterface,\n Event,\n EventEmitter,\n readTask,\n} from '@stencil/core';\nimport type { ResizeStateChangeEventDetail } from '../../interface';\n\ntype ResizeObserverState = { states?: string[]; applied?: boolean };\ninterface StateMaps {\n h: Map<number, ResizeObserverState>;\n w: Map<number, ResizeObserverState>;\n}\n\n/**\n * A Resize-Observer utility component.\n * Takes a string list of sizes and optional class-names.\n * Adds class-names and fires `nanoResizeStateChange` events when the component reaches those sizes.\n * Additionally, can fire events when content no-longer fits within the element.\n * @slot - Main slot for any content.\n * @slot content-fit-x - optional slot (when `notifyContentFit` is set). Shows when content fits / doesn't get cut off\n * @slot content-nofit-x - optional slot (when `notifyContentFit` is set). Shows when content doesn't get cut off\n * @slot content-fit-y - optional slot (when `notifyContentFit` is set). Shows when content fits / doesn't get cut off\n * @slot content-nofit-y - optional slot (when `notifyContentFit` is set). Shows when content doesn't get cut off\n */\n@Component({\n tag: 'nano-resize-observe',\n styles: `nano-resize-observe { display: block }`,\n shadow: true,\n})\nexport class ResizeObserve implements ComponentInterface {\n private ro: ResizeObserver;\n private appliedStates: StateMaps;\n private isReady = false;\n\n @Element() host: HTMLNanoResizeObserveElement;\n @State() currentWidth: number;\n @State() currentHeight: number;\n @State() classNames: string[] = [];\n @State() contentFitX = null;\n @State() contentFitY = null;\n\n @Watch('classNames')\n classNameChange() {\n this.host.className = this.classNames.join(' ');\n if (!this.isReady && this.classNames.includes('is-ready')) {\n this.isReady = true;\n this.nanoResizeObserverReady.emit();\n }\n }\n\n /** Fire `nanoResizeContentFitChange` events notifying\n * whether content currently fits or does not on the x, y or both axis'.\n * Also makes the `content-fit-...` slots available */\n @Prop() notifyContentFit: 'x' | 'y' | 'xy';\n\n /** string list of sizes and optional class-names. Adds class-names and fires nanoResizeStateChange events. Upon hitting breakpoints.\n * Format: `states=\"800w, 300h class1 class2\"` */\n @Prop() states: string;\n\n @Watch('states')\n newStatesProp() {\n this.statesChanged();\n }\n\n /** A resize break point is switched on or off */\n @Event() nanoResizeStateChange!: EventEmitter<ResizeStateChangeEventDetail>;\n\n /** Fires after the initial loading and assessment */\n @Event() nanoResizeObserverReady!: EventEmitter<void>;\n\n /** Fires when the content either begins or stops to fit. Will only work when `notifyContentFit` is set. */\n @Event() nanoResizeContentFitChange!: EventEmitter<{\n x: boolean;\n y: boolean;\n }>;\n\n @Watch('currentHeight')\n @Watch('currentWidth')\n dimensionChanged() {\n this.assessChanges();\n }\n\n @Watch('states')\n statesChanged() {\n if (!this.states) return;\n\n const toBpDir = (bpDir: string) => {\n const bpDirSpl = bpDir.split(/(\\d+)/).filter((bs) => bs.length);\n return { bp: parseInt(bpDirSpl[0]), dir: bpDirSpl[1] };\n };\n this.appliedStates = { h: new Map(), w: new Map() };\n\n // parse state string\n this.states.split(',').map((st) => {\n st = st.trim();\n if (st.includes(' ')) {\n const [key, ...classes] = st.split(' ');\n const { bp, dir } = toBpDir(key);\n this.appliedStates[dir as keyof StateMaps].set(bp, {\n states: classes,\n applied: false,\n });\n } else {\n const { bp, dir } = toBpDir(st);\n this.appliedStates[dir as keyof StateMaps].set(bp, { applied: false });\n }\n });\n }\n\n private assesContentFit() {\n if (!this.notifyContentFit) return;\n\n const findNonContentsEle = (ele: Element) => {\n if (window.getComputedStyle(ele).display !== 'contents') return ele;\n\n const recurse = (e: Element): Element | null => {\n return Array.from(e.children).find((cEle: HTMLElement) => {\n if (window.getComputedStyle(cEle).display !== 'contents') return cEle;\n recurse(cEle);\n });\n };\n return recurse(ele);\n };\n\n let didChange = false;\n const measureEle = findNonContentsEle(this.host.firstElementChild);\n\n if (measureEle) {\n if (this.notifyContentFit && this.notifyContentFit.includes('x')) {\n if (\n this.currentWidth < measureEle.scrollWidth &&\n this.contentFitX !== false\n ) {\n didChange = true;\n this.contentFitX = false;\n } else if (\n this.currentWidth >= measureEle.scrollWidth &&\n this.contentFitX !== true\n ) {\n didChange = true;\n this.contentFitX = true;\n }\n }\n\n if (this.notifyContentFit && this.notifyContentFit.includes('y')) {\n if (\n this.currentHeight < measureEle.scrollHeight &&\n this.contentFitY !== false\n ) {\n didChange = true;\n this.contentFitY = false;\n } else if (\n this.currentHeight >= measureEle.scrollHeight &&\n this.contentFitY !== true\n ) {\n didChange = true;\n this.contentFitY = true;\n }\n }\n\n if (didChange) {\n this.nanoResizeContentFitChange.emit({\n x: this.contentFitX,\n y: this.contentFitY,\n });\n }\n }\n }\n\n private assessChanges = () => {\n if (!this.currentWidth && !this.currentHeight) return;\n readTask(() => this.assesContentFit());\n\n if (!this.states || !this.appliedStates) return;\n\n const changedStates: StateMaps = { h: new Map(), w: new Map() };\n let hasChanged = false;\n\n Object.keys(this.appliedStates).forEach((dimType) => {\n let dim: number;\n if (dimType === 'h') dim = this.currentHeight;\n else dim = this.currentWidth;\n\n this.appliedStates[dimType].forEach(\n (state: ResizeObserverState, bp: number) => {\n if (dim >= bp && state.applied === false) {\n state.applied = true;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n } else if (dim < bp && state.applied === true) {\n state.applied = false;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n }\n }\n );\n });\n if (hasChanged) this.applyChanges(changedStates);\n else if (!this.classNames.includes('is-ready'))\n this.classNames = ['is-ready'];\n };\n\n private applyChanges(changes: StateMaps) {\n if (!this.states) return;\n\n let classNames = [...this.classNames];\n Object.keys(changes).forEach((dimType: keyof StateMaps) => {\n changes[dimType].forEach((state) => {\n if (!state.states) return;\n state.states.map((st) => {\n if (state.applied) {\n classNames.push(st);\n classNames = classNames.filter((cl) => cl !== 'not-' + st);\n } else {\n classNames.push('not-' + st);\n classNames = classNames.filter((cl) => cl !== st);\n }\n });\n });\n });\n this.classNames = ['is-ready', ...classNames];\n this.nanoResizeStateChange.emit(this.toSimpleObj(changes));\n }\n\n private toSimpleObj(stateMaps: StateMaps) {\n const retObj = {};\n Object.keys(stateMaps).forEach((dimType: keyof StateMaps) => {\n stateMaps[dimType].forEach((state: ResizeObserverState, bp: number) => {\n retObj[bp + dimType] = state.applied;\n });\n });\n return retObj;\n }\n\n private attachRO() {\n if (!window['ResizeObserver']) return;\n\n this.ro = new ResizeObserver(() => {\n const { width, height } = this.host.getBoundingClientRect();\n this.currentWidth = Math.ceil(width);\n this.currentHeight = Math.ceil(height);\n });\n this.ro.observe(this.host);\n }\n\n componentWillLoad() {\n this.statesChanged();\n // set all class as 'not-' by deafult\n this.applyChanges(this.appliedStates);\n\n this.classNames = Array.from(this.host.classList);\n\n if (!this.currentWidth && !this.currentHeight) {\n readTask(() => {\n const { width, height } = this.host.getBoundingClientRect();\n this.currentWidth = Math.ceil(width);\n this.currentHeight = Math.ceil(height);\n });\n } else {\n this.assessChanges();\n }\n }\n\n connectedCallback() {\n if (!this.ro) this.attachRO();\n }\n\n disconnectedCallback() {\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host>\n <slot />\n {!!this.notifyContentFit &&\n (this.contentFitX !== null || this.contentFitY !== null) && [\n !!this.contentFitX ? (\n <slot name=\"content-fit-x\" />\n ) : (\n <slot name=\"content-nofit-x\" />\n ),\n !!this.contentFitY ? (\n <slot name=\"content-fit-y\" />\n ) : (\n <slot name=\"content-nofit-y\" />\n ),\n ]}\n </Host>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"resize-observe.js","sourceRoot":"","sources":["../../../src/components/resize-observe/resize-observe.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n Element,\n Host,\n State,\n Watch,\n ComponentInterface,\n Event,\n EventEmitter,\n readTask,\n} from '@stencil/core';\nimport type { ResizeStateChangeEventDetail } from '../../interface';\n\ntype ResizeObserverState = { states?: string[]; applied?: boolean };\ninterface StateMaps {\n h: Map<number, ResizeObserverState>;\n w: Map<number, ResizeObserverState>;\n}\n\n/**\n * A Resize-Observer utility component.\n * Takes a string list of sizes and optional class-names.\n * Adds class-names and fires `nanoResizeStateChange` events when the component reaches those sizes.\n * Additionally, can fire events when content no-longer fits within the element.\n * @slot - Main slot for any content.\n * @slot content-fit-x - optional slot (when `notifyContentFit` is set). Shows when content fits / doesn't get cut off\n * @slot content-nofit-x - optional slot (when `notifyContentFit` is set). Shows when content doesn't get cut off\n * @slot content-fit-y - optional slot (when `notifyContentFit` is set). Shows when content fits / doesn't get cut off\n * @slot content-nofit-y - optional slot (when `notifyContentFit` is set). Shows when content doesn't get cut off\n */\n@Component({\n tag: 'nano-resize-observe',\n styles: `nano-resize-observe { display: contents }`,\n shadow: true,\n})\nexport class ResizeObserve implements ComponentInterface {\n private ro: ResizeObserver;\n private appliedStates: StateMaps;\n private isReady = false;\n\n @Element() host: HTMLNanoResizeObserveElement;\n @State() currentWidth: number;\n @State() currentHeight: number;\n @State() classNames: string[] = [];\n @State() contentFitX = null;\n @State() contentFitY = null;\n\n @Watch('classNames')\n classNameChange() {\n this.host.className = this.classNames.join(' ');\n if (!this.isReady && this.classNames.includes('is-ready')) {\n this.isReady = true;\n this.nanoResizeObserverReady.emit();\n }\n }\n\n /** Fire `nanoResizeContentFitChange` events notifying\n * whether content currently fits or does not on the x, y or both axis'.\n * Also makes the `content-fit-...` slots available */\n @Prop() notifyContentFit: 'x' | 'y' | 'xy';\n\n /** string list of sizes and optional class-names.\n * Adds class-names and fires nanoResizeStateChange events. Upon hitting breakpoints.\n * Format: `states=\"800w, 300h class1 class2\"` */\n @Prop() states: string;\n\n @Watch('states')\n newStatesProp() {\n this.statesChanged();\n }\n\n /** A resize break point is switched on or off */\n @Event() nanoResizeStateChange!: EventEmitter<ResizeStateChangeEventDetail>;\n\n /** Fires after the initial loading and assessment */\n @Event() nanoResizeObserverReady!: EventEmitter<void>;\n\n /** Fires when the content either begins or stops fitting.\n * Will only work when `notifyContentFit` is set. */\n @Event() nanoResizeContentFitChange!: EventEmitter<{\n x: boolean;\n y: boolean;\n }>;\n\n @Watch('currentHeight')\n @Watch('currentWidth')\n dimensionChanged() {\n this.assessChanges();\n }\n\n @Watch('states')\n statesChanged() {\n if (!this.states) return;\n\n const toBpDir = (bpDir: string) => {\n const bpDirSpl = bpDir.split(/(\\d+)/).filter((bs) => bs.length);\n return { bp: parseInt(bpDirSpl[0]), dir: bpDirSpl[1] };\n };\n this.appliedStates = { h: new Map(), w: new Map() };\n\n // parse state string\n this.states.split(',').map((st) => {\n st = st.trim();\n if (st.includes(' ')) {\n const [key, ...classes] = st.split(' ');\n const { bp, dir } = toBpDir(key);\n this.appliedStates[dir as keyof StateMaps].set(bp, {\n states: classes,\n applied: false,\n });\n } else {\n const { bp, dir } = toBpDir(st);\n this.appliedStates[dir as keyof StateMaps].set(bp, { applied: false });\n }\n });\n }\n\n private assesContentFit() {\n if (!this.notifyContentFit) return;\n\n const findNonContentsEle = (ele: Element) => {\n if (window.getComputedStyle(ele).display !== 'contents') return ele;\n\n const recurse = (e: Element): Element | null => {\n return Array.from(e.children).find((cEle: HTMLElement) => {\n if (window.getComputedStyle(cEle).display !== 'contents') return cEle;\n recurse(cEle);\n });\n };\n return recurse(ele);\n };\n\n let didChange = false;\n const measureEle = findNonContentsEle(this.host.firstElementChild);\n\n if (measureEle) {\n if (this.notifyContentFit && this.notifyContentFit.includes('x')) {\n if (\n this.currentWidth < measureEle.scrollWidth &&\n this.contentFitX !== false\n ) {\n didChange = true;\n this.contentFitX = false;\n } else if (\n this.currentWidth >= measureEle.scrollWidth &&\n this.contentFitX !== true\n ) {\n didChange = true;\n this.contentFitX = true;\n }\n }\n\n if (this.notifyContentFit && this.notifyContentFit.includes('y')) {\n if (\n this.currentHeight < measureEle.scrollHeight &&\n this.contentFitY !== false\n ) {\n didChange = true;\n this.contentFitY = false;\n } else if (\n this.currentHeight >= measureEle.scrollHeight &&\n this.contentFitY !== true\n ) {\n didChange = true;\n this.contentFitY = true;\n }\n }\n\n if (didChange) {\n this.nanoResizeContentFitChange.emit({\n x: this.contentFitX,\n y: this.contentFitY,\n });\n }\n }\n }\n\n private assessChanges = () => {\n if (!this.currentWidth && !this.currentHeight) return;\n readTask(() => this.assesContentFit());\n\n if (!this.states || !this.appliedStates) return;\n\n const changedStates: StateMaps = { h: new Map(), w: new Map() };\n let hasChanged = false;\n\n Object.keys(this.appliedStates).forEach((dimType) => {\n let dim: number;\n if (dimType === 'h') dim = this.currentHeight;\n else dim = this.currentWidth;\n\n this.appliedStates[dimType].forEach(\n (state: ResizeObserverState, bp: number) => {\n if (dim >= bp && state.applied === false) {\n state.applied = true;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n } else if (dim < bp && state.applied === true) {\n state.applied = false;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n }\n }\n );\n });\n if (hasChanged) this.applyChanges(changedStates);\n else if (!this.classNames.includes('is-ready'))\n this.classNames = [...this.classNames, 'is-ready'];\n };\n\n private applyChanges(changes: StateMaps) {\n if (!this.states) return;\n\n let classNames = [...this.classNames];\n Object.keys(changes).forEach((dimType: keyof StateMaps) => {\n changes[dimType].forEach((state) => {\n if (!state.states) return;\n state.states.map((st) => {\n if (state.applied) {\n classNames.push(st);\n classNames = classNames.filter((cl) => cl !== 'not-' + st);\n } else {\n classNames.push('not-' + st);\n classNames = classNames.filter((cl) => cl !== st);\n }\n });\n });\n });\n this.classNames = ['is-ready', ...classNames];\n this.nanoResizeStateChange.emit(this.toSimpleObj(changes));\n }\n\n private toSimpleObj(stateMaps: StateMaps) {\n const retObj = {};\n Object.keys(stateMaps).forEach((dimType: keyof StateMaps) => {\n stateMaps[dimType].forEach((state: ResizeObserverState, bp: number) => {\n retObj[bp + dimType] = state.applied;\n });\n });\n return retObj;\n }\n\n private attachRO() {\n if (!window['ResizeObserver']) return;\n\n this.ro = new ResizeObserver(() => {\n const { width, height } = this.host.getBoundingClientRect();\n this.currentWidth = Math.ceil(width);\n this.currentHeight = Math.ceil(height);\n });\n this.ro.observe(this.host);\n }\n\n componentWillLoad() {\n this.classNames = Array.from(this.host.classList);\n\n this.statesChanged();\n // set all class as 'not-' by deafult\n this.applyChanges(this.appliedStates);\n\n if (!this.currentWidth && !this.currentHeight) {\n readTask(() => {\n const { width, height } = this.host.getBoundingClientRect();\n this.currentWidth = Math.ceil(width);\n this.currentHeight = Math.ceil(height);\n });\n } else {\n this.assessChanges();\n }\n }\n\n connectedCallback() {\n if (!this.ro) this.attachRO();\n }\n\n disconnectedCallback() {\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host>\n <slot />\n {!!this.notifyContentFit &&\n (this.contentFitX !== null || this.contentFitY !== null) && [\n !!this.contentFitX ? (\n <slot name=\"content-fit-x\" />\n ) : (\n <slot name=\"content-nofit-x\" />\n ),\n !!this.contentFitY ? (\n <slot name=\"content-fit-y\" />\n ) : (\n <slot name=\"content-nofit-y\" />\n ),\n ]}\n </Host>\n );\n }\n}\n"]}
|
@@ -376,12 +376,12 @@ label.visually-hide,
|
|
376
376
|
* @prop --input-bg-color--focus: defaults to var(--input-bg-color);
|
377
377
|
* @prop --input-bg-color--invalid: defaults to var(--nano-input-background-color, white);
|
378
378
|
|
379
|
-
* @prop --invalid-msg-color: defaults to
|
379
|
+
* @prop --invalid-msg-color: defaults to rgb(var(--color-invalid) / 100%);
|
380
380
|
* @prop --invalid-msg-font-size: defaults to var(--nano-input-help-font-size, 0.75em);
|
381
381
|
|
382
382
|
* @prop --clear-btn-color: defaults to var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));
|
383
|
-
* @prop --clear-btn-color--hover: defaults to
|
384
|
-
* @prop --clear-btn-color--invalid: defaults to
|
383
|
+
* @prop --clear-btn-color--hover: defaults to rgb(var(--color--focus-rgb) / 100%);
|
384
|
+
* @prop --clear-btn-color--invalid: defaults to rgb(var(--color-invalid) / 100%);
|
385
385
|
|
386
386
|
* @prop --label-color: defaults to var(--nano-input-label-color, "currentcolor");
|
387
387
|
* @prop --label-color--focus: defaults to var(--label-color);
|