@nanoporetech-digital/components 7.6.0 → 7.8.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/dist/cjs/{algolia-data-0447757c.js → algolia-data-ca9cd58e.js} +2 -2
- package/dist/cjs/{algolia-data-0447757c.js.map → algolia-data-ca9cd58e.js.map} +1 -1
- package/dist/cjs/app-globals-3e14cb71.js +41 -0
- package/dist/cjs/app-globals-3e14cb71.js.map +1 -0
- package/dist/cjs/{component-store-6a330cd1.js → component-store-b8d4bd91.js} +2 -2
- package/dist/cjs/{component-store-6a330cd1.js.map → component-store-b8d4bd91.js.map} +1 -1
- package/dist/cjs/{dom-756fcdac.js → dom-b99a1aec.js} +2 -2
- package/dist/cjs/{dom-756fcdac.js.map → dom-b99a1aec.js.map} +1 -1
- package/dist/cjs/{fade-2dd9dd8b.js → fade-6a5004f4.js} +4 -3
- package/dist/cjs/fade-6a5004f4.js.map +1 -0
- package/dist/cjs/form-control-5bb39cc2.js +82 -0
- package/dist/cjs/form-control-5bb39cc2.js.map +1 -0
- package/dist/cjs/{fullscreen-5d0422de.js → fullscreen-f5db9bbe.js} +4 -3
- package/dist/cjs/fullscreen-f5db9bbe.js.map +1 -0
- package/dist/cjs/{index-b6fa04fa.js → index-615cdb64.js} +4 -2
- package/dist/cjs/index-615cdb64.js.map +1 -0
- package/dist/cjs/{index-7795a8f6.js → index-a92a0379.js} +2 -2
- package/dist/cjs/{index-7795a8f6.js.map → index-a92a0379.js.map} +1 -1
- package/dist/cjs/index.cjs.js +20 -5
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{lazyload-f181cb37.js → lazyload-13d72e60.js} +4 -3
- package/dist/cjs/lazyload-13d72e60.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/nano-accordion.cjs.entry.js +8 -6
- package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +12 -11
- package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +7 -5
- package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +4 -4
- package/dist/cjs/nano-algolia-results.cjs.entry.js +6 -4
- package/dist/cjs/nano-algolia-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia.cjs.entry.js +14 -11
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-animation.cjs.entry.js +3 -2
- package/dist/cjs/nano-animation.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +6 -4
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +6 -5
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +6 -3
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +30 -28
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +7 -6
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +16 -15
- package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +7 -6
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +7 -6
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +9 -8
- package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +9 -7
- package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +17 -15
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +12 -11
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +30 -27
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +68 -66
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +10 -6
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_2.cjs.entry.js +6 -5
- package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +11 -10
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button_2.cjs.entry.js +6 -5
- package/dist/cjs/nano-icon-button_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +5 -3
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +9 -7
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-intersection-observe.cjs.entry.js +3 -2
- package/dist/cjs/nano-intersection-observe.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +10 -8
- package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-more-less.cjs.entry.js +5 -4
- package/dist/cjs/nano-more-less.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +7 -6
- package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-progress-bar.cjs.entry.js +7 -4
- package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +9 -7
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +10 -9
- package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +7 -6
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +3 -2
- package/dist/cjs/nano-slide.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-slides-612634dc.js → nano-slides-0a60315d.js} +15 -13
- package/dist/cjs/nano-slides-0a60315d.js.map +1 -0
- package/dist/cjs/nano-slides.cjs.entry.js +3 -2
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sortable.cjs.entry.js +3 -2
- package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +3 -2
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +3 -2
- package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +6 -5
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +5 -3
- package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +16 -14
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +4 -3
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-99d6a3cc.js → nano-table-43fc3d23.js} +42 -40
- package/dist/cjs/nano-table-43fc3d23.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +4 -3
- package/dist/cjs/nano-table.cjs.entry.js.map +1 -1
- package/dist/cjs/{page-dots-99dd88f6.js → page-dots-ecdd64d1.js} +4 -3
- package/dist/cjs/page-dots-ecdd64d1.js.map +1 -0
- package/dist/cjs/renderer-cd8b6098.js +63 -0
- package/dist/cjs/renderer-cd8b6098.js.map +1 -0
- package/dist/cjs/{scroll-772f7d0d.js → scroll-a3e5c6c6.js} +2 -2
- package/dist/cjs/{scroll-772f7d0d.js.map → scroll-a3e5c6c6.js.map} +1 -1
- package/dist/cjs/{table.worker-263468df.js → table.worker-ad250672.js} +5 -4
- package/dist/cjs/table.worker-ad250672.js.map +1 -0
- package/dist/collection/components/accordion/accordion.js +7 -5
- package/dist/collection/components/accordion/accordion.js.map +1 -1
- package/dist/collection/components/alert/alert.helpers.js +3 -2
- package/dist/collection/components/alert/alert.helpers.js.map +1 -1
- package/dist/collection/components/alert/alert.js +8 -7
- package/dist/collection/components/alert/alert.js.map +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +5 -3
- package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
- package/dist/collection/components/algolia/algolia-pagination.js +2 -2
- package/dist/collection/components/algolia/algolia-results.js +5 -3
- package/dist/collection/components/algolia/algolia-results.js.map +1 -1
- package/dist/collection/components/algolia/algolia.js +11 -8
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/animation/animation.js +3 -2
- package/dist/collection/components/animation/animation.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox-group.js +6 -4
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.js +6 -5
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/datalist/datalist.css +1 -1
- package/dist/collection/components/datalist/datalist.js +14 -13
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/date-input/date-input.css +3 -3
- package/dist/collection/components/date-input/date-input.js +6 -5
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +3 -3
- package/dist/collection/components/date-picker/date-picker.js +5 -4
- package/dist/collection/components/date-picker/date-picker.js.map +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-day.js +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-day.js.map +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-month.js +1 -1
- package/dist/collection/components/date-picker/duet-date-picker/date-picker-month.js.map +1 -1
- package/dist/collection/components/details/details.css +1 -1
- package/dist/collection/components/details/details.js +6 -5
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.helpers.js +2 -1
- package/dist/collection/components/dialog/dialog.helpers.js.map +1 -1
- package/dist/collection/components/dialog/dialog.js +4 -3
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/drawer/drawer.css +1 -1
- package/dist/collection/components/drawer/drawer.js +5 -4
- package/dist/collection/components/drawer/drawer.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown/dropdown.js +8 -6
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +16 -14
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +1 -1
- package/dist/collection/components/file-upload/file-upload.js +3 -2
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/form-control/form-control.js +1 -1
- package/dist/collection/components/form-control/form-control.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav-user-profile.js +3 -2
- package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +50 -48
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +33 -33
- package/dist/collection/components/global-search-results/global-search-results.css +11 -11
- package/dist/collection/components/global-search-results/global-search-results.js +9 -5
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/grid/grid.js +3 -2
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/hero/hero.css +2 -2
- package/dist/collection/components/hero/hero.js +6 -5
- package/dist/collection/components/hero/hero.js.map +1 -1
- package/dist/collection/components/icon/icon.js +4 -2
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.js +2 -2
- package/dist/collection/components/icon-button/icon-button.js.map +1 -1
- package/dist/collection/components/img/img.js +5 -4
- package/dist/collection/components/img/img.js.map +1 -1
- package/dist/collection/components/input/input.js +7 -5
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/intersection-observe/intersection-observe.js +3 -2
- package/dist/collection/components/intersection-observe/intersection-observe.js.map +1 -1
- package/dist/collection/components/menu/menu.css +1 -1
- package/dist/collection/components/menu/menu.js +12 -10
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.css +3 -3
- package/dist/collection/components/menu-drawer/menu-drawer.js +8 -6
- package/dist/collection/components/menu-drawer/menu-drawer.js.map +1 -1
- package/dist/collection/components/more-less/more-less.js +4 -3
- package/dist/collection/components/more-less/more-less.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.css +12 -12
- package/dist/collection/components/nav-item/nav-item.js +11 -9
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/option/option.css +2 -2
- package/dist/collection/components/option/option.js +4 -3
- package/dist/collection/components/option/option.js.map +1 -1
- package/dist/collection/components/overflow-nav/overflow-nav.css +4 -4
- package/dist/collection/components/overflow-nav/overflow-nav.js +5 -4
- package/dist/collection/components/overflow-nav/overflow-nav.js.map +1 -1
- package/dist/collection/components/progress-bar/progress-bar.js +7 -4
- package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
- package/dist/collection/components/range/range.js +3 -1
- package/dist/collection/components/range/range.js.map +1 -1
- package/dist/collection/components/rating/rating.css +1 -1
- package/dist/collection/components/rating/rating.js +6 -5
- package/dist/collection/components/rating/rating.js.map +1 -1
- package/dist/collection/components/resize-observe/resize-observe.js +3 -2
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +1 -5
- package/dist/collection/components/select/select.js +9 -7
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/skeleton/skeleton.js +4 -3
- package/dist/collection/components/skeleton/skeleton.js.map +1 -1
- package/dist/collection/components/slides/slide.js +3 -2
- package/dist/collection/components/slides/slide.js.map +1 -1
- package/dist/collection/components/slides/slides.js +10 -8
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/sortable/sortable.js +3 -2
- package/dist/collection/components/sortable/sortable.js.map +1 -1
- package/dist/collection/components/spinner/spinner.js +3 -2
- package/dist/collection/components/spinner/spinner.js.map +1 -1
- package/dist/collection/components/split-pane/split-pane.js +3 -2
- package/dist/collection/components/split-pane/split-pane.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +5 -4
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table.cell.js +3 -1
- package/dist/collection/components/table/table.cell.js.map +1 -1
- package/dist/collection/components/table/table.css +2 -2
- package/dist/collection/components/table/table.header.js +2 -1
- package/dist/collection/components/table/table.header.js.map +1 -1
- package/dist/collection/components/table/table.js +9 -8
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.row.js +1 -1
- package/dist/collection/components/table/table.row.js.map +1 -1
- package/dist/collection/components/tabs/tab-content.js +5 -3
- package/dist/collection/components/tabs/tab-content.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.css +3 -3
- package/dist/collection/components/tabs/tab-group.js +12 -10
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.js +4 -3
- package/dist/collection/components/tabs/tab.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +4 -3
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/global/script/global.js +28 -23
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/index.js +17 -2
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/renderer.js +54 -0
- package/dist/collection/utils/renderer.js.map +1 -0
- package/dist/components/algolia.js +11 -8
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/datalist.js +19 -30
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/date-picker.js +6 -5
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dropdown.js +9 -7
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/form-control.js +1 -1
- package/dist/components/form-control.js.map +1 -1
- package/dist/components/global-nav-user-profile.js +3 -2
- package/dist/components/global-nav-user-profile.js.map +1 -1
- package/dist/components/grid.js +2 -1
- package/dist/components/grid.js.map +1 -1
- package/dist/components/icon-button.js +2 -2
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/icon.js +4 -2
- package/dist/components/icon.js.map +1 -1
- package/dist/components/img.js +5 -4
- package/dist/components/img.js.map +1 -1
- package/dist/components/index.js +48 -31
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +7 -5
- package/dist/components/input.js.map +1 -1
- package/dist/components/menu.js +13 -11
- package/dist/components/menu.js.map +1 -1
- package/dist/components/nano-accordion.js +7 -5
- package/dist/components/nano-accordion.js.map +1 -1
- package/dist/components/nano-alert.js +8 -7
- package/dist/components/nano-alert.js.map +1 -1
- package/dist/components/nano-algolia-filter.js +5 -3
- package/dist/components/nano-algolia-filter.js.map +1 -1
- package/dist/components/nano-algolia-pagination.js +2 -2
- package/dist/components/nano-algolia-results.js +5 -3
- package/dist/components/nano-algolia-results.js.map +1 -1
- package/dist/components/nano-animation.js +3 -2
- package/dist/components/nano-animation.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +6 -4
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-checkbox.js +6 -5
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/nano-date-input.js +7 -6
- package/dist/components/nano-date-input.js.map +1 -1
- package/dist/components/nano-details.js +7 -6
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-dialog.js +4 -3
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-drawer.js +6 -5
- package/dist/components/nano-drawer.js.map +1 -1
- package/dist/components/nano-field-validator.js +16 -14
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-file-upload.js +4 -3
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/nano-global-nav.js +51 -49
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +10 -6
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-grid-item.js +1 -1
- package/dist/components/nano-hero.js +7 -6
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-intersection-observe.js +3 -2
- package/dist/components/nano-intersection-observe.js.map +1 -1
- package/dist/components/nano-menu-drawer.js +9 -7
- package/dist/components/nano-menu-drawer.js.map +1 -1
- package/dist/components/nano-more-less.js +4 -3
- package/dist/components/nano-more-less.js.map +1 -1
- package/dist/components/nano-overflow-nav.js +6 -5
- package/dist/components/nano-overflow-nav.js.map +1 -1
- package/dist/components/nano-range.js +3 -1
- package/dist/components/nano-range.js.map +1 -1
- package/dist/components/nano-rating.js +7 -6
- package/dist/components/nano-rating.js.map +1 -1
- package/dist/components/nano-slide.js +3 -2
- package/dist/components/nano-slide.js.map +1 -1
- package/dist/components/nano-slides.js +10 -8
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-sortable.js +3 -2
- package/dist/components/nano-sortable.js.map +1 -1
- package/dist/components/nano-split-pane.js +3 -2
- package/dist/components/nano-split-pane.js.map +1 -1
- package/dist/components/nano-tab-content.js +5 -3
- package/dist/components/nano-tab-content.js.map +1 -1
- package/dist/components/nano-tab-group.js +13 -11
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +4 -3
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nano-table.js +38 -36
- package/dist/components/nano-table.js.map +1 -1
- package/dist/components/nav-item.js +12 -10
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/option.js +5 -4
- package/dist/components/option.js.map +1 -1
- package/dist/components/progress-bar.js +7 -4
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/renderer.js +58 -0
- package/dist/components/renderer.js.map +1 -0
- package/dist/components/resize-observe.js +3 -2
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +10 -8
- package/dist/components/select.js.map +1 -1
- package/dist/components/skeleton.js +4 -3
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/spinner.js +3 -2
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/sticker.js +5 -4
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/tooltip.js +4 -3
- package/dist/components/tooltip.js.map +1 -1
- package/dist/esm/{algolia-data-8fc24341.js → algolia-data-f0f72f1d.js} +2 -2
- package/dist/esm/{algolia-data-8fc24341.js.map → algolia-data-f0f72f1d.js.map} +1 -1
- package/dist/esm/app-globals-f0120bbe.js +39 -0
- package/dist/esm/app-globals-f0120bbe.js.map +1 -0
- package/dist/esm/{component-store-b798181b.js → component-store-199a9fd8.js} +2 -2
- package/dist/esm/{component-store-b798181b.js.map → component-store-199a9fd8.js.map} +1 -1
- package/dist/esm/{dom-d7f9f24c.js → dom-fafdec9a.js} +2 -2
- package/dist/esm/{dom-d7f9f24c.js.map → dom-fafdec9a.js.map} +1 -1
- package/dist/esm/{fade-4ff5d9de.js → fade-ce1a4958.js} +4 -3
- package/dist/esm/fade-ce1a4958.js.map +1 -0
- package/dist/esm/{form-control-812999d0.js → form-control-f48fa873.js} +2 -2
- package/dist/esm/form-control-f48fa873.js.map +1 -0
- package/dist/esm/{fullscreen-382d7890.js → fullscreen-52d62028.js} +4 -3
- package/dist/esm/fullscreen-52d62028.js.map +1 -0
- package/dist/esm/{index-3118109b.js → index-6cc72cd9.js} +3 -3
- package/dist/esm/index-6cc72cd9.js.map +1 -0
- package/dist/esm/{index-d7a4a150.js → index-f5f7b950.js} +2 -2
- package/dist/esm/{index-d7a4a150.js.map → index-f5f7b950.js.map} +1 -1
- package/dist/esm/index.js +19 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{lazyload-49b745e4.js → lazyload-8ff69ba4.js} +4 -3
- package/dist/esm/lazyload-8ff69ba4.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/nano-accordion.entry.js +8 -6
- package/dist/esm/nano-accordion.entry.js.map +1 -1
- package/dist/esm/nano-alert.entry.js +10 -9
- package/dist/esm/nano-alert.entry.js.map +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +7 -5
- package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm/nano-algolia-pagination.entry.js +4 -4
- package/dist/esm/nano-algolia-results.entry.js +6 -4
- package/dist/esm/nano-algolia-results.entry.js.map +1 -1
- package/dist/esm/nano-algolia.entry.js +14 -11
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-animation.entry.js +3 -2
- package/dist/esm/nano-animation.entry.js.map +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +6 -4
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-checkbox.entry.js +6 -5
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +7 -4
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +30 -28
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +7 -6
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker.entry.js +6 -5
- package/dist/esm/nano-date-picker.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +7 -6
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +7 -6
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +9 -8
- package/dist/esm/nano-drawer.entry.js.map +1 -1
- package/dist/esm/nano-dropdown.entry.js +9 -7
- package/dist/esm/nano-dropdown.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +17 -15
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-file-upload.entry.js +4 -3
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +23 -20
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +52 -50
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +10 -6
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-grid-item.entry.js +2 -2
- package/dist/esm/nano-grid_2.entry.js +6 -5
- package/dist/esm/nano-grid_2.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +7 -6
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button_2.entry.js +6 -5
- package/dist/esm/nano-icon-button_2.entry.js.map +1 -1
- package/dist/esm/nano-icon.entry.js +4 -2
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +9 -7
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-intersection-observe.entry.js +3 -2
- package/dist/esm/nano-intersection-observe.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +10 -8
- package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm/nano-more-less.entry.js +4 -3
- package/dist/esm/nano-more-less.entry.js.map +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +7 -6
- package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
- package/dist/esm/nano-progress-bar.entry.js +7 -4
- package/dist/esm/nano-progress-bar.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +3 -1
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-rating.entry.js +7 -6
- package/dist/esm/nano-rating.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +5 -4
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slide.entry.js +3 -2
- package/dist/esm/nano-slide.entry.js.map +1 -1
- package/dist/esm/{nano-slides-c3eb1afe.js → nano-slides-2715825b.js} +15 -13
- package/dist/esm/nano-slides-2715825b.js.map +1 -0
- package/dist/esm/nano-slides.entry.js +3 -2
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-sortable.entry.js +3 -2
- package/dist/esm/nano-sortable.entry.js.map +1 -1
- package/dist/esm/nano-spinner.entry.js +3 -2
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +3 -2
- package/dist/esm/nano-split-pane.entry.js.map +1 -1
- package/dist/esm/nano-sticker.entry.js +6 -5
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-content.entry.js +5 -3
- package/dist/esm/nano-tab-content.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +16 -14
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +4 -3
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-d15f6782.js → nano-table-4481d4e1.js} +42 -40
- package/dist/esm/nano-table-4481d4e1.js.map +1 -0
- package/dist/esm/nano-table.entry.js +4 -3
- package/dist/esm/nano-table.entry.js.map +1 -1
- package/dist/esm/{page-dots-986d3b32.js → page-dots-5b23db8c.js} +4 -3
- package/dist/esm/page-dots-5b23db8c.js.map +1 -0
- package/dist/esm/renderer-4bc3e2dc.js +58 -0
- package/dist/esm/renderer-4bc3e2dc.js.map +1 -0
- package/dist/esm/{scroll-f373a189.js → scroll-1afc6a4e.js} +2 -2
- package/dist/esm/{scroll-f373a189.js.map → scroll-1afc6a4e.js.map} +1 -1
- package/dist/esm/{table.worker-b7ee4edc.js → table.worker-1bc9c170.js} +5 -4
- package/dist/esm/table.worker-1bc9c170.js.map +1 -0
- package/dist/nano-components/{algolia-data-8fc24341.js → algolia-data-f0f72f1d.js} +2 -2
- package/dist/nano-components/app-globals-f0120bbe.js +5 -0
- package/dist/nano-components/app-globals-f0120bbe.js.map +1 -0
- package/dist/nano-components/{component-store-b798181b.js → component-store-199a9fd8.js} +2 -2
- package/dist/nano-components/{dom-d7f9f24c.js → dom-fafdec9a.js} +2 -2
- package/dist/nano-components/fade-ce1a4958.js +5 -0
- package/dist/nano-components/{fade-4ff5d9de.js.map → fade-ce1a4958.js.map} +1 -1
- package/dist/nano-components/form-control-f48fa873.js +5 -0
- package/dist/nano-components/form-control-f48fa873.js.map +1 -0
- package/dist/nano-components/fullscreen-52d62028.js +5 -0
- package/dist/nano-components/{fullscreen-382d7890.js.map → fullscreen-52d62028.js.map} +1 -1
- package/dist/nano-components/{index-3118109b.js → index-6cc72cd9.js} +3 -3
- package/dist/nano-components/index-6cc72cd9.js.map +1 -0
- package/dist/nano-components/{index-d7a4a150.js → index-f5f7b950.js} +2 -2
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/index.esm.js.map +1 -1
- package/dist/nano-components/lazyload-8ff69ba4.js +5 -0
- package/dist/nano-components/{lazyload-49b745e4.js.map → lazyload-8ff69ba4.js.map} +1 -1
- package/dist/nano-components/nano-accordion.entry.js +1 -1
- package/dist/nano-components/nano-accordion.entry.js.map +1 -1
- package/dist/nano-components/nano-alert.entry.js +1 -1
- package/dist/nano-components/nano-alert.entry.js.map +1 -1
- package/dist/nano-components/nano-algolia-filter.entry.js +1 -1
- package/dist/nano-components/nano-algolia-filter.entry.js.map +1 -1
- package/dist/nano-components/nano-algolia-pagination.entry.js +1 -1
- package/dist/nano-components/nano-algolia-results.entry.js +1 -1
- package/dist/nano-components/nano-algolia-results.entry.js.map +1 -1
- package/dist/nano-components/nano-algolia.entry.js +1 -1
- package/dist/nano-components/nano-algolia.entry.js.map +1 -1
- package/dist/nano-components/nano-animation.entry.js +1 -1
- package/dist/nano-components/nano-animation.entry.js.map +1 -1
- package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
- package/dist/nano-components/nano-checkbox-group.entry.js.map +1 -1
- package/dist/nano-components/nano-checkbox.entry.js +1 -1
- package/dist/nano-components/nano-checkbox.entry.js.map +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/nano-datalist_3.entry.js +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
- package/dist/nano-components/nano-date-input.entry.js +1 -1
- package/dist/nano-components/nano-date-input.entry.js.map +1 -1
- package/dist/nano-components/nano-date-picker.entry.js +1 -1
- package/dist/nano-components/nano-date-picker.entry.js.map +1 -1
- package/dist/nano-components/nano-details.entry.js +1 -1
- package/dist/nano-components/nano-details.entry.js.map +1 -1
- package/dist/nano-components/nano-dialog.entry.js +1 -1
- package/dist/nano-components/nano-dialog.entry.js.map +1 -1
- package/dist/nano-components/nano-drawer.entry.js +1 -1
- package/dist/nano-components/nano-drawer.entry.js.map +1 -1
- package/dist/nano-components/nano-dropdown.entry.js +1 -1
- package/dist/nano-components/nano-dropdown.entry.js.map +1 -1
- package/dist/nano-components/nano-field-validator.entry.js +1 -1
- package/dist/nano-components/nano-field-validator.entry.js.map +1 -1
- package/dist/nano-components/nano-file-upload.entry.js +1 -1
- package/dist/nano-components/nano-file-upload.entry.js.map +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/nano-components/nano-global-nav.entry.js +1 -1
- package/dist/nano-components/nano-global-nav.entry.js.map +1 -1
- package/dist/nano-components/nano-global-search-results.entry.js +1 -1
- package/dist/nano-components/nano-global-search-results.entry.js.map +1 -1
- package/dist/nano-components/nano-grid-item.entry.js +1 -1
- package/dist/nano-components/nano-grid-item.entry.js.map +1 -1
- package/dist/nano-components/nano-grid_2.entry.js +1 -1
- package/dist/nano-components/nano-grid_2.entry.js.map +1 -1
- package/dist/nano-components/nano-hero.entry.js +1 -1
- package/dist/nano-components/nano-hero.entry.js.map +1 -1
- package/dist/nano-components/nano-icon-button_2.entry.js +1 -1
- package/dist/nano-components/nano-icon-button_2.entry.js.map +1 -1
- package/dist/nano-components/nano-icon.entry.js +1 -1
- package/dist/nano-components/nano-icon.entry.js.map +1 -1
- package/dist/nano-components/nano-input.entry.js +1 -1
- package/dist/nano-components/nano-input.entry.js.map +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js.map +1 -1
- package/dist/nano-components/nano-menu-drawer.entry.js +1 -1
- package/dist/nano-components/nano-menu-drawer.entry.js.map +1 -1
- package/dist/nano-components/nano-more-less.entry.js +1 -1
- package/dist/nano-components/nano-more-less.entry.js.map +1 -1
- package/dist/nano-components/nano-overflow-nav.entry.js +1 -1
- package/dist/nano-components/nano-overflow-nav.entry.js.map +1 -1
- package/dist/nano-components/nano-progress-bar.entry.js +1 -1
- package/dist/nano-components/nano-progress-bar.entry.js.map +1 -1
- package/dist/nano-components/nano-range.entry.js +1 -1
- package/dist/nano-components/nano-range.entry.js.map +1 -1
- package/dist/nano-components/nano-rating.entry.js +1 -1
- package/dist/nano-components/nano-rating.entry.js.map +1 -1
- package/dist/nano-components/nano-resize-observe_2.entry.js +1 -1
- package/dist/nano-components/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/nano-components/nano-slide.entry.js +1 -1
- package/dist/nano-components/nano-slide.entry.js.map +1 -1
- package/dist/nano-components/{nano-slides-c3eb1afe.js → nano-slides-2715825b.js} +5 -5
- package/dist/nano-components/nano-slides-2715825b.js.map +1 -0
- package/dist/nano-components/nano-slides.entry.js +1 -1
- package/dist/nano-components/nano-sortable.entry.js +1 -1
- package/dist/nano-components/nano-sortable.entry.js.map +1 -1
- package/dist/nano-components/nano-spinner.entry.js +1 -1
- package/dist/nano-components/nano-spinner.entry.js.map +1 -1
- package/dist/nano-components/nano-split-pane.entry.js +1 -1
- package/dist/nano-components/nano-split-pane.entry.js.map +1 -1
- package/dist/nano-components/nano-sticker.entry.js +1 -1
- package/dist/nano-components/nano-sticker.entry.js.map +1 -1
- package/dist/nano-components/nano-tab-content.entry.js +1 -1
- package/dist/nano-components/nano-tab-content.entry.js.map +1 -1
- package/dist/nano-components/nano-tab-group.entry.js +1 -1
- package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
- package/dist/nano-components/nano-tab.entry.js +1 -1
- package/dist/nano-components/nano-tab.entry.js.map +1 -1
- package/dist/nano-components/nano-table-4481d4e1.js +5 -0
- package/dist/nano-components/nano-table-4481d4e1.js.map +1 -0
- package/dist/nano-components/nano-table.entry.js +1 -1
- package/dist/nano-components/page-dots-5b23db8c.js +5 -0
- package/dist/nano-components/{page-dots-986d3b32.js.map → page-dots-5b23db8c.js.map} +1 -1
- package/dist/nano-components/renderer-4bc3e2dc.js +5 -0
- package/dist/nano-components/renderer-4bc3e2dc.js.map +1 -0
- package/dist/nano-components/{scroll-f373a189.js → scroll-1afc6a4e.js} +2 -2
- package/dist/nano-components/table.worker-1bc9c170.js +5 -0
- package/dist/stencil.config.js +1 -0
- package/dist/stencil.config.js.map +1 -1
- package/dist/types/global/script/global.d.ts +2 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/utils/renderer.d.ts +27 -0
- package/docs-json.json +1 -12
- package/hydrate/index.js +453 -393
- package/hydrate/index.mjs +453 -393
- package/package.json +1 -1
- package/dist/cjs/app-globals-93d8b419.js +0 -39
- package/dist/cjs/app-globals-93d8b419.js.map +0 -1
- package/dist/cjs/fade-2dd9dd8b.js.map +0 -1
- package/dist/cjs/form-control-2d88adb2.js +0 -82
- package/dist/cjs/form-control-2d88adb2.js.map +0 -1
- package/dist/cjs/fullscreen-5d0422de.js.map +0 -1
- package/dist/cjs/index-b6fa04fa.js.map +0 -1
- package/dist/cjs/lazyload-f181cb37.js.map +0 -1
- package/dist/cjs/nano-slides-612634dc.js.map +0 -1
- package/dist/cjs/nano-table-99d6a3cc.js.map +0 -1
- package/dist/cjs/page-dots-99dd88f6.js.map +0 -1
- package/dist/cjs/table.worker-263468df.js.map +0 -1
- package/dist/esm/app-globals-d4ab01f2.js +0 -37
- package/dist/esm/app-globals-d4ab01f2.js.map +0 -1
- package/dist/esm/fade-4ff5d9de.js.map +0 -1
- package/dist/esm/form-control-812999d0.js.map +0 -1
- package/dist/esm/fullscreen-382d7890.js.map +0 -1
- package/dist/esm/index-3118109b.js.map +0 -1
- package/dist/esm/lazyload-49b745e4.js.map +0 -1
- package/dist/esm/nano-slides-c3eb1afe.js.map +0 -1
- package/dist/esm/nano-table-d15f6782.js.map +0 -1
- package/dist/esm/page-dots-986d3b32.js.map +0 -1
- package/dist/esm/table.worker-b7ee4edc.js.map +0 -1
- package/dist/nano-components/app-globals-d4ab01f2.js +0 -5
- package/dist/nano-components/app-globals-d4ab01f2.js.map +0 -1
- package/dist/nano-components/fade-4ff5d9de.js +0 -5
- package/dist/nano-components/form-control-812999d0.js +0 -5
- package/dist/nano-components/form-control-812999d0.js.map +0 -1
- package/dist/nano-components/fullscreen-382d7890.js +0 -5
- package/dist/nano-components/index-3118109b.js.map +0 -1
- package/dist/nano-components/lazyload-49b745e4.js +0 -5
- package/dist/nano-components/nano-slides-c3eb1afe.js.map +0 -1
- package/dist/nano-components/nano-table-d15f6782.js +0 -5
- package/dist/nano-components/nano-table-d15f6782.js.map +0 -1
- package/dist/nano-components/page-dots-986d3b32.js +0 -5
- package/dist/nano-components/table.worker-b7ee4edc.js +0 -5
- /package/dist/nano-components/{algolia-data-8fc24341.js.map → algolia-data-f0f72f1d.js.map} +0 -0
- /package/dist/nano-components/{component-store-b798181b.js.map → component-store-199a9fd8.js.map} +0 -0
- /package/dist/nano-components/{dom-d7f9f24c.js.map → dom-fafdec9a.js.map} +0 -0
- /package/dist/nano-components/{index-d7a4a150.js.map → index-f5f7b950.js.map} +0 -0
- /package/dist/nano-components/{scroll-f373a189.js.map → scroll-1afc6a4e.js.map} +0 -0
- /package/dist/nano-components/{table.worker-b7ee4edc.js.map → table.worker-1bc9c170.js.map} +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/custom-element-doc-generator.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/generate-vue-component.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/index.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/output-vue.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/plugin.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/types.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/generators/vue/utils.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
- /package/dist/types/builds/{6SyqsxUA → Te2fj7s-}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -1,7 +1,8 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import {
|
4
|
+
import { Host, } from "@stencil/core";
|
5
|
+
import { h, transformTag } from "../../utils/renderer";
|
5
6
|
import { getDirectChildren } from "../../utils/dom";
|
6
7
|
import { createColorClasses } from "../../utils/theme";
|
7
8
|
/**
|
@@ -20,8 +21,8 @@ export class Accordion {
|
|
20
21
|
color;
|
21
22
|
onToggleHandler(event) {
|
22
23
|
event.stopPropagation();
|
23
|
-
const items = getDirectChildren(this.el, 'nano-details') ||
|
24
|
-
this.el.querySelectorAll('nano-details');
|
24
|
+
const items = getDirectChildren(this.el, transformTag('nano-details')) ||
|
25
|
+
this.el.querySelectorAll(transformTag('nano-details'));
|
25
26
|
items.forEach((item, i) => {
|
26
27
|
if (item !== event.target)
|
27
28
|
item.open = false;
|
@@ -36,10 +37,11 @@ export class Accordion {
|
|
36
37
|
this.nanoToggle.emit();
|
37
38
|
}
|
38
39
|
render() {
|
39
|
-
return (h(Host, { key: '
|
40
|
+
return (h(Host, { key: '60b444ced7959370455b575616c5e0cfe45ae85d', class: {
|
40
41
|
...createColorClasses(this.color),
|
41
42
|
[`nano-color-${this.itemOpened}`]: typeof this.itemOpened === 'number',
|
42
|
-
|
43
|
+
'nano-accordion': true,
|
44
|
+
} }, h("slot", { key: '53cb7e62571e9bc8e88a958a4b1a62550c4d797c' })));
|
43
45
|
}
|
44
46
|
static get is() { return "nano-accordion"; }
|
45
47
|
static get encapsulation() { return "shadow"; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,OAAO,EACP,IAAI,EACJ,IAAI,EAEJ,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AAMH,MAAM,OAAO,SAAS;IACX,UAAU,CAAU;IAElB,EAAE,CAA2B;IAExC;;OAEG;IACM,UAAU,CAAe;IAElC;;OAEG;IACK,KAAK,CAAS;IAGtB,eAAe,CAAC,KAAkB;QAChC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,KAAK,GACT,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC,IAA4B,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM;gBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;;gBACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAGD,eAAe,CAAC,KAAkB;QAChC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjC,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC,EAC/B,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBACrC,gBAAgB,EAAE,IAAI;aACvB;YAED,8DAAQ,CACH,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Listen,\n Element,\n Host,\n Prop,\n EventEmitter,\n Event,\n State,\n} from '@stencil/core';\n\nimport { h, transformTag } from '../../utils/renderer';\nimport { getDirectChildren } from '../../utils/dom';\nimport { createColorClasses } from '../../utils/theme';\nimport type { Color } from '../../types/shared';\n\n/**\n * Simple accordion - only one item open at a time - must be used with [details](story/components-accordion--details) elements.\n */\n@Component({\n tag: 'nano-accordion',\n styleUrl: 'accordion.scss',\n shadow: true,\n})\nexport class Accordion {\n @State() itemOpened?: number;\n\n @Element() el: HTMLNanoAccordionElement;\n\n /**\n * Fires when accordion elements toggle\n */\n @Event() nanoToggle: EventEmitter;\n\n /**\n * Color to use from the color palette.\n */\n @Prop() color?: Color;\n\n @Listen('nanoOpened')\n onToggleHandler(event: CustomEvent) {\n event.stopPropagation();\n\n const items =\n getDirectChildren(this.el, transformTag('nano-details')) ||\n this.el.querySelectorAll(transformTag('nano-details'));\n items.forEach((item: HTMLNanoDetailsElement, i) => {\n if (item !== event.target) item.open = false;\n else this.itemOpened = i;\n });\n this.nanoToggle.emit();\n }\n\n @Listen('nanoClosed')\n onClosedHandler(event: CustomEvent) {\n event.stopPropagation();\n this.itemOpened = null;\n this.nanoToggle.emit();\n }\n\n render() {\n return (\n <Host\n class={{\n ...createColorClasses(this.color),\n [`nano-color-${this.itemOpened}`]:\n typeof this.itemOpened === 'number',\n 'nano-accordion': true,\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"]}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
+
import { transformTag } from "../../utils/renderer";
|
4
5
|
const alertContent = (message, buttons = []) => {
|
5
6
|
return `${message}
|
6
7
|
${buttons.length
|
@@ -35,7 +36,7 @@ export async function nanoShowToast(message, position = 'tr', icon, alertOptions
|
|
35
36
|
...alertOptions,
|
36
37
|
};
|
37
38
|
icon = icon || 'light/circle-info';
|
38
|
-
const alert = Object.assign(document.createElement('nano-alert'), {
|
39
|
+
const alert = Object.assign(document.createElement(transformTag('nano-alert')), {
|
39
40
|
...opts,
|
40
41
|
open: false,
|
41
42
|
innerHTML: `
|
@@ -69,7 +70,7 @@ export function nanoShowAlert(message, buttons = [], label, icon = 'light/circle
|
|
69
70
|
...alertOptions,
|
70
71
|
};
|
71
72
|
icon = icon || 'light/circle-info';
|
72
|
-
const alert = Object.assign(document.createElement('nano-alert'), {
|
73
|
+
const alert = Object.assign(document.createElement(transformTag('nano-alert')), {
|
73
74
|
...opts,
|
74
75
|
open: false,
|
75
76
|
innerHTML: `
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"alert.helpers.js","sourceRoot":"","sources":["../../../../src/components/alert/alert.helpers.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"alert.helpers.js","sourceRoot":"","sources":["../../../../src/components/alert/alert.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { transformTag } from '../../utils/renderer';\nimport type { Color } from '../../types/shared';\n\ninterface ImperativeAlertOptions {\n color?: Color;\n duration?: number;\n closable?: boolean;\n}\n\ninterface ImperativeAlertButton {\n classes: string;\n content: string;\n handler?: (e: MouseEvent) => void;\n}\n\nexport type AlertToastPosition = 'tr' | 'tl' | 'bl' | 'br';\n\nconst alertContent = (\n message: string,\n buttons: ImperativeAlertButton[] = []\n) => {\n return `${message}\n ${\n buttons.length\n ? buttons\n .map(\n (btn, i) =>\n `<button data-btn=\"${i}\" class=\"button ${btn.classes}\" slot=\"footer\">${btn.content}</button>`\n )\n .join('')\n : ''\n }`;\n};\n\nconst addBtnHandlers = (\n alert: HTMLNanoAlertElement,\n buttons: ImperativeAlertButton[] = []\n) => {\n if (buttons.length) {\n Array.from(alert.querySelectorAll('button[slot=\"footer\"]')).map(\n (btn: HTMLElement) => {\n const foundBtn = buttons.find(\n (_fb, i) => btn.dataset.btn === i.toString()\n );\n if (foundBtn && foundBtn.handler) {\n btn.addEventListener('click', foundBtn.handler);\n }\n }\n );\n }\n};\n\n/**\n * `nano-alert` helper to create toast notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param position - the position of the toast. Options are 'tr', 'tl', 'bl' & 'br'\n * @param icon - name for the `nano-icon`\n * @param alertOptions - { color: Color, duration: number, closable: boolean }\n * @returns `Promise<void>`\n */\nexport async function nanoShowToast(\n message: string,\n position: AlertToastPosition = 'tr',\n icon?: string,\n alertOptions?: ImperativeAlertOptions,\n buttons: ImperativeAlertButton[] = []\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: 3000,\n closable: true,\n ...alertOptions,\n };\n icon = icon || 'light/circle-info';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement(transformTag('nano-alert')) as HTMLNanoAlertElement,\n {\n ...opts,\n open: false,\n innerHTML: `\n <nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n requestAnimationFrame(async (_) => {\n await alert.toast(position);\n resolve(alert);\n });\n });\n}\n\n/**\n * `nano-alert` helper to create alert notifications imperatively.\n * @param message - a JS template string e.g. `<h4>Hello</h4> ${aVariable}`\n * @param buttons\n * @param label - descriptive label for assitive technology\n * @param icon - name for the `nano-icon`\n * @param alertOptions\n * @returns `Promise<void>`\n */\nexport function nanoShowAlert(\n message: string,\n buttons: ImperativeAlertButton[] = [],\n label: string,\n icon: string | undefined = 'light/circle-info',\n alertOptions: ImperativeAlertOptions = {}\n) {\n const opts: ImperativeAlertOptions = {\n color: 'primary',\n duration: Infinity,\n closable: false,\n ...alertOptions,\n };\n icon = icon || 'light/circle-info';\n const alert: HTMLNanoAlertElement = Object.assign(\n document.createElement(transformTag('nano-alert')) as HTMLNanoAlertElement,\n {\n ...opts,\n open: false,\n innerHTML: `\n ${icon ? `<nano-icon name=\"${icon}\" slot=\"icon\"></nano-icon>` : ''}\n ${alertContent(message, buttons)}\n `,\n }\n );\n addBtnHandlers(alert, buttons);\n\n document.body.appendChild(alert);\n return new Promise<HTMLNanoAlertElement>((resolve) => {\n setTimeout(async (_) => {\n await alert.alert(label);\n resolve(alert);\n }, 100);\n });\n}\n"]}
|
@@ -1,10 +1,11 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import {
|
4
|
+
import { Host, Build, } from "@stencil/core";
|
5
5
|
import Modal from "../../utils/modal";
|
6
6
|
import { lockBodyScrolling, unlockBodyScrolling } from "../../utils/scroll";
|
7
7
|
import { createColorClasses } from "../../utils/theme";
|
8
|
+
import { transformTag, h } from "../../utils/renderer";
|
8
9
|
let toastStackTr;
|
9
10
|
let toastStackTl;
|
10
11
|
let toastStackBl;
|
@@ -167,7 +168,7 @@ export class Alert {
|
|
167
168
|
this.isToast = false;
|
168
169
|
resolve();
|
169
170
|
// Remove the toast stack from the DOM when there are no more alerts
|
170
|
-
if (!toastStack.querySelector('nano-alert')) {
|
171
|
+
if (!toastStack.querySelector(transformTag('nano-alert'))) {
|
171
172
|
toastStack.remove();
|
172
173
|
}
|
173
174
|
};
|
@@ -271,18 +272,18 @@ export class Alert {
|
|
271
272
|
}, tabIndex: this.isModal ? 0 : undefined, role: this.isModal ? 'alertdialog' : 'alert', "aria-live": "assertive", "aria-atomic": "true", "aria-hidden": this.isShowing ? 'false' : 'true', "aria-modal": this.isModal ? 'true' : undefined, "aria-label": this.label ? this.label : undefined, onMouseMove: this.handleMouseMove, onTransitionEnd: this.handleTransitionEnd }, h("div", { class: "alert__content" }, h("div", { part: "icon", class: "alert__icon" }, h("slot", { name: "icon" })), h("div", { part: "message", class: "alert__message" }, h("slot", null)), this.closable && (h("div", { class: "alert__close" }, h("nano-icon-button", { class: "alert__close", iconName: "light/xmark", label: "close menu", onClick: this.handleCloseClick })))), h("div", { class: "alert__footer" }, h("slot", { name: "footer" }))));
|
272
273
|
};
|
273
274
|
render() {
|
274
|
-
return (h(Host, { key: '
|
275
|
-
h("div", { key: '
|
275
|
+
return (h(Host, { key: '0279c18aae2396ad177089cc75566e883d90e13c', class: { ...createColorClasses(this.color), 'nano-alert': true }, showing: this.isShowing }, this.isModal && [
|
276
|
+
h("div", { key: 'bf3e853b342bdd95fa760ce9318c280fc7763ac6', part: "overlay", class: {
|
276
277
|
alert__overlay: true,
|
277
278
|
'alert__overlay--open': this.open,
|
278
279
|
}, ref: (div) => (this.overlay = div) }),
|
279
|
-
h("div", { key: '
|
280
|
+
h("div", { key: 'e1834c979a55eff1022d7c768d5d1f698afcfade', class: "alert__modal-wrap", onClick: (e) => {
|
280
281
|
if (!e.target.classList.contains('alert__modal-wrap'))
|
281
282
|
return;
|
282
283
|
this.noDismiss = true;
|
283
284
|
setTimeout(() => (this.noDismiss = false), 250);
|
284
|
-
} }, h(this.Panel, { key: '
|
285
|
-
], !this.isModal && h(this.Panel, { key: '
|
285
|
+
} }, h(this.Panel, { key: 'd30e62e22c1ea9b97b57590d9fe926bb0623b893' })),
|
286
|
+
], !this.isModal && h(this.Panel, { key: 'cd72c23c11e27ea221ca7ab3327288f34cd8a597' })));
|
286
287
|
}
|
287
288
|
static get is() { return "nano-alert"; }
|
288
289
|
static get encapsulation() { return "shadow"; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../../src/components/alert/alert.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n VNode,\n Build,\n} from '@stencil/core';\nimport Modal from '../../utils/modal';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport { createColorClasses } from '../../utils/theme';\nimport type { Color } from '../../types/shared';\n\nlet toastStackTr: HTMLElement;\nlet toastStackTl: HTMLElement;\nlet toastStackBl: HTMLElement;\nlet toastStackBr: HTMLElement;\n\nif (globalThis['document']) {\n toastStackTr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tr',\n });\n toastStackTl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tl',\n });\n toastStackBl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--bl',\n });\n toastStackBr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--br',\n });\n}\n\n/**\n * Alerts are used to display important messages either inline, as toast notifications or as modals requiring action.\n * @slot - The alert's content.\n * @slot icon - An icon to show in the alert.\n * @slot footer - Place items at the bottom of the alert. Best used with `button` elements - esp when used as with the `alert()` method.\n */\n@Component({\n tag: 'nano-alert',\n styleUrl: 'alert.scss',\n shadow: true,\n})\nexport class Alert implements ComponentInterface {\n private autoHideTimeout: ReturnType<typeof setTimeout>;\n private panel: HTMLElement;\n private overlay: HTMLElement;\n private modal: Modal;\n private originalTrigger: HTMLElement | null;\n private goingToHide = false;\n private goingToShow = false;\n\n @State() isModal = false;\n @State() isToast = false;\n @State() isShowing = false;\n @State() label: string;\n @State() noDismiss = false;\n\n @Element() host: HTMLNanoAlertElement;\n\n /** Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n if (this.open) this.show();\n else this.hide();\n }\n\n /** Set to true to make the alert closable. */\n @Prop({ reflect: true }) closable = false;\n\n /** The color to use from the application's color palette. */\n @Prop({ reflect: true }) color?: Color;\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the\n * alert before it closes (e.g. moves the mouse over it), the timer will restart.\n */\n @Prop() duration = Infinity;\n\n @Watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /**\n * Relocate the dialog to the root of the DOM.\n * Most useful in conjunction with `alert()` when parental elements\n * have css stacking constraints which don't allow for `position: fixed`\n */\n @Prop() hoist = false;\n\n @Watch('hoist')\n handleHoistChange() {\n if (!this.hoist || document.body.children[0] === this.host) return;\n document.body.prepend(this.host);\n }\n\n /** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the alert opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the alert closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /**\n * Shows the alert.\n * @returns a promise that resolves after the alert is shown\n */\n @Method()\n async show() {\n if (this.goingToShow) return;\n\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return false;\n }\n\n this.host.hidden = false;\n this.goingToShow = true;\n this.open = true;\n\n if (Build.isBrowser) {\n requestAnimationFrame(() => {\n this.isShowing = true;\n this.goingToShow = false;\n });\n } else {\n this.isShowing = true;\n this.goingToShow = false;\n }\n\n if (this.duration < Infinity) {\n clearTimeout(this.autoHideTimeout);\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n }\n\n /**\n * Hides the alert\n * @returns a promise that resolves after the alert is hidden\n */\n @Method()\n async hide() {\n if (this.goingToHide) {\n return;\n }\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return false;\n }\n this.goingToHide = true;\n this.open = false;\n\n requestAnimationFrame(() => (this.goingToHide = false));\n clearTimeout(this.autoHideTimeout);\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n *\n * @param position options are tr (top-right - default), tl (top-left), br (bottom-right), bl (bottom-left)\n * @returns a promise which will resolve after the alert has hidden\n */\n @Method()\n async toast(position: 'tr' | 'tl' | 'bl' | 'br' = 'tr') {\n this.isToast = true;\n return new Promise<void>((resolve) => {\n let toastStack: HTMLElement;\n switch (position) {\n case 'tl':\n toastStack = toastStackTl;\n break;\n case 'bl':\n toastStack = toastStackBl;\n break;\n case 'br':\n toastStack = toastStackBr;\n break;\n default:\n toastStack = toastStackTr;\n break;\n }\n\n if (!toastStack.parentElement) {\n document.body.appendChild(toastStack);\n }\n\n toastStack.appendChild(this.host);\n this.connectedCallback();\n this.show();\n\n const onClose = () => {\n this.host.remove();\n this.isToast = false;\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (!toastStack.querySelector('nano-alert')) {\n toastStack.remove();\n }\n };\n\n this.host.addEventListener('nanoAfterHide', onClose, { once: true });\n this.host.addEventListener('nano-after-hide', onClose, { once: true });\n });\n }\n\n /**\n * Displays the alert as a dialog / modal - more akin to a traditional js alert().\n * @param label a label for assistive technology\n */\n @Method()\n async alert(label: string) {\n this.isModal = true;\n this.label = label;\n\n return new Promise<void>((resolve) => {\n if (!document.body.contains(this.host)) {\n document.body.appendChild(this.host);\n }\n\n this.modal.activate();\n lockBodyScrolling(this.host);\n this.originalTrigger = document.activeElement as HTMLElement;\n\n requestAnimationFrame(() => {\n this.show();\n });\n\n const onOpen = () =>\n requestAnimationFrame(() => this.panel.focus({ preventScroll: true }));\n\n const onClose = () => {\n this.modal.deactivate();\n this.host.remove();\n this.label = undefined;\n this.isModal = false;\n resolve();\n\n // Restore focus to the original trigger\n if (\n this.originalTrigger &&\n typeof this.originalTrigger.focus === 'function'\n ) {\n setTimeout(() => this.originalTrigger.focus());\n }\n };\n\n this.host.addEventListener('nanoAfterShow', onOpen, { once: true });\n this.host.addEventListener('nano-after-show', onOpen, { once: true });\n\n this.host.addEventListener('nanoAfterHide', onClose, {\n once: true,\n });\n this.host.addEventListener('nano-after-hide', onClose, {\n once: true,\n });\n });\n }\n\n private handleMouseMove = () => {\n this.restartAutoHide();\n };\n\n private handleCloseClick = () => {\n this.hide();\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n (event.target === this.panel || event.target === this.overlay)\n ) {\n this.host.hidden = !this.open;\n this.isShowing = this.open;\n\n if (this.open) this.nanoAfterShow.emit();\n else this.nanoAfterHide.emit();\n }\n };\n\n private handleButtonClick = (e: PointerEvent & { target: HTMLElement }) => {\n if (e.defaultPrevented) return;\n if (e.target.tagName && e.target.tagName.toLowerCase() === 'button')\n this.hide();\n };\n\n private restartAutoHide = () => {\n clearTimeout(this.autoHideTimeout);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n };\n\n connectedCallback() {\n this.modal = new Modal(this.host);\n this.handleHoistChange();\n this.host.addEventListener('click', this.handleButtonClick);\n this.isShowing = typeof this.host.getAttribute('showing') === 'string';\n }\n\n disconnectedCallback() {\n unlockBodyScrolling(this.host);\n this.host.removeEventListener('click', this.handleButtonClick);\n }\n\n componentDidLoad() {\n // Show on init if open\n if (this.open && !this.isShowing) {\n this.show();\n }\n }\n\n private Panel = (): VNode => {\n return (\n <div\n ref={(div) => (this.panel = div)}\n part=\"panel\"\n class={{\n alert: true,\n 'alert--open': this.open,\n 'alert--toasty': this.isToast,\n 'alert--modal': !!this.isModal,\n 'alert--showing': this.isShowing,\n 'alert--nodismiss': this.noDismiss,\n }}\n tabIndex={this.isModal ? 0 : undefined}\n role={this.isModal ? 'alertdialog' : 'alert'}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n aria-hidden={this.isShowing ? 'false' : 'true'}\n aria-modal={this.isModal ? 'true' : undefined}\n aria-label={this.label ? this.label : undefined}\n onMouseMove={this.handleMouseMove}\n onTransitionEnd={this.handleTransitionEnd}\n >\n <div class=\"alert__content\">\n <div part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\" />\n </div>\n <div part=\"message\" class=\"alert__message\">\n <slot />\n </div>\n {this.closable && (\n <div class=\"alert__close\">\n <nano-icon-button\n class=\"alert__close\"\n iconName=\"light/xmark\"\n label=\"close menu\"\n onClick={this.handleCloseClick}\n ></nano-icon-button>\n </div>\n )}\n </div>\n <div class=\"alert__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host\n class={{ ...createColorClasses(this.color) }}\n showing={this.isShowing}\n >\n {this.isModal && [\n <div\n part=\"overlay\"\n class={{\n alert__overlay: true,\n 'alert__overlay--open': this.open,\n }}\n ref={(div) => (this.overlay = div)}\n />,\n <div\n class=\"alert__modal-wrap\"\n onClick={(e: MouseEvent & { target: HTMLElement }) => {\n if (!e.target.classList.contains('alert__modal-wrap')) return;\n this.noDismiss = true;\n setTimeout(() => (this.noDismiss = false), 250);\n }}\n >\n <this.Panel />\n </div>,\n ]}\n {!this.isModal && <this.Panel />}\n </Host>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../../src/components/alert/alert.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n Host,\n VNode,\n Build,\n} from '@stencil/core';\nimport Modal from '../../utils/modal';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport { createColorClasses } from '../../utils/theme';\nimport { transformTag, h } from '../../utils/renderer';\nimport type { Color } from '../../types/shared';\n\nlet toastStackTr: HTMLElement;\nlet toastStackTl: HTMLElement;\nlet toastStackBl: HTMLElement;\nlet toastStackBr: HTMLElement;\n\nif (globalThis['document']) {\n toastStackTr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tr',\n });\n toastStackTl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--tl',\n });\n toastStackBl = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--bl',\n });\n toastStackBr = Object.assign(document.createElement('div'), {\n className: 'nano-toast-stack nano-toast-stack--br',\n });\n}\n\n/**\n * Alerts are used to display important messages either inline, as toast notifications or as modals requiring action.\n * @slot - The alert's content.\n * @slot icon - An icon to show in the alert.\n * @slot footer - Place items at the bottom of the alert. Best used with `button` elements - esp when used as with the `alert()` method.\n */\n@Component({\n tag: 'nano-alert',\n styleUrl: 'alert.scss',\n shadow: true,\n})\nexport class Alert implements ComponentInterface {\n private autoHideTimeout: ReturnType<typeof setTimeout>;\n private panel: HTMLElement;\n private overlay: HTMLElement;\n private modal: Modal;\n private originalTrigger: HTMLElement | null;\n private goingToHide = false;\n private goingToShow = false;\n\n @State() isModal = false;\n @State() isToast = false;\n @State() isShowing = false;\n @State() label: string;\n @State() noDismiss = false;\n\n @Element() host: HTMLNanoAlertElement;\n\n /** Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n if (this.open) this.show();\n else this.hide();\n }\n\n /** Set to true to make the alert closable. */\n @Prop({ reflect: true }) closable = false;\n\n /** The color to use from the application's color palette. */\n @Prop({ reflect: true }) color?: Color;\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the\n * alert before it closes (e.g. moves the mouse over it), the timer will restart.\n */\n @Prop() duration = Infinity;\n\n @Watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /**\n * Relocate the dialog to the root of the DOM.\n * Most useful in conjunction with `alert()` when parental elements\n * have css stacking constraints which don't allow for `position: fixed`\n */\n @Prop() hoist = false;\n\n @Watch('hoist')\n handleHoistChange() {\n if (!this.hoist || document.body.children[0] === this.host) return;\n document.body.prepend(this.host);\n }\n\n /** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the alert opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the alert closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /**\n * Shows the alert.\n * @returns a promise that resolves after the alert is shown\n */\n @Method()\n async show() {\n if (this.goingToShow) return;\n\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return false;\n }\n\n this.host.hidden = false;\n this.goingToShow = true;\n this.open = true;\n\n if (Build.isBrowser) {\n requestAnimationFrame(() => {\n this.isShowing = true;\n this.goingToShow = false;\n });\n } else {\n this.isShowing = true;\n this.goingToShow = false;\n }\n\n if (this.duration < Infinity) {\n clearTimeout(this.autoHideTimeout);\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n }\n\n /**\n * Hides the alert\n * @returns a promise that resolves after the alert is hidden\n */\n @Method()\n async hide() {\n if (this.goingToHide) {\n return;\n }\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return false;\n }\n this.goingToHide = true;\n this.open = false;\n\n requestAnimationFrame(() => (this.goingToHide = false));\n clearTimeout(this.autoHideTimeout);\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n *\n * @param position options are tr (top-right - default), tl (top-left), br (bottom-right), bl (bottom-left)\n * @returns a promise which will resolve after the alert has hidden\n */\n @Method()\n async toast(position: 'tr' | 'tl' | 'bl' | 'br' = 'tr') {\n this.isToast = true;\n return new Promise<void>((resolve) => {\n let toastStack: HTMLElement;\n switch (position) {\n case 'tl':\n toastStack = toastStackTl;\n break;\n case 'bl':\n toastStack = toastStackBl;\n break;\n case 'br':\n toastStack = toastStackBr;\n break;\n default:\n toastStack = toastStackTr;\n break;\n }\n\n if (!toastStack.parentElement) {\n document.body.appendChild(toastStack);\n }\n\n toastStack.appendChild(this.host);\n this.connectedCallback();\n this.show();\n\n const onClose = () => {\n this.host.remove();\n this.isToast = false;\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (!toastStack.querySelector(transformTag('nano-alert'))) {\n toastStack.remove();\n }\n };\n\n this.host.addEventListener('nanoAfterHide', onClose, { once: true });\n this.host.addEventListener('nano-after-hide', onClose, { once: true });\n });\n }\n\n /**\n * Displays the alert as a dialog / modal - more akin to a traditional js alert().\n * @param label a label for assistive technology\n */\n @Method()\n async alert(label: string) {\n this.isModal = true;\n this.label = label;\n\n return new Promise<void>((resolve) => {\n if (!document.body.contains(this.host)) {\n document.body.appendChild(this.host);\n }\n\n this.modal.activate();\n lockBodyScrolling(this.host);\n this.originalTrigger = document.activeElement as HTMLElement;\n\n requestAnimationFrame(() => {\n this.show();\n });\n\n const onOpen = () =>\n requestAnimationFrame(() => this.panel.focus({ preventScroll: true }));\n\n const onClose = () => {\n this.modal.deactivate();\n this.host.remove();\n this.label = undefined;\n this.isModal = false;\n resolve();\n\n // Restore focus to the original trigger\n if (\n this.originalTrigger &&\n typeof this.originalTrigger.focus === 'function'\n ) {\n setTimeout(() => this.originalTrigger.focus());\n }\n };\n\n this.host.addEventListener('nanoAfterShow', onOpen, { once: true });\n this.host.addEventListener('nano-after-show', onOpen, { once: true });\n\n this.host.addEventListener('nanoAfterHide', onClose, {\n once: true,\n });\n this.host.addEventListener('nano-after-hide', onClose, {\n once: true,\n });\n });\n }\n\n private handleMouseMove = () => {\n this.restartAutoHide();\n };\n\n private handleCloseClick = () => {\n this.hide();\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n (event.target === this.panel || event.target === this.overlay)\n ) {\n this.host.hidden = !this.open;\n this.isShowing = this.open;\n\n if (this.open) this.nanoAfterShow.emit();\n else this.nanoAfterHide.emit();\n }\n };\n\n private handleButtonClick = (e: PointerEvent & { target: HTMLElement }) => {\n if (e.defaultPrevented) return;\n if (e.target.tagName && e.target.tagName.toLowerCase() === 'button')\n this.hide();\n };\n\n private restartAutoHide = () => {\n clearTimeout(this.autoHideTimeout);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n };\n\n connectedCallback() {\n this.modal = new Modal(this.host);\n this.handleHoistChange();\n this.host.addEventListener('click', this.handleButtonClick);\n this.isShowing = typeof this.host.getAttribute('showing') === 'string';\n }\n\n disconnectedCallback() {\n unlockBodyScrolling(this.host);\n this.host.removeEventListener('click', this.handleButtonClick);\n }\n\n componentDidLoad() {\n // Show on init if open\n if (this.open && !this.isShowing) {\n this.show();\n }\n }\n\n private Panel = (): VNode => {\n return (\n <div\n ref={(div) => (this.panel = div)}\n part=\"panel\"\n class={{\n alert: true,\n 'alert--open': this.open,\n 'alert--toasty': this.isToast,\n 'alert--modal': !!this.isModal,\n 'alert--showing': this.isShowing,\n 'alert--nodismiss': this.noDismiss,\n }}\n tabIndex={this.isModal ? 0 : undefined}\n role={this.isModal ? 'alertdialog' : 'alert'}\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n aria-hidden={this.isShowing ? 'false' : 'true'}\n aria-modal={this.isModal ? 'true' : undefined}\n aria-label={this.label ? this.label : undefined}\n onMouseMove={this.handleMouseMove}\n onTransitionEnd={this.handleTransitionEnd}\n >\n <div class=\"alert__content\">\n <div part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\" />\n </div>\n <div part=\"message\" class=\"alert__message\">\n <slot />\n </div>\n {this.closable && (\n <div class=\"alert__close\">\n <nano-icon-button\n class=\"alert__close\"\n iconName=\"light/xmark\"\n label=\"close menu\"\n onClick={this.handleCloseClick}\n ></nano-icon-button>\n </div>\n )}\n </div>\n <div class=\"alert__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host\n class={{ ...createColorClasses(this.color), 'nano-alert': true }}\n showing={this.isShowing}\n >\n {this.isModal && [\n <div\n part=\"overlay\"\n class={{\n alert__overlay: true,\n 'alert__overlay--open': this.open,\n }}\n ref={(div) => (this.overlay = div)}\n />,\n <div\n class=\"alert__modal-wrap\"\n onClick={(e: MouseEvent & { target: HTMLElement }) => {\n if (!e.target.classList.contains('alert__modal-wrap')) return;\n this.noDismiss = true;\n setTimeout(() => (this.noDismiss = false), 250);\n }}\n >\n <this.Panel />\n </div>,\n ]}\n {!this.isModal && <this.Panel />}\n </Host>\n );\n }\n}\n"]}
|
@@ -1,8 +1,9 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import {
|
4
|
+
import { Host, writeTask, } from "@stencil/core";
|
5
5
|
import { ComponentStore, } from "../../utils/store/component-store";
|
6
|
+
import { h } from "../../utils/renderer";
|
6
7
|
import { Wormhole, } from "./algolia-data";
|
7
8
|
/**
|
8
9
|
* Displays and syncs algolia filters
|
@@ -276,9 +277,10 @@ export class AlgoliaFilter {
|
|
276
277
|
this.showFilter = true;
|
277
278
|
}
|
278
279
|
render() {
|
279
|
-
return (h(Host, { key: '
|
280
|
+
return (h(Host, { key: '81d343828cf739b8e85cab7f56fa48ad1c3fc34e', class: {
|
280
281
|
'show-filter': this.showFilter,
|
281
|
-
|
282
|
+
'nano-filter': true,
|
283
|
+
} }, h("div", { key: '909831f2c2e4605163227a188df31b3b130fd7d1', ref: (div) => (this.outputEle = div) }, h("slot", { key: '854cff616358aaee8cb6594db55a4a49d4322b74', name: "output" }))));
|
282
284
|
}
|
283
285
|
static get is() { return "nano-algolia-filter"; }
|
284
286
|
static get encapsulation() { return "shadow"; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"algolia-filter.js","sourceRoot":"","sources":["../../../../src/components/algolia/algolia-filter.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n EventEmitter,\n Event,\n writeTask,\n Listen,\n} from '@stencil/core';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport {\n SearchChangeEvent,\n Wormhole,\n WormholeConsumerConstructor,\n} from './algolia-data';\nimport type {\n IndexResult,\n FilterChangeEventDetail,\n AlgoliaFacet,\n} from './algolia-interface';\n\n/**\n * Displays and syncs algolia filters\n * Must be nested within an nano-algolia component.\n * @slot filter-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot output - A placeholder for template output.\n */\n@Component({\n tag: 'nano-algolia-filter',\n shadow: true,\n styleUrl: 'algolia-filter.scss',\n})\nexport class AlgoliaFilter {\n @Element() el: HTMLNanoAlgoliaFilterElement;\n\n private templateStr: string;\n private templateSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private outputEle: HTMLElement;\n private filterId: string = null;\n private tplDidRnder;\n private tplWillRnder = new Promise((resolve) => {\n this.tplDidRnder = resolve;\n });\n\n @State() changeEvent: SearchChangeEvent;\n @State() internalValue: Array<string> = [undefined];\n @State() showFilter: boolean = false;\n @State() indexResults: IndexResult = null;\n @State() filterChanged: string = null;\n @State() facets: AlgoliaFacet;\n @State() tplRenderFn: (...args: any[]) => any;\n @State() globalStoreMethod: StorageMethods;\n\n /**\n * Name of this filter - must match an appropriate algolia facet on a parent nano-algolia index to display\n */\n @Prop() filterName: string = null;\n\n /**\n * Set values of this filter. Will result in form elements being selected. '|' delimited string or array.\n */\n @Prop({ mutable: true }) value: string | Array<string> = '';\n\n /**\n * The internal operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'or';\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n /**\n * Emitted when the filter value changes\n */\n @Event() nanoFilterChanged!: EventEmitter<FilterChangeEventDetail>;\n\n /**\n * Emitted when templates are updated\n */\n @Event() nanoTplUpdated!: EventEmitter<HTMLNanoAlgoliaFilterElement>;\n\n // Public facing. When changed attempts to 'check' any relevant fields in the template.\n @Watch('value')\n valueSet() {\n const valStr = this.value as string;\n let vals;\n\n if (typeof valStr === 'string')\n vals = valStr.length ? valStr.split('|') : [];\n else vals = this.value as Array<string>;\n\n if (this.didValueChange(vals)) {\n const foundVals = this.setFieldValues(vals);\n // found in template, set the internal state (this emits the changed event)\n if (foundVals && foundVals.length) this.internalValue = vals;\n // not found in template, wait for it to render.\n else {\n this.tplWillRnder.then((_) => {\n this.setFieldValues(vals);\n this.internalValue = vals;\n });\n }\n }\n }\n\n // Value has changed and is reflected in template. Emit event.\n @Watch('internalValue')\n valueChanged() {\n this.value = this.internalValue;\n this.nanoFilterChanged.emit({\n filterId: this.filterId,\n facetName: this.filterName,\n value: this.internalValue,\n operator: this.operator,\n });\n }\n\n // New facets from algolia. Update template\n @Watch('facets')\n appliedFilterChanged() {\n if (\n this.filterName &&\n this.filterChanged &&\n (this.filterChanged !== this.filterId || this.operator === 'and')\n ) {\n this.updateContent();\n }\n }\n\n @Watch('tplRenderFn')\n tplUpdate() {\n this.updateContent();\n }\n\n @Watch('indexResults')\n handleFilterChange() {\n if (this.indexResults && this.indexResults.appliedFilters) {\n const foundValue = this.indexResults.appliedFilters.find(\n (filter) => filter.name === this.filterName\n );\n if (!foundValue) return;\n\n this.tplWillRnder.then((_) => {\n const foundVals = this.setFieldValues(foundValue.values);\n if (foundVals && foundVals.length) this.value = foundVals;\n });\n }\n this.updateContent();\n }\n\n @Listen('nanoChange')\n @Listen('change')\n handleChangeEvent() {\n const vals = this.getFieldValues();\n if (this.didValueChange(vals)) {\n this.internalValue = vals;\n return true;\n }\n return false;\n }\n\n private updateContent() {\n const outputTo = this.outputSlot || this.outputEle;\n if (!this.el) return;\n\n // there's no template so show output right away\n if (!this.templateStr) this.showFilter = true;\n // there's a template but no index set so hide filters atm\n else if (\n !this.filterName ||\n !outputTo ||\n (this.templateStr &&\n (!this.indexResults || !this.indexResults.origFilters[this.filterName]))\n ) {\n this.showFilter = false;\n }\n\n // there's no output element so nothing else to do\n if (!outputTo) return;\n\n // there's no index set atm but get any static filter values so we can apply them\n if (!this.indexResults) {\n if (this.templateStr) {\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: {},\n dyn: {},\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n if (!this.value || !this.value.length) this.handleChangeEvent();\n });\n } else if (!this.value || !this.value.length) this.handleChangeEvent();\n return;\n }\n\n // everything is in place - render as normal and set values\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: { ...this.indexResults.origFilters[this.filterName] },\n dyn: { ...this.indexResults.dynFilters[this.filterName] },\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n this.tplDidRnder();\n this.setFieldValues();\n\n if (!this.showFilter) this.showFilter = true;\n this.nanoTplUpdated.emit(this.el);\n });\n }\n\n // go through form elements and extract their current value\n private getFieldValues() {\n const values = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n // If a multi-select, get all selections\n if (field.type === 'select-multiple') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!select.options[n].selected || !select.options[n].value.length)\n continue;\n values.push(select.options[n].value);\n }\n } else if (\n (field.type !== 'checkbox' && field.type !== 'radio') ||\n (field.checked && field.value.length)\n ) {\n values.push(field.value);\n }\n }\n return values;\n }\n\n // go through form elements and select / check them as appropriate\n private setFieldValues(vals?: string[]): void | string[] {\n vals = vals || this.internalValue;\n if (!vals) return;\n\n const found = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select, nano-select, nano-checkbox'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n if (\n field.disabled ||\n field.type === 'file' ||\n field.type === 'reset' ||\n field.type === 'submit' ||\n field.type === 'button'\n )\n continue;\n\n if (field.type === 'select-multiple' || field.type === 'select-one') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!vals.includes(select.options[n].value))\n select.options[n].selected = false;\n else {\n found.push(select.value);\n select.options[n].selected = true;\n if (field.type === 'select-one')\n select.value = select.options[n].value;\n }\n }\n } else if (\n ['checkbox', 'radio', 'tag', 'segment', 'segment-pill'].includes(\n field.type\n )\n ) {\n if (vals.includes(field.value)) {\n found.push(field.value);\n field.checked = true;\n } else if (!vals.length && !field.value.length) {\n field.checked = true;\n } else field.checked = false;\n }\n }\n return found;\n }\n\n private didValueChange(newVal: Array<string>) {\n if (!!this.internalValue && !newVal) return true;\n if (!this.internalValue && !newVal) return false;\n if (this.internalValue && newVal.length !== this.internalValue.length)\n return true;\n\n let hasChanged = false;\n for (let i = 0; i < newVal.length; i++) {\n if (\n !hasChanged &&\n (!this.internalValue || !this.internalValue.includes(newVal[i]))\n )\n hasChanged = true;\n }\n return hasChanged;\n }\n\n connectedCallback() {\n this.templateSlot = this.el.querySelector('[slot=\"filter-template\"]');\n this.outputSlot = this.el.querySelector('[slot=\"output\"]');\n this.filterId = this.filterName + '_' + filterIds++;\n\n if (this.templateSlot) {\n this.templateStr = this.templateSlot.innerHTML;\n this.templateStr = this.templateStr.replace(/=>/gm, '=>');\n }\n }\n\n componentWillLoad() {\n if (this.storeId)\n ComponentStore.init(\n this,\n ['value'],\n this.storeMethod || this.globalStoreMethod,\n this.storeId\n );\n }\n\n componentDidLoad() {\n this.updateContent();\n\n if (\n this.templateStr &&\n this.filterName &&\n this.indexResults &&\n this.indexResults.origFilters[this.filterName]\n )\n this.showFilter = true;\n }\n\n render() {\n return (\n <Host\n class={{\n 'show-filter': this.showFilter,\n }}\n >\n <div ref={(div) => (this.outputEle = div)}>\n <slot name=\"output\" />\n </div>\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaFilter as WormholeConsumerConstructor, [\n 'globalStoreMethod',\n 'indexResults',\n 'filterChanged',\n 'facets',\n 'tplRenderFn',\n 'changeEvent',\n]);\nlet filterIds = 0;\n"]}
|
1
|
+
{"version":3,"file":"algolia-filter.js","sourceRoot":"","sources":["../../../../src/components/algolia/algolia-filter.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Prop,\n Watch,\n State,\n EventEmitter,\n Event,\n writeTask,\n Listen,\n} from '@stencil/core';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { h } from '../../utils/renderer';\nimport {\n SearchChangeEvent,\n Wormhole,\n WormholeConsumerConstructor,\n} from './algolia-data';\nimport type {\n IndexResult,\n FilterChangeEventDetail,\n AlgoliaFacet,\n} from './algolia-interface';\n\n/**\n * Displays and syncs algolia filters\n * Must be nested within an nano-algolia component.\n * @slot filter-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot output - A placeholder for template output.\n */\n@Component({\n tag: 'nano-algolia-filter',\n shadow: true,\n styleUrl: 'algolia-filter.scss',\n})\nexport class AlgoliaFilter {\n @Element() el: HTMLNanoAlgoliaFilterElement;\n\n private templateStr: string;\n private templateSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private outputEle: HTMLElement;\n private filterId: string = null;\n private tplDidRnder;\n private tplWillRnder = new Promise((resolve) => {\n this.tplDidRnder = resolve;\n });\n\n @State() changeEvent: SearchChangeEvent;\n @State() internalValue: Array<string> = [undefined];\n @State() showFilter: boolean = false;\n @State() indexResults: IndexResult = null;\n @State() filterChanged: string = null;\n @State() facets: AlgoliaFacet;\n @State() tplRenderFn: (...args: any[]) => any;\n @State() globalStoreMethod: StorageMethods;\n\n /**\n * Name of this filter - must match an appropriate algolia facet on a parent nano-algolia index to display\n */\n @Prop() filterName: string = null;\n\n /**\n * Set values of this filter. Will result in form elements being selected. '|' delimited string or array.\n */\n @Prop({ mutable: true }) value: string | Array<string> = '';\n\n /**\n * The internal operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'or';\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n /**\n * Emitted when the filter value changes\n */\n @Event() nanoFilterChanged!: EventEmitter<FilterChangeEventDetail>;\n\n /**\n * Emitted when templates are updated\n */\n @Event() nanoTplUpdated!: EventEmitter<HTMLNanoAlgoliaFilterElement>;\n\n // Public facing. When changed attempts to 'check' any relevant fields in the template.\n @Watch('value')\n valueSet() {\n const valStr = this.value as string;\n let vals;\n\n if (typeof valStr === 'string')\n vals = valStr.length ? valStr.split('|') : [];\n else vals = this.value as Array<string>;\n\n if (this.didValueChange(vals)) {\n const foundVals = this.setFieldValues(vals);\n // found in template, set the internal state (this emits the changed event)\n if (foundVals && foundVals.length) this.internalValue = vals;\n // not found in template, wait for it to render.\n else {\n this.tplWillRnder.then((_) => {\n this.setFieldValues(vals);\n this.internalValue = vals;\n });\n }\n }\n }\n\n // Value has changed and is reflected in template. Emit event.\n @Watch('internalValue')\n valueChanged() {\n this.value = this.internalValue;\n this.nanoFilterChanged.emit({\n filterId: this.filterId,\n facetName: this.filterName,\n value: this.internalValue,\n operator: this.operator,\n });\n }\n\n // New facets from algolia. Update template\n @Watch('facets')\n appliedFilterChanged() {\n if (\n this.filterName &&\n this.filterChanged &&\n (this.filterChanged !== this.filterId || this.operator === 'and')\n ) {\n this.updateContent();\n }\n }\n\n @Watch('tplRenderFn')\n tplUpdate() {\n this.updateContent();\n }\n\n @Watch('indexResults')\n handleFilterChange() {\n if (this.indexResults && this.indexResults.appliedFilters) {\n const foundValue = this.indexResults.appliedFilters.find(\n (filter) => filter.name === this.filterName\n );\n if (!foundValue) return;\n\n this.tplWillRnder.then((_) => {\n const foundVals = this.setFieldValues(foundValue.values);\n if (foundVals && foundVals.length) this.value = foundVals;\n });\n }\n this.updateContent();\n }\n\n @Listen('nanoChange')\n @Listen('change')\n handleChangeEvent() {\n const vals = this.getFieldValues();\n if (this.didValueChange(vals)) {\n this.internalValue = vals;\n return true;\n }\n return false;\n }\n\n private updateContent() {\n const outputTo = this.outputSlot || this.outputEle;\n if (!this.el) return;\n\n // there's no template so show output right away\n if (!this.templateStr) this.showFilter = true;\n // there's a template but no index set so hide filters atm\n else if (\n !this.filterName ||\n !outputTo ||\n (this.templateStr &&\n (!this.indexResults || !this.indexResults.origFilters[this.filterName]))\n ) {\n this.showFilter = false;\n }\n\n // there's no output element so nothing else to do\n if (!outputTo) return;\n\n // there's no index set atm but get any static filter values so we can apply them\n if (!this.indexResults) {\n if (this.templateStr) {\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: {},\n dyn: {},\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n if (!this.value || !this.value.length) this.handleChangeEvent();\n });\n } else if (!this.value || !this.value.length) this.handleChangeEvent();\n return;\n }\n\n // everything is in place - render as normal and set values\n writeTask(() => {\n outputTo.innerHTML = this.tplRenderFn(this.templateStr, {\n orig: { ...this.indexResults.origFilters[this.filterName] },\n dyn: { ...this.indexResults.dynFilters[this.filterName] },\n selected:\n this.internalValue && this.internalValue.length\n ? this.internalValue\n : this.value,\n });\n this.tplDidRnder();\n this.setFieldValues();\n\n if (!this.showFilter) this.showFilter = true;\n this.nanoTplUpdated.emit(this.el);\n });\n }\n\n // go through form elements and extract their current value\n private getFieldValues() {\n const values = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n // If a multi-select, get all selections\n if (field.type === 'select-multiple') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!select.options[n].selected || !select.options[n].value.length)\n continue;\n values.push(select.options[n].value);\n }\n } else if (\n (field.type !== 'checkbox' && field.type !== 'radio') ||\n (field.checked && field.value.length)\n ) {\n values.push(field.value);\n }\n }\n return values;\n }\n\n // go through form elements and select / check them as appropriate\n private setFieldValues(vals?: string[]): void | string[] {\n vals = vals || this.internalValue;\n if (!vals) return;\n\n const found = [];\n const fields = this.outputSlot.querySelectorAll(\n 'input[type=\"checkbox\"], input[type=\"radio\"], select, nano-select, nano-checkbox'\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i] as HTMLInputElement;\n\n if (\n field.disabled ||\n field.type === 'file' ||\n field.type === 'reset' ||\n field.type === 'submit' ||\n field.type === 'button'\n )\n continue;\n\n if (field.type === 'select-multiple' || field.type === 'select-one') {\n const select: HTMLSelectElement = field as any;\n for (let n = 0; n < select.options.length; n++) {\n if (!vals.includes(select.options[n].value))\n select.options[n].selected = false;\n else {\n found.push(select.value);\n select.options[n].selected = true;\n if (field.type === 'select-one')\n select.value = select.options[n].value;\n }\n }\n } else if (\n ['checkbox', 'radio', 'tag', 'segment', 'segment-pill'].includes(\n field.type\n )\n ) {\n if (vals.includes(field.value)) {\n found.push(field.value);\n field.checked = true;\n } else if (!vals.length && !field.value.length) {\n field.checked = true;\n } else field.checked = false;\n }\n }\n return found;\n }\n\n private didValueChange(newVal: Array<string>) {\n if (!!this.internalValue && !newVal) return true;\n if (!this.internalValue && !newVal) return false;\n if (this.internalValue && newVal.length !== this.internalValue.length)\n return true;\n\n let hasChanged = false;\n for (let i = 0; i < newVal.length; i++) {\n if (\n !hasChanged &&\n (!this.internalValue || !this.internalValue.includes(newVal[i]))\n )\n hasChanged = true;\n }\n return hasChanged;\n }\n\n connectedCallback() {\n this.templateSlot = this.el.querySelector('[slot=\"filter-template\"]');\n this.outputSlot = this.el.querySelector('[slot=\"output\"]');\n this.filterId = this.filterName + '_' + filterIds++;\n\n if (this.templateSlot) {\n this.templateStr = this.templateSlot.innerHTML;\n this.templateStr = this.templateStr.replace(/=>/gm, '=>');\n }\n }\n\n componentWillLoad() {\n if (this.storeId)\n ComponentStore.init(\n this,\n ['value'],\n this.storeMethod || this.globalStoreMethod,\n this.storeId\n );\n }\n\n componentDidLoad() {\n this.updateContent();\n\n if (\n this.templateStr &&\n this.filterName &&\n this.indexResults &&\n this.indexResults.origFilters[this.filterName]\n )\n this.showFilter = true;\n }\n\n render() {\n return (\n <Host\n class={{\n 'show-filter': this.showFilter,\n 'nano-filter': true,\n }}\n >\n <div ref={(div) => (this.outputEle = div)}>\n <slot name=\"output\" />\n </div>\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaFilter as WormholeConsumerConstructor, [\n 'globalStoreMethod',\n 'indexResults',\n 'filterChanged',\n 'facets',\n 'tplRenderFn',\n 'changeEvent',\n]);\nlet filterIds = 0;\n"]}
|
@@ -55,9 +55,9 @@ export class AlgoliaPagination {
|
|
55
55
|
this.updateContent();
|
56
56
|
}
|
57
57
|
render() {
|
58
|
-
return (h(Host, { key: '
|
58
|
+
return (h(Host, { key: '12cc1de8e3bfe96c0368ff394eb6a2cfdf0344c8', class: {
|
59
59
|
'show-pagination': this.show,
|
60
|
-
} }, h("div", { key: '
|
60
|
+
} }, h("div", { key: '70dc4683c476084346dc69246acb2092719d0b60', ref: (div) => (this.outputEle = div) }, h("slot", { key: '04f51858db37f6a25cae5fead48c5016a4159944', name: "output" }))));
|
61
61
|
}
|
62
62
|
static get is() { return "nano-algolia-pagination"; }
|
63
63
|
static get encapsulation() { return "shadow"; }
|
@@ -1,7 +1,8 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import {
|
4
|
+
import { Host, Build, readTask, } from "@stencil/core";
|
5
|
+
import { h } from "../../utils/renderer";
|
5
6
|
import { Wormhole, SearchChangeEvent } from "./algolia-data";
|
6
7
|
/**
|
7
8
|
* Displays and syncs results from Algolia searches.
|
@@ -198,9 +199,10 @@ export class AlgoliaResults {
|
|
198
199
|
}
|
199
200
|
}
|
200
201
|
render() {
|
201
|
-
return (h(Host, { key: '
|
202
|
+
return (h(Host, { key: 'e5124d09c5619d77f6debca38bd5059ecfb9dce5', class: {
|
202
203
|
'show-results': this.showResults,
|
203
|
-
|
204
|
+
'nano-results': true,
|
205
|
+
} }, h("div", { key: '773924ac30cd4e8c57d6767f96a8c9173d6e9ec6', class: "default" }, h("slot", { key: '5a330fe6afa15143c006fc3690d1ddb0ccf3bc8d' })), h("div", { key: '3a716202a7364efa1eeb90ea525670c4da5fc7e1', ref: (div) => (this.outputEle = div) }, h("slot", { key: 'af5860bd4dc7e2472d18f1b86175f5772bac426b', name: "start-output" }), h("slot", { key: '7b57ec404897b71f60a06ca661558624d5db1ac0', name: "result-output" }), h("div", { key: 'cff39c4ed229e1081f9160d8a447d56841209b4e', ref: (div) => (this.infiniteScrollBar = div) }), h("slot", { key: '79c19d45895d5f7a285e0beb640f84251d37b558', name: "end-output" }))));
|
204
206
|
}
|
205
207
|
static get is() { return "nano-algolia-results"; }
|
206
208
|
static get encapsulation() { return "shadow"; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"algolia-results.js","sourceRoot":"","sources":["../../../../src/components/algolia/algolia-results.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Watch,\n State,\n Build,\n EventEmitter,\n Event,\n Prop,\n readTask,\n} from '@stencil/core';\nimport { Wormhole, SearchChangeEvent } from './algolia-data';\nimport type {\n IndexResult,\n AlgoliaResultHit,\n PageChangeEventDetail,\n AlgoliaFacet,\n} from './algolia-interface';\n\n/**\n * Displays and syncs results from Algolia searches.\n * Must be nested within an nano-algolia component.\n * @slot start-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot start-output - A placeholder for template output.\n * @slot result-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot result-output - A placeholder for template output.\n * @slot end-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot end-output - A placeholder for template output.\n */\n@Component({\n tag: 'nano-algolia-results',\n shadow: true,\n})\nexport class AlgoliaResults {\n @Element() el: HTMLNanoAlgoliaResultsElement;\n\n private resultTpl: string;\n private resultTplSlot: HTMLElement;\n private startTpl: string;\n private startTplSlot: HTMLElement;\n private endTpl: string;\n private endTplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private outputEle: HTMLDivElement;\n private outputTo: HTMLElement;\n private startOutputSlot: HTMLElement;\n private endOutputSlot: HTMLElement;\n\n private io?: IntersectionObserver;\n private infiniteScrollBar: HTMLDivElement;\n private append: boolean = false;\n private shouldClear: boolean = true;\n private currHitNum: number = 0;\n\n @State() showResults: boolean = false;\n @State() tplRenderFn: (...args: any[]) => any;\n @State() results: AlgoliaResultHit[] = null;\n @State() indexResults: IndexResult = null;\n @State() resultsPage: number = 0;\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() facets: AlgoliaFacet;\n @State() isLoading: boolean = true;\n\n /**\n * Load and append pages automatically on scroll\n */\n @Prop() infiniteScroll: boolean = false;\n\n /**\n * Whether new pages loaded by pagination will replace or be appended to the results block\n * (this will be ignored if 'infiniteScroll' is set to true)\n */\n @Prop() appendPages: boolean = false;\n\n /**\n * Emitted when the page number changes\n */\n @Event() nanoPageChanged!: EventEmitter<PageChangeEventDetail>;\n\n /**\n * Emitted when templates are updated\n */\n @Event() nanoTplUpdated!: EventEmitter<HTMLNanoAlgoliaResultsElement>;\n\n // For append / infinite-scroll it's useful to have a universal index on render\n @Watch('results')\n addContentIndex() {\n this.shouldPageClear();\n if (this.shouldClear || this.resultsPage === 0) this.currHitNum = 0;\n if (this.indexResults && this.indexResults.results) {\n this.indexResults.results.map((res) => {\n (res as any)._uIndex = this.currHitNum++;\n });\n }\n }\n\n // Update content template and perhaps add IO for infinite scrolling\n @Watch('results')\n @Watch('tplRenderFn')\n resultsChange() {\n this.shouldPageClear();\n // console.log('going to do update', this.resultsPage, this.results.length);\n this.updateResultContent();\n this.infiniteScrollChange();\n }\n\n // We have a foot / head slot template.\n // Can be useful to display current filter / search meta\n @Watch('facets')\n headerFooterChange() {\n this.updateStartEndContent();\n }\n\n @Watch('appendPages')\n appendChange() {\n this.append = this.infiniteScroll ? true : this.appendPages;\n }\n\n @Watch('infiniteScroll')\n infiniteScrollChange() {\n this.append = this.infiniteScroll ? true : this.appendPages;\n if (this.infiniteScroll) this.attachIO();\n else this.detachIO();\n }\n\n @Watch('resultsPage')\n handlePageChage() {\n if (this.infiniteScroll) this.attachIO();\n else this.detachIO();\n }\n\n @Watch('isLoading')\n handleLoading() {\n if (!this.isLoading) this.infiniteScrollChange();\n }\n\n // Decide whether incoming content should clear or not.\n // if incoming change event is from a pagechange AND the current page is 0 OR appendPages option set...\n // Then leave up to the current, set append behaviour. Other clear it all out.\n private shouldPageClear() {\n this.shouldClear =\n this.changeEvent === SearchChangeEvent.Page ? !this.append : true;\n }\n\n // Called by IO. Emits page change event to parent which then iterated the global page count.\n private nextPage() {\n this.shouldClear = !this.append;\n this.nanoPageChanged.emit({ page: this.resultsPage + 1 });\n }\n\n private attachIO() {\n if (\n !this.infiniteScrollBar ||\n !this.infiniteScroll ||\n this.io ||\n !Build.isBrowser ||\n typeof window === 'undefined' ||\n !(window as any).IntersectionObserver\n )\n return;\n\n this.io = new (window as any).IntersectionObserver(\n async (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting || (data[1] && data[1].isIntersecting)) {\n this.nextPage();\n this.detachIO();\n }\n },\n { document, rootMargin: '100px', threshold: 1 }\n );\n this.io.observe(this.infiniteScrollBar);\n }\n\n private detachIO() {\n if (this.io) {\n this.io.disconnect();\n this.io = null;\n }\n }\n\n private updateStartEndContent() {\n // clear start slot if present\n if (this.startTpl && this.startOutputSlot) {\n this.startOutputSlot.innerHTML = this.tplRenderFn(\n this.startTpl,\n this.indexResults\n );\n }\n // clear end slot if present\n if (this.endOutputSlot && this.endTpl) {\n this.endOutputSlot.innerHTML = this.tplRenderFn(\n this.endTpl,\n this.indexResults\n );\n }\n this.nanoTplUpdated.emit(this.el);\n }\n\n private updateResultContent() {\n this.outputTo = this.outputSlot || this.outputEle;\n\n if (!this.resultTpl || !this.indexResults) return;\n\n // after filtering or new index - clear all content.\n // after pagination when the 'appendPages' set to true - don't clear results content\n if (this.shouldClear) this.outputTo.innerHTML = '';\n\n if (!this.tplRenderFn) return;\n\n const div = document.createElement('div');\n div.innerHTML = this.tplRenderFn(this.resultTpl, this.indexResults);\n\n Array.from(div.children).forEach((child) => {\n this.outputTo.appendChild(child);\n });\n\n this.shouldClear = true;\n this.nanoTplUpdated.emit(this.el);\n }\n\n connectedCallback() {\n readTask(() => {\n this.startTplSlot = this.el.querySelector('[slot=\"start-template\"]');\n this.startOutputSlot = this.el.querySelector('[slot=\"start-output\"]');\n if (this.startTplSlot) {\n this.startTpl = this.startTplSlot.innerHTML;\n this.startTpl = this.startTpl.replace(/=>/gm, '=>');\n }\n\n this.resultTplSlot = this.el.querySelector('[slot=\"result-template\"]');\n this.outputSlot = this.el.querySelector('[slot=\"result-output\"]');\n if (this.resultTplSlot) {\n this.resultTpl = this.resultTplSlot.innerHTML;\n this.resultTpl = this.resultTpl.replace(/=>/gm, '=>');\n }\n\n this.endTplSlot = this.el.querySelector('[slot=\"end-template\"]');\n this.endOutputSlot = this.el.querySelector('[slot=\"end-output\"]');\n if (this.endTplSlot) {\n this.endTpl = this.endTplSlot.innerHTML;\n this.endTpl = this.endTpl.replace(/=>/gm, '=>');\n }\n if (this.indexResults) {\n this.addContentIndex();\n this.updateResultContent();\n }\n });\n }\n\n componentDidLoad() {\n this.updateStartEndContent();\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n render() {\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n }}\n >\n <div class=\"default\">\n <slot />\n </div>\n <div ref={(div) => (this.outputEle = div)}>\n <slot name=\"start-output\" />\n <slot name=\"result-output\" />\n <div ref={(div) => (this.infiniteScrollBar = div)}></div>\n <slot name=\"end-output\" />\n </div>\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaResults, [\n 'indexResults',\n 'results',\n 'tplRenderFn',\n 'resultsPage',\n 'changeEvent',\n 'facets',\n 'isLoading',\n]);\n"]}
|
1
|
+
{"version":3,"file":"algolia-results.js","sourceRoot":"","sources":["../../../../src/components/algolia/algolia-results.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Watch,\n State,\n Build,\n EventEmitter,\n Event,\n Prop,\n readTask,\n} from '@stencil/core';\nimport { h } from '../../utils/renderer';\nimport { Wormhole, SearchChangeEvent } from './algolia-data';\nimport type {\n IndexResult,\n AlgoliaResultHit,\n PageChangeEventDetail,\n AlgoliaFacet,\n} from './algolia-interface';\n\n/**\n * Displays and syncs results from Algolia searches.\n * Must be nested within an nano-algolia component.\n * @slot start-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot start-output - A placeholder for template output.\n * @slot result-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot result-output - A placeholder for template output.\n * @slot end-template - Template string (format from nano-algolia 'tplEngine' property).\n * @slot end-output - A placeholder for template output.\n */\n@Component({\n tag: 'nano-algolia-results',\n shadow: true,\n})\nexport class AlgoliaResults {\n @Element() el: HTMLNanoAlgoliaResultsElement;\n\n private resultTpl: string;\n private resultTplSlot: HTMLElement;\n private startTpl: string;\n private startTplSlot: HTMLElement;\n private endTpl: string;\n private endTplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private outputEle: HTMLDivElement;\n private outputTo: HTMLElement;\n private startOutputSlot: HTMLElement;\n private endOutputSlot: HTMLElement;\n\n private io?: IntersectionObserver;\n private infiniteScrollBar: HTMLDivElement;\n private append: boolean = false;\n private shouldClear: boolean = true;\n private currHitNum: number = 0;\n\n @State() showResults: boolean = false;\n @State() tplRenderFn: (...args: any[]) => any;\n @State() results: AlgoliaResultHit[] = null;\n @State() indexResults: IndexResult = null;\n @State() resultsPage: number = 0;\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() facets: AlgoliaFacet;\n @State() isLoading: boolean = true;\n\n /**\n * Load and append pages automatically on scroll\n */\n @Prop() infiniteScroll: boolean = false;\n\n /**\n * Whether new pages loaded by pagination will replace or be appended to the results block\n * (this will be ignored if 'infiniteScroll' is set to true)\n */\n @Prop() appendPages: boolean = false;\n\n /**\n * Emitted when the page number changes\n */\n @Event() nanoPageChanged!: EventEmitter<PageChangeEventDetail>;\n\n /**\n * Emitted when templates are updated\n */\n @Event() nanoTplUpdated!: EventEmitter<HTMLNanoAlgoliaResultsElement>;\n\n // For append / infinite-scroll it's useful to have a universal index on render\n @Watch('results')\n addContentIndex() {\n this.shouldPageClear();\n if (this.shouldClear || this.resultsPage === 0) this.currHitNum = 0;\n if (this.indexResults && this.indexResults.results) {\n this.indexResults.results.map((res) => {\n (res as any)._uIndex = this.currHitNum++;\n });\n }\n }\n\n // Update content template and perhaps add IO for infinite scrolling\n @Watch('results')\n @Watch('tplRenderFn')\n resultsChange() {\n this.shouldPageClear();\n // console.log('going to do update', this.resultsPage, this.results.length);\n this.updateResultContent();\n this.infiniteScrollChange();\n }\n\n // We have a foot / head slot template.\n // Can be useful to display current filter / search meta\n @Watch('facets')\n headerFooterChange() {\n this.updateStartEndContent();\n }\n\n @Watch('appendPages')\n appendChange() {\n this.append = this.infiniteScroll ? true : this.appendPages;\n }\n\n @Watch('infiniteScroll')\n infiniteScrollChange() {\n this.append = this.infiniteScroll ? true : this.appendPages;\n if (this.infiniteScroll) this.attachIO();\n else this.detachIO();\n }\n\n @Watch('resultsPage')\n handlePageChage() {\n if (this.infiniteScroll) this.attachIO();\n else this.detachIO();\n }\n\n @Watch('isLoading')\n handleLoading() {\n if (!this.isLoading) this.infiniteScrollChange();\n }\n\n // Decide whether incoming content should clear or not.\n // if incoming change event is from a pagechange AND the current page is 0 OR appendPages option set...\n // Then leave up to the current, set append behaviour. Other clear it all out.\n private shouldPageClear() {\n this.shouldClear =\n this.changeEvent === SearchChangeEvent.Page ? !this.append : true;\n }\n\n // Called by IO. Emits page change event to parent which then iterated the global page count.\n private nextPage() {\n this.shouldClear = !this.append;\n this.nanoPageChanged.emit({ page: this.resultsPage + 1 });\n }\n\n private attachIO() {\n if (\n !this.infiniteScrollBar ||\n !this.infiniteScroll ||\n this.io ||\n !Build.isBrowser ||\n typeof window === 'undefined' ||\n !(window as any).IntersectionObserver\n )\n return;\n\n this.io = new (window as any).IntersectionObserver(\n async (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting || (data[1] && data[1].isIntersecting)) {\n this.nextPage();\n this.detachIO();\n }\n },\n { document, rootMargin: '100px', threshold: 1 }\n );\n this.io.observe(this.infiniteScrollBar);\n }\n\n private detachIO() {\n if (this.io) {\n this.io.disconnect();\n this.io = null;\n }\n }\n\n private updateStartEndContent() {\n // clear start slot if present\n if (this.startTpl && this.startOutputSlot) {\n this.startOutputSlot.innerHTML = this.tplRenderFn(\n this.startTpl,\n this.indexResults\n );\n }\n // clear end slot if present\n if (this.endOutputSlot && this.endTpl) {\n this.endOutputSlot.innerHTML = this.tplRenderFn(\n this.endTpl,\n this.indexResults\n );\n }\n this.nanoTplUpdated.emit(this.el);\n }\n\n private updateResultContent() {\n this.outputTo = this.outputSlot || this.outputEle;\n\n if (!this.resultTpl || !this.indexResults) return;\n\n // after filtering or new index - clear all content.\n // after pagination when the 'appendPages' set to true - don't clear results content\n if (this.shouldClear) this.outputTo.innerHTML = '';\n\n if (!this.tplRenderFn) return;\n\n const div = document.createElement('div');\n div.innerHTML = this.tplRenderFn(this.resultTpl, this.indexResults);\n\n Array.from(div.children).forEach((child) => {\n this.outputTo.appendChild(child);\n });\n\n this.shouldClear = true;\n this.nanoTplUpdated.emit(this.el);\n }\n\n connectedCallback() {\n readTask(() => {\n this.startTplSlot = this.el.querySelector('[slot=\"start-template\"]');\n this.startOutputSlot = this.el.querySelector('[slot=\"start-output\"]');\n if (this.startTplSlot) {\n this.startTpl = this.startTplSlot.innerHTML;\n this.startTpl = this.startTpl.replace(/=>/gm, '=>');\n }\n\n this.resultTplSlot = this.el.querySelector('[slot=\"result-template\"]');\n this.outputSlot = this.el.querySelector('[slot=\"result-output\"]');\n if (this.resultTplSlot) {\n this.resultTpl = this.resultTplSlot.innerHTML;\n this.resultTpl = this.resultTpl.replace(/=>/gm, '=>');\n }\n\n this.endTplSlot = this.el.querySelector('[slot=\"end-template\"]');\n this.endOutputSlot = this.el.querySelector('[slot=\"end-output\"]');\n if (this.endTplSlot) {\n this.endTpl = this.endTplSlot.innerHTML;\n this.endTpl = this.endTpl.replace(/=>/gm, '=>');\n }\n if (this.indexResults) {\n this.addContentIndex();\n this.updateResultContent();\n }\n });\n }\n\n componentDidLoad() {\n this.updateStartEndContent();\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n render() {\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'nano-results': true,\n }}\n >\n <div class=\"default\">\n <slot />\n </div>\n <div ref={(div) => (this.outputEle = div)}>\n <slot name=\"start-output\" />\n <slot name=\"result-output\" />\n <div ref={(div) => (this.infiniteScrollBar = div)}></div>\n <slot name=\"end-output\" />\n </div>\n </Host>\n );\n }\n}\n\nWormhole(AlgoliaResults, [\n 'indexResults',\n 'results',\n 'tplRenderFn',\n 'resultsPage',\n 'changeEvent',\n 'facets',\n 'isLoading',\n]);\n"]}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import {
|
4
|
+
import { Host, Build, writeTask, readTask, } from "@stencil/core";
|
5
5
|
import algoliasearch from "algoliasearch/dist/algoliasearch-lite.esm.browser";
|
6
6
|
import { getDirectChildren } from "../../utils/dom";
|
7
7
|
import { PromiseQueue } from "../../utils/promise-queue";
|
8
8
|
import { ComponentStore, } from "../../utils/store/component-store";
|
9
9
|
import { debounce } from "../../utils/throttle";
|
10
|
+
import { transformTag, h } from "../../utils/renderer";
|
10
11
|
import { Squirrel } from "./lib/template";
|
11
12
|
import { Universe, SearchChangeEvent } from "./algolia-data";
|
12
13
|
/**
|
@@ -186,7 +187,7 @@ export class Algolia {
|
|
186
187
|
// a child nano-algolia-... updated their template
|
187
188
|
onAllTplUpdate(ev) {
|
188
189
|
ev.stopPropagation();
|
189
|
-
if (ev.target.tagName === '
|
190
|
+
if (ev.target.tagName.toLowerCase() === transformTag('nano-algolia-results')) {
|
190
191
|
requestAnimationFrame(() => {
|
191
192
|
this.nanoNewResults.emit(this.indexResults);
|
192
193
|
});
|
@@ -591,7 +592,7 @@ export class Algolia {
|
|
591
592
|
this.placedAlgoliaEles = [];
|
592
593
|
// take out children algolia elements 'cos they have their own templates
|
593
594
|
// don't want to swap in their templates
|
594
|
-
Array.from(tmpCont.querySelectorAll('nano-algolia, nano-algolia-filter, nano-algolia-results')).forEach((el, i) => {
|
595
|
+
Array.from(tmpCont.querySelectorAll(`${transformTag('nano-algolia')}, ${transformTag('nano-algolia-filter')}, ${transformTag('nano-algolia-results')}`)).forEach((el, i) => {
|
595
596
|
const placeholder = document.createElement('div');
|
596
597
|
placeholder.dataset.placeholderId = i.toString();
|
597
598
|
placeholder.classList.add('nano-ele-placeholder');
|
@@ -634,12 +635,13 @@ export class Algolia {
|
|
634
635
|
this.tpl = this.tplSlot.innerHTML || this.tplSlot.innerText;
|
635
636
|
// get input field to listen to
|
636
637
|
if (this.slottedInput &&
|
637
|
-
(this.slottedInput.tagName.toLocaleLowerCase() ===
|
638
|
+
(this.slottedInput.tagName.toLocaleLowerCase() ===
|
639
|
+
transformTag('nano-input') ||
|
638
640
|
this.slottedInput instanceof HTMLInputElement)) {
|
639
641
|
this.inputField = this.slottedInput;
|
640
642
|
}
|
641
643
|
else if (this.slottedInput) {
|
642
|
-
this.inputField = this.slottedInput.querySelector('nano-input, input:not([type="radio"]):not([type="checkbox"])
|
644
|
+
this.inputField = this.slottedInput.querySelector(`${transformTag('nano-input')}, input:not([type="radio"]):not([type="checkbox"])`);
|
643
645
|
}
|
644
646
|
else
|
645
647
|
this.handleListenToChange();
|
@@ -682,13 +684,14 @@ export class Algolia {
|
|
682
684
|
globalStoreMethod: this.storeMethod,
|
683
685
|
isLoading: this.isLoading,
|
684
686
|
};
|
685
|
-
return (h(Host, { key: '
|
687
|
+
return (h(Host, { key: 'f0ae1895d779c2a59dd459fbc7cde8780b1ac9f8', class: {
|
686
688
|
'show-results': this.showResults,
|
687
689
|
'is-loading': this.isLoading,
|
688
|
-
|
690
|
+
'nano-algolia': true,
|
691
|
+
}, "aria-busy": this.isLoading }, this.hasLoadSlot && (h("div", { key: '15e48727d32a3afa360fec13edb8aca3d211737c', hidden: !this.isLoading }, h("slot", { key: 'a5ec5e6a5ec997540d2dd60fd95a8c82c0c506c2', name: "loader" }))), !this.hasLoadSlot && (h("div", { key: '96275ed0b3486691bc9f5154f5f115cd09274990', class: {
|
689
692
|
loader: true,
|
690
693
|
loading: this.isLoading,
|
691
|
-
} }, h("nano-spinner", { key: '
|
694
|
+
} }, h("nano-spinner", { key: 'd2b86328009cfdb943c5d702e55e9c51ae569f9d', overlay: true, type: "circle" }))), h(Universe.Provider, { key: 'e3465b7980720e2be4d481b7e71a7a033fe52ae1', state: wormholeState }, h("slot", { key: '161554c21e77aa7e662491e787c69d402d00035f', name: "search-input" }), h("div", { key: '4f1c30d75e84a609fc621afce96233bfd678518f', class: "results-container", "aria-live": "polite" }, h("div", { key: '1bce8a2a0c2cd7f71f64750f7c18ff63aefeadd1', ref: (div) => (this.resultsDiv = div), class: "results" }, h("slot", { key: '70582027504c1d2cba99f80e99d51d711247d0ab', name: "output" })))), h("div", { key: 'd4fcea375a1c86191135ba43f85e66e93b076d63', ref: (div) => (this.defaultDiv = div), class: "default", tabindex: "-1" }, h("slot", { key: '7e291158dfbcb83181bb91e0506eb0a1b6cfb13b' }))));
|
692
695
|
}
|
693
696
|
static get is() { return "nano-algolia"; }
|
694
697
|
static get encapsulation() { return "shadow"; }
|