@nanoporetech-digital/components 3.7.1 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/dist/cjs/{algolia-data-9152d0ef.js → algolia-data-fb13160a.js} +2 -2
- package/dist/cjs/{algolia-data-9152d0ef.js.map → algolia-data-fb13160a.js.map} +1 -1
- package/dist/cjs/{algoliasearch.umd-7ee60729.js → algoliasearch.umd-689c1560.js} +3 -3
- package/dist/cjs/{algoliasearch.umd-7ee60729.js.map → algoliasearch.umd-689c1560.js.map} +1 -1
- package/dist/cjs/{component-store-d7c8c326.js → component-store-b80bdb26.js} +25 -12
- package/dist/cjs/component-store-b80bdb26.js.map +1 -0
- package/dist/cjs/{dom-d7c33f11.js → dom-7acf7afd.js} +15 -15
- package/dist/cjs/dom-7acf7afd.js.map +1 -0
- package/dist/cjs/{form-control-57c71246.js → form-control-845951ac.js} +4 -4
- package/dist/cjs/form-control-845951ac.js.map +1 -0
- package/dist/{esm/global-8047b4ff.js → cjs/global-3a6a7873.js} +5 -14
- package/dist/cjs/global-3a6a7873.js.map +1 -0
- package/dist/cjs/{index-bb2a6ab8.js → index-5e11be36.js} +2 -2
- package/dist/cjs/{index-bb2a6ab8.js.map → index-5e11be36.js.map} +1 -1
- package/dist/cjs/{index-ece1cb9e.js → index-72ee0363.js} +2 -10
- package/dist/cjs/index-72ee0363.js.map +1 -0
- package/dist/cjs/{index-41582c2a.js → index-e1b5c3ea.js} +1438 -516
- package/dist/cjs/index-e1b5c3ea.js.map +1 -0
- package/dist/cjs/index.cjs.js +18 -35
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +5 -4
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/{modal-e4defcc3.js → modal-5884a6de.js} +3 -2
- package/dist/cjs/modal-5884a6de.js.map +1 -0
- package/dist/cjs/nano-accordion.cjs.entry.js +4 -7
- package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +25 -19
- package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +5 -5
- package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-input.cjs.entry.js +4 -4
- package/dist/cjs/nano-algolia-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +8 -8
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +52 -9
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +8 -8
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +8 -4
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +46 -36
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +6 -6
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +4 -4
- package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-demo.cjs.entry.js +13 -9
- package/dist/cjs/nano-demo.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +4 -4
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +6 -6
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +5 -5
- package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +9 -4
- package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +4 -3
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +5 -5
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +54 -67
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +54 -26
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +6 -4
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid_3.cjs.entry.js +8 -7
- package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +4 -2
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button.cjs.entry.js +2 -2
- package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +7 -14
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +19 -33
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +3 -3
- package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-progress-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/nano-progress-bar_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +4 -4
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +2 -2
- package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +18 -10
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +11 -21
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +3 -3
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +15 -13
- package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +6 -4
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +9 -3
- package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +18 -12
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +2 -2
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-820b04d5.js → nano-table-e76a8dde.js} +115 -150
- package/dist/cjs/nano-table-e76a8dde.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +3 -3
- package/dist/cjs/{popover-508bcedb.js → popover-088646b2.js} +61 -50
- package/dist/cjs/popover-088646b2.js.map +1 -0
- package/dist/cjs/{scroll-9bb5e060.js → scroll-a197d9c4.js} +2 -2
- package/dist/cjs/{scroll-9bb5e060.js.map → scroll-a197d9c4.js.map} +1 -1
- package/dist/cjs/{table.worker-9e238d16.js → table.worker-988d87da.js} +4 -4
- package/dist/cjs/table.worker-988d87da.js.map +1 -0
- package/dist/cjs/{theme-50275e1a.js → theme-9cbe28c5.js} +2 -7
- package/dist/cjs/theme-9cbe28c5.js.map +1 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion/accordion.js +1 -4
- package/dist/collection/components/accordion/accordion.js.map +1 -1
- package/dist/collection/components/alert/alert.css +4 -3
- package/dist/collection/components/alert/alert.helpers.js +6 -24
- package/dist/collection/components/alert/alert.helpers.js.map +1 -1
- package/dist/collection/components/alert/alert.js +19 -13
- package/dist/collection/components/alert/alert.js.map +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +2 -2
- package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
- package/dist/collection/components/algolia/algolia-input.js.map +1 -1
- package/dist/collection/components/algolia/algolia.css +2 -1
- package/dist/collection/components/algolia/algolia.js +3 -3
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox-group.css +16 -10
- package/dist/collection/components/checkbox/checkbox-group.js +91 -7
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +14 -12
- package/dist/collection/components/checkbox/checkbox.js +5 -5
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +39 -31
- 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 +3 -3
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +15 -11
- package/dist/collection/components/date-picker/date-picker.js +1 -1
- package/dist/collection/components/date-picker/date-picker.js.map +1 -1
- package/dist/collection/components/demo/demo.js +12 -8
- package/dist/collection/components/demo/demo.js.map +1 -1
- package/dist/collection/components/details/details.css +2 -1
- package/dist/collection/components/details/details.js +1 -1
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.css +8 -5
- package/dist/collection/components/dialog/dialog.helpers.js +3 -11
- package/dist/collection/components/dialog/dialog.helpers.js.map +1 -1
- package/dist/collection/components/drawer/drawer.css +2 -2
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown/dropdown.js +6 -1
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +2 -1
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +35 -25
- package/dist/collection/components/file-upload/file-upload.js +4 -4
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/form-control/form-control.js +2 -2
- package/dist/collection/components/form-control/form-control.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav-user-profile.js +6 -7
- package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +61 -11
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/style/global-nav.css +92 -48
- package/dist/collection/components/global-search-results/global-search-results.css +83 -44
- package/dist/collection/components/global-search-results/global-search-results.js +4 -2
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/grid/grid-item.css +1 -1
- package/dist/collection/components/grid/grid.css +1 -0
- package/dist/collection/components/grid/grid.js +2 -0
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/hero/hero.css +110 -18
- package/dist/collection/components/hero/hero.js +2 -0
- package/dist/collection/components/hero/hero.js.map +1 -1
- package/dist/collection/components/icon/icon.css +2 -2
- package/dist/collection/components/icon/icon.js +3 -10
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/icon-button/icon-button.css +1 -1
- package/dist/collection/components/img/img.css +0 -1
- package/dist/collection/components/img/img.js +3 -4
- package/dist/collection/components/img/img.js.map +1 -1
- package/dist/collection/components/input/input.css +54 -32
- package/dist/collection/components/input/input.js +14 -28
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/menu/menu.js +4 -2
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.css +20 -13
- package/dist/collection/components/menu-drawer/menu-drawer.js +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.css +31 -16
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/option/option.css +4 -2
- package/dist/collection/components/progress-bar/progress-bar.css +4 -4
- package/dist/collection/components/range/range.css +11 -9
- package/dist/collection/components/rating/rating.css +9 -5
- package/dist/collection/components/resize-observe/resize-observe.js +17 -6
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +59 -34
- package/dist/collection/components/select/select.js +42 -55
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/skeleton/skeleton.css +5 -5
- package/dist/collection/components/slides/slides.css +4 -2
- package/dist/collection/components/slides/slides.js +9 -19
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/spinner/spinner.css +13 -8
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/spinner/spinner.js.map +1 -1
- package/dist/collection/components/split-pane/split-pane.css +1 -1
- package/dist/collection/components/split-pane/split-pane.js +13 -11
- package/dist/collection/components/split-pane/split-pane.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +4 -2
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table.cell.js +8 -8
- package/dist/collection/components/table/table.cell.js.map +1 -1
- package/dist/collection/components/table/table.css +46 -25
- package/dist/collection/components/table/table.header.js +6 -19
- package/dist/collection/components/table/table.header.js.map +1 -1
- package/dist/collection/components/table/table.js +85 -93
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.row.js +8 -8
- package/dist/collection/components/table/table.row.js.map +1 -1
- package/dist/collection/components/table/table.store.js +2 -1
- package/dist/collection/components/table/table.store.js.map +1 -1
- package/dist/collection/components/table/table.utils.js +8 -7
- package/dist/collection/components/table/table.utils.js.map +1 -1
- package/dist/collection/components/tabs/tab-content.css +7 -2
- package/dist/collection/components/tabs/tab-content.js +12 -1
- package/dist/collection/components/tabs/tab-content.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.css +13 -10
- package/dist/collection/components/tabs/tab-group.js +17 -7
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.css +21 -12
- package/dist/collection/components/tooltip/tooltip.css +25 -16
- package/dist/collection/global/script/global.js +2 -13
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/index.js +17 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/dom.js +16 -15
- package/dist/collection/utils/dom.js.map +1 -1
- package/dist/collection/utils/fetch.js +15 -12
- package/dist/collection/utils/fetch.js.map +1 -1
- package/dist/collection/utils/gesture/index.js +1 -9
- package/dist/collection/utils/gesture/index.js.map +1 -1
- package/dist/collection/utils/modal.js +2 -1
- package/dist/collection/utils/modal.js.map +1 -1
- package/dist/collection/utils/store/get-set.js +1 -1
- package/dist/collection/utils/store/get-set.js.map +1 -1
- package/dist/collection/utils/testing/index.js +1 -0
- package/dist/collection/utils/testing/index.js.map +1 -1
- package/dist/collection/utils/theme.js +1 -6
- package/dist/collection/utils/theme.js.map +1 -1
- package/dist/components/algolia.js +3 -3
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/algoliasearch.umd.js +2 -2
- package/dist/components/algoliasearch.umd.js.map +1 -1
- package/dist/components/component-store.js +23 -10
- package/dist/components/component-store.js.map +1 -1
- package/dist/components/datalist.js +39 -31
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dom.js +17 -15
- package/dist/components/dom.js.map +1 -1
- package/dist/components/dropdown.js +7 -2
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/form-control.js +2 -2
- package/dist/components/form-control.js.map +1 -1
- package/dist/components/global-nav-user-profile.js +4 -3
- package/dist/components/global-nav-user-profile.js.map +1 -1
- package/dist/components/grid-item.js +1 -1
- package/dist/components/grid-item.js.map +1 -1
- package/dist/components/grid.js +3 -1
- package/dist/components/grid.js.map +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/icon.js +4 -11
- package/dist/components/icon.js.map +1 -1
- package/dist/components/img.js +4 -5
- package/dist/components/img.js.map +1 -1
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.js +23 -52
- package/dist/components/index.js.map +1 -1
- package/dist/components/index3.js +635 -1069
- package/dist/components/index3.js.map +1 -1
- package/dist/components/input.js +15 -29
- package/dist/components/input.js.map +1 -1
- package/dist/components/menu.js +4 -2
- package/dist/components/menu.js.map +1 -1
- package/dist/components/modal.js +2 -1
- package/dist/components/modal.js.map +1 -1
- package/dist/components/nano-accordion.js +1 -4
- package/dist/components/nano-accordion.js.map +1 -1
- package/dist/components/nano-alert.js +20 -14
- package/dist/components/nano-alert.js.map +1 -1
- package/dist/components/nano-algolia-filter.js +2 -2
- package/dist/components/nano-algolia-filter.js.map +1 -1
- package/dist/components/nano-algolia-input.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +53 -9
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-checkbox.js +6 -6
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/nano-date-input.js +4 -4
- package/dist/components/nano-date-input.js.map +1 -1
- package/dist/components/nano-demo.js +12 -8
- package/dist/components/nano-demo.js.map +1 -1
- package/dist/components/nano-details.js +2 -2
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-dialog.js +1 -1
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-drawer.js +1 -1
- package/dist/components/nano-drawer.js.map +1 -1
- package/dist/components/nano-field-validator.js +2 -1
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-file-upload.js +4 -4
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/nano-global-nav.js +51 -22
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +5 -3
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-hero.js +3 -1
- package/dist/components/nano-hero.js.map +1 -1
- package/dist/components/nano-menu-drawer.js +2 -2
- package/dist/components/nano-menu-drawer.js.map +1 -1
- package/dist/components/nano-range.js +2 -2
- package/dist/components/nano-range.js.map +1 -1
- package/dist/components/nano-rating.js +1 -1
- package/dist/components/nano-rating.js.map +1 -1
- package/dist/components/nano-slides.js +10 -20
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-split-pane.js +14 -12
- package/dist/components/nano-split-pane.js.map +1 -1
- package/dist/components/nano-tab-content.js +10 -3
- package/dist/components/nano-tab-content.js.map +1 -1
- package/dist/components/nano-tab-group.js +18 -8
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +1 -1
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nav-item.js +5 -5
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/option.js +1 -1
- package/dist/components/option.js.map +1 -1
- package/dist/components/popover.js +60 -49
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress-bar.js +1 -1
- package/dist/components/progress-bar.js.map +1 -1
- package/dist/components/resize-observe.js +16 -8
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +43 -56
- package/dist/components/select.js.map +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/spinner.js +2 -2
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/sticker.js +4 -2
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/table.js +117 -152
- package/dist/components/table.js.map +1 -1
- package/dist/components/theme.js +1 -6
- package/dist/components/theme.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/esm/{algolia-data-b5cd0c58.js → algolia-data-c4ed188c.js} +2 -2
- package/dist/esm/{algolia-data-b5cd0c58.js.map → algolia-data-c4ed188c.js.map} +1 -1
- package/dist/esm/{algoliasearch.umd-86359963.js → algoliasearch.umd-4f7efa84.js} +3 -3
- package/dist/esm/{algoliasearch.umd-86359963.js.map → algoliasearch.umd-4f7efa84.js.map} +1 -1
- package/dist/esm/{component-store-ec512820.js → component-store-6eccd724.js} +25 -12
- package/dist/esm/component-store-6eccd724.js.map +1 -0
- package/dist/esm/{dom-d3ad49e2.js → dom-311c9e1e.js} +15 -15
- package/dist/esm/dom-311c9e1e.js.map +1 -0
- package/dist/esm/{form-control-84bac7a2.js → form-control-3284c2c9.js} +4 -4
- package/dist/esm/form-control-3284c2c9.js.map +1 -0
- package/dist/{cjs/global-989678ec.js → esm/global-f6e05656.js} +3 -16
- package/dist/esm/global-f6e05656.js.map +1 -0
- package/dist/esm/{index-c752dae1.js → index-38484737.js} +2 -2
- package/dist/esm/{index-c752dae1.js.map → index-38484737.js.map} +1 -1
- package/dist/esm/{index-3c280603.js → index-b4e277ad.js} +1438 -517
- package/dist/esm/index-b4e277ad.js.map +1 -0
- package/dist/{components/index4.js → esm/index-f626f476.js} +2 -10
- package/dist/esm/index-f626f476.js.map +1 -0
- package/dist/esm/index.js +18 -36
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +5 -4
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/{modal-5c9ce466.js → modal-1f3223cd.js} +3 -2
- package/dist/esm/modal-1f3223cd.js.map +1 -0
- package/dist/esm/nano-accordion.entry.js +4 -7
- package/dist/esm/nano-accordion.entry.js.map +1 -1
- package/dist/esm/nano-alert.entry.js +25 -19
- package/dist/esm/nano-alert.entry.js.map +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +5 -5
- package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm/nano-algolia-input.entry.js +4 -4
- package/dist/esm/nano-algolia-input.entry.js.map +1 -1
- package/dist/esm/nano-algolia-pagination.entry.js +2 -2
- package/dist/esm/nano-algolia-results.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +8 -8
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-aspect-ratio.entry.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +52 -9
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-checkbox.entry.js +8 -8
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +5 -4
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +46 -36
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +6 -6
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker.entry.js +4 -4
- package/dist/esm/nano-date-picker.entry.js.map +1 -1
- package/dist/esm/nano-demo.entry.js +13 -9
- package/dist/esm/nano-demo.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +4 -4
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +6 -6
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +5 -5
- package/dist/esm/nano-drawer.entry.js.map +1 -1
- package/dist/esm/nano-dropdown.entry.js +9 -4
- package/dist/esm/nano-dropdown.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +4 -3
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-file-upload.entry.js +5 -5
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +54 -67
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +54 -26
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +6 -4
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-grid_3.entry.js +8 -7
- package/dist/esm/nano-grid_3.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +4 -2
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button.entry.js +2 -2
- package/dist/esm/nano-icon-button.entry.js.map +1 -1
- package/dist/esm/nano-icon.entry.js +7 -14
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +19 -33
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +3 -3
- package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm/nano-progress-bar_2.entry.js +4 -4
- package/dist/esm/nano-progress-bar_2.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +4 -4
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-rating.entry.js +2 -2
- package/dist/esm/nano-rating.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +18 -10
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/nano-slides.entry.js +11 -21
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-spinner.entry.js +3 -3
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +15 -13
- package/dist/esm/nano-split-pane.entry.js.map +1 -1
- package/dist/esm/nano-sticker.entry.js +6 -4
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-content.entry.js +9 -3
- package/dist/esm/nano-tab-content.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +18 -12
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +2 -2
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-1f4fe4ad.js → nano-table-5ff91f0f.js} +115 -150
- package/dist/esm/nano-table-5ff91f0f.js.map +1 -0
- package/dist/esm/nano-table.entry.js +3 -3
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/{popover-e748bb61.js → popover-02e6714d.js} +61 -50
- package/dist/esm/popover-02e6714d.js.map +1 -0
- package/dist/esm/{scroll-a1e59d8c.js → scroll-e5825d8d.js} +2 -2
- package/dist/esm/{scroll-a1e59d8c.js.map → scroll-e5825d8d.js.map} +1 -1
- package/dist/esm/{table.worker-ddbd23c3.js → table.worker-5c1bb1ce.js} +4 -4
- package/dist/esm/table.worker-5c1bb1ce.js.map +1 -0
- package/dist/esm/{theme-931bd452.js → theme-82feb8cf.js} +2 -7
- package/dist/esm/theme-82feb8cf.js.map +1 -0
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/index.esm.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/{p-1a8e60c4.entry.js → p-0411f019.entry.js} +2 -2
- package/dist/nano-components/p-0411f019.entry.js.map +1 -0
- package/dist/nano-components/p-13b2d70c.entry.js +5 -0
- package/dist/nano-components/p-13b2d70c.entry.js.map +1 -0
- package/dist/nano-components/p-167b9165.js.map +1 -1
- package/dist/nano-components/p-1d21b2ce.entry.js +5 -0
- package/dist/nano-components/p-1d21b2ce.entry.js.map +1 -0
- package/dist/nano-components/p-2155fc2c.js.map +1 -1
- package/dist/nano-components/p-257432ff.js +5 -0
- package/dist/nano-components/p-257432ff.js.map +1 -0
- package/dist/nano-components/p-264903b5.entry.js +5 -0
- package/dist/nano-components/p-264903b5.entry.js.map +1 -0
- package/dist/nano-components/p-320366a2.entry.js +5 -0
- package/dist/nano-components/p-320366a2.entry.js.map +1 -0
- package/dist/nano-components/p-364434b4.entry.js +5 -0
- package/dist/nano-components/p-364434b4.entry.js.map +1 -0
- package/dist/nano-components/{p-3f25fc76.entry.js → p-36d5a41d.entry.js} +2 -2
- package/dist/nano-components/p-36d5a41d.entry.js.map +1 -0
- package/dist/nano-components/{p-1e709f87.entry.js → p-371fe61d.entry.js} +2 -2
- package/dist/nano-components/p-371fe61d.entry.js.map +1 -0
- package/dist/nano-components/p-3d658ce2.entry.js +5 -0
- package/dist/nano-components/p-3d658ce2.entry.js.map +1 -0
- package/dist/nano-components/p-3e95778d.entry.js +5 -0
- package/dist/nano-components/p-3e95778d.entry.js.map +1 -0
- package/dist/nano-components/p-400d698f.entry.js +5 -0
- package/dist/nano-components/p-400d698f.entry.js.map +1 -0
- package/dist/nano-components/p-411bb8f1.js +5 -0
- package/dist/nano-components/p-411bb8f1.js.map +1 -0
- package/dist/nano-components/p-41811365.js +5 -0
- package/dist/nano-components/p-41811365.js.map +1 -0
- package/dist/nano-components/p-45abbbdd.js.map +1 -1
- package/dist/nano-components/{p-885b6950.js → p-45b7682a.js} +2 -2
- package/dist/nano-components/p-45b7682a.js.map +1 -0
- package/dist/nano-components/p-4b1d73e9.entry.js +5 -0
- package/dist/nano-components/p-4b1d73e9.entry.js.map +1 -0
- package/dist/nano-components/{p-69e5a37d.entry.js → p-4e104cb1.entry.js} +2 -2
- package/dist/nano-components/p-4e104cb1.entry.js.map +1 -0
- package/dist/nano-components/p-51bc8b59.js +5 -0
- package/dist/nano-components/p-51bc8b59.js.map +1 -0
- package/dist/nano-components/p-5a466c9f.entry.js +5 -0
- package/dist/nano-components/p-5a466c9f.entry.js.map +1 -0
- package/dist/nano-components/{p-bd05b3aa.entry.js → p-5f1b94f0.entry.js} +2 -2
- package/dist/nano-components/{p-bd05b3aa.entry.js.map → p-5f1b94f0.entry.js.map} +1 -1
- package/dist/nano-components/p-60823325.entry.js +5 -0
- package/dist/nano-components/p-60823325.entry.js.map +1 -0
- package/dist/nano-components/p-6760e54a.entry.js +5 -0
- package/dist/nano-components/p-6760e54a.entry.js.map +1 -0
- package/dist/nano-components/p-69774e99.entry.js +5 -0
- package/dist/nano-components/p-69774e99.entry.js.map +1 -0
- package/dist/nano-components/p-69a3e911.js.map +1 -1
- package/dist/nano-components/p-6bca2d00.entry.js +5 -0
- package/dist/nano-components/p-6bca2d00.entry.js.map +1 -0
- package/dist/nano-components/p-74a7fc4f.js.map +1 -1
- package/dist/nano-components/{p-dba8a88d.entry.js → p-78169835.entry.js} +2 -2
- package/dist/nano-components/p-78169835.entry.js.map +1 -0
- package/dist/nano-components/p-817eda34.entry.js +5 -0
- package/dist/nano-components/p-817eda34.entry.js.map +1 -0
- package/dist/nano-components/p-866c73c0.entry.js +5 -0
- package/dist/nano-components/p-866c73c0.entry.js.map +1 -0
- package/dist/nano-components/p-87a76a81.entry.js +5 -0
- package/dist/nano-components/{p-41addb3a.entry.js.map → p-87a76a81.entry.js.map} +1 -1
- package/dist/nano-components/p-8907dd24.entry.js +5 -0
- package/dist/nano-components/p-8907dd24.entry.js.map +1 -0
- package/dist/nano-components/p-90365d7b.entry.js +5 -0
- package/dist/nano-components/p-90365d7b.entry.js.map +1 -0
- package/dist/nano-components/p-909a424c.js +5 -0
- package/dist/nano-components/p-909a424c.js.map +1 -0
- package/dist/nano-components/p-9746b0a5.js.map +1 -1
- package/dist/nano-components/p-9cf5fda3.entry.js +5 -0
- package/dist/nano-components/p-9cf5fda3.entry.js.map +1 -0
- package/dist/nano-components/p-9fcd383f.entry.js +5 -0
- package/dist/nano-components/p-9fcd383f.entry.js.map +1 -0
- package/dist/nano-components/p-9fda481b.entry.js +5 -0
- package/dist/nano-components/p-9fda481b.entry.js.map +1 -0
- package/dist/nano-components/p-abd6b774.entry.js +5 -0
- package/dist/nano-components/p-abd6b774.entry.js.map +1 -0
- package/dist/nano-components/p-b933f3c8.js.map +1 -1
- package/dist/nano-components/{p-2828788c.js → p-bb07c3d0.js} +2 -2
- package/dist/nano-components/p-bb07c3d0.js.map +1 -0
- package/dist/nano-components/p-bb6f7c39.js +5 -0
- package/dist/nano-components/p-bb6f7c39.js.map +1 -0
- package/dist/nano-components/p-bf91c50e.js +6 -0
- package/dist/nano-components/p-bf91c50e.js.map +1 -0
- package/dist/nano-components/{p-b40eedcb.entry.js → p-bfbfec85.entry.js} +2 -2
- package/dist/nano-components/p-bfbfec85.entry.js.map +1 -0
- package/dist/nano-components/{p-447a5910.entry.js → p-c0681b2b.entry.js} +2 -2
- package/dist/nano-components/p-c0681b2b.entry.js.map +1 -0
- package/dist/nano-components/p-c0ca353b.entry.js +5 -0
- package/dist/nano-components/p-c0ca353b.entry.js.map +1 -0
- package/dist/nano-components/p-c4e8d584.entry.js +5 -0
- package/dist/nano-components/p-c4e8d584.entry.js.map +1 -0
- package/dist/nano-components/p-cecb9af1.js.map +1 -1
- package/dist/nano-components/p-d4f6ec9f.js +5 -0
- package/dist/nano-components/p-d4f6ec9f.js.map +1 -0
- package/dist/nano-components/p-d753f35a.entry.js +5 -0
- package/dist/nano-components/p-d753f35a.entry.js.map +1 -0
- package/dist/nano-components/{p-651b3264.js → p-d7ff8f12.js} +2 -2
- package/dist/nano-components/p-d7ff8f12.js.map +1 -0
- package/dist/nano-components/{p-0582afcc.js → p-d92b762b.js} +2 -2
- package/dist/nano-components/p-d92b762b.js.map +1 -0
- package/dist/nano-components/p-de25ba80.entry.js +5 -0
- package/dist/nano-components/p-de25ba80.entry.js.map +1 -0
- package/dist/nano-components/{p-c9a7c7ea.js → p-e04f2333.js} +2 -2
- package/dist/nano-components/p-e04f2333.js.map +1 -0
- package/dist/nano-components/p-e19d6a92.entry.js +5 -0
- package/dist/nano-components/p-e19d6a92.entry.js.map +1 -0
- package/dist/nano-components/{p-63834d50.js → p-ed2e6f32.js} +2 -2
- package/dist/nano-components/p-ed2e6f32.js.map +1 -0
- package/dist/nano-components/p-ed69b27b.entry.js +5 -0
- package/dist/nano-components/p-ed69b27b.entry.js.map +1 -0
- package/dist/nano-components/{p-a0b93616.js → p-ed6adde2.js} +3 -3
- package/dist/nano-components/p-ed6adde2.js.map +1 -0
- package/dist/nano-components/p-ee045579.js.map +1 -1
- package/dist/nano-components/{p-151aad1e.entry.js → p-f2875bf0.entry.js} +4 -4
- package/dist/nano-components/p-f2875bf0.entry.js.map +1 -0
- package/dist/nano-components/p-f28c802d.entry.js +5 -0
- package/dist/nano-components/p-f28c802d.entry.js.map +1 -0
- package/dist/nano-components/{p-a2d0d7b9.entry.js → p-f47776fd.entry.js} +2 -2
- package/dist/nano-components/p-f47776fd.entry.js.map +1 -0
- package/dist/nano-components/p-f8f89998.js.map +1 -1
- package/dist/nano-components/p-fccd59e4.entry.js +5 -0
- package/dist/nano-components/p-fccd59e4.entry.js.map +1 -0
- package/dist/nano-components/p-fe1446cd.entry.js +5 -0
- package/dist/nano-components/p-fe1446cd.entry.js.map +1 -0
- package/dist/themes/london-calling.css +1 -1
- package/dist/themes/london-calling.css.map +1 -1
- package/dist/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/alert/alert-interface.d.ts +1 -1
- package/dist/types/components/algolia/algolia-input.d.ts +1 -1
- package/dist/types/components/algolia/algolia.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox-group.d.ts +11 -0
- package/dist/types/components/date-picker/date-picker-interface.d.ts +2 -2
- package/dist/types/components/date-picker/duet-date-picker/date-adapter.d.ts +3 -3
- package/dist/types/components/date-picker/duet-date-picker/date-localization.d.ts +3 -3
- package/dist/types/components/date-picker/duet-date-picker/date-picker-day.d.ts +1 -1
- package/dist/types/components/date-picker/duet-date-picker/date-picker-month.d.ts +1 -1
- package/dist/types/components/field-validator/field-validator-interface.d.ts +4 -4
- package/dist/types/components/file-upload/file-upload.d.ts +1 -1
- package/dist/types/components/global-nav/global-nav.d.ts +12 -6
- package/dist/types/components/icon/icon.d.ts +3 -3
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/nav-item/nav-item.d.ts +1 -1
- package/dist/types/components/range/range-interface.d.ts +2 -2
- package/dist/types/components/resize-observe/resize-observe.d.ts +1 -0
- package/dist/types/components/slides/slides-interface.d.ts +2 -2
- package/dist/types/components/slides/slides.d.ts +0 -2
- package/dist/types/components/table/table.cell.d.ts +1 -1
- package/dist/types/components/table/table.d.ts +9 -14
- package/dist/types/components/table/table.header.d.ts +1 -1
- package/dist/types/components/table/table.row.d.ts +2 -2
- package/dist/types/components/table/table.utils.d.ts +2 -1
- package/dist/types/components/tabs/tab-content.d.ts +2 -0
- package/dist/types/components.d.ts +829 -9
- package/dist/types/index.d.ts +5 -0
- package/dist/types/stencil-public-runtime.d.ts +48 -3
- package/dist/types/utils/dom.d.ts +9 -0
- package/dist/types/utils/gesture/index.d.ts +1 -1
- package/dist/types/utils/popover.d.ts +1 -1
- package/dist/types/utils/store/component-store.d.ts +2 -2
- package/dist/types/utils/testing/index.d.ts +1 -1
- package/docs-json.json +89 -50
- package/docs-vscode.json +8 -4
- package/hydrate/index.d.ts +853 -0
- package/{dist/custom-elements → hydrate}/index.js +11476 -7950
- package/hydrate/package.json +6 -0
- package/loader/index.d.ts +9 -0
- package/package.json +24 -16
- package/dist/cjs/component-store-d7c8c326.js.map +0 -1
- package/dist/cjs/dom-d7c33f11.js.map +0 -1
- package/dist/cjs/form-control-57c71246.js.map +0 -1
- package/dist/cjs/global-989678ec.js.map +0 -1
- package/dist/cjs/index-41582c2a.js.map +0 -1
- package/dist/cjs/index-75b61776.js +0 -1077
- package/dist/cjs/index-75b61776.js.map +0 -1
- package/dist/cjs/index-ece1cb9e.js.map +0 -1
- package/dist/cjs/modal-e4defcc3.js.map +0 -1
- package/dist/cjs/nano-table-820b04d5.js.map +0 -1
- package/dist/cjs/popover-508bcedb.js.map +0 -1
- package/dist/cjs/table.worker-9e238d16.js.map +0 -1
- package/dist/cjs/theme-50275e1a.js.map +0 -1
- package/dist/components/index4.js.map +0 -1
- package/dist/custom-elements/index.d.ts +0 -339
- package/dist/custom-elements/index.js.map +0 -1
- package/dist/esm/component-store-ec512820.js.map +0 -1
- package/dist/esm/dom-d3ad49e2.js.map +0 -1
- package/dist/esm/form-control-84bac7a2.js.map +0 -1
- package/dist/esm/global-8047b4ff.js.map +0 -1
- package/dist/esm/index-3bbaffe4.js +0 -1075
- package/dist/esm/index-3bbaffe4.js.map +0 -1
- package/dist/esm/index-3c280603.js.map +0 -1
- package/dist/esm/index-dc076ea6.js +0 -649
- package/dist/esm/index-dc076ea6.js.map +0 -1
- package/dist/esm/modal-5c9ce466.js.map +0 -1
- package/dist/esm/nano-table-1f4fe4ad.js.map +0 -1
- package/dist/esm/popover-e748bb61.js.map +0 -1
- package/dist/esm/table.worker-ddbd23c3.js.map +0 -1
- package/dist/esm/theme-931bd452.js.map +0 -1
- package/dist/nano-components/p-0582afcc.js.map +0 -1
- package/dist/nano-components/p-135fed16.entry.js +0 -5
- package/dist/nano-components/p-135fed16.entry.js.map +0 -1
- package/dist/nano-components/p-151aad1e.entry.js.map +0 -1
- package/dist/nano-components/p-15543295.entry.js +0 -5
- package/dist/nano-components/p-15543295.entry.js.map +0 -1
- package/dist/nano-components/p-1a8e60c4.entry.js.map +0 -1
- package/dist/nano-components/p-1e709f87.entry.js.map +0 -1
- package/dist/nano-components/p-1f347342.entry.js +0 -5
- package/dist/nano-components/p-1f347342.entry.js.map +0 -1
- package/dist/nano-components/p-1fe12320.js +0 -6
- package/dist/nano-components/p-1fe12320.js.map +0 -1
- package/dist/nano-components/p-23575705.entry.js +0 -5
- package/dist/nano-components/p-23575705.entry.js.map +0 -1
- package/dist/nano-components/p-2828788c.js.map +0 -1
- package/dist/nano-components/p-284dd9a2.entry.js +0 -5
- package/dist/nano-components/p-284dd9a2.entry.js.map +0 -1
- package/dist/nano-components/p-2a97ef51.entry.js +0 -5
- package/dist/nano-components/p-2a97ef51.entry.js.map +0 -1
- package/dist/nano-components/p-36842a50.entry.js +0 -5
- package/dist/nano-components/p-36842a50.entry.js.map +0 -1
- package/dist/nano-components/p-3a1026d1.entry.js +0 -5
- package/dist/nano-components/p-3a1026d1.entry.js.map +0 -1
- package/dist/nano-components/p-3f25fc76.entry.js.map +0 -1
- package/dist/nano-components/p-41addb3a.entry.js +0 -5
- package/dist/nano-components/p-447a5910.entry.js.map +0 -1
- package/dist/nano-components/p-4b69178e.entry.js +0 -5
- package/dist/nano-components/p-4b69178e.entry.js.map +0 -1
- package/dist/nano-components/p-559a6492.entry.js +0 -5
- package/dist/nano-components/p-559a6492.entry.js.map +0 -1
- package/dist/nano-components/p-5d149792.entry.js +0 -5
- package/dist/nano-components/p-5d149792.entry.js.map +0 -1
- package/dist/nano-components/p-63834d50.js.map +0 -1
- package/dist/nano-components/p-651b3264.js.map +0 -1
- package/dist/nano-components/p-69e5a37d.entry.js.map +0 -1
- package/dist/nano-components/p-6ad194e4.entry.js +0 -5
- package/dist/nano-components/p-6ad194e4.entry.js.map +0 -1
- package/dist/nano-components/p-6cb77d5c.entry.js +0 -5
- package/dist/nano-components/p-6cb77d5c.entry.js.map +0 -1
- package/dist/nano-components/p-73860775.js +0 -5
- package/dist/nano-components/p-73860775.js.map +0 -1
- package/dist/nano-components/p-77cad8d1.js +0 -5
- package/dist/nano-components/p-77cad8d1.js.map +0 -1
- package/dist/nano-components/p-793588d1.js +0 -5
- package/dist/nano-components/p-793588d1.js.map +0 -1
- package/dist/nano-components/p-7b3638b7.js +0 -5
- package/dist/nano-components/p-7b3638b7.js.map +0 -1
- package/dist/nano-components/p-845ae77e.js +0 -5
- package/dist/nano-components/p-845ae77e.js.map +0 -1
- package/dist/nano-components/p-885b6950.js.map +0 -1
- package/dist/nano-components/p-8d747891.js +0 -5
- package/dist/nano-components/p-8d747891.js.map +0 -1
- package/dist/nano-components/p-9059c8c1.entry.js +0 -5
- package/dist/nano-components/p-9059c8c1.entry.js.map +0 -1
- package/dist/nano-components/p-92504f7f.entry.js +0 -5
- package/dist/nano-components/p-92504f7f.entry.js.map +0 -1
- package/dist/nano-components/p-99fbae74.entry.js +0 -5
- package/dist/nano-components/p-99fbae74.entry.js.map +0 -1
- package/dist/nano-components/p-9a4297e1.entry.js +0 -5
- package/dist/nano-components/p-9a4297e1.entry.js.map +0 -1
- package/dist/nano-components/p-9eeed8f5.entry.js +0 -5
- package/dist/nano-components/p-9eeed8f5.entry.js.map +0 -1
- package/dist/nano-components/p-a0b93616.js.map +0 -1
- package/dist/nano-components/p-a183e3c7.entry.js +0 -5
- package/dist/nano-components/p-a183e3c7.entry.js.map +0 -1
- package/dist/nano-components/p-a2d0d7b9.entry.js.map +0 -1
- package/dist/nano-components/p-a5abfed9.entry.js +0 -5
- package/dist/nano-components/p-a5abfed9.entry.js.map +0 -1
- package/dist/nano-components/p-b25e79b8.entry.js +0 -5
- package/dist/nano-components/p-b25e79b8.entry.js.map +0 -1
- package/dist/nano-components/p-b40eedcb.entry.js.map +0 -1
- package/dist/nano-components/p-b55ffa92.entry.js +0 -5
- package/dist/nano-components/p-b55ffa92.entry.js.map +0 -1
- package/dist/nano-components/p-b87539f0.entry.js +0 -5
- package/dist/nano-components/p-b87539f0.entry.js.map +0 -1
- package/dist/nano-components/p-c9a7c7ea.js.map +0 -1
- package/dist/nano-components/p-ca567f01.entry.js +0 -5
- package/dist/nano-components/p-ca567f01.entry.js.map +0 -1
- package/dist/nano-components/p-cc5e7acb.entry.js +0 -5
- package/dist/nano-components/p-cc5e7acb.entry.js.map +0 -1
- package/dist/nano-components/p-d5303933.entry.js +0 -5
- package/dist/nano-components/p-d5303933.entry.js.map +0 -1
- package/dist/nano-components/p-d565991d.entry.js +0 -5
- package/dist/nano-components/p-d565991d.entry.js.map +0 -1
- package/dist/nano-components/p-dba8a88d.entry.js.map +0 -1
- package/dist/nano-components/p-dc50b93c.entry.js +0 -5
- package/dist/nano-components/p-dc50b93c.entry.js.map +0 -1
- package/dist/nano-components/p-e3860f00.js +0 -5
- package/dist/nano-components/p-e3860f00.js.map +0 -1
- package/dist/nano-components/p-e5408bc8.entry.js +0 -5
- package/dist/nano-components/p-e5408bc8.entry.js.map +0 -1
- package/dist/nano-components/p-ea2de992.js +0 -19
- package/dist/nano-components/p-ea2de992.js.map +0 -1
- package/dist/nano-components/p-f7471cca.entry.js +0 -5
- package/dist/nano-components/p-f7471cca.entry.js.map +0 -1
- package/dist/nano-components/p-fe94eeff.entry.js +0 -5
- package/dist/nano-components/p-fe94eeff.entry.js.map +0 -1
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{g as t,e as i,r as e,c as s,w as n,d as r,h as a,a as h}from"./p-bf91c50e.js";import{a as o}from"./p-ed6adde2.js";import{g as l}from"./p-257432ff.js";import{C as u}from"./p-909a424c.js";import{b as f,c,a as d}from"./p-69a3e911.js";import{d as p}from"./p-9746b0a5.js";import{S as v}from"./p-ed2e6f32.js";var m=new Map;var g=function(t,i){var e=t.fields,s=t.updater;e.forEach((function(t){s(t,i[t])}))};var y={create:function(i,e){var s=t(i);var n=new Map;var r={wormholes:n,state:e};m.set(i,r);var a=i.connectedCallback;i.connectedCallback=function(){m.set(i,r);if(a){a.call(i)}};var h=i.disconnectedCallback;i.disconnectedCallback=function(){m.delete(i);if(h){h.call(i)}};s.addEventListener("openWormhole",(function(t){t.stopPropagation();var i=t.detail,e=i.consumer,s=i.onOpen;if(n.has(e))return;if(typeof e!=="symbol"){var a=e.connectedCallback,h=e.disconnectedCallback;e.connectedCallback=function(){n.set(e,t.detail);if(a){a.call(e)}};e.disconnectedCallback=function(){n.delete(e);if(h){h.call(e)}}}n.set(e,t.detail);g(t.detail,r.state);s===null||s===void 0?void 0:s.resolve((function(){n.delete(e)}))}));s.addEventListener("closeWormhole",(function(t){var i=t.detail;n.delete(i)}))},Provider:function(t,e){var s=t.state;var n=i();if(m.has(n)){var r=m.get(n);r.state=s;r.wormholes.forEach((function(t){g(t,s)}))}return e}};class b{constructor(){this.queue=[];this.workingOnPromise=false;this.stop=false;this.limit=null}enqueue(t){return new Promise(((i,e)=>{this.queue.push({promise:t,resolve:i,reject:e});this.dequeue()}))}dequeue(){if(this.workingOnPromise){return false}if(this.stop){this.queue=[];this.stop=false;return}const t=this.queue.shift();if(!t){return false}try{this.workingOnPromise=true;t.promise().then((i=>{this.workingOnPromise=false;t.resolve(i);this.dequeue()})).catch((i=>{this.workingOnPromise=false;t.reject(i);this.dequeue()}))}catch(i){this.workingOnPromise=false;t.reject(i);this.dequeue()}return true}}b.pendingPromise=false;var w=c((function(t,i){!function(t,e){e(i)}(d,(function(t){function i(t){var e,s,n=new Error(t);return e=n,s=i.prototype,Object.setPrototypeOf?Object.setPrototypeOf(e,s):e.__proto__=s,n}function e(t,e,s){var n=e.slice(0,s).split(/\n/),r=n.length,a=n[r-1].length+1;throw i(t+=" at line "+r+" col "+a+":\n\n "+e.split(/\n/)[r-1]+"\n "+Array(a).join(" ")+"^")}i.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:!1}});var s=new Function("return this")().Promise,n=!1;try{n=new Function("return (async function(){}).constructor")()}catch(t){if(!(t instanceof SyntaxError))throw t}function r(t,i){return Object.prototype.hasOwnProperty.call(t,i)}function a(t,i,e){for(var s in i)r(i,s)&&(null==i[s]||"object"!=typeof i[s]||"storage"!==s&&"prefixes"!==s||e?t[s]=i[s]:t[s]=a({},i[s]));return t}var h=/^async +/,o=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,l=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,u=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g,f=/[.*+\-?^${}()|[\]\\]/g;function c(t){return f.test(t)?t.replace(f,"\\$&"):t}function d(t,s){s.rmWhitespace&&(t=t.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")),o.lastIndex=0,l.lastIndex=0,u.lastIndex=0;var n=s.prefixes,r=[n.h,n.b,n.i,n.r,n.c,n.e].reduce((function(t,i){return t&&i?t+"|"+c(i):i?c(i):t}),""),a=new RegExp("([|()]|=>)|('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+c(s.tags[1])+")","g"),f=new RegExp("([^]*?)"+c(s.tags[0])+"(-|_)?\\s*("+r+")?\\s*","g"),d=0,p=!1;function v(i,n){var r,c={f:[]},v=0,m="c";function g(i){var n=t.slice(d,i),r=n.trim();if("f"===m)"safe"===r?c.raw=!0:s.async&&h.test(r)?(r=r.replace(h,""),c.f.push([r,"",!0])):c.f.push([r,""]);else if("fp"===m)c.f[c.f.length-1][1]+=r;else if("err"===m){if(r){var a=n.search(/\S/);e("invalid syntax",t,d+a)}}else c[m]=r;d=i+1}for("h"===n||"b"===n||"c"===n?m="n":"r"===n&&(c.raw=!0,n="i"),a.lastIndex=d;null!==(r=a.exec(t));){var y=r[1],b=r[2],w=r[3],x=r[4],F=r[5],C=r.index;if(y)"("===y?(0===v&&("n"===m?(g(C),m="p"):"f"===m&&(g(C),m="fp")),v++):")"===y?0===--v&&"c"!==m&&(g(C),m="err"):0===v&&"|"===y?(g(C),m="f"):"=>"===y&&(g(C),d+=1,m="res");else if(b){if("/*"===b){var j=t.indexOf("*/",a.lastIndex);-1===j&&e("unclosed comment",t,r.index),a.lastIndex=j+2}else if("'"===b){l.lastIndex=r.index,l.exec(t)?a.lastIndex=l.lastIndex:e("unclosed string",t,r.index)}else if('"'===b){u.lastIndex=r.index,u.exec(t)?a.lastIndex=u.lastIndex:e("unclosed string",t,r.index)}else if("`"===b){o.lastIndex=r.index,o.exec(t)?a.lastIndex=o.lastIndex:e("unclosed string",t,r.index)}}else if(w)return g(C),d=C+r[0].length,f.lastIndex=d,p=F,x&&"h"===n&&(n="s"),c.t=n,c}return e("unclosed tag",t,i),c}var m=function r(a,o){a.b=[],a.d=[];var l,u=!1,c=[];function m(t,i){t&&(t=function(t,i,e,s){var n,r;return"string"==typeof i.autoTrim?n=r=i.autoTrim:Array.isArray(i.autoTrim)&&(n=i.autoTrim[1],r=i.autoTrim[0]),(e||!1===e)&&(n=e),(s||!1===s)&&(r=s),"slurp"===n&&"slurp"===r?t.trim():("_"===n||"slurp"===n?t=String.prototype.trimLeft?t.trimLeft():t.replace(/^[\s\uFEFF\xA0]+/,""):"-"!==n&&"nl"!==n||(t=t.replace(/^(?:\n|\r|\r\n)/,"")),"_"===r||"slurp"===r?t=String.prototype.trimRight?t.trimRight():t.replace(/[\s\uFEFF\xA0]+$/,""):"-"!==r&&"nl"!==r||(t=t.replace(/(?:\n|\r|\r\n)$/,"")),t)}(t,s,p,i))&&(t=t.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),c.push(t))}for(;null!==(l=f.exec(t));){var g,y=l[1],b=l[2],w=l[3]||"";for(var x in n)if(n[x]===w){g=x;break}m(y,b),d=l.index+l[0].length,g||e("unrecognized tag type: "+w,t,d);var F=v(l.index,g),C=F.t;if("h"===C){var j=F.n||"";s.async&&h.test(j)&&(F.a=!0,F.n=j.replace(h,"")),F=r(F),c.push(F)}else if("c"===C){if(a.n===F.n)return u?(u.d=c,a.b.push(u)):a.d=c,a;e("Helper start and end don't match",t,l.index+l[0].length)}else if("b"===C){u?(u.d=c,a.b.push(u)):a.d=c;var I=F.n||"";s.async&&h.test(I)&&(F.a=!0,F.n=I.replace(h,"")),u=F,c=[]}else if("s"===C){var S=F.n||"";s.async&&h.test(S)&&(F.a=!0,F.n=S.replace(h,"")),c.push(F)}else c.push(F)}if(!o)throw i('unclosed helper "'+a.n+'"');return m(t.slice(d,t.length),!1),a.d=c,a}({f:[]},!0);if(s.plugins)for(var g=0;g<s.plugins.length;g++){var y=s.plugins[g];y.processAST&&(m.d=y.processAST(m.d,s))}return m.d}function p(t,i){var e=d(t,i),s="var tR='';"+(i.useWith?"with("+i.varName+"||{}){":"")+b(e,i)+"if(cb){cb(null,tR)} return tR"+(i.useWith?"}":"");if(i.plugins)for(var n=0;n<i.plugins.length;n++){var r=i.plugins[n];r.processFnString&&(s=r.processFnString(s,i))}return s}function v(t,i){for(var e=0;e<i.length;e++){var s=i[e][0],n=i[e][1];t=(i[e][2]?"await ":"")+"c.l('F','"+s+"')("+t,n&&(t+=","+n),t+=")"}return t}function m(t,i,e,s,n,r){var a="{exec:"+(n?"async ":"")+y(e,i,t)+",params:["+s+"]";return r&&(a+=",name:'"+r+"'"),n&&(a+=",async:true"),a+="}"}function g(t,i){for(var e="[",s=0;s<t.length;s++){var n=t[s];e+=m(i,n.res||"",n.d,n.p||"",n.a,n.n),s<t.length&&(e+=",")}return e+="]"}function y(t,i,e){return"function("+i+"){var tR='';"+b(t,e)+"return tR}"}function b(t,i){for(var e=0,s=t.length,n="";e<s;e++){var r=t[e];if("string"==typeof r){n+="tR+='"+r+"';"}else{var a=r.t,h=r.c||"",o=r.f,l=r.n||"",u=r.p||"",f=r.res||"",c=r.b,d=!!r.a;if("i"===a){i.defaultFilter&&(h="c.l('F','"+i.defaultFilter+"')("+h+")");var p=v(h,o);!r.raw&&i.autoEscape&&(p="c.l('F','e')("+p+")"),n+="tR+="+p+";"}else if("h"===a)if(i.storage.nativeHelpers.get(l))n+=i.storage.nativeHelpers.get(l)(r,i);else{var y=(d?"await ":"")+"c.l('H','"+l+"')("+m(i,f,r.d,u,d);y+=c?","+g(c,i):",[]",n+="tR+="+v(y+=",c)",o)+";"}else"s"===a?n+="tR+="+v((d?"await ":"")+"c.l('H','"+l+"')({params:["+u+"]},[],c)",o)+";":"e"===a&&(n+=h+"\n")}}return n}var w=function(){function t(t){this.cache=t}return t.prototype.define=function(t,i){this.cache[t]=i},t.prototype.get=function(t){return this.cache[t]},t.prototype.remove=function(t){delete this.cache[t]},t.prototype.reset=function(){this.cache={}},t.prototype.load=function(t){a(this.cache,t,!0)},t}();function x(t,e,s,n){if(e&&e.length>0)throw i((n?"Native":"")+"Helper '"+t+"' doesn't accept blocks");if(s&&s.length>0)throw i((n?"Native":"")+"Helper '"+t+"' doesn't accept filters")}var F={"&":"&","<":"<",">":">",'"':""","'":"'"};function C(t){return F[t]}var j=new w({}),I=new w({each:function(t,i){var e="",s=t.params[0];if(x("each",i,!1),t.async)return new Promise((function(i){!function t(i,e,s,n,r){s(i[e],e).then((function(a){n+=a,e===i.length-1?r(n):t(i,e+1,s,n,r)}))}(s,0,t.exec,e,i)}));for(var n=0;n<s.length;n++)e+=t.exec(s[n],n);return e},foreach:function(t,i){var e=t.params[0];if(x("foreach",i,!1),t.async)return new Promise((function(i){!function t(i,e,s,n,r,a){n(e[s],i[e[s]]).then((function(h){r+=h,s===e.length-1?a(r):t(i,e,s+1,n,r,a)}))}(e,Object.keys(e),0,t.exec,"",i)}));var s="";for(var n in e)r(e,n)&&(s+=t.exec(n,e[n]));return s},include:function(t,e,s){x("include",e,!1);var n=s.storage.templates.get(t.params[0]);if(!n)throw i('Could not fetch template "'+t.params[0]+'"');return n(t.params[1],s)},extends:function(t,e,s){var n=t.params[1]||{};n.content=t.exec();for(var r=0;r<e.length;r++){var a=e[r];n[a.name]=a.exec()}var h=s.storage.templates.get(t.params[0]);if(!h)throw i('Could not fetch template "'+t.params[0]+'"');return h(n,s)},useScope:function(t,i){return x("useScope",i,!1),t.exec(t.params[0])}}),S=new w({if:function(t,i){x("if",!1,t.f,!0);var e="if("+t.p+"){"+b(t.d,i)+"}";if(t.b)for(var s=0;s<t.b.length;s++){var n=t.b[s];"else"===n.n?e+="else{"+b(n.d,i)+"}":"elif"===n.n&&(e+="else if("+n.p+"){"+b(n.d,i)+"}")}return e},try:function(t,e){if(x("try",!1,t.f,!0),!t.b||1!==t.b.length||"catch"!==t.b[0].n)throw i("native helper 'try' only accepts 1 block, 'catch'");var s="try{"+b(t.d,e)+"}",n=t.b[0];return s+="catch"+(n.res?"("+n.res+")":"")+"{"+b(n.d,e)+"}"},block:function(t,i){return x("block",t.b,t.f,!0),"if(!"+i.varName+"["+t.p+"]){tR+=("+y(t.d,"",i)+")()}else{tR+="+i.varName+"["+t.p+"]}"}}),z=new w({e:function(t){var i=String(t);return/[&<>"']/.test(i)?i.replace(/[&<>"']/g,C):i}}),O={varName:"it",autoTrim:[!1,"nl"],autoEscape:!0,defaultFilter:!1,tags:["{{","}}"],l:function(t,e){if("H"===t){var s=this.storage.helpers.get(e);if(s)return s;throw i("Can't find helper '"+e+"'")}if("F"===t){var n=this.storage.filters.get(e);if(n)return n;throw i("Can't find filter '"+e+"'")}},async:!1,storage:{helpers:I,nativeHelpers:S,filters:z,templates:j},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:!1,plugins:[],useWith:!1};function R(t,i){var e={};return a(e,O),i&&a(e,i),t&&a(e,t),e.l.bind(e),e}function A(t,e){var s=R(e||{}),r=Function;if(s.async){if(!n)throw i("This environment doesn't support async/await");r=n}try{return new r(s.varName,"c","cb",p(t,s))}catch(e){throw e instanceof SyntaxError?i("Bad template syntax\n\n"+e.message+"\n"+Array(e.message.length+1).join("=")+"\n"+p(t,s)):e}}function k(t,i){var e;return i.cache&&i.name&&i.storage.templates.get(i.name)?i.storage.templates.get(i.name):(e="function"==typeof t?t:A(t,i),i.cache&&i.name&&i.storage.templates.define(i.name,e),e)}O.l.bind(O),t.compile=A,t.compileScope=b,t.compileScopeIntoFunction=y,t.compileToString=p,t.defaultConfig=O,t.filters=z,t.getConfig=R,t.helpers=I,t.nativeHelpers=S,t.parse=d,t.render=function(t,e,n,r){var a=R(n||{});if(!a.async)return k(t,a)(e,a);if(!r){if("function"==typeof s)return new s((function(i,s){try{i(k(t,a)(e,a))}catch(t){s(t)}}));throw i("Please provide a callback function, this env doesn't support Promises")}try{k(t,a)(e,a,r)}catch(t){return r(t)}},t.templates=j,Object.defineProperty(t,"__esModule",{value:!0})}))}));const x=f(w);const F=Object.freeze(Object.assign(Object.create(null),w,{default:x}));const C=F;C.filters.define("date_long",((t,i={year:"numeric",month:"long",day:"numeric"})=>{if(!t)return;const e=new Date(parseInt(t)*1e3);t=e.toLocaleDateString("en-GB",i);return t}));C.filters.define("date_short",((t,i="d/m/y")=>{if(!t)return;const e=new Date(parseInt(t)*1e3);t=i.replace(/(d)/,e.getDate().toString());t=t.replace(/(m)/,(e.getMonth()+1).toString());t=t.replace(/(y)/,e.getFullYear().toString());return t}));C.filters.define("public_name",(t=>{if(!t)return;t=t.split("_").map((t=>t.length<3?t.toUpperCase():t)).join(" ");return t.charAt(0).toUpperCase()+t.slice(1)}));C.filters.define("trim_to",((t,i=100)=>{if(!t)return;if(t.length<=i)return t;return t.substr(0,i)+"..."}));C.filters.define("classname",(t=>{if(!t)return;return t.replace(/[\W]+/g,"")}));C.filters.define("abs_url",((t,i=null,e)=>{if(!i)return t;if(!t)return;let s=undefined;if(i.domains&&e&&e.origin){const t=i.domains.find((t=>t.origin===e.origin));s=t?t.domain:""}else if(i.domain)s=i.domain;if(!s)return t;return t.match(/^http/)?t:location.protocol+"//"+s+t}));C.filters.define("replace",((t,i,e)=>t.replace(i,e)));C.filters.define("remove_spaces",(t=>t.replace(/ /g,"_")));C.filters.define("add_spaces",(t=>t=t.replace(/[_\-]/g," ")));C.filters.define("capitalise",(t=>t=t.charAt(0).toUpperCase()+t.slice(1)));C.filters.define("lowercase",(t=>t=t.toLowerCase()));const j=C;const I=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{position:relative;display:block}:host ::slotted([slot=search-template]){display:none !important}.loader{opacity:0;position:fixed;block-size:100%;inline-size:100%;min-block-size:100%;max-block-size:100vh !important;max-inline-size:100vw !important;inset-inline-start:0;inset-block-start:0;z-index:-10;font-size:60px;display:flex;align-items:center;justify-content:center;transition:opacity 0.2s ease, z-index 0.01s ease 0.2s}.loader.loading{opacity:1;z-index:10;transition:z-index 0.01s ease, opacity 0.2s ease 0.01s}.default{block-size:100%}.default:focus{outline:none}.results{opacity:0;outline:none;overflow:auto;transition:transform 0.3s ease, opacity 0.3s ease, visibility 0.01s ease 0.3s, z-index 0.01s ease 0.3s;transform:translate(0, 100px);visibility:hidden;z-index:-1;position:absolute;inset-block-start:0;inset-inline-start:0;display:none}.results-container{position:relative}.results.show{transition:z-index 0.01s ease, visibility 0.01s ease, transform 0.3s ease 0.01s, opacity 0.3s ease 0.01s, overflow 0.01s ease 0.31s;transform:translate(0, 0);visibility:visible;opacity:1;z-index:10;overflow:hidden}.results.shown{block-size:auto !important;inline-size:auto !important;display:block;position:static;transform:none;z-index:auto;visibility:inherit;opacity:initial;overflow:visible}";const S=class{constructor(t){e(this,t);this.nanoDidLoad=s(this,"nanoDidLoad",7);this.nanoResultsShown=s(this,"nanoResultsShown",3);this.nanoBeforeQuery=s(this,"nanoBeforeQuery",7);this.nanoAfterQuery=s(this,"nanoAfterQuery",7);this.nanoNewResults=s(this,"nanoNewResults",7);this.staticFacetFilters={};this.dynFacetFilters={};this.hasLoadSlot=false;this.placedAlgoliaEles=[];this.promiseQueue=new b;this.searchChange=async()=>{if(!this.algoliaIndex)return;if(!this.query||this.query.length<this.minChars){if(!this.browseIndex){if(!this.query||this.query.length===0){this.handleSearchReset();return}else return}else if(this.query!=="*"){this.query="*";return}}this.isLoading=true;setTimeout((async()=>{this.resetPage();await this.algoliaSearch(v.Init);await this.updateContent();setTimeout((t=>this.isLoading=false),800);this.showResults=true;this.nanoResultsShown.emit(this.indexResults)}),200)};this.makeAppliedFilters=()=>{const t=[];const i=i=>{Object.values(i).forEach((i=>{if(i.value&&i.value.length){const e=t.find((t=>t.name===i.facetName));if(!e)t.push({name:i.facetName,values:[...i.value]});else e.values=[...e.values,...i.value]}}))};i(this.dynFacetFilters);i(this.staticFacetFilters);if(t.length)return t;return null};this.algoliaSearch=async t=>this.promiseQueue.enqueue((()=>this.queueSearch(t)));this.queueSearch=async t=>{if(!this.algoliaIndex||!this.query||!this.searchIndex||!this.searchIndex.index)return;this.nanoBeforeQuery.emit(this.indexResults);if(v.Init===t)this.clearAllFacetFilters();const i={filters:this.algoliaFilterStr(),page:this.indexResults?this.indexResults.currentPage:0};if(this.searchIndex.filters)i.facets=this.searchIndex.filters;if(this.searchIndex.hitsPerPage)i.hitsPerPage=this.searchIndex.hitsPerPage;let e=await this.algoliaIndex.search(this.query,i);e=this.fixDomain(e);this.changeEvent=t;if(t===v.Init||!this.indexResults){this.indexResults={currentPage:0,totalHits:e.nbHits,hitsPerPage:null,origFilters:e.facets,query:this.query,domain:this.searchIndex.domain||null,totalHitsWithFilters:0,results:[],totalPages:0,appliedFilters:this.makeAppliedFilters(),indexName:this.searchIndex.name||null,index:this.searchIndex.index}}this.indexResults.dynFilters=e.facets;this.indexResults.results=e.hits;this.indexResults.totalHitsWithFilters=e.nbHits;this.indexResults.currentPage=e.page;this.indexResults.totalPages=e.nbPages;this.indexResults.hitsPerPage=e.hitsPerPage;this.indexResults.query=e.query;if(this.changeEvent!==v.Page&&this.changeEvent!==v.Replica){this.facets=e.facets}this.nanoAfterQuery.emit(this.indexResults);return new Promise((t=>{setTimeout((()=>t("tpl updated")),20)})).then((t=>{this.currentHits=this.indexResults.results;this.resultsPage=this.indexResults.currentPage}))};this.handleSearchReset=()=>{this.showResults=false;this.indexResults=null};this.onResultDisplay=()=>{n((()=>{this.resultsDiv.removeEventListener("transitionend",this.onResultDisplay);if(!this.showResults)this.resultsDiv.style.display="none";else{this.defaultDiv.style.display="none";this.resultsDiv.classList.add("shown");this.resultsDiv.style.minHeight="";this.resultsDiv.style.width=""}}))};this._dynFacetFilters={};this.inputField=undefined;this.algoliaIndex=undefined;this.indeces=[];this.resultsEmitterEle=undefined;this.indexResults=undefined;this.filterChanged="";this.currentHits=undefined;this.changeEvent=v.Init;this.isLoading=false;this.wormholeState=this;this.showResults=false;this.resultsPage=0;this.appId=undefined;this.apiKey=undefined;this.searchIndex={};this.searchIndexName="";this.listenTo=null;this.query="";this.operator="and";this.filters=[];this.tplEngine=j;this.tplRenderFn=j.render;this.replicaIndex="";this.browseIndex=false;this.minChars=2;this.storeId=undefined;this.storeMethod="session"}async removeFilters(t,i){if(!t&&!i)this.clearAllFacetFilters();else{Object.keys(this._dynFacetFilters).forEach((e=>{if(t&&this._dynFacetFilters[e].facetName===t){if(!i)this._dynFacetFilters[e].element.value="";else{this._dynFacetFilters[e].element.value=this._dynFacetFilters[e].value.filter((t=>t!==i))}}}))}}onAllTplUpdate(t){t.stopPropagation();if(t.target.tagName==="NANO-ALGOLIA-RESULTS"){requestAnimationFrame((()=>{this.nanoNewResults.emit(this.indexResults)}))}}async onPageChange(t){if(!this.indexResults)return;let i=this.resultsPage;if(t){t.stopPropagation();i=t.detail.page}i=Math.min(this.indexResults.totalPages-1,i);i=Math.max(i,0);if(this.indexResults.currentPage===i)return;this.indexResults.currentPage=i;await this.algoliaSearch(v.Page)}async onFilterChange(t){t.stopPropagation();const i={};const e=t.detail;e.element=t.target;if(this.indexResults){if(this.staticFacetFilters[e.filterId])this.staticFacetFilters[e.filterId]=e;else{i[e.filterId]=e;this._dynFacetFilters=Object.assign(Object.assign({},this._dynFacetFilters),i)}this.indexResults.appliedFilters=this.makeAppliedFilters()}else this.staticFacetFilters[e.filterId]=e;this.filterChanged=e.value&&e.value.length?e.filterId:"all";this.resetPage();this.algoliaSearch(v.Filter)}dynFacetFiltersChange(){Object.values(this._dynFacetFilters).forEach((t=>{if(this.host.ownerDocument===t.element.ownerDocument)this.dynFacetFilters[t.filterId]=t;else delete this.dynFacetFilters[t.filterId]}))}browseIndexChange(){if(this.browseIndex&&(!this.query||this.query.length<this.minChars)){this.query="*"}}inputFieldSet(){if(!this.inputField)return;if(this.query!=="*"&&this.inputField&&this.inputField.value!==this.query)this.inputField.value=this.query}queryChange(){this.searchChange()}async internalIndexSwitch(){if(!this.replicaIndex||!this.indexResults||this.indexResults.index===this.replicaIndex)return;this.indexResults.index=this.replicaIndex;this.algoliaIndex=this.algoliaClient.initIndex(this.indexResults.index);this.resetPage();this.algoliaSearch(v.Replica)}pageChange(){this.onPageChange()}searchIndexNameChange(){if(!this.searchIndexName||!this.searchIndexName.length||this.searchIndex&&this.searchIndex.index===this.searchIndexName)return;this.searchIndex={index:this.searchIndexName}}initAlgoliaClient(){if(!this.appId||!this.apiKey)return;this.algoliaClient=o(this.appId,this.apiKey)}initAlgoliaIndex(){if(!this.algoliaClient||!this.searchIndex)return;if(this.searchIndex.index){if(this.replicaIndex)this.searchIndex.index=this.replicaIndex;this.searchIndexName=this.searchIndex.index;this.algoliaIndex=this.algoliaClient.initIndex(this.searchIndex.index);this.searchChange()}}showResultsChange(){if(!this.resultsDiv||!this.defaultDiv)return;if(this.showResults){this.resultsDiv.style.width=this.host.scrollWidth+"px";this.resultsDiv.style.minHeight=this.host.scrollHeight+"px";n((()=>{this.resultsDiv.addEventListener("transitionend",this.onResultDisplay);this.resultsDiv.style.display="block";setTimeout((()=>this.resultsDiv.classList.add("show")),50)}))}else{n((()=>{this.resultsDiv.classList.remove("shown");this.defaultDiv.style.display="block";setTimeout((()=>{this.resultsDiv.addEventListener("transitionend",this.onResultDisplay);this.resultsDiv.classList.remove("show");if(!!this.slottedInput)this.slottedInput.focus({preventScroll:true});else this.defaultDiv.focus({preventScroll:true})}),50)}))}}handleFilterpropChange(){this.algoliaSearch(v.Init)}fixDomain(t){if(!this.searchIndex||!this.searchIndex.domain)return t;t.hits.map((t=>{if(t.url&&!t.url.match(/^http/))t.url=location.protocol+"//"+this.searchIndex.domain+t.url}));return t}resetPage(){if(!this.indexResults)return;this.indexResults.currentPage=0}clearAllFacetFilters(){Object.values(this._dynFacetFilters).forEach((t=>{t.element.value=""}));this._dynFacetFilters={}}algoliaFilterStr(){const t={};const i=i=>{let e;let s;Object.keys(i).forEach((n=>{e=i[n];t[n]=t[n]||{name:e.facetName,or:[],and:[],not:[]};s=t[n][e.operator];if(e.value&&e.value.length){t[n][e.operator]=[...s,...e.value]}}))};i(this.dynFacetFilters);i(this.staticFacetFilters);const e=(t,i)=>{if(i.indexOf(" ")>-1)return t+':"'+i+'"';else return t+":"+i};let s=[];let n;let r;Object.values(t).forEach((function(t){Object.keys(t).filter((t=>t.match(/(or|and|not)/))).forEach((i=>{n=t;r=t.name;if(i==="or"||i==="and"){if(n[i].length){s.push("( "+n[i].map((t=>{if(t.length)return e(r,t)})).join(" "+i.toLocaleUpperCase()+" ")+" )")}}else{if(n.not.length){s.push("( "+n[i].map((t=>{if(t.length)return"NOT "+e(r,t)})).join(" AND ")+" )")}}}))}));s=[...this.filters,...s];return s.join(" "+this.operator.toLocaleUpperCase()+" ")}handleInputChange(t){if(t.target!==this.inputField)return;this.query=this.inputField.value}async updateContent(){return this.promiseQueue.enqueue((()=>this.updateContentQueue()))}async updateContentQueue(){const t=this.outputSlot||this.resultsDiv;if(!t||!this.tpl)return"no tpl";const i=document.createElement("div");i.innerHTML=this.tpl;const e=[];this.placedAlgoliaEles=[];Array.from(i.querySelectorAll("nano-algolia, nano-algolia-filter, nano-algolia-results")).forEach(((t,i)=>{const s=document.createElement("div");s.dataset.placeholderId=i.toString();s.classList.add("nano-ele-placeholder");e.push(t);t.parentNode.replaceChild(s,t)}));t.innerHTML=this.tplRenderFn(i.innerHTML.replace(/>/gm,">").replace(/</gm,"<").replace(/&/gm,"&"),this.indexResults);Array.from(t.querySelectorAll("div.nano-ele-placeholder")).forEach((t=>{t.parentNode.replaceChild(e[parseInt(t.dataset.placeholderId)],t);this.placedAlgoliaEles.push(e[parseInt(t.dataset.placeholderId)])}));if(!this.placedAlgoliaEles.length)return Promise.resolve("algolia setup");return new Promise((i=>{const e=s=>{this.placedAlgoliaEles=this.placedAlgoliaEles.filter((t=>t!==s.detail));if(!this.placedAlgoliaEles.length){setTimeout((()=>i("tpl updated")),500);t.removeEventListener("nanoTplUpdated",e)}};t.addEventListener("nanoTplUpdated",e)}))}componentWillLoad(){r((t=>{this.tplSlot=l(this.host,'[slot="template"]')[0];this.outputSlot=l(this.host,'[slot="output"]')[0];this.slottedInput=l(this.host,'[slot="search-input"]')[0];this.hasLoadSlot=!!l(this.host,'[slot="loader"]')[0];if(!!this.tplSlot)this.tpl=this.tplSlot.innerHTML||this.tplSlot.innerText;if(this.slottedInput&&(this.slottedInput.tagName.toLocaleLowerCase()==="nano-input"||this.slottedInput instanceof HTMLInputElement)){this.inputField=this.slottedInput}else if(this.slottedInput){this.inputField=this.slottedInput.querySelector('nano-input, input:not([type="radio"]):not([type="checkbox"])')}n((t=>{if(this.showResults&&this.tpl)this.searchChange()}))}));this.searchIndexNameChange();this.initAlgoliaClient();this.initAlgoliaIndex();y.create(this,this.wormholeState);if(this.storeId){u.init(this,["query","replicaIndex"],this.storeMethod,this.storeId);u.init(this,["apiKey","appId","searchIndex"],"session",this.storeId+"_api")}this.internalIndexSwitch()}connectedCallback(){this.searchChange=p(this.searchChange,300);this.browseIndexChange();this.host.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.host}))}render(){const t={indexResults:this.indexResults,results:this.currentHits,filterChanged:this.filterChanged,tplRenderFn:this.tplRenderFn,resultsPage:this.resultsPage,changeEvent:this.changeEvent,facets:this.facets,algoliaIndex:this.algoliaIndex,searchIndex:this.searchIndex,globalStoreMethod:this.storeMethod,isLoading:this.isLoading};return a(h,{class:{"show-results":this.showResults,"is-loading":this.isLoading},"aria-busy":this.isLoading},this.hasLoadSlot&&a("div",{hidden:!this.isLoading},a("slot",{name:"loader"})),!this.hasLoadSlot&&a("div",{class:{loader:true,loading:this.isLoading}},a("nano-spinner",{overlay:true,type:"circle"})),a(y.Provider,{state:t},a("slot",{name:"search-input"}),a("div",{class:"results-container","aria-live":"polite"},a("div",{ref:t=>this.resultsDiv=t,class:"results"},a("slot",{name:"output"})))),a("div",{ref:t=>this.defaultDiv=t,class:"default",tabindex:"-1"},a("slot",null)))}get host(){return t(this)}static get watchers(){return{_dynFacetFilters:["dynFacetFiltersChange"],browseIndex:["browseIndexChange"],inputField:["inputFieldSet"],query:["queryChange"],replicaIndex:["internalIndexSwitch"],resultsPage:["pageChange"],searchIndexName:["searchIndexNameChange"],apiKey:["initAlgoliaClient"],appId:["initAlgoliaClient"],searchIndex:["initAlgoliaIndex"],showResults:["showResultsChange"],filters:["handleFilterpropChange"]}}};S.style=I;export{S as nano_algolia};
|
5
|
+
//# sourceMappingURL=p-f28c802d.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["multiverse","Map","updateConsumer","_a","state","fields","updater","forEach","field","Universe","create","creator","initialState","el","getElement","wormholes","universe","set","connectedCallback","call","disconnectedCallback","delete","addEventListener","event","stopPropagation","detail","consumer","onOpen","has","connectedCallback_1","disconnectedCallback_1","resolve","Provider","children","getRenderingRef","get","opening","PromiseQueue","constructor","this","queue","workingOnPromise","stop","limit","enqueue","promise","Promise","reject","push","dequeue","item","shift","then","value","catch","err","pendingPromise","e","t","exports","n","r","a","Error","prototype","Object","setPrototypeOf","__proto__","slice","split","i","length","s","Array","join","name","enumerable","Function","SyntaxError","hasOwnProperty","c","o","l","f","u","p","test","replace","h","rmWhitespace","lastIndex","prefixes","b","reduce","RegExp","tags","d","g","v","m","trim","raw","async","search","exec","y","x","w","F","S","index","I","indexOf","autoTrim","isArray","String","trimLeft","trimRight","R","T","plugins","processAST","useWith","varName","processFnString","res","defaultFilter","autoEscape","storage","nativeHelpers","cache","define","remove","reset","load","each","params","foreach","keys","include","templates","extends","content","useScope","if","try","block","E","j","helpers","filters","H","bind","O","message","_","compile","compileScope","compileScopeIntoFunction","compileToString","defaultConfig","getConfig","parse","render","defineProperty","squirrel","Sqrl","str","options","year","month","day","date","Date","parseInt","toLocaleDateString","format","getDate","toString","getMonth","getFullYear","map","val","toUpperCase","charAt","substr","result","domain","undefined","domains","origin","found","find","dm","match","location","protocol","toLowerCase","Squirrel","algoliaCss","Algolia","staticFacetFilters","dynFacetFilters","hasLoadSlot","placedAlgoliaEles","promiseQueue","searchChange","algoliaIndex","query","minChars","browseIndex","handleSearchReset","isLoading","setTimeout","resetPage","algoliaSearch","SearchChangeEvent","Init","updateContent","showResults","nanoResultsShown","emit","indexResults","makeAppliedFilters","appliedFtrs","makeAppliedFilter","facetFilters","values","filter","appFilter","facetName","eventType","queueSearch","searchIndex","nanoBeforeQuery","clearAllFacetFilters","searchParams","algoliaFilterStr","page","currentPage","facets","hitsPerPage","fixDomain","changeEvent","totalHits","nbHits","origFilters","totalHitsWithFilters","results","totalPages","appliedFilters","indexName","dynFilters","hits","nbPages","Page","Replica","nanoAfterQuery","currentHits","resultsPage","onResultDisplay","writeTask","resultsDiv","removeEventListener","style","display","defaultDiv","classList","add","minHeight","width","facetValue","_dynFacetFilters","filterId","element","onAllTplUpdate","ev","target","tagName","requestAnimationFrame","nanoNewResults","Math","min","max","dynFilterObj","assign","filterChanged","Filter","dynFacetFiltersChange","host","ownerDocument","browseIndexChange","inputFieldSet","inputField","queryChange","replicaIndex","algoliaClient","initIndex","pageChange","onPageChange","searchIndexNameChange","searchIndexName","initAlgoliaClient","appId","apiKey","algoliasearch","initAlgoliaIndex","showResultsChange","scrollWidth","scrollHeight","slottedInput","focus","preventScroll","handleFilterpropChange","hit","url","facetFilterObj","groupFilters","filterOp","or","and","not","operator","formatVal","filterStrParts","operatorGrp","filterName","filterProp","toLocaleUpperCase","handleInputChange","updateContentQueue","outputTo","outputSlot","tpl","tmpCont","document","createElement","innerHTML","algoliaEles","from","querySelectorAll","placeholder","dataset","placeholderId","parentNode","replaceChild","tplRenderFn","childrenResolver","ele","componentWillLoad","readTask","tplSlot","getDirectChildren","innerText","toLocaleLowerCase","HTMLInputElement","querySelector","wormholeState","storeId","ComponentStore","init","storeMethod","internalIndexSwitch","debounce","dispatchEvent","CustomEvent","globalStoreMethod","Host","class","hidden","loader","loading","overlay","type","ref","div","tabindex"],"sources":["./node_modules/stencil-wormhole/dist/esm/universe.js","./src/utils/promise-queue.ts","./node_modules/squirrelly/dist/browser/squirrelly.min.js","./src/utils/template.ts","./src/components/algolia/algolia.scss?tag=nano-algolia&encapsulation=shadow","./src/components/algolia/algolia.tsx"],"sourcesContent":["import { getElement, getRenderingRef } from \"@stencil/core\";\nvar multiverse = new Map();\nvar updateConsumer = function (_a, state) {\n var fields = _a.fields, updater = _a.updater;\n fields.forEach(function (field) { updater(field, state[field]); });\n};\nexport var Universe = {\n create: function (creator, initialState) {\n var el = getElement(creator);\n var wormholes = new Map();\n var universe = { wormholes: wormholes, state: initialState };\n multiverse.set(creator, universe);\n var connectedCallback = creator.connectedCallback;\n creator.connectedCallback = function () {\n multiverse.set(creator, universe);\n if (connectedCallback) {\n connectedCallback.call(creator);\n }\n };\n var disconnectedCallback = creator.disconnectedCallback;\n creator.disconnectedCallback = function () {\n multiverse.delete(creator);\n if (disconnectedCallback) {\n disconnectedCallback.call(creator);\n }\n };\n el.addEventListener('openWormhole', function (event) {\n event.stopPropagation();\n var _a = event.detail, consumer = _a.consumer, onOpen = _a.onOpen;\n if (wormholes.has(consumer))\n return;\n if (typeof consumer !== 'symbol') {\n var connectedCallback_1 = consumer.connectedCallback, disconnectedCallback_1 = consumer.disconnectedCallback;\n consumer.connectedCallback = function () {\n wormholes.set(consumer, event.detail);\n if (connectedCallback_1) {\n connectedCallback_1.call(consumer);\n }\n };\n consumer.disconnectedCallback = function () {\n wormholes.delete(consumer);\n if (disconnectedCallback_1) {\n disconnectedCallback_1.call(consumer);\n }\n };\n }\n wormholes.set(consumer, event.detail);\n updateConsumer(event.detail, universe.state);\n onOpen === null || onOpen === void 0 ? void 0 : onOpen.resolve(function () { wormholes.delete(consumer); });\n });\n el.addEventListener('closeWormhole', function (event) {\n var consumer = event.detail;\n wormholes.delete(consumer);\n });\n },\n Provider: function (_a, children) {\n var state = _a.state;\n var creator = getRenderingRef();\n if (multiverse.has(creator)) {\n var universe = multiverse.get(creator);\n universe.state = state;\n universe.wormholes.forEach(function (opening) { updateConsumer(opening, state); });\n }\n return children;\n }\n};\n","export class PromiseQueue {\n public queue = [];\n private workingOnPromise = false;\n static pendingPromise = false;\n public stop = false;\n public limit = null;\n\n public enqueue(promise: () => Promise<unknown>) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n promise,\n resolve,\n reject,\n });\n this.dequeue();\n });\n }\n\n public dequeue() {\n if (this.workingOnPromise) {\n return false;\n }\n if (this.stop) {\n this.queue = [];\n this.stop = false;\n return;\n }\n const item = this.queue.shift();\n if (!item) {\n return false;\n }\n try {\n this.workingOnPromise = true;\n item\n .promise()\n .then((value) => {\n this.workingOnPromise = false;\n item.resolve(value);\n this.dequeue();\n })\n .catch((err) => {\n this.workingOnPromise = false;\n item.reject(err);\n this.dequeue();\n });\n } catch (err) {\n this.workingOnPromise = false;\n item.reject(err);\n this.dequeue();\n }\n return true;\n }\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).Sqrl={})}(this,(function(e){\"use strict\";function t(e){var n,r,a=new Error(e);return n=a,r=t.prototype,Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,a}function n(e,n,r){var a=n.slice(0,r).split(/\\n/),i=a.length,s=a[i-1].length+1;throw t(e+=\" at line \"+i+\" col \"+s+\":\\n\\n \"+n.split(/\\n/)[i-1]+\"\\n \"+Array(s).join(\" \")+\"^\")}t.prototype=Object.create(Error.prototype,{name:{value:\"Squirrelly Error\",enumerable:!1}});var r=new Function(\"return this\")().Promise,a=!1;try{a=new Function(\"return (async function(){}).constructor\")()}catch(e){if(!(e instanceof SyntaxError))throw e}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){for(var r in t)i(t,r)&&(null==t[r]||\"object\"!=typeof t[r]||\"storage\"!==r&&\"prefixes\"!==r||n?e[r]=t[r]:e[r]=s({},t[r]));return e}var c=/^async +/,o=/`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g,l=/'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g,f=/\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g,u=/[.*+\\-?^${}()|[\\]\\\\]/g;function p(e){return u.test(e)?e.replace(u,\"\\\\$&\"):e}function h(e,r){r.rmWhitespace&&(e=e.replace(/[\\r\\n]+/g,\"\\n\").replace(/^\\s+|\\s+$/gm,\"\")),o.lastIndex=0,l.lastIndex=0,f.lastIndex=0;var a=r.prefixes,i=[a.h,a.b,a.i,a.r,a.c,a.e].reduce((function(e,t){return e&&t?e+\"|\"+p(t):t?p(t):e}),\"\"),s=new RegExp(\"([|()]|=>)|('|\\\"|`|\\\\/\\\\*)|\\\\s*((\\\\/)?(-|_)?\"+p(r.tags[1])+\")\",\"g\"),u=new RegExp(\"([^]*?)\"+p(r.tags[0])+\"(-|_)?\\\\s*(\"+i+\")?\\\\s*\",\"g\"),h=0,d=!1;function g(t,a){var i,p={f:[]},g=0,v=\"c\";function m(t){var a=e.slice(h,t),i=a.trim();if(\"f\"===v)\"safe\"===i?p.raw=!0:r.async&&c.test(i)?(i=i.replace(c,\"\"),p.f.push([i,\"\",!0])):p.f.push([i,\"\"]);else if(\"fp\"===v)p.f[p.f.length-1][1]+=i;else if(\"err\"===v){if(i){var s=a.search(/\\S/);n(\"invalid syntax\",e,h+s)}}else p[v]=i;h=t+1}for(\"h\"===a||\"b\"===a||\"c\"===a?v=\"n\":\"r\"===a&&(p.raw=!0,a=\"i\"),s.lastIndex=h;null!==(i=s.exec(e));){var y=i[1],x=i[2],b=i[3],w=i[4],F=i[5],S=i.index;if(y)\"(\"===y?(0===g&&(\"n\"===v?(m(S),v=\"p\"):\"f\"===v&&(m(S),v=\"fp\")),g++):\")\"===y?0===--g&&\"c\"!==v&&(m(S),v=\"err\"):0===g&&\"|\"===y?(m(S),v=\"f\"):\"=>\"===y&&(m(S),h+=1,v=\"res\");else if(x){if(\"/*\"===x){var I=e.indexOf(\"*/\",s.lastIndex);-1===I&&n(\"unclosed comment\",e,i.index),s.lastIndex=I+2}else if(\"'\"===x){l.lastIndex=i.index,l.exec(e)?s.lastIndex=l.lastIndex:n(\"unclosed string\",e,i.index)}else if('\"'===x){f.lastIndex=i.index,f.exec(e)?s.lastIndex=f.lastIndex:n(\"unclosed string\",e,i.index)}else if(\"`\"===x){o.lastIndex=i.index,o.exec(e)?s.lastIndex=o.lastIndex:n(\"unclosed string\",e,i.index)}}else if(b)return m(S),h=S+i[0].length,u.lastIndex=h,d=F,w&&\"h\"===a&&(a=\"s\"),p.t=a,p}return n(\"unclosed tag\",e,t),p}var v=function i(s,o){s.b=[],s.d=[];var l,f=!1,p=[];function v(e,t){e&&(e=function(e,t,n,r){var a,i;return\"string\"==typeof t.autoTrim?a=i=t.autoTrim:Array.isArray(t.autoTrim)&&(a=t.autoTrim[1],i=t.autoTrim[0]),(n||!1===n)&&(a=n),(r||!1===r)&&(i=r),\"slurp\"===a&&\"slurp\"===i?e.trim():(\"_\"===a||\"slurp\"===a?e=String.prototype.trimLeft?e.trimLeft():e.replace(/^[\\s\\uFEFF\\xA0]+/,\"\"):\"-\"!==a&&\"nl\"!==a||(e=e.replace(/^(?:\\n|\\r|\\r\\n)/,\"\")),\"_\"===i||\"slurp\"===i?e=String.prototype.trimRight?e.trimRight():e.replace(/[\\s\\uFEFF\\xA0]+$/,\"\"):\"-\"!==i&&\"nl\"!==i||(e=e.replace(/(?:\\n|\\r|\\r\\n)$/,\"\")),e)}(e,r,d,t))&&(e=e.replace(/\\\\|'/g,\"\\\\$&\").replace(/\\r\\n|\\n|\\r/g,\"\\\\n\"),p.push(e))}for(;null!==(l=u.exec(e));){var m,y=l[1],x=l[2],b=l[3]||\"\";for(var w in a)if(a[w]===b){m=w;break}v(y,x),h=l.index+l[0].length,m||n(\"unrecognized tag type: \"+b,e,h);var F=g(l.index,m),S=F.t;if(\"h\"===S){var I=F.n||\"\";r.async&&c.test(I)&&(F.a=!0,F.n=I.replace(c,\"\")),F=i(F),p.push(F)}else if(\"c\"===S){if(s.n===F.n)return f?(f.d=p,s.b.push(f)):s.d=p,s;n(\"Helper start and end don't match\",e,l.index+l[0].length)}else if(\"b\"===S){f?(f.d=p,s.b.push(f)):s.d=p;var R=F.n||\"\";r.async&&c.test(R)&&(F.a=!0,F.n=R.replace(c,\"\")),f=F,p=[]}else if(\"s\"===S){var T=F.n||\"\";r.async&&c.test(T)&&(F.a=!0,F.n=T.replace(c,\"\")),p.push(F)}else p.push(F)}if(!o)throw t('unclosed helper \"'+s.n+'\"');return v(e.slice(h,e.length),!1),s.d=p,s}({f:[]},!0);if(r.plugins)for(var m=0;m<r.plugins.length;m++){var y=r.plugins[m];y.processAST&&(v.d=y.processAST(v.d,r))}return v.d}function d(e,t){var n=h(e,t),r=\"var tR='';\"+(t.useWith?\"with(\"+t.varName+\"||{}){\":\"\")+x(n,t)+\"if(cb){cb(null,tR)} return tR\"+(t.useWith?\"}\":\"\");if(t.plugins)for(var a=0;a<t.plugins.length;a++){var i=t.plugins[a];i.processFnString&&(r=i.processFnString(r,t))}return r}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n][0],a=t[n][1];e=(t[n][2]?\"await \":\"\")+\"c.l('F','\"+r+\"')(\"+e,a&&(e+=\",\"+a),e+=\")\"}return e}function v(e,t,n,r,a,i){var s=\"{exec:\"+(a?\"async \":\"\")+y(n,t,e)+\",params:[\"+r+\"]\";return i&&(s+=\",name:'\"+i+\"'\"),a&&(s+=\",async:true\"),s+=\"}\"}function m(e,t){for(var n=\"[\",r=0;r<e.length;r++){var a=e[r];n+=v(t,a.res||\"\",a.d,a.p||\"\",a.a,a.n),r<e.length&&(n+=\",\")}return n+=\"]\"}function y(e,t,n){return\"function(\"+t+\"){var tR='';\"+x(e,n)+\"return tR}\"}function x(e,t){for(var n=0,r=e.length,a=\"\";n<r;n++){var i=e[n];if(\"string\"==typeof i){a+=\"tR+='\"+i+\"';\"}else{var s=i.t,c=i.c||\"\",o=i.f,l=i.n||\"\",f=i.p||\"\",u=i.res||\"\",p=i.b,h=!!i.a;if(\"i\"===s){t.defaultFilter&&(c=\"c.l('F','\"+t.defaultFilter+\"')(\"+c+\")\");var d=g(c,o);!i.raw&&t.autoEscape&&(d=\"c.l('F','e')(\"+d+\")\"),a+=\"tR+=\"+d+\";\"}else if(\"h\"===s)if(t.storage.nativeHelpers.get(l))a+=t.storage.nativeHelpers.get(l)(i,t);else{var y=(h?\"await \":\"\")+\"c.l('H','\"+l+\"')(\"+v(t,u,i.d,f,h);y+=p?\",\"+m(p,t):\",[]\",a+=\"tR+=\"+g(y+=\",c)\",o)+\";\"}else\"s\"===s?a+=\"tR+=\"+g((h?\"await \":\"\")+\"c.l('H','\"+l+\"')({params:[\"+f+\"]},[],c)\",o)+\";\":\"e\"===s&&(a+=c+\"\\n\")}}return a}var b=function(){function e(e){this.cache=e}return e.prototype.define=function(e,t){this.cache[e]=t},e.prototype.get=function(e){return this.cache[e]},e.prototype.remove=function(e){delete this.cache[e]},e.prototype.reset=function(){this.cache={}},e.prototype.load=function(e){s(this.cache,e,!0)},e}();function w(e,n,r,a){if(n&&n.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept blocks\");if(r&&r.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept filters\")}var F={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"};function S(e){return F[e]}var I=new b({}),R=new b({each:function(e,t){var n=\"\",r=e.params[0];if(w(\"each\",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i){r(t[n],n).then((function(s){a+=s,n===t.length-1?i(a):e(t,n+1,r,a,i)}))}(r,0,e.exec,n,t)}));for(var a=0;a<r.length;a++)n+=e.exec(r[a],a);return n},foreach:function(e,t){var n=e.params[0];if(w(\"foreach\",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i,s){a(n[r],t[n[r]]).then((function(c){i+=c,r===n.length-1?s(i):e(t,n,r+1,a,i,s)}))}(n,Object.keys(n),0,e.exec,\"\",t)}));var r=\"\";for(var a in n)i(n,a)&&(r+=e.exec(a,n[a]));return r},include:function(e,n,r){w(\"include\",n,!1);var a=r.storage.templates.get(e.params[0]);if(!a)throw t('Could not fetch template \"'+e.params[0]+'\"');return a(e.params[1],r)},extends:function(e,n,r){var a=e.params[1]||{};a.content=e.exec();for(var i=0;i<n.length;i++){var s=n[i];a[s.name]=s.exec()}var c=r.storage.templates.get(e.params[0]);if(!c)throw t('Could not fetch template \"'+e.params[0]+'\"');return c(a,r)},useScope:function(e,t){return w(\"useScope\",t,!1),e.exec(e.params[0])}}),T=new b({if:function(e,t){w(\"if\",!1,e.f,!0);var n=\"if(\"+e.p+\"){\"+x(e.d,t)+\"}\";if(e.b)for(var r=0;r<e.b.length;r++){var a=e.b[r];\"else\"===a.n?n+=\"else{\"+x(a.d,t)+\"}\":\"elif\"===a.n&&(n+=\"else if(\"+a.p+\"){\"+x(a.d,t)+\"}\")}return n},try:function(e,n){if(w(\"try\",!1,e.f,!0),!e.b||1!==e.b.length||\"catch\"!==e.b[0].n)throw t(\"native helper 'try' only accepts 1 block, 'catch'\");var r=\"try{\"+x(e.d,n)+\"}\",a=e.b[0];return r+=\"catch\"+(a.res?\"(\"+a.res+\")\":\"\")+\"{\"+x(a.d,n)+\"}\"},block:function(e,t){return w(\"block\",e.b,e.f,!0),\"if(!\"+t.varName+\"[\"+e.p+\"]){tR+=(\"+y(e.d,\"\",t)+\")()}else{tR+=\"+t.varName+\"[\"+e.p+\"]}\"}}),E=new b({e:function(e){var t=String(e);return/[&<>\"']/.test(t)?t.replace(/[&<>\"']/g,S):t}}),j={varName:\"it\",autoTrim:[!1,\"nl\"],autoEscape:!0,defaultFilter:!1,tags:[\"{{\",\"}}\"],l:function(e,n){if(\"H\"===e){var r=this.storage.helpers.get(n);if(r)return r;throw t(\"Can't find helper '\"+n+\"'\")}if(\"F\"===e){var a=this.storage.filters.get(n);if(a)return a;throw t(\"Can't find filter '\"+n+\"'\")}},async:!1,storage:{helpers:R,nativeHelpers:T,filters:E,templates:I},prefixes:{h:\"@\",b:\"#\",i:\"\",r:\"*\",c:\"/\",e:\"!\"},cache:!1,plugins:[],useWith:!1};function H(e,t){var n={};return s(n,j),t&&s(n,t),e&&s(n,e),n.l.bind(n),n}function O(e,n){var r=H(n||{}),i=Function;if(r.async){if(!a)throw t(\"This environment doesn't support async/await\");i=a}try{return new i(r.varName,\"c\",\"cb\",d(e,r))}catch(n){throw n instanceof SyntaxError?t(\"Bad template syntax\\n\\n\"+n.message+\"\\n\"+Array(n.message.length+1).join(\"=\")+\"\\n\"+d(e,r)):n}}function _(e,t){var n;return t.cache&&t.name&&t.storage.templates.get(t.name)?t.storage.templates.get(t.name):(n=\"function\"==typeof e?e:O(e,t),t.cache&&t.name&&t.storage.templates.define(t.name,n),n)}j.l.bind(j),e.compile=O,e.compileScope=x,e.compileScopeIntoFunction=y,e.compileToString=d,e.defaultConfig=j,e.filters=E,e.getConfig=H,e.helpers=R,e.nativeHelpers=T,e.parse=h,e.render=function(e,n,a,i){var s=H(a||{});if(!s.async)return _(e,s)(n,s);if(!i){if(\"function\"==typeof r)return new r((function(t,r){try{t(_(e,s)(n,s))}catch(e){r(e)}}));throw t(\"Please provide a callback function, this env doesn't support Promises\")}try{_(e,s)(n,s,i)}catch(e){return i(e)}},e.templates=I,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n//# sourceMappingURL=squirrelly.min.js.map\n","import * as Sqrl from 'squirrelly';\nimport type { IndexResult, AlgoliaResultHit } from '../interface';\n\nconst squirrel = Sqrl;\n\nsquirrel.filters.define(\n 'date_long',\n (\n str: string,\n options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }\n ) => {\n if (!str) return;\n const date = new Date(parseInt(str) * 1000);\n str = date.toLocaleDateString('en-GB', options);\n return str;\n }\n);\n\nsquirrel.filters.define(\n 'date_short',\n (str: string, format: string = 'd/m/y') => {\n if (!str) return;\n const date = new Date(parseInt(str) * 1000);\n str = format.replace(/(d)/, date.getDate().toString());\n str = str.replace(/(m)/, (date.getMonth() + 1).toString());\n str = str.replace(/(y)/, date.getFullYear().toString());\n return str;\n }\n);\n\nsquirrel.filters.define('public_name', (str: string) => {\n if (!str) return;\n str = str\n .split('_')\n .map((val) => {\n return val.length < 3 ? val.toUpperCase() : val;\n })\n .join(' ');\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n\nsquirrel.filters.define('trim_to', (str: string, length: number = 100) => {\n if (!str) return;\n if (str.length <= length) return str;\n return str.substr(0, length) + '...';\n});\n\nsquirrel.filters.define('classname', (str: string) => {\n if (!str) return;\n return str.replace(/[\\W]+/g, '');\n});\n\nsquirrel.filters.define(\n 'abs_url',\n (str: string, index: IndexResult = null, result?: AlgoliaResultHit) => {\n if (!index) return str;\n if (!str) return;\n\n let domain = undefined;\n if (index.domains && result && result.origin) {\n const found = index.domains.find((dm) => dm.origin === result.origin);\n domain = found ? found.domain : '';\n } else if (index.domain) domain = index.domain;\n\n if (!domain) return str;\n return str.match(/^http/) ? str : location.protocol + '//' + domain + str;\n }\n);\n\nsquirrel.filters.define(\n 'replace',\n (str: string, search?: string, replace?: string) =>\n str.replace(search, replace)\n);\nsquirrel.filters.define('remove_spaces', (str: string) =>\n str.replace(/ /g, '_')\n);\nsquirrel.filters.define(\n 'add_spaces',\n (str: string) => (str = str.replace(/[_\\-]/g, ' '))\n);\nsquirrel.filters.define(\n 'capitalise',\n (str: string) => (str = str.charAt(0).toUpperCase() + str.slice(1))\n);\nsquirrel.filters.define(\n 'lowercase',\n (str: string) => (str = str.toLowerCase())\n);\n\nexport const Squirrel = squirrel;\n",":host {\n position: relative;\n display: block;\n\n ::slotted([slot='search-template']) {\n display: none !important;\n }\n}\n\n.loader {\n opacity: 0;\n position: fixed;\n block-size: 100%;\n inline-size: 100%;\n min-block-size: 100%;\n max-block-size: 100vh !important;\n max-inline-size: 100vw !important;\n inset-inline-start: 0;\n inset-block-start: 0;\n z-index: -10;\n font-size: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s ease, z-index 0.01s ease 0.2s;\n\n &.loading {\n opacity: 1;\n z-index: 10;\n transition: z-index 0.01s ease, opacity 0.2s ease 0.01s;\n }\n}\n\n.default {\n block-size: 100%;\n\n &:focus {\n outline: none;\n }\n}\n\n.results {\n opacity: 0;\n outline: none;\n overflow: auto;\n transition:\n transform 0.3s ease,\n opacity 0.3s ease,\n visibility 0.01s ease 0.3s,\n z-index 0.01s ease 0.3s;\n transform: translate(0, 100px);\n visibility: hidden;\n z-index: -1;\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n display: none;\n\n &-container {\n position: relative;\n }\n\n &.show {\n transition:\n z-index 0.01s ease,\n visibility 0.01s ease,\n transform 0.3s ease 0.01s,\n opacity 0.3s ease 0.01s,\n overflow 0.01s ease 0.31s;\n transform: translate(0, 0);\n visibility: visible;\n opacity: 1;\n z-index: 10;\n overflow: hidden;\n }\n\n &.shown {\n block-size: auto !important;\n inline-size: auto !important;\n display: block;\n position: static;\n transform: none;\n z-index: auto;\n visibility: inherit;\n opacity: initial;\n overflow: visible;\n }\n}\n","import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport algoliasearch, {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch';\nimport { getDirectChildren } from '../../utils/dom';\nimport { PromiseQueue } from '../../utils/promise-queue';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { Squirrel } from '../../utils/template';\nimport { debounce } from '../../utils/throttle';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport type {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'\n * @slot search-input - optional. Should contain an algolia-input component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() resultsEmitterEle: HTMLElement;\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop({ mutable: true }) appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop({ mutable: true }) apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querSelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n /**\n * The query string used to search the index. Will automatically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop({ mutable: true }) replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\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 // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an results have been updated\n */\n @Event() nanoNewResults!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent & { target: HTMLElement }) {\n ev.stopPropagation();\n\n if (ev.target.tagName === 'NANO-ALGOLIA-RESULTS') {\n requestAnimationFrame(() => {\n this.nanoNewResults.emit(this.indexResults);\n });\n }\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n const dynFilterObj: FilterGroup = {};\n const filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n @Watch('filters')\n handleFilterpropChange() {\n this.algoliaSearch(SearchChangeEvent.Init);\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n const appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n const found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n const searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n const facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n @Listen('nanoChange', { target: 'body' })\n @Listen('change', { target: 'body' })\n handleInputChange(ev: CustomEvent | (Event & { target: HTMLElement })) {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n }\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n const outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n const tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n const algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n const placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/>/gm, '>')\n .replace(/</gm, '<')\n .replace(/&/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot)\n this.tpl = this.tplSlot.innerHTML || this.tplSlot.innerText;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n }\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
|
-
import{r as t,c as i,h as s,a as e,g as h}from"./p-
|
5
|
-
//# sourceMappingURL=p-
|
4
|
+
import{r as t,c as i,h as s,a as e,g as h}from"./p-bf91c50e.js";import{c as r}from"./p-d7ff8f12.js";const a=class{constructor(s){t(this,s);this.nanoPayloadChange=i(this,"nanoPayloadChange",7);this.nanoSubmit=i(this,"nanoSubmit",7);this.nanoInvalid=i(this,"nanoInvalid",7);this.allFields=[];this.nanoFieldSelector=`\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `;this.hasSetStore=false;this.internalValidate=false;this.handleStoreChange=async(t,i)=>{const s=this.allFields.find((i=>this.getName(i)===t));if(s&&(s.tagName==="NANO-CHECKBOX"||["radio","checkbox"].includes(s.type))){this.storeToFields([s])}else if(s&&(s.tagName==="NANO-FILE-UPLOAD"&&!this.fileStateEqual(t,s)||s.tagName!=="NANO-FILE-UPLOAD"&&s.value!==i)){this.storeToFields([s])}if(this.validateOn==="dirty"&&this.dirty){this.internalValidate=true;await this.validateAllFields();this._valid=this.activeForm.checkValidity();this.internalValidate=false}this.nanoPayloadChange.emit(this._store.state)};this.handleFieldChange=t=>{if(!this.nanoFields.includes(t.target))return;this._dirty=true;this.fieldsToStore([t.target])};this.handlePlainFieldChange=t=>{if(!this.plainFields.includes(t.target))return;this.fieldsToStore([t.target])};this.handleFormInvalid=async t=>{if(!this.plainFields.includes(t.target)){t.preventDefault()}this._valid=false;if(this.internalValidate)return;if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;await this.validateAllFields();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(this.validateOn==="submit"){if(this._valid){this.submitForm();return}}this.scrollToFirstInvalid();this.nanoInvalid.emit()};this.handleSubmit=async t=>{t.preventDefault();if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;await this.validateAllFields();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(!this._valid){this.scrollToFirstInvalid();return}this.submitForm()};this.submitted=false;this.userForm=undefined;this.validateOn="submitThenDirty";this.scrollToInvalid=true;this._dirty=false;this._valid=undefined;this._store=undefined;this.extraFieldSelector="input, select, textarea";this.validation=undefined}userFormChange(){if(!!this.userForm)this.activeForm=this.userForm}get activeForm(){return this._activeForm}set activeForm(t){if(!t)return;if(this._activeForm){this._activeForm.removeEventListener("invalid",this.handleFormInvalid,true)}t.addEventListener("invalid",this.handleFormInvalid,true);this._activeForm=t}validateOnChange(){this.nanoFields.forEach((t=>{if(t.tagName==="NANO-CHECKBOX"){const i=t.closest("nano-checkbox-group");if(i)i.validateOn=this.validateOn}else{t.validateOn=this.validateOn}}))}get dirty(){return this._dirty}get valid(){return this._valid}get store(){return this._store}get payload(){return this._store.state}get showValidation(){return this.validateOn==="dirty"&&this.dirty||this.submitted}get validationState(){const t=[];this.allFields.forEach((async i=>{const s=t.find((t=>t.name===this.getName(i)));let e;let h;if(s){if(i.validationMessage){e=i;s.validityMessage=e.validationMessage.length?e.validationMessage:s.validityMessage;this.internalValidate=true;if(s.valid&&!e.checkValidity())s.valid=false;this.internalValidate=false}else if(i.validityMessage){h=i;s.validityMessage=h.validityMessage.length?h.validityMessage:h.validityMessage;if(s.valid&&h.invalid)s.valid=false}if(!s.fields.find((t=>t===i)))s.fields.push(i)}let r;let a;if(i.checkValidity){e=i;this.internalValidate=true;r=e.checkValidity();this.internalValidate=false;a=e.validationMessage}else{h=i;r=!h.invalid;a=h.validityMessage}t.push({fields:[i],name:this.getName(i),value:this._store.state[this.getName(i)],dirty:false,valid:r,validityMessage:a})}));return t}async setStore(t){this.hasSetStore=true;Object.entries(t).forEach((([t,i])=>{this.store.state[t]=i}))}async setCustomValidity(t){return await Promise.all(Object.entries(t).map((async([t,i])=>{const s=this.allFields.find((i=>this.getName(i)===t));if(!!s)await this.setFieldError(s,i)})))}async resetValidity(){return await Promise.all(this.allFields.map((async t=>await this.setFieldError(t,""))))}attachSlotObserver(){if(!!this.mo)return;const t=this.mo=new MutationObserver((t=>{const i=this.host.querySelector("form");if(i&&i!==this.activeForm)this.activeForm=i;this.setupFields()}));t.observe(this.host,{childList:true,attributes:true,attributeFilter:["name"],subtree:true})}getName(t){return t.name||t.getAttribute("name")}setupFields(){let t=Array.from(this.host.querySelectorAll(this.nanoFieldSelector));let i=Array.from(this.host.querySelectorAll(this.extraFieldSelector)).filter((t=>!t.closest(this.nanoFieldSelector)));t=t.filter((t=>!!this.getName(t)&&!!this.getName(t).length));i=i.filter((t=>!!this.getName(t)&&!!this.getName(t).length));if(![...t,...i].filter((t=>!this.allFields.includes(t))).length)return;this.nanoFields=t;this.plainFields=i;this.allFields=[...t,...i];this.storeToFields(this.allFields);this.validateOnChange();this.fieldsToStore(this.allFields,true);this.nanoPayloadChange.emit(this._store.state)}storeToFields(t){t.forEach((t=>{var i;const s=this.getName(t);if(!s.length||typeof this._store.state[s]==="undefined")return;if(t.tagName==="NANO-CHECKBOX"||["radio","checkbox"].includes(t.type)){const i=this.allFields.filter((i=>this.getName(t)===this.getName(i)));if(i[0].type==="radio"||i[0].type==="segment"||i[0].type==="segment-pill"){i.forEach((t=>{if(this._store.state[s]===t.value)t.checked=true;else t.checked=false}))}else if(Array.isArray(this._store.state[s])){i.forEach((t=>{if(this._store.state[s].includes(t.value))t.checked=true;else t.checked=false}))}else{i.forEach((t=>{if(this._store.state[s]===t.value)t.checked=true;else t.checked=false}))}return}if(t.tagName==="NANO-FILE-UPLOAD"){const e=t;if(!((i=e.files)===null||i===void 0?void 0:i.length))e.files=this._store.state[s];return}t.value=this._store.state[s]}))}fieldsToStore(t,i=false){t.forEach((t=>{const s=this.getName(t);if(!s.length)return;if(!!this._store.state[s]&&this.hasSetStore&&i){return}if(t.tagName==="NANO-CHECKBOX"||["radio","checkbox"].includes(t.type)){const i=t;if(i.type==="radio"||i.type==="segment"||i.type==="segment-pill"){if(i.checked)this._store.state[s]=i.value}else if(this.allFields.filter((t=>this.getName(t)===s&&(t.tagName==="NANO-CHECKBOX"||t.type==="checkbox"))).length>1){const t=Array.isArray(this._store.state[s])?this._store.state[s]:[];if(i.checked){if(!this._store.state[s].includes(i.value)){this._store.state[s]=[...t,i.value]}}else{this._store.state[s]=t.filter((t=>t!==i.value))}}else{if(i.checked)this._store.state[s]=i.value;else this._store.state[s]=""}return}if(t.tagName==="NANO-FILE-UPLOAD"){const i=t;if(!this.fileStateEqual(s,i))this._store.state[s]=i.files;return}this._store.state[s]=t.value}))}fileStateEqual(t,i){return JSON.stringify(this._store.state[t])===JSON.stringify(i.files)||this._store.state[t]==i.files}async validate(t,i){if(!this.validation)return;const s=this.validation(t,i,this._store.state);if(!s)return;await Promise.all(Object.entries(s).map((async([t,i])=>i.fields.map((async s=>{const e=this.allFields.find((t=>this.getName(t)===s));let h=e;if(e.tagName==="NANO-CHECKBOX"){const t=e.closest("nano-checkbox-group");h=t||e}if((h.validityMessage||h.validationMessage)===t&&i.valid){await this.setFieldError(h,"")}else if(!i.valid){await this.setFieldError(h,t)}})))))}async validateAllFields(){await Object.entries(this._store.state).reduce((async(t,[i,s])=>{await t;await this.validate(i,s)}),undefined)}async setFieldError(t,i){if(t["showError"]){await t.showError(i)}else if(t["setError"])await t.setError(i);else t.setCustomValidity(i)}scrollToFirstInvalid(){if(!this.scrollToInvalid)return;setTimeout((()=>{const t=this.validationState.find((t=>!t.valid));if(!t)return;t.fields[0].scrollIntoView({behavior:"smooth",block:"nearest"})}),200)}submitForm(){const t=this.nanoSubmit.emit();if(t.defaultPrevented)return;this.activeForm.submit()}connectedCallback(){this.userForm=this.host.querySelector("form");this._store=r({})}componentDidLoad(){requestAnimationFrame((()=>{this.setupFields();this.attachSlotObserver();this.host.addEventListener("nanoChange",this.handleFieldChange);this.host.addEventListener("input",this.handlePlainFieldChange);this.host.addEventListener("change",this.handlePlainFieldChange);this.host.addEventListener("submit",this.handleSubmit);this._store.on("set",this.handleStoreChange)}))}disconnectedCallback(){if(this.mo)this.mo.disconnect();this.host.removeEventListener("nanoChange",this.handleFieldChange);this.host.removeEventListener("input",this.handlePlainFieldChange);this.host.removeEventListener("change",this.handlePlainFieldChange);this.host.removeEventListener("submit",this.handleSubmit);this._store.reset();if(this.activeForm)this.activeForm.removeEventListener("invalid",this.handleFormInvalid,true)}render(){return s(e,null,this.userForm&&s("slot",null),!this.userForm&&s("form",{ref:t=>this.activeForm=t},s("slot",null)))}get host(){return h(this)}static get watchers(){return{userForm:["userFormChange"],validateOn:["validateOnChange"],extraFieldSelector:["attachSlotObserver"]}}};export{a as nano_field_validator};
|
5
|
+
//# sourceMappingURL=p-f47776fd.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["FieldValidator","this","allFields","nanoFieldSelector","hasSetStore","internalValidate","handleStoreChange","async","key","newVal","found","find","field","getName","tagName","includes","type","storeToFields","fileStateEqual","value","validateOn","dirty","validateAllFields","_valid","activeForm","checkValidity","nanoPayloadChange","emit","_store","state","handleFieldChange","ev","nanoFields","target","_dirty","fieldsToStore","handlePlainFieldChange","plainFields","handleFormInvalid","preventDefault","submitted","submitForm","scrollToFirstInvalid","nanoInvalid","handleSubmit","e","userFormChange","userForm","_activeForm","form","removeEventListener","addEventListener","validateOnChange","forEach","cbg","closest","valid","store","payload","showValidation","validationState","v","name","pf","nf","validationMessage","validityMessage","length","invalid","fields","f","push","Object","entries","val","validity","Promise","all","map","err","setFieldError","attachSlotObserver","mo","MutationObserver","_entries","host","querySelector","setupFields","observe","childList","attributes","attributeFilter","subtree","getAttribute","Array","from","querySelectorAll","extraFieldSelector","filter","fieldName","cbs","cb","checked","isArray","ff","_a","files","init","currentArr","JSON","stringify","validation","res","msg","validityState","validityTarget","reduce","memo","validate","undefined","showError","setError","setCustomValidity","scrollToInvalid","setTimeout","invalidField","scrollIntoView","behavior","block","nanoSubmit","defaultPrevented","submit","connectedCallback","createStore","componentDidLoad","requestAnimationFrame","on","disconnectedCallback","disconnect","reset","render","h","Host","ref"],"sources":["./src/components/field-validator/field-validator.tsx"],"sourcesContent":["import {\n Component,\n Prop,\n h,\n Host,\n Element,\n ComponentInterface,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { createStore, ObservableMap } from '@stencil/store';\nimport type {\n NanoFormEles,\n PlainFormEles,\n NanoFormEvent,\n ValidationState,\n ValidatorValueStore,\n PlainFormEvent,\n} from '../../interface';\n\n/**\n * A toolbox for `nano-...` form fields and form validation.\n * - Easy to add validation across field dependencies - e.g. \"When Field1 contains '123' Field2 must contain '456'\"\n * - Easy access to whole form and individual field validity states\n * - Easy access to form data payload\n * = Access to 2-way, data bound reactive store\n * - Scroll to invalid field on submit\n */\n@Component({\n tag: 'nano-field-validator',\n})\nexport class FieldValidator implements ComponentInterface {\n // Internal State\n\n @Element() host: HTMLNanoFieldValidatorElement;\n @State() submitted = false;\n @State() userForm: HTMLFormElement;\n @Watch('userForm')\n userFormChange() {\n if (!!this.userForm) this.activeForm = this.userForm;\n }\n\n private get activeForm() {\n return this._activeForm;\n }\n private set activeForm(form: HTMLFormElement) {\n // manages event listners on whatever form is used (slotted on created here)\n if (!form) return;\n\n if (this._activeForm) {\n this._activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n form.addEventListener('invalid', this.handleFormInvalid, true);\n this._activeForm = form;\n }\n private _activeForm: HTMLFormElement;\n private mo: MutationObserver;\n private allFields: Array<NanoFormEles | PlainFormEles> = [];\n private nanoFields: NanoFormEles[];\n private plainFields: PlainFormEles[];\n private nanoFieldSelector = `\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `;\n private hasSetStore = false;\n\n // annoyingly, whenever we attempt to `checkValidty()` it fires `invalid` events.\n // this is used to prevent infinite loops / multiple calls\n private internalValidate = false;\n\n // Public API\n\n /** When should the fields perform validation. Will override / sync all nested `nano-...` controls */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /** Sync up validateOn with all fields */\n @Watch('validateOn')\n validateOnChange() {\n this.nanoFields.forEach((field) => {\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n if (cbg) cbg.validateOn = this.validateOn;\n } else {\n (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).validateOn =\n this.validateOn;\n }\n });\n }\n\n /** Tries to scroll to the first invalid field on submit */\n @Prop() scrollToInvalid = true;\n\n /** Returns true if any nested fields have been changed @readonly */\n @Prop({ reflect: true })\n get dirty() {\n return this._dirty;\n }\n @State() _dirty = false;\n\n /** Returns true if all the nested fields are currently valid @readonly */\n @Prop({ reflect: true })\n get valid() {\n return this._valid;\n }\n @State() _valid: boolean;\n\n /** The current form state as a stencil store. */\n @Prop() get store(): ObservableMap<ValidatorValueStore> {\n return this._store;\n }\n @State() _store: ObservableMap<ValidatorValueStore>;\n\n /** The current form payload as a reactive proxy. @readonly */\n @Prop()\n get payload() {\n return this._store.state;\n }\n\n /** Returns true if validation errors will be displayed to the user. @readonly */\n @Prop()\n get showValidation() {\n return (this.validateOn === 'dirty' && this.dirty) || this.submitted;\n }\n\n /** Get the current validation state of all form fields. @readonly\n * ```\n {\n fields: NanoFormEles[];\n valid: boolean;\n validityMessage: string;\n dirty: boolean;\n name: string | number;\n value: any;\n }[]\n ```\n */\n @Prop()\n get validationState(): ValidationState[] {\n // TODO - migrate nano-fields away from using proprietary methods in a bid to be closer to the spec\n\n // this is big and ugly.\n // why? Cos' it must unify checking validity state for both\n // `nano-...` and plain form fields.\n const validationState: ValidationState[] = [];\n\n this.allFields.forEach(async (field) => {\n const found = validationState.find((v) => v.name === this.getName(field));\n let pf: PlainFormEles;\n let nf: NanoFormEles;\n\n if (found) {\n if ((field as PlainFormEles).validationMessage) {\n // non-nano fields\n pf = field as PlainFormEles;\n found.validityMessage = pf.validationMessage.length\n ? pf.validationMessage\n : found.validityMessage;\n this.internalValidate = true;\n if (found.valid && !pf.checkValidity()) found.valid = false;\n this.internalValidate = false;\n } else if ((field as NanoFormEles).validityMessage) {\n // nano-... fields\n nf = field as NanoFormEles;\n found.validityMessage = nf.validityMessage.length\n ? nf.validityMessage\n : nf.validityMessage;\n if (found.valid && nf.invalid) found.valid = false;\n }\n if (!found.fields.find((f) => f === field)) found.fields.push(field);\n }\n\n let valid: boolean;\n let validityMessage: string;\n\n if ((field as PlainFormEles).checkValidity) {\n pf = field as PlainFormEles;\n this.internalValidate = true;\n valid = pf.checkValidity();\n this.internalValidate = false;\n validityMessage = pf.validationMessage;\n } else {\n nf = field as NanoFormEles;\n valid = !nf.invalid;\n validityMessage = nf.validityMessage;\n }\n\n validationState.push({\n fields: [field],\n name: this.getName(field),\n value: this._store.state[this.getName(field)],\n dirty: false,\n valid,\n validityMessage,\n });\n });\n\n return validationState;\n }\n\n /** By default, `nano-field-validator` will also track all native form field elements.\n * You can add extra web-component form fields to listen to\n * (as long as they match the standard form field spec) by using the `fieldSelector` prop.\n */\n @Prop() extraFieldSelector: string = 'input, select, textarea';\n\n /** A validation callback method.\n * @param field - The field name currently being evaluated\n * @param value - The value of the field currently being evaluated\n * @param fields - an array of all currently observered form fields and values\n * @returns field names mapped to an object of status message and validity e.g.\n * ```js\n * {field1: {msg: `This is invalid!`}, field2: {msg: `This is valid!`, valid: true}}\n * ```\n */\n @Prop() validation: (\n field: string,\n value: string,\n fields: ValidatorValueStore\n ) => { [errorMsg: string]: { fields?: string[]; valid?: boolean } };\n\n /**\n * Sets the state of the form using an object of key / value pairs.\n * @param state - the state to load in the store\n */\n @Method()\n async setStore(state: ValidatorValueStore) {\n this.hasSetStore = true;\n Object.entries(state).forEach(([key, val]) => {\n this.store.state[key] = val;\n });\n }\n\n /**\n * Sets custom validity for all / some form fields.\n * @param validity - a validity object of `{fieldName: errorString}` pairs. Set as an empty string to clear the error.\n */\n @Method()\n async setCustomValidity(validity: { [key: string]: string }) {\n return await Promise.all(\n Object.entries(validity).map(async ([key, err]) => {\n const field = this.allFields.find((f) => this.getName(f) === key);\n if (!!field) await this.setFieldError(field, err);\n })\n );\n }\n\n /**\n * Clear all custom validation.\n * @returns a promise, resolved when all errors are cleared\n */\n @Method()\n async resetValidity() {\n return await Promise.all(\n this.allFields.map(async (field) => await this.setFieldError(field, ''))\n );\n }\n\n /** Fired whenever the payload changes */\n @Event() nanoPayloadChange: EventEmitter<ValidatorValueStore>;\n\n /**\n * Fired on valid form submission.\n * Note: if you wish to prevent a form from submitting, instead\n * of using / preventing the native `submit` event, use this event\n * ```js\n * ele.addEventListener('nanoSubmit', (e) => {\n * e.preventDefault()\n * })\n * ```\n */\n @Event() nanoSubmit: EventEmitter;\n\n /** Fire on invalid form submission attempt */\n @Event() nanoInvalid: EventEmitter;\n\n // private methods\n\n @Watch('extraFieldSelector')\n attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver((_entries) => {\n const form = this.host.querySelector('form');\n if (form && form !== this.activeForm) this.activeForm = form;\n this.setupFields();\n }));\n mo.observe(this.host, {\n childList: true,\n attributes: true,\n attributeFilter: ['name'],\n subtree: true,\n });\n }\n\n /**\n * During spec tests, mockelement props aren't set - only attributes.\n * This irons out that kink\n * @param field\n * @returns the fields name prop or attr\n */\n private getName(field: PlainFormEles | NanoFormEles) {\n return field.name || field.getAttribute('name');\n }\n\n /** Checks for new `nano-...` fields and adds them to our watch array and value store */\n private setupFields() {\n let nanoFields = Array.from(\n this.host.querySelectorAll<NanoFormEles>(this.nanoFieldSelector)\n );\n\n let plainFields = Array.from(\n this.host.querySelectorAll<PlainFormEles>(this.extraFieldSelector)\n ).filter((e) => !e.closest(this.nanoFieldSelector));\n\n nanoFields = nanoFields.filter(\n (f) => !!this.getName(f) && !!this.getName(f).length\n );\n plainFields = plainFields.filter(\n (f) => !!this.getName(f) && !!this.getName(f).length\n );\n\n // do we have any currently un-watched fields?\n if (\n ![...nanoFields, ...plainFields].filter(\n (f) => !this.allFields.includes(f)\n ).length\n )\n return;\n\n // setup the initial store state / refresh on new fields\n this.nanoFields = nanoFields;\n this.plainFields = plainFields;\n this.allFields = [...nanoFields, ...plainFields];\n\n this.storeToFields(this.allFields);\n\n this.validateOnChange();\n this.fieldsToStore(this.allFields, true);\n this.nanoPayloadChange.emit(this._store.state);\n }\n\n private storeToFields(fields: Array<NanoFormEles | PlainFormEles>) {\n fields.forEach((field) => {\n const fieldName = this.getName(field);\n if (\n !fieldName.length ||\n typeof this._store.state[fieldName] === 'undefined'\n )\n return;\n\n if (\n field.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((field as HTMLInputElement).type)\n ) {\n const cbs = this.allFields.filter(\n (f) => this.getName(field) === this.getName(f)\n ) as HTMLNanoCheckboxElement[];\n if (\n cbs[0].type === 'radio' ||\n cbs[0].type === 'segment' ||\n cbs[0].type === 'segment-pill'\n ) {\n // single radio type control\n cbs.forEach((cb) => {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n });\n } else if (Array.isArray(this._store.state[fieldName])) {\n // multiple checkbox like controls\n cbs.forEach((cb) => {\n if (this._store.state[fieldName].includes(cb.value))\n cb.checked = true;\n else cb.checked = false;\n });\n } else {\n // single checkbox like control\n cbs.forEach((cb) => {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n });\n }\n return;\n }\n\n if (field.tagName === 'NANO-FILE-UPLOAD') {\n const ff = field as HTMLNanoFileUploadElement;\n // this can only work if the field is empty rn... a one-time deal\n if (!ff.files?.length) ff.files = this._store.state[fieldName];\n return;\n }\n\n // default\n field.value = this._store.state[fieldName];\n });\n }\n\n /** Loops through all `nano-...` fields and extracts their values into our store */\n private fieldsToStore(\n fields: Array<NanoFormEles | PlainFormEles>,\n init = false\n ) {\n fields.forEach((field) => {\n const fieldName = this.getName(field);\n if (!fieldName.length) return;\n\n if (!!this._store.state[fieldName] && this.hasSetStore && init) {\n // a new field is being added\n // but we already have a value for it\n // via a store that has been actively set\n // so let's not overwrite it\n return;\n }\n\n if (\n field.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((field as HTMLInputElement).type)\n ) {\n const cb = field as HTMLNanoCheckboxElement;\n\n if (\n cb.type === 'radio' ||\n cb.type === 'segment' ||\n cb.type === 'segment-pill'\n ) {\n // radio type control - only one can be checked\n if (cb.checked) this._store.state[fieldName] = cb.value;\n } else if (\n this.allFields.filter(\n (f) =>\n this.getName(f) === fieldName &&\n (f.tagName === 'NANO-CHECKBOX' ||\n (f as HTMLInputElement).type === 'checkbox')\n ).length > 1\n ) {\n // multiple checkbox type control\n const currentArr = Array.isArray(this._store.state[fieldName])\n ? this._store.state[fieldName]\n : [];\n if (cb.checked) {\n // checked\n if (!this._store.state[fieldName].includes(cb.value)) {\n this._store.state[fieldName] = [...currentArr, cb.value];\n }\n } else {\n // unchecked\n this._store.state[fieldName] = currentArr.filter(\n (v) => v !== cb.value\n );\n }\n } else {\n // single checkbox - on or off\n if (cb.checked) this._store.state[fieldName] = cb.value;\n else this._store.state[fieldName] = '';\n }\n return;\n }\n\n if (field.tagName === 'NANO-FILE-UPLOAD') {\n const ff = field as HTMLNanoFileUploadElement;\n if (!this.fileStateEqual(fieldName, ff))\n this._store.state[fieldName] = ff.files;\n\n return;\n }\n\n // default\n this._store.state[fieldName] = field.value;\n });\n }\n\n /**\n * Tries to ascertain whether the current model\n * value is the same as the `nano-file-upload` value\n * @param fieldName - the key to access from the data store\n * @param field - the nano-file-upload field to assess against\n * @returns true for equal, false for not equal\n */\n private fileStateEqual(\n fieldName: string | number,\n field: HTMLNanoFileUploadElement\n ) {\n return (\n JSON.stringify(this._store.state[fieldName]) ===\n JSON.stringify(field.files) ||\n this._store.state[fieldName] == field.files\n );\n }\n\n /**\n * Checks for user defined validations\n * @param key - current key of the data model to validate\n * @param newVal - the newly set, incoming value to validate\n */\n private async validate(key: string | number, newVal: any) {\n if (!this.validation) return;\n\n const res = this.validation(key as string, newVal, this._store.state);\n\n // no nothing - return\n if (!res) return;\n\n // stencil public methods are async\n // so we must coerce our validation\n // collection loop into a promise\n await Promise.all(\n Object.entries(res).map(async ([msg, validityState]) => {\n return validityState.fields.map(async (fieldName) => {\n // switch on/off validation messages\n const field = this.allFields.find(\n (f) => this.getName(f) === fieldName\n );\n let validityTarget:\n | PlainFormEles\n | NanoFormEles\n | HTMLNanoCheckboxGroupElement = field;\n\n if (field.tagName === 'NANO-CHECKBOX') {\n // if we have a checkbox-group, set the validation message there\n const cbg = field.closest('nano-checkbox-group');\n validityTarget = cbg || field;\n }\n\n if (\n ((validityTarget as NanoFormEles).validityMessage ||\n (validityTarget as PlainFormEles).validationMessage) === msg &&\n validityState.valid\n ) {\n // status is now valid - clear the error\n await this.setFieldError(validityTarget, '');\n } else if (!validityState.valid) {\n // status is invalid. Set the error\n await this.setFieldError(validityTarget, msg);\n }\n });\n })\n );\n }\n\n /** Loops through all store entries and checks custom validation */\n private async validateAllFields() {\n // This forces our loop to `await` and finish sequentially ... silly async stencil methods\n await Object.entries(this._store.state).reduce(\n async (memo, [key, value]) => {\n await memo;\n await this.validate(key, value);\n },\n undefined as any\n );\n }\n\n /**\n * Utility to smooth out setting error messages\n * (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)\n * @param field\n * @param msg\n */\n private async setFieldError(\n field: NanoFormEles | HTMLNanoCheckboxGroupElement | PlainFormEles,\n msg: string\n ) {\n if (field['showError']) {\n await (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).showError(\n msg\n );\n } else if (field['setError'])\n await (field as HTMLNanoCheckboxElement).setError(msg);\n else (field as PlainFormEles).setCustomValidity(msg);\n }\n\n private scrollToFirstInvalid() {\n if (!this.scrollToInvalid) return;\n\n setTimeout(() => {\n const invalidField = this.validationState.find((f) => !f.valid);\n if (!invalidField) return;\n invalidField.fields[0].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }, 200);\n }\n\n private submitForm() {\n const nanoSubmit = this.nanoSubmit.emit();\n if (nanoSubmit.defaultPrevented) return;\n this.activeForm.submit();\n }\n\n // Event handlers\n\n /**\n * Fired whenever store values change and potentially checks validity\n * @param key - the key of the store that's just changed\n * @param newVal - the incoming, new value\n */\n private handleStoreChange = async (key: string | number, newVal: any) => {\n const found = this.allFields.find((field) => this.getName(field) === key);\n\n // field update has come programmatically (not from ui),\n // so let's update the underlying ui field\n if (\n found &&\n (found.tagName === 'NANO-CHECKBOX' ||\n ['radio', 'checkbox'].includes((found as HTMLInputElement).type))\n ) {\n // it's a cb - always change\n this.storeToFields([found]);\n } else if (\n found &&\n ((found.tagName === 'NANO-FILE-UPLOAD' &&\n !this.fileStateEqual(key, found as HTMLNanoFileUploadElement)) ||\n (found.tagName !== 'NANO-FILE-UPLOAD' && found.value !== newVal))\n ) {\n // not a cb. Only change if value is different\n this.storeToFields([found]);\n }\n\n if (this.validateOn === 'dirty' && this.dirty) {\n this.internalValidate = true;\n await this.validateAllFields();\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n }\n this.nanoPayloadChange.emit(this._store.state);\n };\n\n /**\n * Handles nano field value changes and passes to store\n * @param ev - the incoming change event\n */\n private handleFieldChange = (ev: NanoFormEvent) => {\n if (!this.nanoFields.includes(ev.target)) return;\n this._dirty = true;\n this.fieldsToStore([ev.target]);\n };\n\n /**\n * Handles non-nano field value changes and passes to store\n * @param ev - the incoming change event\n */\n private handlePlainFieldChange = (ev: PlainFormEvent) => {\n if (!this.plainFields.includes(ev.target)) return;\n this.fieldsToStore([ev.target]);\n };\n\n /**\n * Handles default field validation events\n * @param ev - the invalid event\n */\n private handleFormInvalid = async (ev: Event & { target: PlainFormEles }) => {\n // if it's a non-nano field, we'll let default html5 validation do it's thing\n if (!this.plainFields.includes(ev.target)) {\n ev.preventDefault();\n }\n\n this._valid = false;\n\n // whenever `checkValidity` is called, this handler is in-turn called.\n // this flag is used to stop infinite loops\n if (this.internalValidate) return;\n\n // a submit must have happened to if 'submitThenDirty' turn on 'dirty' checking now\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n\n await this.validateAllFields();\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n // kinda insane...but if we're only validating on submit, then if the form is currently\n // in an invalid state, when submitting, it will fire an invalid event and not\n // submit the form. So let's test to make sure it is really invalid, and submit if not\n if (this.validateOn === 'submit') {\n if (this._valid) {\n this.submitForm();\n return;\n }\n }\n\n this.scrollToFirstInvalid();\n this.nanoInvalid.emit();\n };\n\n /**\n * stops default form submission, checks if valid, then submits manually\n * @param e - a submit event from the nested form element\n */\n private handleSubmit = async (e: Event) => {\n e.preventDefault();\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n await this.validateAllFields();\n\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n if (!this._valid) {\n this.scrollToFirstInvalid();\n return;\n }\n this.submitForm();\n };\n\n connectedCallback(): void {\n this.userForm = this.host.querySelector('form');\n this._store = createStore<ValidatorValueStore>({});\n }\n\n componentDidLoad() {\n requestAnimationFrame(() => {\n this.setupFields();\n this.attachSlotObserver();\n\n this.host.addEventListener('nanoChange', this.handleFieldChange);\n this.host.addEventListener('input', this.handlePlainFieldChange);\n this.host.addEventListener('change', this.handlePlainFieldChange);\n this.host.addEventListener('submit', this.handleSubmit);\n this._store.on('set', this.handleStoreChange);\n });\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n\n this.host.removeEventListener('nanoChange', this.handleFieldChange);\n this.host.removeEventListener('input', this.handlePlainFieldChange);\n this.host.removeEventListener('change', this.handlePlainFieldChange);\n this.host.removeEventListener('submit', this.handleSubmit);\n this._store.reset();\n\n if (this.activeForm)\n this.activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n\n render() {\n return (\n <Host>\n {this.userForm && <slot />}\n {!this.userForm && (\n <form ref={(f) => (this.activeForm = f)}>\n <slot />\n </form>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["listeners","WeakMap","observe","el","keys","is","event","includes","key","setTimeout","_","classList","add","isNot","remove","set","addEventListener","unobserve","get","e","removeEventListener","force","focusVisible"],"sources":["./src/utils/focus-visible.ts"],"sourcesContent":["//\n// Simulates :focus-visible behavior on an element by watching for certain keyboard and mouse heuristics and toggling a\n// `focus-visible` class. Works at the component level so no global polyfill is necessary.\n//\n// This will eventually be removed pending better :focus-visible support: https://caniuse.com/#search=focus-visible\n//\nconst listeners = new WeakMap();\n\nexport function observe(el: HTMLElement) {\n const keys = [\n 'Tab',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'PageDown',\n 'PageUp',\n ' ',\n 'Spacebar',\n ];\n const is = (event: KeyboardEvent) => {\n if (keys.includes(event.key))\n setTimeout((_) => el.classList.add('focus-visible'));\n };\n const isNot = () => {\n el.classList.remove('focus-visible');\n };\n listeners.set(el, { is, isNot });\n\n el.addEventListener('keydown', is);\n el.addEventListener('keyup', is);\n el.addEventListener('click', isNot);\n}\n\nexport function unobserve(el: HTMLElement) {\n if (!listeners) return;\n let is, isNot;\n\n try {\n ({ is, isNot } = listeners.get(el));\n } catch (e) {\n return;\n }\n\n el.classList.remove('focus-visible');\n el.removeEventListener('keydown', is);\n el.removeEventListener('keyup', is);\n el.removeEventListener('click', isNot);\n}\n\nexport function force(el: HTMLElement, add = true) {\n if (add) setTimeout((_) => el.classList.add('focus-visible'));\n else setTimeout((_) => el.classList.remove('focus-visible'));\n}\n\nexport const focusVisible = {\n observe,\n unobserve,\n force,\n};\n"],"mappings":";;;AAMA,MAAMA,EAAY,IAAIC,Q,SAENC,EAAQC,GACtB,MAAMC,EAAO,CACX,MACA,UACA,YACA,YACA,aACA,OACA,MACA,WACA,SACA,IACA,YAEF,MAAMC,EAAMC,IACV,GAAIF,EAAKG,SAASD,EAAME,KACtBC,YAAYC,GAAMP,EAAGQ,UAAUC,IAAI,kBAAiB,EAExD,MAAMC,EAAQ,KACZV,EAAGQ,UAAUG,OAAO,gBAAgB,EAEtCd,EAAUe,IAAIZ,EAAI,CAAEE,KAAIQ,UAExBV,EAAGa,iBAAiB,UAAWX,GAC/BF,EAAGa,iBAAiB,QAASX,GAC7BF,EAAGa,iBAAiB,QAASH,EAC/B,C,SAEgBI,EAAUd,GACxB,IAAKH,EAAW,OAChB,IAAIK,EAAIQ,EAER,MACKR,KAAIQ,SAAUb,EAAUkB,IAAIf,G,CAC/B,MAAOgB,GACP,M,CAGFhB,EAAGQ,UAAUG,OAAO,iBACpBX,EAAGiB,oBAAoB,UAAWf,GAClCF,EAAGiB,oBAAoB,QAASf,GAChCF,EAAGiB,oBAAoB,QAASP,EAClC,C,SAEgBQ,EAAMlB,EAAiBS,EAAM,MAC3C,GAAIA,EAAKH,YAAYC,GAAMP,EAAGQ,UAAUC,IAAI,wBACvCH,YAAYC,GAAMP,EAAGQ,UAAUG,OAAO,kBAC7C,C,MAEaQ,EAAe,CAC1BpB,UACAe,YACAI,gB"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{r as i,c as a,h as o,a as t,g as e}from"./p-bf91c50e.js";import{M as s}from"./p-e04f2333.js";import{l as n,u as r}from"./p-45b7682a.js";import{h as l}from"./p-b933f3c8.js";import{C as d}from"./p-909a424c.js";import"./p-45abbbdd.js";import"./p-257432ff.js";import"./p-9746b0a5.js";import"./p-69a3e911.js";const h=":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--content-background:#fafafa;--footer-content:#e4e6e8;--scrim-color:var(--nano-layer-overlay-dark, rgb(74 74 74 / 50%));--box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));--close-button-color:#b5aea7;--width:60rem;--tint-color:#00607b;--body-padding-v:var(--nano-spacing-large, 20px);--body-padding-h:var(--nano-spacing-large, 20px);--header-padding-v:var(--nano-spacing-medium, 16px);--header-padding-h:var(--nano-spacing-large, 20px);--footer-padding-v:var(--nano-spacing-medium, 16px);--footer-padding-h:var(--nano-spacing-large, 20px)}.dialog{display:flex;align-items:center;justify-content:center;position:fixed;inset:0;z-index:var(--nano-layer-index-modal, 700)}.dialog:not(.dialog--visible){position:absolute;inline-size:1px;block-size:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;pointer-events:none;visibility:hidden}.dialog__panel{display:flex;flex-direction:column;z-index:2;inline-size:var(--width);max-inline-size:calc(100% - var(--nano-spacing-xlarge, 24px));max-block-size:calc(92% - var(--nano-spacing-xlarge, 24px));background-color:var(--content-background);border-radius:var(--border-radius);box-shadow:var(--box-shadow);opacity:0;transform:scale(0.8);transition:var(--nano-transition-fast, 0.3s) opacity, var(--nano-transition-fast, 0.3s) transform}.dialog__panel:focus{outline:none}.dialog--with-ribbon .dialog__panel{-webkit-border-before:5px solid var(--tint-color);border-block-start:5px solid var(--tint-color)}.dialog--open .dialog__panel{display:flex;opacity:1;transform:none}.dialog--nodismiss .dialog__panel{animation:cannotClose 0.25s ease-in-out 1}@keyframes cannotClose{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}.dialog__header{flex:0 0 auto;display:flex;min-inline-size:var(--width);inline-size:100%;background-color:var(--content-background);border-radius:var(--border-radius) var(--border-radius) 0 0;transition:var(--nano-transition-fast, 0.1s) box-shadow}.dialog--visible .dialog__header{min-inline-size:auto}[stuck] .dialog__header{box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2))}.dialog__title{flex:1 1 auto;font-size:var(--nano-fontsize-large, 1.25rem);line-height:1.6;padding-block:var(--header-padding-v);padding-inline:var(--header-padding-h)}.dialog .dialog__close-icon{flex:0 0 auto;display:flex;align-items:center;font-size:var(--nano-fontsize-xlarge, 1.5rem);padding-block:0;padding-inline:var(--header-padding-h);--color:var(--close-button-color)}.dialog__body{padding-block:0 var(--body-padding-v);padding-inline:var(--body-padding-h)}.dialog:not(.dialog--has-header) .dialog__body{-webkit-padding-before:var(--body-padding-v);padding-block-start:var(--body-padding-v)}.dialog__body ::slotted(*){max-inline-size:100%}.dialog__body-wrap{flex:1 1 auto;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:var(--border-radius)}.dialog:not(.dialog--has-header) .dialog__body-wrap{border-radius:0 0 inherit inherit}.dialog:not(.dialog--has-footer) .dialog__body-wrap{border-radius:inherit inherit 0 0}.dialog__footer{inline-size:100%;padding-block:var(--footer-padding-v);padding-inline:var(--footer-padding-h);background:var(--footer-content);border-radius:0 0 var(--border-radius) var(--border-radius);position:relative;inset-block-start:1px}.dialog--visible .dialog__footer{min-inline-size:auto}.dialog__footer ::slotted(button){-webkit-margin-end:var(--nano-spacing-small, 8px) !important;margin-inline-end:var(--nano-spacing-small, 8px) !important}.dialog:not(.dialog--has-footer) .dialog__footer{display:none}.dialog__close-txt{color:var(--tint-color);border:none;text-decoration:underline;margin:0;text-underline-offset:4px;background-color:transparent;font:inherit;-webkit-box-align:center;cursor:pointer;font-size:var(--nano-fontsize-small, 0.875rem);padding:0.5rem;border-radius:var(--nano-border-radius-small, 2px);transition:box-shadow 100ms ease-in-out}.dialog__close-txt:focus{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.dialog__overlay{position:fixed;inset:0;background-color:var(--scrim-color);opacity:0;transition:var(--nano-transition-fast, 0.3s) opacity;-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px))}.dialog--open .dialog__overlay{opacity:1}";let c=0;const p=class{constructor(o){i(this,o);this.nanoShow=a(this,"nanoShow",7);this.nanoAfterShow=a(this,"nanoAfterShow",7);this.nanoHide=a(this,"nanoHide",7);this.nanoAfterHide=a(this,"nanoAfterHide",7);this.nanoInitialFocus=a(this,"nanoInitialFocus",7);this.nanoRequestClose=a(this,"nanoRequestClose",7);this.componentId=`dialog-${++c}`;this.willShow=false;this.willHide=false;this.addedTransEnd=false;this.handleKeyDown=i=>{if(i.key==="Escape"){this.requestClose()}};this.requestClose=()=>{const i=this.nanoRequestClose.emit();if(!i.defaultPrevented&&!this.noUserDismiss){this.hide()}else{this.noDismiss=true;setTimeout((i=>this.noDismiss=false),250)}};this.handleTransitionEnd=i=>{if(i.propertyName==="opacity"&&i.composedPath().find((i=>i===this.panel||i===this.overlay))){this.isVisible=this.open;this.willShow=false;this.willHide=false;this.open?this.nanoAfterShow.emit():this.nanoAfterHide.emit()}};this.handleSlotChange=()=>{this.hasFooter=l(this.host,"footer")};this.isVisible=false;this.noDismiss=false;this.hasFooter=false;this.showRibbon=true;this.open=false;this.label=undefined;this.noHeader=false;this.noFooter=false;this.noUserDismiss=false;this.storeId=undefined;this.storeMethod="url-hash";this.hoist=false}handleOpenChange(){this.open?this.show():this.hide()}handleHoistChange(){if(!this.hoist||document.body.children[0]===this.host)return;document.body.prepend(this.host)}async show(){if(this.willShow){return}const i=this.nanoShow.emit();if(i.defaultPrevented){this.open=false;return}this.originalTrigger=document.activeElement;this.willShow=true;this.isVisible=true;this.open=true;this.modal.activate();n(this.host);if(this.open){this.host.addEventListener("nanoAfterShow",(()=>{const i=this.nanoInitialFocus.emit();if(!i.defaultPrevented){this.panel.focus({preventScroll:true})}}),{once:true})}}async hide(){if(this.willHide){return}const i=this.nanoHide.emit();if(i.defaultPrevented){this.open=true;return}this.willHide=true;this.open=false;this.modal.deactivate();r(this.host);this.stopVideos();const a=this.originalTrigger;if(a&&typeof a.focus==="function"){setTimeout((()=>a.focus()))}}stopVideos(){const i=Array.from(this.host.querySelectorAll("iframe,video"));i.forEach((i=>{if(i.tagName.toLowerCase()==="video")i.pause();else{const a=i.src;i.src=a}}))}connectedCallback(){this.handleHoistChange();this.modal=new s(this.host);if(this.panel){this.addedTransEnd=true;this.panel.addEventListener("transitionend",this.handleTransitionEnd)}}componentWillLoad(){this.handleSlotChange();if(this.open)this.show();if(this.storeId)d.init(this,["open"],this.storeMethod,this.storeId)}componentDidLoad(){if(!this.addedTransEnd){this.panel.addEventListener("transitionend",this.handleTransitionEnd)}}disconnectedCallback(){if(!this.panel)return;r(this.host);this.addedTransEnd=false;this.panel.removeEventListener("transitionend",this.handleTransitionEnd)}render(){return o(t,{showing:this.isVisible?true:undefined},o("div",{part:"base",class:{dialog:true,"dialog--open":this.open,"dialog--visible":this.isVisible,"dialog--has-footer":!this.noFooter,"dialog--has-header":!this.noHeader,"dialog--nodismiss":this.noDismiss,"dialog--with-ribbon":this.showRibbon},onKeyDown:this.handleKeyDown},o("div",{part:"overlay",class:"dialog__overlay",ref:i=>this.overlay=i,onClick:this.requestClose}),o("div",{ref:i=>this.panel=i,part:"panel",class:"dialog__panel",role:"dialog","aria-modal":"true","aria-hidden":this.open?"false":"true","aria-label":this.noHeader?this.label:null,"aria-labelledby":!this.noHeader?`${this.componentId}-title`:null,tabIndex:0},o("div",{class:"dialog__body-wrap"},!this.noHeader&&o("nano-sticker",null,o("header",{part:"header",class:"dialog__header"},o("span",{part:"title",class:"dialog__title",id:`${this.componentId}-title`},o("slot",{name:"label"},this.label||String.fromCharCode(65279))),!this.noUserDismiss&&o("nano-icon-button",{exportparts:"base:close-button",class:"dialog__close-icon",label:"close dialog",onClick:this.requestClose,iconName:"light/times"}))),o("div",{part:"body",class:"dialog__body"},o("slot",null)),!this.noFooter&&(this.hasFooter||!this.noUserDismiss)&&o("nano-sticker",{position:"bottom"},o("footer",{part:"footer",class:"dialog__footer"},o("slot",{name:"footer",onSlotchange:this.handleSlotChange}),!this.noUserDismiss&&o("button",{class:"dialog__close-txt",onClick:this.requestClose},"Close")))))))}get host(){return e(this)}static get watchers(){return{open:["handleOpenChange"],hoist:["handleHoistChange"]}}};p.style=h;export{p as nano_dialog};
|
5
|
+
//# sourceMappingURL=p-fccd59e4.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["dialogCss","id","Dialog","this","componentId","willShow","willHide","addedTransEnd","handleKeyDown","event","key","requestClose","nanoOverlayDismiss","nanoRequestClose","emit","defaultPrevented","noUserDismiss","hide","noDismiss","setTimeout","_","handleTransitionEnd","propertyName","composedPath","find","node","panel","overlay","isVisible","open","nanoAfterShow","nanoAfterHide","handleSlotChange","hasFooter","hasSlot","host","handleOpenChange","show","handleHoistChange","hoist","document","body","children","prepend","async","nanoShow","originalTrigger","activeElement","modal","activate","lockBodyScrolling","addEventListener","nanoInitialFocus","focus","preventScroll","once","nanoHide","deactivate","unlockBodyScrolling","stopVideos","trigger","videos","Array","from","querySelectorAll","forEach","video","tagName","toLowerCase","pause","src","connectedCallback","Modal","componentWillLoad","storeId","ComponentStore","init","storeMethod","componentDidLoad","disconnectedCallback","removeEventListener","render","h","Host","showing","undefined","part","class","dialog","noFooter","noHeader","showRibbon","onKeyDown","ref","el","onClick","role","label","tabIndex","name","String","fromCharCode","exportparts","iconName","position","onSlotchange"],"sources":["./src/components/dialog/dialog.scss?tag=nano-dialog&encapsulation=shadow","./src/components/dialog/dialog.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n@import '../../global/style/nano-theme/form';\n\n/**\n * @prop --width: The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\n * @prop --border-radius: defaults to #{$layer-border-radius};\n * @prop --content-background: defaults to #{$layer-bg-color};\n * @prop --footer-background: defaults to #{map.get($colors, celsius)};\n * @prop --box-shadow: defaults to $layer-shadow-xlarge;\n * @prop --close-button-color: defaults to #{map.get($colors, mediumgrey)};\n * @prop --scrim-color: overlay colour of alert display. Defaults to #{$layer-overlay-dark};\n * @prop --tint-color: colour used to highlight items in the dialog - top ribbon, bottom close button. Default #{map.get($colors, blue)};\n * @prop --width: defaults to 31rem;\n */\n:host {\n --border-radius: #{$layer-border-radius};\n --content-background: #fafafa;\n --footer-content: #{map.get($colors, lightgrey)};\n --scrim-color: #{$layer-overlay-dark};\n --box-shadow: #{$layer-shadow-large};\n --close-button-color: #{map.get($colors, palegrey)};\n --width: 60rem;\n --tint-color: #{darken(map.get($colors, blue), 5%)};\n --body-padding-v: #{$spacing-large};\n --body-padding-h: #{$spacing-large};\n --header-padding-v: #{$spacing-medium};\n --header-padding-h: #{$spacing-large};\n --footer-padding-v: #{$spacing-medium};\n --footer-padding-h: #{$spacing-large};\n}\n\n.dialog {\n $self: &;\n\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n inset: 0;\n z-index: #{$layer-index-modal};\n\n &:not(.dialog--visible) {\n @include hidden;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n z-index: 2;\n inline-size: var(--width);\n max-inline-size: calc(100% - #{$spacing-xlarge});\n max-block-size: calc(92% - #{$spacing-xlarge});\n background-color: var(--content-background);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n opacity: 0;\n transform: scale(0.8);\n transition: #{$transition-fast} opacity, #{$transition-fast} transform;\n\n &:focus {\n outline: none;\n }\n\n .dialog--with-ribbon & {\n border-block-start: 5px solid var(--tint-color);\n }\n\n .dialog--open & {\n display: flex;\n opacity: 1;\n transform: none;\n }\n\n .dialog--nodismiss & {\n animation: cannotClose 0.25s ease-in-out 1;\n\n @keyframes cannotClose {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.08);\n }\n\n 100% {\n transform: scale(1);\n }\n }\n }\n }\n\n &__header {\n flex: 0 0 auto;\n display: flex;\n min-inline-size: var(--width);\n inline-size: 100%;\n background-color: var(--content-background);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n transition: #{$transition-xfast} box-shadow;\n\n .dialog--visible & {\n min-inline-size: auto;\n }\n\n [stuck] & {\n box-shadow: #{$layer-shadow-medium};\n }\n }\n\n &__title {\n flex: 1 1 auto;\n font-size: #{$fontsize-large};\n line-height: 1.6;\n padding-block: var(--header-padding-v);\n padding-inline: var(--header-padding-h);\n }\n\n & &__close-icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: #{$fontsize-xlarge};\n padding-block: 0;\n padding-inline: var(--header-padding-h);\n\n --color: var(--close-button-color);\n }\n\n &__body {\n padding-block: 0 var(--body-padding-v);\n padding-inline: var(--body-padding-h);\n\n .dialog:not(.dialog--has-header) & {\n padding-block-start: var(--body-padding-v);\n }\n\n & ::slotted(*) {\n max-inline-size: 100%;\n }\n\n &-wrap {\n flex: 1 1 auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n border-radius: var(--border-radius);\n\n .dialog:not(.dialog--has-header) & {\n border-radius: 0 0 inherit inherit;\n }\n\n .dialog:not(.dialog--has-footer) & {\n border-radius: inherit inherit 0 0;\n }\n }\n }\n\n &__footer {\n inline-size: 100%;\n padding-block: var(--footer-padding-v);\n padding-inline: var(--footer-padding-h);\n background: var(--footer-content);\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n position: relative;\n inset-block-start: 1px;\n\n .dialog--visible & {\n min-inline-size: auto;\n }\n\n ::slotted(button) {\n margin-inline-end: #{$spacing-small} !important;\n }\n\n .dialog:not(.dialog--has-footer) & {\n display: none;\n }\n }\n\n &__close-txt {\n color: var(--tint-color);\n border: none;\n text-decoration: underline;\n margin: 0;\n text-underline-offset: 4px;\n background-color: transparent;\n font: inherit;\n -webkit-box-align: center;\n cursor: pointer;\n font-size: #{$fontsize-small};\n padding: 0.5rem;\n border-radius: #{$border-radius-small};\n transition: box-shadow 100ms ease-in-out;\n\n &:focus {\n outline: none;\n box-shadow: #{$control-focus-style};\n }\n }\n\n &__overlay {\n position: fixed;\n inset: 0;\n background-color: var(--scrim-color);\n opacity: 0;\n transition: #{$transition-fast} opacity;\n backdrop-filter: blur(#{$layer-overlay-blur});\n\n .dialog--open & {\n opacity: 1;\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n ComponentInterface,\n} from '@stencil/core';\nimport Modal from '../../utils/modal';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport { hasSlot } from '../../utils/slot';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\n\nlet id = 0;\n\n/**\n * Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n *\n * @slot - The dialog's content.\n * @slot label - The dialog's label. Alternatively, you can use the label prop.\n * @slot footer - The dialog's footer, usually one or more buttons representing various options.\n */\n@Component({\n tag: 'nano-dialog',\n styleUrl: 'dialog.scss',\n shadow: true,\n})\nexport class Dialog implements ComponentInterface {\n private componentId = `dialog-${++id}`;\n private modal: Modal;\n private panel: HTMLElement;\n private willShow = false;\n private willHide = false;\n private originalTrigger: HTMLElement | null;\n private overlay: HTMLElement;\n private addedTransEnd = false;\n\n @Element() host: HTMLNanoDialogElement;\n @State() isVisible = false;\n @State() noDismiss = false;\n @State() hasFooter = false;\n\n /** Show a colour ribbon at the top of the modal */\n @Prop() showRibbon = true;\n\n /** Indicates whether or not the dialog 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 this.open ? this.show() : this.hide();\n }\n\n /** The dialog's label as displayed in the header. You should always include a relevant\n * label even when using `no-header`, as it is required for proper accessibility. */\n @Prop() label!: string;\n\n /** Set to true to disable the header. This will also remove the default close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noHeader = false;\n\n /** Set to true to disable the footer. This will also remove the footer close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noFooter = false;\n\n /** An alternative to `preventDefault()` on the `nanoRequestClose` event. This will hide the close button and disable clicks on the overlay or presses the `Escape` key */\n @Prop() noUserDismiss = false;\n\n /** Store search queries (against this ID) to the component store. Use in conjunction with storeMethod */\n @Prop() storeId?: string;\n\n /** The method of storage. Either session storage, url hash (after the '#') or url query (after the '?'). */\n @Prop() storeMethod: StorageMethods = 'url-hash';\n\n /** Relocate the dialog to the root of the DOM. Useful for elements bound via css `transform: ...` */\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 dialog opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the dialog opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the dialog closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the dialog closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /** Emitted when the dialog opens and the panel gains focus. Calling `event.preventDefault()` will prevent\n * focus and allow you to set it on a different element in the dialog, such as an input or button. */\n @Event() nanoInitialFocus: EventEmitter;\n\n /** Emitted when the user clicks the close button, clicks the overlay, or presses the `Escape` key. Calling `event.preventDefault()` will prevent the dialog from closing. */\n @Event() nanoRequestClose: EventEmitter;\n\n /** Shows the dialog */\n @Method()\n async show() {\n if (this.willShow) {\n return;\n }\n\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.originalTrigger = document.activeElement as HTMLElement;\n this.willShow = true;\n this.isVisible = true;\n this.open = true;\n this.modal.activate();\n\n lockBodyScrolling(this.host);\n\n if (this.open) {\n // Wait for the next frame before setting initial focus so the dialog is technically visible\n this.host.addEventListener(\n 'nanoAfterShow',\n () => {\n const nanoInitialFocus = this.nanoInitialFocus.emit();\n if (!nanoInitialFocus.defaultPrevented) {\n this.panel.focus({ preventScroll: true });\n }\n },\n { once: true }\n );\n }\n }\n\n /** Hides the dialog */\n @Method()\n async hide() {\n if (this.willHide) {\n return;\n }\n\n const nanoHide = this.nanoHide.emit();\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.willHide = true;\n this.open = false;\n this.modal.deactivate();\n unlockBodyScrolling(this.host);\n this.stopVideos();\n\n // Restore focus to the original trigger\n const trigger = this.originalTrigger;\n if (trigger && typeof trigger.focus === 'function') {\n setTimeout(() => trigger.focus());\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n const nanoOverlayDismiss = this.nanoRequestClose.emit();\n\n if (!nanoOverlayDismiss.defaultPrevented && !this.noUserDismiss) {\n this.hide();\n } else {\n this.noDismiss = true;\n setTimeout((_) => (this.noDismiss = false), 250);\n }\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n event\n .composedPath()\n .find((node) => node === this.panel || node === this.overlay)\n ) {\n // Ensure we only emit one event when the target element is no longer visible\n this.isVisible = this.open;\n this.willShow = false;\n this.willHide = false;\n this.open ? this.nanoAfterShow.emit() : this.nanoAfterHide.emit();\n }\n };\n\n private handleSlotChange = () => {\n this.hasFooter = hasSlot(this.host, 'footer');\n };\n\n private stopVideos() {\n const videos: (HTMLVideoElement | HTMLIFrameElement)[] = Array.from(\n this.host.querySelectorAll('iframe,video')\n );\n videos.forEach((video) => {\n if (video.tagName.toLowerCase() === 'video')\n (video as HTMLVideoElement).pause();\n else {\n const src = video.src;\n video.src = src;\n }\n });\n }\n\n connectedCallback() {\n this.handleHoistChange();\n this.modal = new Modal(this.host);\n if (this.panel) {\n this.addedTransEnd = true;\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n componentWillLoad() {\n this.handleSlotChange();\n // Show on init if open\n if (this.open) this.show();\n if (this.storeId)\n ComponentStore.init(this, ['open'], this.storeMethod, this.storeId);\n }\n\n componentDidLoad() {\n if (!this.addedTransEnd) {\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n disconnectedCallback() {\n if (!this.panel) return;\n unlockBodyScrolling(this.host);\n this.addedTransEnd = false;\n this.panel.removeEventListener('transitionend', this.handleTransitionEnd);\n }\n\n render() {\n return (\n <Host showing={this.isVisible ? true : undefined}>\n <div\n part=\"base\"\n class={{\n dialog: true,\n 'dialog--open': this.open,\n 'dialog--visible': this.isVisible,\n 'dialog--has-footer': !this.noFooter,\n 'dialog--has-header': !this.noHeader,\n 'dialog--nodismiss': this.noDismiss,\n 'dialog--with-ribbon': this.showRibbon,\n }}\n onKeyDown={this.handleKeyDown}\n >\n <div\n part=\"overlay\"\n class=\"dialog__overlay\"\n ref={(el) => (this.overlay = el)}\n onClick={this.requestClose}\n />\n\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class=\"dialog__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-label={this.noHeader ? this.label : null}\n aria-labelledby={\n !this.noHeader ? `${this.componentId}-title` : null\n }\n tabIndex={0}\n >\n <div class=\"dialog__body-wrap\">\n {!this.noHeader && (\n <nano-sticker>\n <header part=\"header\" class=\"dialog__header\">\n <span\n part=\"title\"\n class=\"dialog__title\"\n id={`${this.componentId}-title`}\n >\n <slot name=\"label\">\n {/* If there's no label, use an invisible character to prevent the heading from collapsing */}\n {this.label || String.fromCharCode(65279)}\n </slot>\n </span>\n {!this.noUserDismiss && (\n <nano-icon-button\n exportparts=\"base:close-button\"\n class=\"dialog__close-icon\"\n label=\"close dialog\"\n onClick={this.requestClose}\n iconName=\"light/times\"\n />\n )}\n </header>\n </nano-sticker>\n )}\n <div part=\"body\" class=\"dialog__body\">\n <slot />\n </div>\n {!this.noFooter && (this.hasFooter || !this.noUserDismiss) && (\n <nano-sticker position=\"bottom\">\n <footer part=\"footer\" class=\"dialog__footer\">\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n {!this.noUserDismiss && (\n <button\n class=\"dialog__close-txt\"\n onClick={this.requestClose}\n >\n Close\n </button>\n )}\n </footer>\n </nano-sticker>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{r as t,c as i,h as e,a as s,g as n}from"./p-bf91c50e.js";import{p as a,a as o,c as h}from"./p-cecb9af1.js";import{c as d}from"./p-411bb8f1.js";const r=".sc-nano-date-input-h{box-sizing:border-box}*.sc-nano-date-input,*.sc-nano-date-input::before,*.sc-nano-date-input::after{box-sizing:border-box}[hidden].sc-nano-date-input{display:none !important}.sc-nano-date-input-h{display:inline-block;inline-size:100%;--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--open-btn-color:var(--nano-button-color, #f0efed);--open-btn-border:none;--close-btn-color:var(--nano-button-color, #f0efed);--picker-base-size:16px}.nano-color.sc-nano-date-input-h{--focus-shadow:0 0 0 0.1875rem rgb(var(--nano-color-tint-rgb)/0.56)}nano-icon.sc-nano-date-input{pointer-events:none}.date-field.sc-nano-date-input{display:flex;flex-direction:column;position:relative}.date-field__dropdown.sc-nano-date-input{--padding:0;--overflow:visible;padding:0 !important;inline-size:0 !important;inline-size:100%;z-index:var(--nano-layer-index-dropdown, 300) !important}.date-field__close-bar.sc-nano-date-input{align-items:center;display:flex;justify-content:space-between;text-overflow:ellipsis;white-space:nowrap;border:0;margin:0;overflow:visible;padding:0;position:absolute;inset-inline-end:-8px;inset-block-start:-8px;inline-size:auto;z-index:1}.date-field__open.sc-nano-date-input{background:var(--open-btn-color);border:var(--open-btn-border);margin:0;-webkit-appearance:none;appearance:none}.date-field__open.sc-nano-date-input:focus{box-shadow:var(--focus-shadow);outline:none}.date-field__close.sc-nano-date-input{align-items:center;-webkit-appearance:none;appearance:none;background:var(--close-btn-color);border:0;border-radius:50%;cursor:pointer;display:flex;block-size:24px;justify-content:center;padding:0;inline-size:24px}@media (min-width: 36em){.date-field__close.sc-nano-date-input{opacity:0}}.date-field__close.sc-nano-date-input:focus{box-shadow:var(--focus-shadow);outline:none}@media (min-width: 36em){.date-field__close.sc-nano-date-input:focus{opacity:1}}.date-field__close.sc-nano-date-input nano-icon.sc-nano-date-input{margin-block:0;margin-inline:auto}.date-field.sc-nano-date-input nano-date-picker.sc-nano-date-input{font-size:var(--picker-base-size)}.vhidden.sc-nano-date-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}";const l={d:"(\\d{1,2})",m:"(\\d{1,2})",y:"(\\d{4})"};let c=0;const u=class{constructor(e){t(this,e);this.nanoChange=i(this,"nanoChange",7);this.nanoValidate=i(this,"nanoValidate",7);this.directInput=false;this.dateOrderIndeces={d:0,m:1,y:3};this.inputId=`nano-input-${c++}`;this.locale=window.navigator.languages||window.navigator.language||undefined;this._dropDownConfig={};this.onInputChange=t=>{t.stopPropagation();this.setValue(t.target.value)};this.onInputValidate=t=>{t.stopPropagation();this._invalid=!t.detail.isValid;this.nanoValidate.emit({isValid:t.detail.isValid,errorMessage:t.detail.errorMessage,originalEvent:t.detail.originalEvent})};this.onInputKey=()=>{this.directInput=true};this.onDatePicked=t=>{this.directInput=false;this.value=t.detail.value;if(this.closeAfterPicked)this.pickerOpen=false};this.onDropdownHide=()=>{setTimeout((t=>this.pickerOpen=false),200);setTimeout((t=>this.trigger.focus()),50)};this.onDropdownShow=()=>{setTimeout((t=>{this.pickerEle.setFocus(false,this.pickerOpenSource==="key");this.pickerOpenSource=null}),200)};this.onTriggerClick=()=>{if(!this.pickerOpen){this.pickerOpen=true;this.pickerOpenSource="mouse"}};this.onTriggerKey=t=>{if([" ","Enter"].includes(t.key)){if(!this.pickerOpen){this.pickerOpen=true;this.pickerOpenSource="key"}}};this.onCloseClick=()=>{if(this.pickerOpen)this.pickerOpen=false};this.onCloseKeyDown=t=>{if(t.key==="Tab"&&t.shiftKey){this.pickerEle.setFocus(true);t.preventDefault()}if(t.key===" "||t.key==="Enter"){if(this.pickerOpen)this.pickerOpen=false}};this.pattern=undefined;this.inputValue=undefined;this._invalid=false;this.helperText=true;this.helperTextFormat={year:"numeric",month:"long",day:"numeric"};this.floatLabel=false;this.name=this.inputId;this.readonly=false;this.size=undefined;this.form=undefined;this.firstDayOfWeek=undefined;this.localization=undefined;this.disabled=false;this.color=undefined;this.autofocus=false;this.clearInput=false;this.label=undefined;this.placeholder=undefined;this.value="";this.validateOn="submitThenDirty";this.showInlineError=true;this.dateOrder="dmy";this.required=false;this.min=undefined;this.max=undefined;this.hideLabel=false;this.picker=true;this.initialPickerDate=undefined;this.pickerOpen=false;this.closeAfterPicked=true;this.isDateDisabled=()=>false}get invalid(){return this._invalid}get validityMessage(){if(!this.input)return"";return this.input.validityMessage}handleValueChange(){if(!this.directInput)this.inputValue=this.formatIsoDate(this.value);setTimeout((()=>{this.nanoChange.emit({value:this.value,date:a(this.value)})}),20);this.directInput=false}handleDateOrderChange(){this.setDatePattern()}testDateValidity(){const t=a(this.value);let i,e,s="";if(this.value&&t){if(this.min&&(i=a(this.min))&&t<i){s="Date below the minimum: "+i.toLocaleDateString(this.locale,this.helperTextFormat)}if(this.max&&(e=a(this.max))&&t>e){s="Date above the maximum: "+e.toLocaleDateString(this.locale,this.helperTextFormat)}if(this.isDateDisabled(t)){s="Date selected is disabled."}}requestAnimationFrame((async i=>{if(!this.input)return;const e=await this.input.getInputElement();if(this.value.length&&!t)s="Please enter a valid date";e.setCustomValidity(s);if(this.input.validateOn==="dirty"){this.input.showError(s)}}))}handlePickerOpenChange(){this.dropdown.open=this.pickerOpen}get dropDownConfig(){return this._dropDownConfig}set dropDownConfig(t){this._dropDownConfig=Object.assign(Object.assign({},this._dropDownConfig),t)}get dateValue(){return a(this.value)}async reportValidity(t){const i=await this.input.reportValidity(t);if(i.isValid&&t)this.testDateValidity();return await this.input.reportValidity(t)}async setFocus(){if(this.input)this.input.setFocus()}async getInputElement(){return await this.input.getInputElement()}async showError(t){if(!this.input)return;this.input.showError(t)}setDatePattern(){const t=[];const i=[];Array.from(this.dateOrder).map(((e,s)=>{t.push(l[e]);this.dateOrderIndeces[e]=s;i.push(e==="y"?"yyyy":e+e)}));this.pattern=t.join("\\W+");if(!this.placeholder&&this.placeholder!=="false")this.placeholder=i.join(" ")}formatIsoDate(t){const i=[];Array.from("ymd").map((t=>i.push(l[t])));const e=t.match(new RegExp(i.join("\\W+")));if(!e)return"";const s=[];s[this.dateOrderIndeces.d]=e[3];s[this.dateOrderIndeces.m]=e[2];s[this.dateOrderIndeces.y]=e[1];return s.join(" ")}setValue(t){const i=t.match(new RegExp(this.pattern));if(!i){this.value=t;return}let e=h(i[this.dateOrderIndeces.y+1],i[this.dateOrderIndeces.m+1],i[this.dateOrderIndeces.d+1]);if(!e){e=new Date(t);if(!e){this.value=t;return}}const s=o(e);this.value=s;return s}connectedCallback(){this.setDatePattern();this.handleValueChange()}componentDidLoad(){if(!this.pickerCloseBtn||!this.picker)return;this.pickerEle.firstFocusEle=this.pickerCloseBtn;this.dropdown.tetherTo=this.trigger;setTimeout((t=>this.handlePickerOpenChange()),300)}render(){this.locale=navigator.languages||navigator.language||undefined;this.dropDownConfig.placement=this.dropDownConfig.placement||"bottom-end";if(this.host.ownerDocument.dir==="rtl"){this.dropDownConfig.placement.replace("start","end")}if(this.trigger)this.dropDownConfig.tetherTo=this.trigger;const t=a(this.value);const i=!!this.host.querySelector('[slot="helper"]');return e(s,{class:Object.assign({},d(this.color))},e("div",{class:"date-field"},e("nano-input",{class:"date-field__input",slot:"trigger",required:this.required||undefined,showInlineError:this.showInlineError,validateOn:this.validateOn,placeholder:this.placeholder!=="false"?this.placeholder:undefined,pattern:this.pattern,label:this.label,disabled:this.disabled||undefined,color:this.color||undefined,autofocus:this.autofocus||undefined,clearInput:this.clearInput||undefined,onNanoChange:this.onInputChange,onNanoInput:this.onInputKey,onNanoValidate:this.onInputValidate,name:"",form:this.form||undefined,size:this.size||undefined,readonly:this.readonly,value:this.inputValue,ref:t=>this.input=t,floatLabel:this.floatLabel,hideLabel:this.hideLabel,inputmode:"numeric",part:"input"},e("slot",{name:"start",slot:"start"}),e("slot",{name:"label"}),e("slot",{name:"end",slot:"end"}),this.picker&&[e("button",{slot:"end",class:"date-field__open",type:"button",onKeyDown:this.onTriggerKey,onClick:this.onTriggerClick,ref:t=>this.trigger=t,disabled:this.disabled||this.readonly},e("nano-icon",{name:"light/calendar-alt"})),e("nano-dropdown",Object.assign({slot:"end",onNanoHide:this.onDropdownHide,onNanoShow:this.onDropdownShow,dialogTitle:"Choose a date",class:"date-field__dropdown",ref:t=>this.dropdown=t},this.dropDownConfig,{part:"dropdown"}),e("div",null,e("div",{class:"date-field__close-bar"},e("button",{class:"date-field__close",type:"button",onMouseDown:this.onCloseClick,onKeyDown:this.onCloseKeyDown,ref:t=>this.pickerCloseBtn=t},e("nano-icon",{name:"light/times"}),e("span",{class:"vhidden"},"Close window"))),e("nano-date-picker",{isDateDisabled:this.isDateDisabled,onNanoDatePicked:this.onDatePicked,min:this.min||undefined,max:this.max||undefined,"is-modal":true,ref:t=>this.pickerEle=t,localization:this.localization,selectedDate:this.value||this.initialPickerDate,firstDayOfWeek:this.firstDayOfWeek,color:this.color||undefined,part:"date-picker"})))],(i||this.helperText||this.showInlineError)&&e("span",{slot:"helper"},e("span",{class:{vhidden:!!this.value.length}},e("slot",{name:"helper"})),this.helperText&&!!t&&e("span",null,t.toLocaleDateString(this.locale,this.helperTextFormat)))),e("input",{type:"hidden",value:this.value,name:this.name})))}get host(){return n(this)}static get watchers(){return{value:["handleValueChange","testDateValidity"],dateOrder:["handleDateOrderChange"],min:["testDateValidity"],max:["testDateValidity"],pickerOpen:["handlePickerOpenChange"]}}};u.style=r;export{u as nano_date_input};
|
5
|
+
//# sourceMappingURL=p-fe1446cd.entry.js.map
|