@nanoporetech-digital/components 2.10.1 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/dist/cjs/{date-utils-0ae9a12d.js → date-utils-b3af910d.js} +2 -2
- package/dist/cjs/date-utils-b3af910d.js.map +1 -0
- package/dist/cjs/{global-0d4f3b77.js → global-989678ec.js} +1 -8
- package/dist/cjs/global-989678ec.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +5 -1
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +2 -2
- package/dist/cjs/nano-datalist_3.cjs.entry.js +3 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +16 -5
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +1 -2
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +292 -96
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +5 -2
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +21 -6
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid_3.cjs.entry.js +1 -2
- package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button.cjs.entry.js +4 -0
- package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +16 -3
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +2 -0
- package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -2
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +1 -2
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +2 -3
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +4 -2
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +5 -1
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +2 -2
- package/dist/collection/components/algolia/algolia-input.js +5 -5
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +12 -6
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox-group.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- package/dist/collection/components/datalist/datalist.js +4 -2
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/date-input/date-input.js +65 -11
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +1 -1
- package/dist/collection/components/date-picker/date-picker.js +5 -5
- package/dist/collection/components/details/details.js +1 -2
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/field-validator/field-validator-interface.js +5 -0
- package/dist/collection/components/field-validator/field-validator-interface.js.map +1 -0
- package/dist/collection/components/field-validator/field-validator.js +434 -113
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +0 -1
- package/dist/collection/components/file-upload/file-upload.js +10 -7
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +4 -4
- package/dist/collection/components/global-search-results/global-search-results.css +7 -0
- package/dist/collection/components/global-search-results/global-search-results.js +19 -4
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/grid/grid.js +0 -1
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon-button/icon-button.js +23 -1
- package/dist/collection/components/icon-button/icon-button.js.map +1 -1
- package/dist/collection/components/input/input.js +37 -8
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/range/range.js +4 -4
- package/dist/collection/components/resize-observe/resize-observe.js +1 -2
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.js +9 -7
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/slides/slides.js +7 -8
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +0 -1
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.js +5 -3
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.js +5 -1
- package/dist/collection/components/tabs/tab.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.css +0 -1
- package/dist/collection/global/script/global.js +0 -7
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/date-utils.js +1 -1
- package/dist/collection/utils/date-utils.js.map +1 -1
- package/dist/components/algolia.js +5 -1
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/datalist.js +3 -1
- 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/grid.js +1 -2
- package/dist/components/grid.js.map +1 -1
- package/dist/components/icon-button.js +6 -1
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/index.js +1 -7
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +17 -3
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-date-input.js +17 -4
- package/dist/components/nano-date-input.js.map +1 -1
- package/dist/components/nano-details.js +1 -2
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-field-validator.js +300 -99
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-file-upload.js +6 -3
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/nano-global-search-results.js +21 -6
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-slides.js +1 -2
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-tab-group.js +4 -2
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +5 -1
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/resize-observe.js +1 -2
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +2 -0
- package/dist/components/select.js.map +1 -1
- package/dist/components/sticker.js +2 -3
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/custom-elements/index.js +386 -2046
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{date-utils-e4b757ff.js → date-utils-839cb010.js} +2 -2
- package/dist/esm/date-utils-839cb010.js.map +1 -0
- package/dist/esm/{global-d5ec4d53.js → global-8047b4ff.js} +1 -8
- package/dist/esm/global-8047b4ff.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/nano-algolia.entry.js +5 -1
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-components.js +2 -2
- package/dist/esm/nano-datalist_3.entry.js +3 -1
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +16 -5
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker.entry.js +2 -2
- package/dist/esm/nano-date-picker.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +1 -2
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +292 -96
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-file-upload.entry.js +5 -2
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +21 -6
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-grid_3.entry.js +1 -2
- package/dist/esm/nano-grid_3.entry.js.map +1 -1
- package/dist/esm/nano-icon-button.entry.js +4 -0
- package/dist/esm/nano-icon-button.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +16 -3
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +2 -0
- package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +1 -2
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slides.entry.js +1 -2
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-sticker.entry.js +2 -3
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +4 -2
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +5 -1
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/nano-tooltip.entry.js +1 -1
- package/dist/esm/nano-tooltip.entry.js.map +1 -1
- package/dist/esm-es5/date-utils-839cb010.js +5 -0
- package/dist/esm-es5/date-utils-839cb010.js.map +1 -0
- package/dist/esm-es5/{global-d5ec4d53.js → global-8047b4ff.js} +2 -2
- package/dist/esm-es5/global-8047b4ff.js.map +1 -0
- package/dist/esm-es5/index.js +2 -2
- package/dist/esm-es5/index.js.map +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/nano-algolia.entry.js +1 -1
- package/dist/esm-es5/nano-algolia.entry.js.map +1 -1
- package/dist/esm-es5/nano-components.js +1 -1
- package/dist/esm-es5/nano-components.js.map +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm-es5/nano-date-input.entry.js +1 -1
- package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-date-picker.entry.js +1 -1
- package/dist/esm-es5/nano-date-picker.entry.js.map +1 -1
- package/dist/esm-es5/nano-details.entry.js +1 -1
- package/dist/esm-es5/nano-details.entry.js.map +1 -1
- package/dist/esm-es5/nano-field-validator.entry.js +2 -2
- package/dist/esm-es5/nano-field-validator.entry.js.map +1 -1
- package/dist/esm-es5/nano-file-upload.entry.js +1 -1
- package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm-es5/nano-grid_3.entry.js +1 -1
- package/dist/esm-es5/nano-grid_3.entry.js.map +1 -1
- package/dist/esm-es5/nano-icon-button.entry.js +2 -2
- package/dist/esm-es5/nano-icon-button.entry.js.map +1 -1
- package/dist/esm-es5/nano-input.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-slides.entry.js +2 -2
- package/dist/esm-es5/nano-slides.entry.js.map +1 -1
- package/dist/esm-es5/nano-sticker.entry.js +1 -1
- package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab-group.entry.js +2 -2
- package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab.entry.js +2 -2
- package/dist/esm-es5/nano-tab.entry.js.map +1 -1
- package/dist/esm-es5/nano-tooltip.entry.js +1 -1
- package/dist/esm-es5/nano-tooltip.entry.js.map +1 -1
- 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/nano-components.js +1 -1
- package/dist/nano-components/p-018b7047.entry.js +5 -0
- package/dist/nano-components/p-018b7047.entry.js.map +1 -0
- package/dist/nano-components/p-0193a282.entry.js +5 -0
- package/dist/nano-components/p-0193a282.entry.js.map +1 -0
- package/dist/nano-components/p-0320410c.entry.js +5 -0
- package/dist/nano-components/p-0320410c.entry.js.map +1 -0
- package/dist/nano-components/p-0d699368.system.js +5 -0
- package/dist/nano-components/{p-3258c568.system.js.map → p-0d699368.system.js.map} +1 -1
- package/dist/nano-components/p-18863670.system.entry.js +5 -0
- package/dist/nano-components/p-18863670.system.entry.js.map +1 -0
- package/dist/nano-components/p-32900c91.entry.js +5 -0
- package/dist/nano-components/p-32900c91.entry.js.map +1 -0
- package/dist/nano-components/p-33fce1a6.js +5 -0
- package/dist/nano-components/p-33fce1a6.js.map +1 -0
- package/dist/nano-components/p-371aebe7.system.entry.js +23 -0
- package/dist/nano-components/p-371aebe7.system.entry.js.map +1 -0
- package/dist/nano-components/p-41899a31.system.entry.js +5 -0
- package/dist/nano-components/p-41899a31.system.entry.js.map +1 -0
- package/dist/nano-components/p-53957ec6.system.js +5 -0
- package/dist/nano-components/{p-e7140887.system.js.map → p-53957ec6.system.js.map} +1 -1
- package/dist/nano-components/p-561500f0.system.entry.js +5 -0
- package/dist/nano-components/p-561500f0.system.entry.js.map +1 -0
- package/dist/nano-components/p-596c1711.system.entry.js +5 -0
- package/dist/nano-components/p-596c1711.system.entry.js.map +1 -0
- package/dist/nano-components/{p-01667573.entry.js → p-634a58f7.entry.js} +2 -2
- package/dist/nano-components/p-634a58f7.entry.js.map +1 -0
- package/dist/nano-components/p-6a949280.system.entry.js +5 -0
- package/dist/nano-components/p-6a949280.system.entry.js.map +1 -0
- package/dist/nano-components/{p-bf9aa89d.system.entry.js → p-6af10533.system.entry.js} +3 -3
- package/dist/nano-components/p-6af10533.system.entry.js.map +1 -0
- package/dist/nano-components/p-70272eae.js +5 -0
- package/dist/nano-components/p-70272eae.js.map +1 -0
- package/dist/nano-components/p-755d9227.entry.js +5 -0
- package/dist/nano-components/p-755d9227.entry.js.map +1 -0
- package/dist/nano-components/p-7bd25494.entry.js +5 -0
- package/dist/nano-components/p-7bd25494.entry.js.map +1 -0
- package/dist/nano-components/p-7c837460.entry.js +5 -0
- package/dist/nano-components/p-7c837460.entry.js.map +1 -0
- package/dist/nano-components/p-7f051c20.entry.js +5 -0
- package/dist/nano-components/p-7f051c20.entry.js.map +1 -0
- package/dist/nano-components/{p-93880c28.system.js → p-82e28afd.system.js} +2 -2
- package/dist/nano-components/p-82e28afd.system.js.map +1 -0
- package/dist/nano-components/p-8378428e.system.js +5 -0
- package/dist/nano-components/p-8378428e.system.js.map +1 -0
- package/dist/nano-components/p-8df4f125.system.entry.js +5 -0
- package/dist/nano-components/p-8df4f125.system.entry.js.map +1 -0
- package/dist/nano-components/{p-d0385948.system.entry.js → p-93596c3d.system.entry.js} +2 -2
- package/dist/nano-components/p-93596c3d.system.entry.js.map +1 -0
- package/dist/nano-components/{p-3e930ac7.entry.js → p-9d9b0b66.entry.js} +2 -2
- package/dist/nano-components/p-9d9b0b66.entry.js.map +1 -0
- package/dist/nano-components/p-9ffdf6cc.entry.js +5 -0
- package/dist/nano-components/{p-222d8095.entry.js.map → p-9ffdf6cc.entry.js.map} +1 -1
- package/dist/nano-components/p-a07cf44c.system.entry.js +5 -0
- package/dist/nano-components/p-a07cf44c.system.entry.js.map +1 -0
- package/dist/nano-components/p-a1444980.entry.js +5 -0
- package/dist/nano-components/p-a1444980.entry.js.map +1 -0
- package/dist/nano-components/p-aa84c727.system.entry.js +5 -0
- package/dist/nano-components/p-aa84c727.system.entry.js.map +1 -0
- package/dist/nano-components/p-ac5e3775.system.entry.js +5 -0
- package/dist/nano-components/p-ac5e3775.system.entry.js.map +1 -0
- package/dist/nano-components/p-b85cf493.system.entry.js +5 -0
- package/dist/nano-components/{p-e817ab4a.system.entry.js.map → p-b85cf493.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-96d9b8b9.system.entry.js → p-c2bbf0fb.system.entry.js} +2 -2
- package/dist/nano-components/p-c2bbf0fb.system.entry.js.map +1 -0
- package/dist/nano-components/{p-f780d2f6.system.entry.js → p-cb512cff.system.entry.js} +2 -2
- package/dist/nano-components/p-cb512cff.system.entry.js.map +1 -0
- package/dist/nano-components/{p-4e2c0abb.entry.js → p-ccd6c206.entry.js} +2 -2
- package/dist/nano-components/p-ccd6c206.entry.js.map +1 -0
- package/dist/nano-components/{p-1030797a.entry.js → p-d37e1489.entry.js} +2 -2
- package/dist/nano-components/p-d37e1489.entry.js.map +1 -0
- package/dist/nano-components/p-da88981f.entry.js +23 -0
- package/dist/nano-components/p-da88981f.entry.js.map +1 -0
- package/dist/nano-components/p-e8a913ac.system.entry.js +5 -0
- package/dist/nano-components/p-e8a913ac.system.entry.js.map +1 -0
- package/dist/nano-components/p-e9fddc1a.entry.js +5 -0
- package/dist/nano-components/p-e9fddc1a.entry.js.map +1 -0
- package/dist/nano-components/p-ea54ee12.entry.js +5 -0
- package/dist/nano-components/p-ea54ee12.entry.js.map +1 -0
- package/dist/nano-components/{p-86bd5194.entry.js → p-ed0bdea9.entry.js} +2 -2
- package/dist/nano-components/p-ed0bdea9.entry.js.map +1 -0
- package/dist/nano-components/p-faba2fc1.system.entry.js +5 -0
- package/dist/nano-components/p-faba2fc1.system.entry.js.map +1 -0
- package/dist/nano-components/p-ff026352.system.entry.js +5 -0
- package/dist/nano-components/p-ff026352.system.entry.js.map +1 -0
- package/dist/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/algolia/algolia.d.ts +1 -0
- package/dist/types/components/date-input/date-input.d.ts +6 -1
- package/dist/types/components/field-validator/field-validator-interface.d.ts +19 -0
- package/dist/types/components/field-validator/field-validator.d.ts +77 -31
- package/dist/types/components/file-upload/file-upload.d.ts +2 -1
- package/dist/types/components/global-search-results/global-search-results.d.ts +1 -0
- package/dist/types/components/icon-button/icon-button.d.ts +2 -0
- package/dist/types/components/input/input.d.ts +6 -1
- package/dist/types/components/tabs/tab.d.ts +1 -0
- package/dist/types/components.d.ts +67 -12
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interface.d.ts +1 -0
- package/docs-json.json +161 -13
- package/docs-vscode.json +6 -2
- package/package.json +2 -4
- package/dist/cjs/ResizeObserver.es-09b81a1b.js +0 -935
- package/dist/cjs/ResizeObserver.es-09b81a1b.js.map +0 -1
- package/dist/cjs/date-utils-0ae9a12d.js.map +0 -1
- package/dist/cjs/global-0d4f3b77.js.map +0 -1
- package/dist/cjs/intersection-observer-1822c787.js +0 -987
- package/dist/cjs/intersection-observer-1822c787.js.map +0 -1
- package/dist/components/ResizeObserver.es.js +0 -933
- package/dist/components/ResizeObserver.es.js.map +0 -1
- package/dist/components/intersection-observer.js +0 -985
- package/dist/components/intersection-observer.js.map +0 -1
- package/dist/esm/ResizeObserver.es-724af9fd.js +0 -933
- package/dist/esm/ResizeObserver.es-724af9fd.js.map +0 -1
- package/dist/esm/date-utils-e4b757ff.js.map +0 -1
- package/dist/esm/global-d5ec4d53.js.map +0 -1
- package/dist/esm/intersection-observer-dff9fb5b.js +0 -985
- package/dist/esm/intersection-observer-dff9fb5b.js.map +0 -1
- package/dist/esm-es5/ResizeObserver.es-724af9fd.js +0 -5
- package/dist/esm-es5/ResizeObserver.es-724af9fd.js.map +0 -1
- package/dist/esm-es5/date-utils-e4b757ff.js +0 -5
- package/dist/esm-es5/date-utils-e4b757ff.js.map +0 -1
- package/dist/esm-es5/global-d5ec4d53.js.map +0 -1
- package/dist/esm-es5/intersection-observer-dff9fb5b.js +0 -5
- package/dist/esm-es5/intersection-observer-dff9fb5b.js.map +0 -1
- package/dist/nano-components/p-00eaa36a.entry.js +0 -5
- package/dist/nano-components/p-00eaa36a.entry.js.map +0 -1
- package/dist/nano-components/p-01667573.entry.js.map +0 -1
- package/dist/nano-components/p-1030797a.entry.js.map +0 -1
- package/dist/nano-components/p-11a2dcce.js +0 -5
- package/dist/nano-components/p-11a2dcce.js.map +0 -1
- package/dist/nano-components/p-1a30dfdd.system.entry.js +0 -5
- package/dist/nano-components/p-1a30dfdd.system.entry.js.map +0 -1
- package/dist/nano-components/p-1b120f53.entry.js +0 -5
- package/dist/nano-components/p-1b120f53.entry.js.map +0 -1
- package/dist/nano-components/p-21d6d31e.system.entry.js +0 -5
- package/dist/nano-components/p-21d6d31e.system.entry.js.map +0 -1
- package/dist/nano-components/p-222d8095.entry.js +0 -5
- package/dist/nano-components/p-241d90eb.system.entry.js +0 -5
- package/dist/nano-components/p-241d90eb.system.entry.js.map +0 -1
- package/dist/nano-components/p-2c8d7273.entry.js +0 -5
- package/dist/nano-components/p-2c8d7273.entry.js.map +0 -1
- package/dist/nano-components/p-3093915f.entry.js +0 -5
- package/dist/nano-components/p-3093915f.entry.js.map +0 -1
- package/dist/nano-components/p-3258c568.system.js +0 -5
- package/dist/nano-components/p-325c1cad.entry.js +0 -5
- package/dist/nano-components/p-325c1cad.entry.js.map +0 -1
- package/dist/nano-components/p-32f396c0.system.entry.js +0 -5
- package/dist/nano-components/p-32f396c0.system.entry.js.map +0 -1
- package/dist/nano-components/p-35108e08.entry.js +0 -5
- package/dist/nano-components/p-35108e08.entry.js.map +0 -1
- package/dist/nano-components/p-3ccb176c.system.entry.js +0 -5
- package/dist/nano-components/p-3ccb176c.system.entry.js.map +0 -1
- package/dist/nano-components/p-3e930ac7.entry.js.map +0 -1
- package/dist/nano-components/p-42cebbfe.system.entry.js +0 -5
- package/dist/nano-components/p-42cebbfe.system.entry.js.map +0 -1
- package/dist/nano-components/p-4e2c0abb.entry.js.map +0 -1
- package/dist/nano-components/p-5d17cfbb.system.entry.js +0 -23
- package/dist/nano-components/p-5d17cfbb.system.entry.js.map +0 -1
- package/dist/nano-components/p-5d5ea4ab.system.entry.js +0 -5
- package/dist/nano-components/p-5d5ea4ab.system.entry.js.map +0 -1
- package/dist/nano-components/p-6722447c.entry.js +0 -5
- package/dist/nano-components/p-6722447c.entry.js.map +0 -1
- package/dist/nano-components/p-6d138abf.entry.js +0 -5
- package/dist/nano-components/p-6d138abf.entry.js.map +0 -1
- package/dist/nano-components/p-76d9d1d4.entry.js +0 -5
- package/dist/nano-components/p-76d9d1d4.entry.js.map +0 -1
- package/dist/nano-components/p-866f083f.system.entry.js +0 -5
- package/dist/nano-components/p-866f083f.system.entry.js.map +0 -1
- package/dist/nano-components/p-86bd5194.entry.js.map +0 -1
- package/dist/nano-components/p-88779174.system.entry.js +0 -5
- package/dist/nano-components/p-88779174.system.entry.js.map +0 -1
- package/dist/nano-components/p-93880c28.system.js.map +0 -1
- package/dist/nano-components/p-96d9b8b9.system.entry.js.map +0 -1
- package/dist/nano-components/p-97b13ad2.entry.js +0 -5
- package/dist/nano-components/p-97b13ad2.entry.js.map +0 -1
- package/dist/nano-components/p-b430a9b6.system.js +0 -5
- package/dist/nano-components/p-b430a9b6.system.js.map +0 -1
- package/dist/nano-components/p-bc394857.system.entry.js +0 -5
- package/dist/nano-components/p-bc394857.system.entry.js.map +0 -1
- package/dist/nano-components/p-bf9aa89d.system.entry.js.map +0 -1
- package/dist/nano-components/p-c3830c43.entry.js +0 -5
- package/dist/nano-components/p-c3830c43.entry.js.map +0 -1
- package/dist/nano-components/p-d0385948.system.entry.js.map +0 -1
- package/dist/nano-components/p-debd9efc.js +0 -5
- package/dist/nano-components/p-debd9efc.js.map +0 -1
- package/dist/nano-components/p-e195ab77.system.js +0 -5
- package/dist/nano-components/p-e195ab77.system.js.map +0 -1
- package/dist/nano-components/p-e7140887.system.js +0 -5
- package/dist/nano-components/p-e817ab4a.system.entry.js +0 -5
- package/dist/nano-components/p-f5d4d13b.system.js +0 -5
- package/dist/nano-components/p-f5d4d13b.system.js.map +0 -1
- package/dist/nano-components/p-f66958c1.js +0 -5
- package/dist/nano-components/p-f66958c1.js.map +0 -1
- package/dist/nano-components/p-f710c763.system.entry.js +0 -5
- package/dist/nano-components/p-f710c763.system.entry.js.map +0 -1
- package/dist/nano-components/p-f780d2f6.system.entry.js.map +0 -1
- package/dist/nano-components/p-f9c7d961.js +0 -5
- package/dist/nano-components/p-f9c7d961.js.map +0 -1
- package/dist/nano-components/p-ffc2063a.entry.js +0 -23
- package/dist/nano-components/p-ffc2063a.entry.js.map +0 -1
- package/dist/nano-components/p-fff27907.system.entry.js +0 -5
- package/dist/nano-components/p-fff27907.system.entry.js.map +0 -1
@@ -2272,7 +2272,7 @@ const debounce$2 = (callback, wait = 0) => {
|
|
2272
2272
|
* @param delay how long to delay before calling the function
|
2273
2273
|
* @returns a throttled function to call as often as required
|
2274
2274
|
*/
|
2275
|
-
function throttle
|
2275
|
+
function throttle(callback, delay) {
|
2276
2276
|
let isThrottled = false;
|
2277
2277
|
let args;
|
2278
2278
|
let context;
|
@@ -4160,12 +4160,6 @@ const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
|
|
4160
4160
|
}
|
4161
4161
|
})();
|
4162
4162
|
|
4163
|
-
// Intersection observer
|
4164
|
-
if (!('IntersectionObserver' in window) ||
|
4165
|
-
!('IntersectionObserverEntry' in window) ||
|
4166
|
-
!('intersectionRatio' in window.IntersectionObserverEntry.prototype)) {
|
4167
|
-
Promise.resolve().then(function () { return intersectionObserver; });
|
4168
|
-
}
|
4169
4163
|
// scroll-behaviour
|
4170
4164
|
if (!('scrollBehavior' in document.documentElement.style)) {
|
4171
4165
|
setTimeout((_) => {
|
@@ -7441,6 +7435,9 @@ let Algolia = class extends H {
|
|
7441
7435
|
});
|
7442
7436
|
}
|
7443
7437
|
}
|
7438
|
+
handleFilterpropChange() {
|
7439
|
+
this.algoliaSearch(SearchChangeEvent.Init);
|
7440
|
+
}
|
7444
7441
|
// Internal methods
|
7445
7442
|
fixDomain(results) {
|
7446
7443
|
if (!this.searchIndex || !this.searchIndex.domain)
|
@@ -7666,7 +7663,8 @@ let Algolia = class extends H {
|
|
7666
7663
|
"apiKey": ["initAlgoliaClient"],
|
7667
7664
|
"appId": ["initAlgoliaClient"],
|
7668
7665
|
"searchIndex": ["initAlgoliaIndex"],
|
7669
|
-
"showResults": ["showResultsChange"]
|
7666
|
+
"showResults": ["showResultsChange"],
|
7667
|
+
"filters": ["handleFilterpropChange"]
|
7670
7668
|
}; }
|
7671
7669
|
static get style() { return algoliaCss; }
|
7672
7670
|
};
|
@@ -9025,8 +9023,10 @@ let DataList = class extends H {
|
|
9025
9023
|
this.shouldOpen = true;
|
9026
9024
|
// open dropdown if possible
|
9027
9025
|
this.manageDropdownDisplay();
|
9028
|
-
if (['ArrowDown', 'ArrowUp'].includes(e.key))
|
9026
|
+
if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
9027
|
+
e.preventDefault();
|
9029
9028
|
this.shouldFocus = true;
|
9029
|
+
}
|
9030
9030
|
};
|
9031
9031
|
// handles key down on options. Either 'picks'
|
9032
9032
|
// an option or passes event back to input for search / filter
|
@@ -9413,7 +9413,7 @@ let DataList = class extends H {
|
|
9413
9413
|
static get style() { return datalistCss; }
|
9414
9414
|
};
|
9415
9415
|
|
9416
|
-
const ISO_DATE_FORMAT = /^(\d{4})-(\d{2})-(\d{2})
|
9416
|
+
const ISO_DATE_FORMAT = /^(\d{4})-(\d{2})-(\d{2})/;
|
9417
9417
|
var DaysOfWeek$1;
|
9418
9418
|
(function (DaysOfWeek) {
|
9419
9419
|
DaysOfWeek[DaysOfWeek["Sunday"] = 0] = "Sunday";
|
@@ -9638,6 +9638,9 @@ let DateInput = class extends H {
|
|
9638
9638
|
*/
|
9639
9639
|
this.closeAfterPicked = true;
|
9640
9640
|
this._dropDownConfig = {};
|
9641
|
+
/** Controls which days are disabled and therefore disallowed.
|
9642
|
+
* For example, this can be used to disallow selection of weekends. */
|
9643
|
+
this.isDateDisabled = () => false;
|
9641
9644
|
// Event handlers
|
9642
9645
|
this.onInputChange = (e) => {
|
9643
9646
|
e.stopPropagation();
|
@@ -9740,13 +9743,14 @@ let DateInput = class extends H {
|
|
9740
9743
|
'Date below the minimum: ' +
|
9741
9744
|
min.toLocaleDateString(this.locale, this.helperTextFormat);
|
9742
9745
|
}
|
9743
|
-
|
9744
|
-
(max = parseISODate(this.max)) &&
|
9745
|
-
valueDate > max) {
|
9746
|
+
if (this.max && (max = parseISODate(this.max)) && valueDate > max) {
|
9746
9747
|
error =
|
9747
9748
|
'Date above the maximum: ' +
|
9748
9749
|
max.toLocaleDateString(this.locale, this.helperTextFormat);
|
9749
9750
|
}
|
9751
|
+
if (this.isDateDisabled(valueDate)) {
|
9752
|
+
error = 'Date selected is disabled.';
|
9753
|
+
}
|
9750
9754
|
}
|
9751
9755
|
requestAnimationFrame(async (_) => {
|
9752
9756
|
if (!this.input)
|
@@ -9770,6 +9774,10 @@ let DateInput = class extends H {
|
|
9770
9774
|
set dropDownConfig(ddc) {
|
9771
9775
|
this._dropDownConfig = Object.assign(Object.assign({}, this._dropDownConfig), ddc);
|
9772
9776
|
}
|
9777
|
+
/** @readonly get the value as a `Date` */
|
9778
|
+
get dateValue() {
|
9779
|
+
return parseISODate(this.value);
|
9780
|
+
}
|
9773
9781
|
// Methods
|
9774
9782
|
/**
|
9775
9783
|
* Get the current state of the control.
|
@@ -9777,6 +9785,9 @@ let DateInput = class extends H {
|
|
9777
9785
|
* @returns `{ isValid: boolean, errorMessage: string }`
|
9778
9786
|
*/
|
9779
9787
|
async reportValidity(validateFirst) {
|
9788
|
+
const initValidity = await this.input.reportValidity(validateFirst);
|
9789
|
+
if (initValidity.isValid && validateFirst)
|
9790
|
+
this.testDateValidity();
|
9780
9791
|
return await this.input.reportValidity(validateFirst);
|
9781
9792
|
}
|
9782
9793
|
/**
|
@@ -9874,7 +9885,7 @@ let DateInput = class extends H {
|
|
9874
9885
|
const hasHelperSlot = !!this.host.querySelector('[slot="helper"]');
|
9875
9886
|
return (h$1(Host$1, { class: Object.assign({}, createColorClasses(this.color)) }, h$1("div", { class: "date-field" }, h$1("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: (input) => (this.input = input), floatLabel: this.floatLabel, hideLabel: this.hideLabel, inputmode: 'numeric', part: "input" }, h$1("slot", { name: "start", slot: "start" }), h$1("slot", { name: "label" }), h$1("slot", { name: "end", slot: "end" }), this.picker && [
|
9876
9887
|
h$1("button", { slot: "end", class: "date-field__open", type: "button", onKeyDown: this.onTriggerKey, onClick: this.onTriggerClick, ref: (trigger) => (this.trigger = trigger), disabled: this.disabled || this.readonly }, h$1("nano-icon", { name: "light/calendar-alt" })),
|
9877
|
-
h$1("nano-dropdown", Object.assign({ slot: "end", onNanoHide: this.onDropdownHide, onNanoShow: this.onDropdownShow, dialogTitle: "Choose a date", class: "date-field__dropdown", ref: (dropdown) => (this.dropdown = dropdown) }, this.dropDownConfig, { part: "dropdown" }), h$1("div", null, h$1("div", { class: "date-field__close-bar" }, h$1("button", { class: "date-field__close", type: "button", onMouseDown: this.onCloseClick, onKeyDown: this.onCloseKeyDown, ref: (pickerClose) => (this.pickerCloseBtn = pickerClose) }, h$1("nano-icon", { name: "light/times" }), h$1("span", { class: "vhidden" }, "Close window"))), h$1("nano-date-picker", { onNanoDatePicked: this.onDatePicked, min: this.min || undefined, max: this.max || undefined, "is-modal": true, ref: (picker) => (this.pickerEle = picker), localization: this.localization, selectedDate: this.value || this.initialPickerDate, firstDayOfWeek: this.firstDayOfWeek, color: this.color || undefined, part: "date-picker" }))),
|
9888
|
+
h$1("nano-dropdown", Object.assign({ slot: "end", onNanoHide: this.onDropdownHide, onNanoShow: this.onDropdownShow, dialogTitle: "Choose a date", class: "date-field__dropdown", ref: (dropdown) => (this.dropdown = dropdown) }, this.dropDownConfig, { part: "dropdown" }), h$1("div", null, h$1("div", { class: "date-field__close-bar" }, h$1("button", { class: "date-field__close", type: "button", onMouseDown: this.onCloseClick, onKeyDown: this.onCloseKeyDown, ref: (pickerClose) => (this.pickerCloseBtn = pickerClose) }, h$1("nano-icon", { name: "light/times" }), h$1("span", { class: "vhidden" }, "Close window"))), h$1("nano-date-picker", { isDateDisabled: this.isDateDisabled, onNanoDatePicked: this.onDatePicked, min: this.min || undefined, max: this.max || undefined, "is-modal": true, ref: (picker) => (this.pickerEle = picker), localization: this.localization, selectedDate: this.value || this.initialPickerDate, firstDayOfWeek: this.firstDayOfWeek, color: this.color || undefined, part: "date-picker" }))),
|
9878
9889
|
], (hasHelperSlot || this.helperText || this.showInlineError) && (h$1("span", { slot: "helper" }, h$1("span", { class: { vhidden: !!this.value.length } }, h$1("slot", { name: "helper" })), this.helperText && !!valueDate && (h$1("span", null, valueDate.toLocaleDateString(this.locale, this.helperTextFormat)))))), h$1("input", { type: "hidden", value: this.value, name: this.name }))));
|
9879
9890
|
}
|
9880
9891
|
get host() { return this; }
|
@@ -10078,7 +10089,7 @@ const localization = {
|
|
10078
10089
|
],
|
10079
10090
|
};
|
10080
10091
|
|
10081
|
-
const datePickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:\"\";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color);color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}";
|
10092
|
+
const datePickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:\"\";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color) !important;color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}";
|
10082
10093
|
|
10083
10094
|
function range(from, to) {
|
10084
10095
|
var result = [];
|
@@ -10341,933 +10352,6 @@ let DatePicker = class extends H {
|
|
10341
10352
|
static get style() { return datePickerCss; }
|
10342
10353
|
};
|
10343
10354
|
|
10344
|
-
/**
|
10345
|
-
* A collection of shims that provide minimal functionality of the ES6 collections.
|
10346
|
-
*
|
10347
|
-
* These implementations are not meant to be used outside of the ResizeObserver
|
10348
|
-
* modules as they cover only a limited range of use cases.
|
10349
|
-
*/
|
10350
|
-
/* eslint-disable require-jsdoc, valid-jsdoc */
|
10351
|
-
var MapShim = (function () {
|
10352
|
-
if (typeof Map !== 'undefined') {
|
10353
|
-
return Map;
|
10354
|
-
}
|
10355
|
-
/**
|
10356
|
-
* Returns index in provided array that matches the specified key.
|
10357
|
-
*
|
10358
|
-
* @param {Array<Array>} arr
|
10359
|
-
* @param {*} key
|
10360
|
-
* @returns {number}
|
10361
|
-
*/
|
10362
|
-
function getIndex(arr, key) {
|
10363
|
-
var result = -1;
|
10364
|
-
arr.some(function (entry, index) {
|
10365
|
-
if (entry[0] === key) {
|
10366
|
-
result = index;
|
10367
|
-
return true;
|
10368
|
-
}
|
10369
|
-
return false;
|
10370
|
-
});
|
10371
|
-
return result;
|
10372
|
-
}
|
10373
|
-
return /** @class */ (function () {
|
10374
|
-
function class_1() {
|
10375
|
-
this.__entries__ = [];
|
10376
|
-
}
|
10377
|
-
Object.defineProperty(class_1.prototype, "size", {
|
10378
|
-
/**
|
10379
|
-
* @returns {boolean}
|
10380
|
-
*/
|
10381
|
-
get: function () {
|
10382
|
-
return this.__entries__.length;
|
10383
|
-
},
|
10384
|
-
enumerable: true,
|
10385
|
-
configurable: true
|
10386
|
-
});
|
10387
|
-
/**
|
10388
|
-
* @param {*} key
|
10389
|
-
* @returns {*}
|
10390
|
-
*/
|
10391
|
-
class_1.prototype.get = function (key) {
|
10392
|
-
var index = getIndex(this.__entries__, key);
|
10393
|
-
var entry = this.__entries__[index];
|
10394
|
-
return entry && entry[1];
|
10395
|
-
};
|
10396
|
-
/**
|
10397
|
-
* @param {*} key
|
10398
|
-
* @param {*} value
|
10399
|
-
* @returns {void}
|
10400
|
-
*/
|
10401
|
-
class_1.prototype.set = function (key, value) {
|
10402
|
-
var index = getIndex(this.__entries__, key);
|
10403
|
-
if (~index) {
|
10404
|
-
this.__entries__[index][1] = value;
|
10405
|
-
}
|
10406
|
-
else {
|
10407
|
-
this.__entries__.push([key, value]);
|
10408
|
-
}
|
10409
|
-
};
|
10410
|
-
/**
|
10411
|
-
* @param {*} key
|
10412
|
-
* @returns {void}
|
10413
|
-
*/
|
10414
|
-
class_1.prototype.delete = function (key) {
|
10415
|
-
var entries = this.__entries__;
|
10416
|
-
var index = getIndex(entries, key);
|
10417
|
-
if (~index) {
|
10418
|
-
entries.splice(index, 1);
|
10419
|
-
}
|
10420
|
-
};
|
10421
|
-
/**
|
10422
|
-
* @param {*} key
|
10423
|
-
* @returns {void}
|
10424
|
-
*/
|
10425
|
-
class_1.prototype.has = function (key) {
|
10426
|
-
return !!~getIndex(this.__entries__, key);
|
10427
|
-
};
|
10428
|
-
/**
|
10429
|
-
* @returns {void}
|
10430
|
-
*/
|
10431
|
-
class_1.prototype.clear = function () {
|
10432
|
-
this.__entries__.splice(0);
|
10433
|
-
};
|
10434
|
-
/**
|
10435
|
-
* @param {Function} callback
|
10436
|
-
* @param {*} [ctx=null]
|
10437
|
-
* @returns {void}
|
10438
|
-
*/
|
10439
|
-
class_1.prototype.forEach = function (callback, ctx) {
|
10440
|
-
if (ctx === void 0) { ctx = null; }
|
10441
|
-
for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {
|
10442
|
-
var entry = _a[_i];
|
10443
|
-
callback.call(ctx, entry[1], entry[0]);
|
10444
|
-
}
|
10445
|
-
};
|
10446
|
-
return class_1;
|
10447
|
-
}());
|
10448
|
-
})();
|
10449
|
-
|
10450
|
-
/**
|
10451
|
-
* Detects whether window and document objects are available in current environment.
|
10452
|
-
*/
|
10453
|
-
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;
|
10454
|
-
|
10455
|
-
// Returns global object of a current environment.
|
10456
|
-
var global$1 = (function () {
|
10457
|
-
if (typeof global !== 'undefined' && global.Math === Math) {
|
10458
|
-
return global;
|
10459
|
-
}
|
10460
|
-
if (typeof self !== 'undefined' && self.Math === Math) {
|
10461
|
-
return self;
|
10462
|
-
}
|
10463
|
-
if (typeof window !== 'undefined' && window.Math === Math) {
|
10464
|
-
return window;
|
10465
|
-
}
|
10466
|
-
// eslint-disable-next-line no-new-func
|
10467
|
-
return Function('return this')();
|
10468
|
-
})();
|
10469
|
-
|
10470
|
-
/**
|
10471
|
-
* A shim for the requestAnimationFrame which falls back to the setTimeout if
|
10472
|
-
* first one is not supported.
|
10473
|
-
*
|
10474
|
-
* @returns {number} Requests' identifier.
|
10475
|
-
*/
|
10476
|
-
var requestAnimationFrame$1 = (function () {
|
10477
|
-
if (typeof requestAnimationFrame === 'function') {
|
10478
|
-
// It's required to use a bounded function because IE sometimes throws
|
10479
|
-
// an "Invalid calling object" error if rAF is invoked without the global
|
10480
|
-
// object on the left hand side.
|
10481
|
-
return requestAnimationFrame.bind(global$1);
|
10482
|
-
}
|
10483
|
-
return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };
|
10484
|
-
})();
|
10485
|
-
|
10486
|
-
// Defines minimum timeout before adding a trailing call.
|
10487
|
-
var trailingTimeout = 2;
|
10488
|
-
/**
|
10489
|
-
* Creates a wrapper function which ensures that provided callback will be
|
10490
|
-
* invoked only once during the specified delay period.
|
10491
|
-
*
|
10492
|
-
* @param {Function} callback - Function to be invoked after the delay period.
|
10493
|
-
* @param {number} delay - Delay after which to invoke callback.
|
10494
|
-
* @returns {Function}
|
10495
|
-
*/
|
10496
|
-
function throttle (callback, delay) {
|
10497
|
-
var leadingCall = false, trailingCall = false, lastCallTime = 0;
|
10498
|
-
/**
|
10499
|
-
* Invokes the original callback function and schedules new invocation if
|
10500
|
-
* the "proxy" was called during current request.
|
10501
|
-
*
|
10502
|
-
* @returns {void}
|
10503
|
-
*/
|
10504
|
-
function resolvePending() {
|
10505
|
-
if (leadingCall) {
|
10506
|
-
leadingCall = false;
|
10507
|
-
callback();
|
10508
|
-
}
|
10509
|
-
if (trailingCall) {
|
10510
|
-
proxy();
|
10511
|
-
}
|
10512
|
-
}
|
10513
|
-
/**
|
10514
|
-
* Callback invoked after the specified delay. It will further postpone
|
10515
|
-
* invocation of the original function delegating it to the
|
10516
|
-
* requestAnimationFrame.
|
10517
|
-
*
|
10518
|
-
* @returns {void}
|
10519
|
-
*/
|
10520
|
-
function timeoutCallback() {
|
10521
|
-
requestAnimationFrame$1(resolvePending);
|
10522
|
-
}
|
10523
|
-
/**
|
10524
|
-
* Schedules invocation of the original function.
|
10525
|
-
*
|
10526
|
-
* @returns {void}
|
10527
|
-
*/
|
10528
|
-
function proxy() {
|
10529
|
-
var timeStamp = Date.now();
|
10530
|
-
if (leadingCall) {
|
10531
|
-
// Reject immediately following calls.
|
10532
|
-
if (timeStamp - lastCallTime < trailingTimeout) {
|
10533
|
-
return;
|
10534
|
-
}
|
10535
|
-
// Schedule new call to be in invoked when the pending one is resolved.
|
10536
|
-
// This is important for "transitions" which never actually start
|
10537
|
-
// immediately so there is a chance that we might miss one if change
|
10538
|
-
// happens amids the pending invocation.
|
10539
|
-
trailingCall = true;
|
10540
|
-
}
|
10541
|
-
else {
|
10542
|
-
leadingCall = true;
|
10543
|
-
trailingCall = false;
|
10544
|
-
setTimeout(timeoutCallback, delay);
|
10545
|
-
}
|
10546
|
-
lastCallTime = timeStamp;
|
10547
|
-
}
|
10548
|
-
return proxy;
|
10549
|
-
}
|
10550
|
-
|
10551
|
-
// Minimum delay before invoking the update of observers.
|
10552
|
-
var REFRESH_DELAY = 20;
|
10553
|
-
// A list of substrings of CSS properties used to find transition events that
|
10554
|
-
// might affect dimensions of observed elements.
|
10555
|
-
var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];
|
10556
|
-
// Check if MutationObserver is available.
|
10557
|
-
var mutationObserverSupported = typeof MutationObserver !== 'undefined';
|
10558
|
-
/**
|
10559
|
-
* Singleton controller class which handles updates of ResizeObserver instances.
|
10560
|
-
*/
|
10561
|
-
var ResizeObserverController = /** @class */ (function () {
|
10562
|
-
/**
|
10563
|
-
* Creates a new instance of ResizeObserverController.
|
10564
|
-
*
|
10565
|
-
* @private
|
10566
|
-
*/
|
10567
|
-
function ResizeObserverController() {
|
10568
|
-
/**
|
10569
|
-
* Indicates whether DOM listeners have been added.
|
10570
|
-
*
|
10571
|
-
* @private {boolean}
|
10572
|
-
*/
|
10573
|
-
this.connected_ = false;
|
10574
|
-
/**
|
10575
|
-
* Tells that controller has subscribed for Mutation Events.
|
10576
|
-
*
|
10577
|
-
* @private {boolean}
|
10578
|
-
*/
|
10579
|
-
this.mutationEventsAdded_ = false;
|
10580
|
-
/**
|
10581
|
-
* Keeps reference to the instance of MutationObserver.
|
10582
|
-
*
|
10583
|
-
* @private {MutationObserver}
|
10584
|
-
*/
|
10585
|
-
this.mutationsObserver_ = null;
|
10586
|
-
/**
|
10587
|
-
* A list of connected observers.
|
10588
|
-
*
|
10589
|
-
* @private {Array<ResizeObserverSPI>}
|
10590
|
-
*/
|
10591
|
-
this.observers_ = [];
|
10592
|
-
this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);
|
10593
|
-
this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);
|
10594
|
-
}
|
10595
|
-
/**
|
10596
|
-
* Adds observer to observers list.
|
10597
|
-
*
|
10598
|
-
* @param {ResizeObserverSPI} observer - Observer to be added.
|
10599
|
-
* @returns {void}
|
10600
|
-
*/
|
10601
|
-
ResizeObserverController.prototype.addObserver = function (observer) {
|
10602
|
-
if (!~this.observers_.indexOf(observer)) {
|
10603
|
-
this.observers_.push(observer);
|
10604
|
-
}
|
10605
|
-
// Add listeners if they haven't been added yet.
|
10606
|
-
if (!this.connected_) {
|
10607
|
-
this.connect_();
|
10608
|
-
}
|
10609
|
-
};
|
10610
|
-
/**
|
10611
|
-
* Removes observer from observers list.
|
10612
|
-
*
|
10613
|
-
* @param {ResizeObserverSPI} observer - Observer to be removed.
|
10614
|
-
* @returns {void}
|
10615
|
-
*/
|
10616
|
-
ResizeObserverController.prototype.removeObserver = function (observer) {
|
10617
|
-
var observers = this.observers_;
|
10618
|
-
var index = observers.indexOf(observer);
|
10619
|
-
// Remove observer if it's present in registry.
|
10620
|
-
if (~index) {
|
10621
|
-
observers.splice(index, 1);
|
10622
|
-
}
|
10623
|
-
// Remove listeners if controller has no connected observers.
|
10624
|
-
if (!observers.length && this.connected_) {
|
10625
|
-
this.disconnect_();
|
10626
|
-
}
|
10627
|
-
};
|
10628
|
-
/**
|
10629
|
-
* Invokes the update of observers. It will continue running updates insofar
|
10630
|
-
* it detects changes.
|
10631
|
-
*
|
10632
|
-
* @returns {void}
|
10633
|
-
*/
|
10634
|
-
ResizeObserverController.prototype.refresh = function () {
|
10635
|
-
var changesDetected = this.updateObservers_();
|
10636
|
-
// Continue running updates if changes have been detected as there might
|
10637
|
-
// be future ones caused by CSS transitions.
|
10638
|
-
if (changesDetected) {
|
10639
|
-
this.refresh();
|
10640
|
-
}
|
10641
|
-
};
|
10642
|
-
/**
|
10643
|
-
* Updates every observer from observers list and notifies them of queued
|
10644
|
-
* entries.
|
10645
|
-
*
|
10646
|
-
* @private
|
10647
|
-
* @returns {boolean} Returns "true" if any observer has detected changes in
|
10648
|
-
* dimensions of it's elements.
|
10649
|
-
*/
|
10650
|
-
ResizeObserverController.prototype.updateObservers_ = function () {
|
10651
|
-
// Collect observers that have active observations.
|
10652
|
-
var activeObservers = this.observers_.filter(function (observer) {
|
10653
|
-
return observer.gatherActive(), observer.hasActive();
|
10654
|
-
});
|
10655
|
-
// Deliver notifications in a separate cycle in order to avoid any
|
10656
|
-
// collisions between observers, e.g. when multiple instances of
|
10657
|
-
// ResizeObserver are tracking the same element and the callback of one
|
10658
|
-
// of them changes content dimensions of the observed target. Sometimes
|
10659
|
-
// this may result in notifications being blocked for the rest of observers.
|
10660
|
-
activeObservers.forEach(function (observer) { return observer.broadcastActive(); });
|
10661
|
-
return activeObservers.length > 0;
|
10662
|
-
};
|
10663
|
-
/**
|
10664
|
-
* Initializes DOM listeners.
|
10665
|
-
*
|
10666
|
-
* @private
|
10667
|
-
* @returns {void}
|
10668
|
-
*/
|
10669
|
-
ResizeObserverController.prototype.connect_ = function () {
|
10670
|
-
// Do nothing if running in a non-browser environment or if listeners
|
10671
|
-
// have been already added.
|
10672
|
-
if (!isBrowser || this.connected_) {
|
10673
|
-
return;
|
10674
|
-
}
|
10675
|
-
// Subscription to the "Transitionend" event is used as a workaround for
|
10676
|
-
// delayed transitions. This way it's possible to capture at least the
|
10677
|
-
// final state of an element.
|
10678
|
-
document.addEventListener('transitionend', this.onTransitionEnd_);
|
10679
|
-
window.addEventListener('resize', this.refresh);
|
10680
|
-
if (mutationObserverSupported) {
|
10681
|
-
this.mutationsObserver_ = new MutationObserver(this.refresh);
|
10682
|
-
this.mutationsObserver_.observe(document, {
|
10683
|
-
attributes: true,
|
10684
|
-
childList: true,
|
10685
|
-
characterData: true,
|
10686
|
-
subtree: true
|
10687
|
-
});
|
10688
|
-
}
|
10689
|
-
else {
|
10690
|
-
document.addEventListener('DOMSubtreeModified', this.refresh);
|
10691
|
-
this.mutationEventsAdded_ = true;
|
10692
|
-
}
|
10693
|
-
this.connected_ = true;
|
10694
|
-
};
|
10695
|
-
/**
|
10696
|
-
* Removes DOM listeners.
|
10697
|
-
*
|
10698
|
-
* @private
|
10699
|
-
* @returns {void}
|
10700
|
-
*/
|
10701
|
-
ResizeObserverController.prototype.disconnect_ = function () {
|
10702
|
-
// Do nothing if running in a non-browser environment or if listeners
|
10703
|
-
// have been already removed.
|
10704
|
-
if (!isBrowser || !this.connected_) {
|
10705
|
-
return;
|
10706
|
-
}
|
10707
|
-
document.removeEventListener('transitionend', this.onTransitionEnd_);
|
10708
|
-
window.removeEventListener('resize', this.refresh);
|
10709
|
-
if (this.mutationsObserver_) {
|
10710
|
-
this.mutationsObserver_.disconnect();
|
10711
|
-
}
|
10712
|
-
if (this.mutationEventsAdded_) {
|
10713
|
-
document.removeEventListener('DOMSubtreeModified', this.refresh);
|
10714
|
-
}
|
10715
|
-
this.mutationsObserver_ = null;
|
10716
|
-
this.mutationEventsAdded_ = false;
|
10717
|
-
this.connected_ = false;
|
10718
|
-
};
|
10719
|
-
/**
|
10720
|
-
* "Transitionend" event handler.
|
10721
|
-
*
|
10722
|
-
* @private
|
10723
|
-
* @param {TransitionEvent} event
|
10724
|
-
* @returns {void}
|
10725
|
-
*/
|
10726
|
-
ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {
|
10727
|
-
var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;
|
10728
|
-
// Detect whether transition may affect dimensions of an element.
|
10729
|
-
var isReflowProperty = transitionKeys.some(function (key) {
|
10730
|
-
return !!~propertyName.indexOf(key);
|
10731
|
-
});
|
10732
|
-
if (isReflowProperty) {
|
10733
|
-
this.refresh();
|
10734
|
-
}
|
10735
|
-
};
|
10736
|
-
/**
|
10737
|
-
* Returns instance of the ResizeObserverController.
|
10738
|
-
*
|
10739
|
-
* @returns {ResizeObserverController}
|
10740
|
-
*/
|
10741
|
-
ResizeObserverController.getInstance = function () {
|
10742
|
-
if (!this.instance_) {
|
10743
|
-
this.instance_ = new ResizeObserverController();
|
10744
|
-
}
|
10745
|
-
return this.instance_;
|
10746
|
-
};
|
10747
|
-
/**
|
10748
|
-
* Holds reference to the controller's instance.
|
10749
|
-
*
|
10750
|
-
* @private {ResizeObserverController}
|
10751
|
-
*/
|
10752
|
-
ResizeObserverController.instance_ = null;
|
10753
|
-
return ResizeObserverController;
|
10754
|
-
}());
|
10755
|
-
|
10756
|
-
/**
|
10757
|
-
* Defines non-writable/enumerable properties of the provided target object.
|
10758
|
-
*
|
10759
|
-
* @param {Object} target - Object for which to define properties.
|
10760
|
-
* @param {Object} props - Properties to be defined.
|
10761
|
-
* @returns {Object} Target object.
|
10762
|
-
*/
|
10763
|
-
var defineConfigurable = (function (target, props) {
|
10764
|
-
for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {
|
10765
|
-
var key = _a[_i];
|
10766
|
-
Object.defineProperty(target, key, {
|
10767
|
-
value: props[key],
|
10768
|
-
enumerable: false,
|
10769
|
-
writable: false,
|
10770
|
-
configurable: true
|
10771
|
-
});
|
10772
|
-
}
|
10773
|
-
return target;
|
10774
|
-
});
|
10775
|
-
|
10776
|
-
/**
|
10777
|
-
* Returns the global object associated with provided element.
|
10778
|
-
*
|
10779
|
-
* @param {Object} target
|
10780
|
-
* @returns {Object}
|
10781
|
-
*/
|
10782
|
-
var getWindowOf = (function (target) {
|
10783
|
-
// Assume that the element is an instance of Node, which means that it
|
10784
|
-
// has the "ownerDocument" property from which we can retrieve a
|
10785
|
-
// corresponding global object.
|
10786
|
-
var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;
|
10787
|
-
// Return the local global object if it's not possible extract one from
|
10788
|
-
// provided element.
|
10789
|
-
return ownerGlobal || global$1;
|
10790
|
-
});
|
10791
|
-
|
10792
|
-
// Placeholder of an empty content rectangle.
|
10793
|
-
var emptyRect = createRectInit(0, 0, 0, 0);
|
10794
|
-
/**
|
10795
|
-
* Converts provided string to a number.
|
10796
|
-
*
|
10797
|
-
* @param {number|string} value
|
10798
|
-
* @returns {number}
|
10799
|
-
*/
|
10800
|
-
function toFloat(value) {
|
10801
|
-
return parseFloat(value) || 0;
|
10802
|
-
}
|
10803
|
-
/**
|
10804
|
-
* Extracts borders size from provided styles.
|
10805
|
-
*
|
10806
|
-
* @param {CSSStyleDeclaration} styles
|
10807
|
-
* @param {...string} positions - Borders positions (top, right, ...)
|
10808
|
-
* @returns {number}
|
10809
|
-
*/
|
10810
|
-
function getBordersSize(styles) {
|
10811
|
-
var positions = [];
|
10812
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
10813
|
-
positions[_i - 1] = arguments[_i];
|
10814
|
-
}
|
10815
|
-
return positions.reduce(function (size, position) {
|
10816
|
-
var value = styles['border-' + position + '-width'];
|
10817
|
-
return size + toFloat(value);
|
10818
|
-
}, 0);
|
10819
|
-
}
|
10820
|
-
/**
|
10821
|
-
* Extracts paddings sizes from provided styles.
|
10822
|
-
*
|
10823
|
-
* @param {CSSStyleDeclaration} styles
|
10824
|
-
* @returns {Object} Paddings box.
|
10825
|
-
*/
|
10826
|
-
function getPaddings(styles) {
|
10827
|
-
var positions = ['top', 'right', 'bottom', 'left'];
|
10828
|
-
var paddings = {};
|
10829
|
-
for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
|
10830
|
-
var position = positions_1[_i];
|
10831
|
-
var value = styles['padding-' + position];
|
10832
|
-
paddings[position] = toFloat(value);
|
10833
|
-
}
|
10834
|
-
return paddings;
|
10835
|
-
}
|
10836
|
-
/**
|
10837
|
-
* Calculates content rectangle of provided SVG element.
|
10838
|
-
*
|
10839
|
-
* @param {SVGGraphicsElement} target - Element content rectangle of which needs
|
10840
|
-
* to be calculated.
|
10841
|
-
* @returns {DOMRectInit}
|
10842
|
-
*/
|
10843
|
-
function getSVGContentRect(target) {
|
10844
|
-
var bbox = target.getBBox();
|
10845
|
-
return createRectInit(0, 0, bbox.width, bbox.height);
|
10846
|
-
}
|
10847
|
-
/**
|
10848
|
-
* Calculates content rectangle of provided HTMLElement.
|
10849
|
-
*
|
10850
|
-
* @param {HTMLElement} target - Element for which to calculate the content rectangle.
|
10851
|
-
* @returns {DOMRectInit}
|
10852
|
-
*/
|
10853
|
-
function getHTMLElementContentRect(target) {
|
10854
|
-
// Client width & height properties can't be
|
10855
|
-
// used exclusively as they provide rounded values.
|
10856
|
-
var clientWidth = target.clientWidth, clientHeight = target.clientHeight;
|
10857
|
-
// By this condition we can catch all non-replaced inline, hidden and
|
10858
|
-
// detached elements. Though elements with width & height properties less
|
10859
|
-
// than 0.5 will be discarded as well.
|
10860
|
-
//
|
10861
|
-
// Without it we would need to implement separate methods for each of
|
10862
|
-
// those cases and it's not possible to perform a precise and performance
|
10863
|
-
// effective test for hidden elements. E.g. even jQuery's ':visible' filter
|
10864
|
-
// gives wrong results for elements with width & height less than 0.5.
|
10865
|
-
if (!clientWidth && !clientHeight) {
|
10866
|
-
return emptyRect;
|
10867
|
-
}
|
10868
|
-
var styles = getWindowOf(target).getComputedStyle(target);
|
10869
|
-
var paddings = getPaddings(styles);
|
10870
|
-
var horizPad = paddings.left + paddings.right;
|
10871
|
-
var vertPad = paddings.top + paddings.bottom;
|
10872
|
-
// Computed styles of width & height are being used because they are the
|
10873
|
-
// only dimensions available to JS that contain non-rounded values. It could
|
10874
|
-
// be possible to utilize the getBoundingClientRect if only it's data wasn't
|
10875
|
-
// affected by CSS transformations let alone paddings, borders and scroll bars.
|
10876
|
-
var width = toFloat(styles.width), height = toFloat(styles.height);
|
10877
|
-
// Width & height include paddings and borders when the 'border-box' box
|
10878
|
-
// model is applied (except for IE).
|
10879
|
-
if (styles.boxSizing === 'border-box') {
|
10880
|
-
// Following conditions are required to handle Internet Explorer which
|
10881
|
-
// doesn't include paddings and borders to computed CSS dimensions.
|
10882
|
-
//
|
10883
|
-
// We can say that if CSS dimensions + paddings are equal to the "client"
|
10884
|
-
// properties then it's either IE, and thus we don't need to subtract
|
10885
|
-
// anything, or an element merely doesn't have paddings/borders styles.
|
10886
|
-
if (Math.round(width + horizPad) !== clientWidth) {
|
10887
|
-
width -= getBordersSize(styles, 'left', 'right') + horizPad;
|
10888
|
-
}
|
10889
|
-
if (Math.round(height + vertPad) !== clientHeight) {
|
10890
|
-
height -= getBordersSize(styles, 'top', 'bottom') + vertPad;
|
10891
|
-
}
|
10892
|
-
}
|
10893
|
-
// Following steps can't be applied to the document's root element as its
|
10894
|
-
// client[Width/Height] properties represent viewport area of the window.
|
10895
|
-
// Besides, it's as well not necessary as the <html> itself neither has
|
10896
|
-
// rendered scroll bars nor it can be clipped.
|
10897
|
-
if (!isDocumentElement(target)) {
|
10898
|
-
// In some browsers (only in Firefox, actually) CSS width & height
|
10899
|
-
// include scroll bars size which can be removed at this step as scroll
|
10900
|
-
// bars are the only difference between rounded dimensions + paddings
|
10901
|
-
// and "client" properties, though that is not always true in Chrome.
|
10902
|
-
var vertScrollbar = Math.round(width + horizPad) - clientWidth;
|
10903
|
-
var horizScrollbar = Math.round(height + vertPad) - clientHeight;
|
10904
|
-
// Chrome has a rather weird rounding of "client" properties.
|
10905
|
-
// E.g. for an element with content width of 314.2px it sometimes gives
|
10906
|
-
// the client width of 315px and for the width of 314.7px it may give
|
10907
|
-
// 314px. And it doesn't happen all the time. So just ignore this delta
|
10908
|
-
// as a non-relevant.
|
10909
|
-
if (Math.abs(vertScrollbar) !== 1) {
|
10910
|
-
width -= vertScrollbar;
|
10911
|
-
}
|
10912
|
-
if (Math.abs(horizScrollbar) !== 1) {
|
10913
|
-
height -= horizScrollbar;
|
10914
|
-
}
|
10915
|
-
}
|
10916
|
-
return createRectInit(paddings.left, paddings.top, width, height);
|
10917
|
-
}
|
10918
|
-
/**
|
10919
|
-
* Checks whether provided element is an instance of the SVGGraphicsElement.
|
10920
|
-
*
|
10921
|
-
* @param {Element} target - Element to be checked.
|
10922
|
-
* @returns {boolean}
|
10923
|
-
*/
|
10924
|
-
var isSVGGraphicsElement = (function () {
|
10925
|
-
// Some browsers, namely IE and Edge, don't have the SVGGraphicsElement
|
10926
|
-
// interface.
|
10927
|
-
if (typeof SVGGraphicsElement !== 'undefined') {
|
10928
|
-
return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };
|
10929
|
-
}
|
10930
|
-
// If it's so, then check that element is at least an instance of the
|
10931
|
-
// SVGElement and that it has the "getBBox" method.
|
10932
|
-
// eslint-disable-next-line no-extra-parens
|
10933
|
-
return function (target) { return (target instanceof getWindowOf(target).SVGElement &&
|
10934
|
-
typeof target.getBBox === 'function'); };
|
10935
|
-
})();
|
10936
|
-
/**
|
10937
|
-
* Checks whether provided element is a document element (<html>).
|
10938
|
-
*
|
10939
|
-
* @param {Element} target - Element to be checked.
|
10940
|
-
* @returns {boolean}
|
10941
|
-
*/
|
10942
|
-
function isDocumentElement(target) {
|
10943
|
-
return target === getWindowOf(target).document.documentElement;
|
10944
|
-
}
|
10945
|
-
/**
|
10946
|
-
* Calculates an appropriate content rectangle for provided html or svg element.
|
10947
|
-
*
|
10948
|
-
* @param {Element} target - Element content rectangle of which needs to be calculated.
|
10949
|
-
* @returns {DOMRectInit}
|
10950
|
-
*/
|
10951
|
-
function getContentRect(target) {
|
10952
|
-
if (!isBrowser) {
|
10953
|
-
return emptyRect;
|
10954
|
-
}
|
10955
|
-
if (isSVGGraphicsElement(target)) {
|
10956
|
-
return getSVGContentRect(target);
|
10957
|
-
}
|
10958
|
-
return getHTMLElementContentRect(target);
|
10959
|
-
}
|
10960
|
-
/**
|
10961
|
-
* Creates rectangle with an interface of the DOMRectReadOnly.
|
10962
|
-
* Spec: https://drafts.fxtf.org/geometry/#domrectreadonly
|
10963
|
-
*
|
10964
|
-
* @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.
|
10965
|
-
* @returns {DOMRectReadOnly}
|
10966
|
-
*/
|
10967
|
-
function createReadOnlyRect(_a) {
|
10968
|
-
var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
|
10969
|
-
// If DOMRectReadOnly is available use it as a prototype for the rectangle.
|
10970
|
-
var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;
|
10971
|
-
var rect = Object.create(Constr.prototype);
|
10972
|
-
// Rectangle's properties are not writable and non-enumerable.
|
10973
|
-
defineConfigurable(rect, {
|
10974
|
-
x: x, y: y, width: width, height: height,
|
10975
|
-
top: y,
|
10976
|
-
right: x + width,
|
10977
|
-
bottom: height + y,
|
10978
|
-
left: x
|
10979
|
-
});
|
10980
|
-
return rect;
|
10981
|
-
}
|
10982
|
-
/**
|
10983
|
-
* Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.
|
10984
|
-
* Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit
|
10985
|
-
*
|
10986
|
-
* @param {number} x - X coordinate.
|
10987
|
-
* @param {number} y - Y coordinate.
|
10988
|
-
* @param {number} width - Rectangle's width.
|
10989
|
-
* @param {number} height - Rectangle's height.
|
10990
|
-
* @returns {DOMRectInit}
|
10991
|
-
*/
|
10992
|
-
function createRectInit(x, y, width, height) {
|
10993
|
-
return { x: x, y: y, width: width, height: height };
|
10994
|
-
}
|
10995
|
-
|
10996
|
-
/**
|
10997
|
-
* Class that is responsible for computations of the content rectangle of
|
10998
|
-
* provided DOM element and for keeping track of it's changes.
|
10999
|
-
*/
|
11000
|
-
var ResizeObservation = /** @class */ (function () {
|
11001
|
-
/**
|
11002
|
-
* Creates an instance of ResizeObservation.
|
11003
|
-
*
|
11004
|
-
* @param {Element} target - Element to be observed.
|
11005
|
-
*/
|
11006
|
-
function ResizeObservation(target) {
|
11007
|
-
/**
|
11008
|
-
* Broadcasted width of content rectangle.
|
11009
|
-
*
|
11010
|
-
* @type {number}
|
11011
|
-
*/
|
11012
|
-
this.broadcastWidth = 0;
|
11013
|
-
/**
|
11014
|
-
* Broadcasted height of content rectangle.
|
11015
|
-
*
|
11016
|
-
* @type {number}
|
11017
|
-
*/
|
11018
|
-
this.broadcastHeight = 0;
|
11019
|
-
/**
|
11020
|
-
* Reference to the last observed content rectangle.
|
11021
|
-
*
|
11022
|
-
* @private {DOMRectInit}
|
11023
|
-
*/
|
11024
|
-
this.contentRect_ = createRectInit(0, 0, 0, 0);
|
11025
|
-
this.target = target;
|
11026
|
-
}
|
11027
|
-
/**
|
11028
|
-
* Updates content rectangle and tells whether it's width or height properties
|
11029
|
-
* have changed since the last broadcast.
|
11030
|
-
*
|
11031
|
-
* @returns {boolean}
|
11032
|
-
*/
|
11033
|
-
ResizeObservation.prototype.isActive = function () {
|
11034
|
-
var rect = getContentRect(this.target);
|
11035
|
-
this.contentRect_ = rect;
|
11036
|
-
return (rect.width !== this.broadcastWidth ||
|
11037
|
-
rect.height !== this.broadcastHeight);
|
11038
|
-
};
|
11039
|
-
/**
|
11040
|
-
* Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
|
11041
|
-
* from the corresponding properties of the last observed content rectangle.
|
11042
|
-
*
|
11043
|
-
* @returns {DOMRectInit} Last observed content rectangle.
|
11044
|
-
*/
|
11045
|
-
ResizeObservation.prototype.broadcastRect = function () {
|
11046
|
-
var rect = this.contentRect_;
|
11047
|
-
this.broadcastWidth = rect.width;
|
11048
|
-
this.broadcastHeight = rect.height;
|
11049
|
-
return rect;
|
11050
|
-
};
|
11051
|
-
return ResizeObservation;
|
11052
|
-
}());
|
11053
|
-
|
11054
|
-
var ResizeObserverEntry = /** @class */ (function () {
|
11055
|
-
/**
|
11056
|
-
* Creates an instance of ResizeObserverEntry.
|
11057
|
-
*
|
11058
|
-
* @param {Element} target - Element that is being observed.
|
11059
|
-
* @param {DOMRectInit} rectInit - Data of the element's content rectangle.
|
11060
|
-
*/
|
11061
|
-
function ResizeObserverEntry(target, rectInit) {
|
11062
|
-
var contentRect = createReadOnlyRect(rectInit);
|
11063
|
-
// According to the specification following properties are not writable
|
11064
|
-
// and are also not enumerable in the native implementation.
|
11065
|
-
//
|
11066
|
-
// Property accessors are not being used as they'd require to define a
|
11067
|
-
// private WeakMap storage which may cause memory leaks in browsers that
|
11068
|
-
// don't support this type of collections.
|
11069
|
-
defineConfigurable(this, { target: target, contentRect: contentRect });
|
11070
|
-
}
|
11071
|
-
return ResizeObserverEntry;
|
11072
|
-
}());
|
11073
|
-
|
11074
|
-
var ResizeObserverSPI = /** @class */ (function () {
|
11075
|
-
/**
|
11076
|
-
* Creates a new instance of ResizeObserver.
|
11077
|
-
*
|
11078
|
-
* @param {ResizeObserverCallback} callback - Callback function that is invoked
|
11079
|
-
* when one of the observed elements changes it's content dimensions.
|
11080
|
-
* @param {ResizeObserverController} controller - Controller instance which
|
11081
|
-
* is responsible for the updates of observer.
|
11082
|
-
* @param {ResizeObserver} callbackCtx - Reference to the public
|
11083
|
-
* ResizeObserver instance which will be passed to callback function.
|
11084
|
-
*/
|
11085
|
-
function ResizeObserverSPI(callback, controller, callbackCtx) {
|
11086
|
-
/**
|
11087
|
-
* Collection of resize observations that have detected changes in dimensions
|
11088
|
-
* of elements.
|
11089
|
-
*
|
11090
|
-
* @private {Array<ResizeObservation>}
|
11091
|
-
*/
|
11092
|
-
this.activeObservations_ = [];
|
11093
|
-
/**
|
11094
|
-
* Registry of the ResizeObservation instances.
|
11095
|
-
*
|
11096
|
-
* @private {Map<Element, ResizeObservation>}
|
11097
|
-
*/
|
11098
|
-
this.observations_ = new MapShim();
|
11099
|
-
if (typeof callback !== 'function') {
|
11100
|
-
throw new TypeError('The callback provided as parameter 1 is not a function.');
|
11101
|
-
}
|
11102
|
-
this.callback_ = callback;
|
11103
|
-
this.controller_ = controller;
|
11104
|
-
this.callbackCtx_ = callbackCtx;
|
11105
|
-
}
|
11106
|
-
/**
|
11107
|
-
* Starts observing provided element.
|
11108
|
-
*
|
11109
|
-
* @param {Element} target - Element to be observed.
|
11110
|
-
* @returns {void}
|
11111
|
-
*/
|
11112
|
-
ResizeObserverSPI.prototype.observe = function (target) {
|
11113
|
-
if (!arguments.length) {
|
11114
|
-
throw new TypeError('1 argument required, but only 0 present.');
|
11115
|
-
}
|
11116
|
-
// Do nothing if current environment doesn't have the Element interface.
|
11117
|
-
if (typeof Element === 'undefined' || !(Element instanceof Object)) {
|
11118
|
-
return;
|
11119
|
-
}
|
11120
|
-
if (!(target instanceof getWindowOf(target).Element)) {
|
11121
|
-
throw new TypeError('parameter 1 is not of type "Element".');
|
11122
|
-
}
|
11123
|
-
var observations = this.observations_;
|
11124
|
-
// Do nothing if element is already being observed.
|
11125
|
-
if (observations.has(target)) {
|
11126
|
-
return;
|
11127
|
-
}
|
11128
|
-
observations.set(target, new ResizeObservation(target));
|
11129
|
-
this.controller_.addObserver(this);
|
11130
|
-
// Force the update of observations.
|
11131
|
-
this.controller_.refresh();
|
11132
|
-
};
|
11133
|
-
/**
|
11134
|
-
* Stops observing provided element.
|
11135
|
-
*
|
11136
|
-
* @param {Element} target - Element to stop observing.
|
11137
|
-
* @returns {void}
|
11138
|
-
*/
|
11139
|
-
ResizeObserverSPI.prototype.unobserve = function (target) {
|
11140
|
-
if (!arguments.length) {
|
11141
|
-
throw new TypeError('1 argument required, but only 0 present.');
|
11142
|
-
}
|
11143
|
-
// Do nothing if current environment doesn't have the Element interface.
|
11144
|
-
if (typeof Element === 'undefined' || !(Element instanceof Object)) {
|
11145
|
-
return;
|
11146
|
-
}
|
11147
|
-
if (!(target instanceof getWindowOf(target).Element)) {
|
11148
|
-
throw new TypeError('parameter 1 is not of type "Element".');
|
11149
|
-
}
|
11150
|
-
var observations = this.observations_;
|
11151
|
-
// Do nothing if element is not being observed.
|
11152
|
-
if (!observations.has(target)) {
|
11153
|
-
return;
|
11154
|
-
}
|
11155
|
-
observations.delete(target);
|
11156
|
-
if (!observations.size) {
|
11157
|
-
this.controller_.removeObserver(this);
|
11158
|
-
}
|
11159
|
-
};
|
11160
|
-
/**
|
11161
|
-
* Stops observing all elements.
|
11162
|
-
*
|
11163
|
-
* @returns {void}
|
11164
|
-
*/
|
11165
|
-
ResizeObserverSPI.prototype.disconnect = function () {
|
11166
|
-
this.clearActive();
|
11167
|
-
this.observations_.clear();
|
11168
|
-
this.controller_.removeObserver(this);
|
11169
|
-
};
|
11170
|
-
/**
|
11171
|
-
* Collects observation instances the associated element of which has changed
|
11172
|
-
* it's content rectangle.
|
11173
|
-
*
|
11174
|
-
* @returns {void}
|
11175
|
-
*/
|
11176
|
-
ResizeObserverSPI.prototype.gatherActive = function () {
|
11177
|
-
var _this = this;
|
11178
|
-
this.clearActive();
|
11179
|
-
this.observations_.forEach(function (observation) {
|
11180
|
-
if (observation.isActive()) {
|
11181
|
-
_this.activeObservations_.push(observation);
|
11182
|
-
}
|
11183
|
-
});
|
11184
|
-
};
|
11185
|
-
/**
|
11186
|
-
* Invokes initial callback function with a list of ResizeObserverEntry
|
11187
|
-
* instances collected from active resize observations.
|
11188
|
-
*
|
11189
|
-
* @returns {void}
|
11190
|
-
*/
|
11191
|
-
ResizeObserverSPI.prototype.broadcastActive = function () {
|
11192
|
-
// Do nothing if observer doesn't have active observations.
|
11193
|
-
if (!this.hasActive()) {
|
11194
|
-
return;
|
11195
|
-
}
|
11196
|
-
var ctx = this.callbackCtx_;
|
11197
|
-
// Create ResizeObserverEntry instance for every active observation.
|
11198
|
-
var entries = this.activeObservations_.map(function (observation) {
|
11199
|
-
return new ResizeObserverEntry(observation.target, observation.broadcastRect());
|
11200
|
-
});
|
11201
|
-
this.callback_.call(ctx, entries, ctx);
|
11202
|
-
this.clearActive();
|
11203
|
-
};
|
11204
|
-
/**
|
11205
|
-
* Clears the collection of active observations.
|
11206
|
-
*
|
11207
|
-
* @returns {void}
|
11208
|
-
*/
|
11209
|
-
ResizeObserverSPI.prototype.clearActive = function () {
|
11210
|
-
this.activeObservations_.splice(0);
|
11211
|
-
};
|
11212
|
-
/**
|
11213
|
-
* Tells whether observer has active observations.
|
11214
|
-
*
|
11215
|
-
* @returns {boolean}
|
11216
|
-
*/
|
11217
|
-
ResizeObserverSPI.prototype.hasActive = function () {
|
11218
|
-
return this.activeObservations_.length > 0;
|
11219
|
-
};
|
11220
|
-
return ResizeObserverSPI;
|
11221
|
-
}());
|
11222
|
-
|
11223
|
-
// Registry of internal observers. If WeakMap is not available use current shim
|
11224
|
-
// for the Map collection as it has all required methods and because WeakMap
|
11225
|
-
// can't be fully polyfilled anyway.
|
11226
|
-
var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();
|
11227
|
-
/**
|
11228
|
-
* ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
|
11229
|
-
* exposing only those methods and properties that are defined in the spec.
|
11230
|
-
*/
|
11231
|
-
var ResizeObserver$1 = /** @class */ (function () {
|
11232
|
-
/**
|
11233
|
-
* Creates a new instance of ResizeObserver.
|
11234
|
-
*
|
11235
|
-
* @param {ResizeObserverCallback} callback - Callback that is invoked when
|
11236
|
-
* dimensions of the observed elements change.
|
11237
|
-
*/
|
11238
|
-
function ResizeObserver(callback) {
|
11239
|
-
if (!(this instanceof ResizeObserver)) {
|
11240
|
-
throw new TypeError('Cannot call a class as a function.');
|
11241
|
-
}
|
11242
|
-
if (!arguments.length) {
|
11243
|
-
throw new TypeError('1 argument required, but only 0 present.');
|
11244
|
-
}
|
11245
|
-
var controller = ResizeObserverController.getInstance();
|
11246
|
-
var observer = new ResizeObserverSPI(callback, controller, this);
|
11247
|
-
observers.set(this, observer);
|
11248
|
-
}
|
11249
|
-
return ResizeObserver;
|
11250
|
-
}());
|
11251
|
-
// Expose public methods of ResizeObserver.
|
11252
|
-
[
|
11253
|
-
'observe',
|
11254
|
-
'unobserve',
|
11255
|
-
'disconnect'
|
11256
|
-
].forEach(function (method) {
|
11257
|
-
ResizeObserver$1.prototype[method] = function () {
|
11258
|
-
var _a;
|
11259
|
-
return (_a = observers.get(this))[method].apply(_a, arguments);
|
11260
|
-
};
|
11261
|
-
});
|
11262
|
-
|
11263
|
-
var index$2 = (function () {
|
11264
|
-
// Export existing implementation if available.
|
11265
|
-
if (typeof global$1.ResizeObserver !== 'undefined') {
|
11266
|
-
return global$1.ResizeObserver;
|
11267
|
-
}
|
11268
|
-
return ResizeObserver$1;
|
11269
|
-
})();
|
11270
|
-
|
11271
10355
|
const detailsCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;--padding:1em;--btn-padding:var(--padding);--btn-bg-color:var(--nano-color-contrast, #dad6d3);--btn-bg-color--open:var(--nano-color-base, #dad6d3);--btn-bg-color--hover:var(--nano-color-tint, #f9f9fb);--btn-text-color:var(--nano-color-base, #455556);--btn-text-color--open:var(--nano-color-contrast, var(--btn-text-color));--btn-text-color--hover:var(--nano-color-contrast, var(--btn-text-color));--content-bg-color:transparent;--content-text-color:#455556;--content-transition:height 0.2s ease-out;--border-width:none;--border-color:none;--border-style:none;--border-radius:none;--box-shadow:none;--focus-style:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:block;border-style:var(--border-style);border-width:var(--border-width-dims);border-color:var(--border-color);border-radius:var(--border-radius-dims);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}:host(:last-of-type){--border-width-dims:0 var(--border-width) var(--border-width);--border-radius-dims:0 0 var(--border-radius) var(--border-radius)}:host(:last-of-type) .open .content{border-radius:0 0 var(--border-radius) var(--border-radius)}:host(:first-of-type){--border-radius-dims:var(--border-radius) var(--border-radius) 0 0;--border-width-dims:var(--border-width)}:host(:first-of-type:last-of-type){--border-radius-dims:var(--border-radius);--border-width-dims:var(--border-width)}:host(:not(:last-of-type):not(:first-of-type)){--border-width-dims:0 var(--border-width) var(--border-width)}:host(.nano-color){--btn-bg-color:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--btn-bg-color--open:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-bg-color--hover:var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5));--btn-text-color:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-text-color--open:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--btn-text-color--hover:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n )}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:var(--btn-padding);text-align:inherit;position:relative;font-size:1em;margin:0;-webkit-transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--btn-bg-color);color:var(--btn-text-color);border-radius:var(--border-radius-dims)}button[dir=rtl]{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}button:focus{-webkit-box-shadow:var(--focus-style);box-shadow:var(--focus-style);outline:none;position:relative;z-index:1}:hover button{background:var(--btn-bg-color--hover);color:var(--btn-text-color--hover)}.open button{background:var(--btn-bg-color--open);color:var(--btn-text-color--open);border-bottom-right-radius:0;border-bottom-left-radius:0}button .label{width:100%;max-width:100%;max-height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}button .icon{line-height:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:inline-block;color:currentColor;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;-webkit-transform-origin:center;transform-origin:center}button .icon--start{margin-left:0;margin-right:var(--padding);margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--start{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--padding);margin-inline-end:var(--padding)}}button .icon--end{margin-left:var(--padding);margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--end{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--padding);margin-inline-start:var(--padding);-webkit-margin-end:0;margin-inline-end:0}}button .icon ::slotted(nano-icon){--color:\"currentColor\"}.content{color:var(--content-text-color);background:var(--content-bg-color);height:0;overflow:hidden;-webkit-transition:0.2s ease border-radius;transition:0.2s ease border-radius;outline:none}.loaded .content{-webkit-transition:var(--content-transition), 0.2s ease border-radius;transition:var(--content-transition), 0.2s ease border-radius}.content>*{opacity:0;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.open .content>*{opacity:1}.content__area{padding:var(--padding)}";
|
11272
10356
|
|
11273
10357
|
let Details = class extends H {
|
@@ -11347,7 +10431,7 @@ let Details = class extends H {
|
|
11347
10431
|
attachRO() {
|
11348
10432
|
if (this.ro || !this.contentArea)
|
11349
10433
|
return;
|
11350
|
-
const ro = (this.ro = new
|
10434
|
+
const ro = (this.ro = new ResizeObserver(() => this.resize()));
|
11351
10435
|
ro.observe(this.contentArea);
|
11352
10436
|
}
|
11353
10437
|
componentWillLoad() {
|
@@ -14141,8 +13225,15 @@ let FieldValidator = class extends H {
|
|
14141
13225
|
this.nanoSubmit = createEvent(this, "nanoSubmit", 7);
|
14142
13226
|
this.nanoInvalid = createEvent(this, "nanoInvalid", 7);
|
14143
13227
|
this.submitted = false;
|
14144
|
-
this.
|
14145
|
-
|
13228
|
+
this.allFields = [];
|
13229
|
+
this.nanoFieldSelector = `
|
13230
|
+
nano-input,
|
13231
|
+
nano-select,
|
13232
|
+
nano-file-upload,
|
13233
|
+
nano-date-input,
|
13234
|
+
nano-checkbox
|
13235
|
+
`;
|
13236
|
+
// annoyingly, whenever we attempt to `checkValidty()` it fires `invalid` events.
|
14146
13237
|
// this is used to prevent infinite loops / multiple calls
|
14147
13238
|
this.internalValidate = false;
|
14148
13239
|
// Public API
|
@@ -14151,39 +13242,80 @@ let FieldValidator = class extends H {
|
|
14151
13242
|
/** Tries to scroll to the first invalid field on submit */
|
14152
13243
|
this.scrollToInvalid = true;
|
14153
13244
|
this._dirty = false;
|
13245
|
+
/** By default, `nano-field-validator` will also track all native form field elements.
|
13246
|
+
* You can add extra web-component form fields to listen to
|
13247
|
+
* (as long as they match the standard form field spec) by using the `fieldSelector` prop.
|
13248
|
+
*/
|
13249
|
+
this.extraFieldSelector = 'input, select, textarea';
|
14154
13250
|
// Event handlers
|
14155
|
-
/**
|
14156
|
-
|
13251
|
+
/**
|
13252
|
+
* Fired whenever store values change and potentially checks validity
|
13253
|
+
* @param key - the key of the store that's just changed
|
13254
|
+
* @param newVal - the incoming, new value
|
13255
|
+
*/
|
13256
|
+
this.handleStoreChange = async (key, newVal) => {
|
13257
|
+
const found = this.allFields.find((field) => field.name === key);
|
13258
|
+
// field update has come programmatically (not from ui),
|
13259
|
+
// so let's update the underlying ui field
|
13260
|
+
if ((found &&
|
13261
|
+
found.tagName === 'NANO-FILE-UPLOAD' &&
|
13262
|
+
!this.fileStateEqual(key, found)) ||
|
13263
|
+
(found.tagName !== 'NANO-FILE-UPLOAD' && found.value !== newVal)) {
|
13264
|
+
this.storeToFields([found]);
|
13265
|
+
}
|
14157
13266
|
if (this.validateOn === 'dirty' && this.dirty) {
|
14158
13267
|
this.internalValidate = true;
|
14159
13268
|
await this.validateAllFields();
|
14160
13269
|
this._valid = this.activeForm.checkValidity();
|
14161
13270
|
this.internalValidate = false;
|
14162
13271
|
}
|
14163
|
-
this.nanoPayloadChange.emit(this.
|
13272
|
+
this.nanoPayloadChange.emit(this._store.state);
|
14164
13273
|
};
|
14165
|
-
/**
|
13274
|
+
/**
|
13275
|
+
* Handles nano field value changes and passes to store
|
13276
|
+
* @param ev - the incoming change event
|
13277
|
+
*/
|
14166
13278
|
this.handleFieldChange = (ev) => {
|
13279
|
+
if (!this.nanoFields.includes(ev.target))
|
13280
|
+
return;
|
14167
13281
|
this._dirty = true;
|
14168
|
-
this.
|
13282
|
+
this.fieldsToStore([ev.target]);
|
13283
|
+
};
|
13284
|
+
/**
|
13285
|
+
* Handles non-nano field value changes and passes to store
|
13286
|
+
* @param ev - the incoming change event
|
13287
|
+
*/
|
13288
|
+
this.handlePlainFieldChange = (ev) => {
|
13289
|
+
if (!this.plainFields.includes(ev.target))
|
13290
|
+
return;
|
13291
|
+
this.fieldsToStore([ev.target]);
|
14169
13292
|
};
|
14170
|
-
/**
|
13293
|
+
/**
|
13294
|
+
* Handles default field validation events
|
13295
|
+
* @param ev - the invalid event
|
13296
|
+
*/
|
14171
13297
|
this.handleFormInvalid = async (ev) => {
|
14172
|
-
|
13298
|
+
// if it's a non-nano field, we'll let default html5 validation do it's thing
|
13299
|
+
if (!this.plainFields.includes(ev.target)) {
|
13300
|
+
ev.preventDefault();
|
13301
|
+
}
|
14173
13302
|
this._valid = false;
|
13303
|
+
// whenever `checkValidity` is called, this handler is in-turn called.
|
13304
|
+
// this flag is used to stop infinite loops
|
14174
13305
|
if (this.internalValidate)
|
14175
13306
|
return;
|
13307
|
+
// a submit must have happened to if 'submitThenDirty' turn on 'dirty' checking now
|
14176
13308
|
if (this.validateOn === 'submitThenDirty')
|
14177
13309
|
this.validateOn = 'dirty';
|
14178
13310
|
this.submitted = true;
|
14179
13311
|
await this.validateAllFields();
|
13312
|
+
this.internalValidate = true;
|
13313
|
+
this._valid = this.activeForm.checkValidity();
|
13314
|
+
this.internalValidate = false;
|
14180
13315
|
// kinda insane...but if we're only validating on submit, then if the form is currently
|
14181
13316
|
// in an invalid state, when submitting, it will fire an invalid event and not
|
14182
13317
|
// submit the form. So let's test to make sure it is really invalid, and submit if not
|
14183
13318
|
if (this.validateOn === 'submit') {
|
14184
|
-
this.internalValidate = true;
|
14185
|
-
this._valid = this.activeForm.checkValidity();
|
14186
|
-
this.internalValidate = false;
|
14187
13319
|
if (this._valid) {
|
14188
13320
|
this.submitForm();
|
14189
13321
|
return;
|
@@ -14192,7 +13324,10 @@ let FieldValidator = class extends H {
|
|
14192
13324
|
this.scrollToFirstInvalid();
|
14193
13325
|
this.nanoInvalid.emit();
|
14194
13326
|
};
|
14195
|
-
/**
|
13327
|
+
/**
|
13328
|
+
* stops default form submission, checks if valid, then submits manually
|
13329
|
+
* @param e - a submit event from the nested form element
|
13330
|
+
*/
|
14196
13331
|
this.handleSubmit = async (e) => {
|
14197
13332
|
e.preventDefault();
|
14198
13333
|
if (this.validateOn === 'submitThenDirty')
|
@@ -14217,15 +13352,18 @@ let FieldValidator = class extends H {
|
|
14217
13352
|
return this._activeForm;
|
14218
13353
|
}
|
14219
13354
|
set activeForm(form) {
|
14220
|
-
|
13355
|
+
// manages event listners on whatever form is used (slotted on created here)
|
13356
|
+
if (!form)
|
13357
|
+
return;
|
13358
|
+
if (this._activeForm) {
|
14221
13359
|
this._activeForm.removeEventListener('invalid', this.handleFormInvalid, true);
|
14222
|
-
|
14223
|
-
|
13360
|
+
}
|
13361
|
+
form.addEventListener('invalid', this.handleFormInvalid, true);
|
14224
13362
|
this._activeForm = form;
|
14225
13363
|
}
|
14226
13364
|
/** Sync up validateOn with all fields */
|
14227
13365
|
validateOnChange() {
|
14228
|
-
this.
|
13366
|
+
this.nanoFields.forEach((field) => {
|
14229
13367
|
if (field.tagName === 'NANO-CHECKBOX') {
|
14230
13368
|
const cbg = field.closest('nano-checkbox-group');
|
14231
13369
|
if (cbg)
|
@@ -14245,11 +13383,15 @@ let FieldValidator = class extends H {
|
|
14245
13383
|
get valid() {
|
14246
13384
|
return this._valid;
|
14247
13385
|
}
|
14248
|
-
/** The current form
|
13386
|
+
/** The current form state as a stencil store. */
|
13387
|
+
get store() {
|
13388
|
+
return this._store;
|
13389
|
+
}
|
13390
|
+
/** The current form payload as a reactive proxy. @readonly */
|
14249
13391
|
get payload() {
|
14250
|
-
return this.
|
13392
|
+
return this._store.state;
|
14251
13393
|
}
|
14252
|
-
/** Returns true if validation errors will be displayed to the user */
|
13394
|
+
/** Returns true if validation errors will be displayed to the user. @readonly */
|
14253
13395
|
get showValidation() {
|
14254
13396
|
return (this.validateOn === 'dirty' && this.dirty) || this.submitted;
|
14255
13397
|
}
|
@@ -14266,37 +13408,94 @@ let FieldValidator = class extends H {
|
|
14266
13408
|
```
|
14267
13409
|
*/
|
14268
13410
|
get validationState() {
|
13411
|
+
// TODO - migrate nano-fields away from using proprietary methods in a bid to be closer to the spec
|
13412
|
+
// this is big and ugly.
|
13413
|
+
// why? Cos' it must unify checking validity state for both
|
13414
|
+
// `nano-...` and plain form fields.
|
14269
13415
|
const validationState = [];
|
14270
|
-
this.
|
13416
|
+
this.allFields.forEach(async (field) => {
|
14271
13417
|
const found = validationState.find((v) => v.name === field.name);
|
13418
|
+
let pf;
|
13419
|
+
let nf;
|
14272
13420
|
if (found) {
|
14273
|
-
|
14274
|
-
|
14275
|
-
|
13421
|
+
if (field.validationMessage) {
|
13422
|
+
pf = field;
|
13423
|
+
found.validityMessage = pf.validationMessage.length
|
13424
|
+
? pf.validationMessage
|
13425
|
+
: found.validityMessage;
|
13426
|
+
this.internalValidate = true;
|
13427
|
+
if (found.valid && !pf.checkValidity())
|
13428
|
+
found.valid = false;
|
13429
|
+
this.internalValidate = false;
|
13430
|
+
}
|
13431
|
+
else if (field.validityMessage) {
|
13432
|
+
nf = field;
|
13433
|
+
found.validityMessage = nf.validityMessage.length
|
13434
|
+
? nf.validityMessage
|
13435
|
+
: nf.validityMessage;
|
13436
|
+
if (found.valid && nf.invalid)
|
13437
|
+
found.valid = false;
|
13438
|
+
}
|
14276
13439
|
if (!found.fields.find((f) => f === field))
|
14277
13440
|
found.fields.push(field);
|
14278
|
-
|
14279
|
-
|
14280
|
-
|
13441
|
+
}
|
13442
|
+
let valid;
|
13443
|
+
let validityMessage;
|
13444
|
+
if (field.checkValidity) {
|
13445
|
+
pf = field;
|
13446
|
+
this.internalValidate = true;
|
13447
|
+
valid = pf.checkValidity();
|
13448
|
+
this.internalValidate = false;
|
13449
|
+
validityMessage = pf.validationMessage;
|
13450
|
+
}
|
13451
|
+
else {
|
13452
|
+
nf = field;
|
13453
|
+
valid = !nf.invalid;
|
13454
|
+
validityMessage = nf.validityMessage;
|
14281
13455
|
}
|
14282
13456
|
validationState.push({
|
14283
13457
|
fields: [field],
|
14284
13458
|
name: field.name,
|
14285
|
-
|
14286
|
-
value: this.store.state[field.name],
|
13459
|
+
value: this._store.state[field.name],
|
14287
13460
|
dirty: false,
|
14288
|
-
|
13461
|
+
valid,
|
13462
|
+
validityMessage,
|
14289
13463
|
});
|
14290
13464
|
});
|
14291
13465
|
return validationState;
|
14292
13466
|
}
|
13467
|
+
/**
|
13468
|
+
* Sets the state of the form using an object of key / value pairs.
|
13469
|
+
* @param state - the state to load in the store
|
13470
|
+
*/
|
13471
|
+
async setStore(state) {
|
13472
|
+
Object.entries(state).forEach(([key, val]) => (this.store.state[key] = val));
|
13473
|
+
}
|
13474
|
+
/**
|
13475
|
+
* Sets custom validity for all / some form fields.
|
13476
|
+
* @param validity - a validity object of `{fieldName: errorString}` pairs. Set as an empty string to clear the error.
|
13477
|
+
*/
|
13478
|
+
async setCustomValidity(validity) {
|
13479
|
+
return await Promise.all(Object.entries(validity).map(async ([key, err]) => {
|
13480
|
+
const field = this.allFields.find((f) => f.name === key);
|
13481
|
+
if (!!field)
|
13482
|
+
await this.setFieldError(field, err);
|
13483
|
+
}));
|
13484
|
+
}
|
13485
|
+
/**
|
13486
|
+
* Clear all custom validation.
|
13487
|
+
* @param validity
|
13488
|
+
*/
|
13489
|
+
async resetValidity() {
|
13490
|
+
return await Promise.all(this.allFields.map(async (field) => await this.setFieldError(field, '')));
|
13491
|
+
}
|
14293
13492
|
// private methods
|
14294
13493
|
attachSlotObserver() {
|
14295
13494
|
if (!!this.mo)
|
14296
13495
|
return;
|
14297
13496
|
const mo = (this.mo = new MutationObserver((_entries) => {
|
14298
13497
|
const form = this.host.querySelector('form');
|
14299
|
-
if (form !== this.activeForm)
|
13498
|
+
if (form && form !== this.activeForm)
|
14300
13499
|
this.activeForm = form;
|
14301
13500
|
this.setupFields();
|
14302
13501
|
}));
|
@@ -14309,95 +13508,177 @@ let FieldValidator = class extends H {
|
|
14309
13508
|
}
|
14310
13509
|
/** Checks for new `nano-...` fields and adds them to our watch array and value store */
|
14311
13510
|
setupFields() {
|
14312
|
-
let
|
14313
|
-
|
14314
|
-
|
14315
|
-
|
14316
|
-
nano-date-input,
|
14317
|
-
nano-checkbox
|
14318
|
-
`));
|
14319
|
-
fields = fields.filter((f) => !!f.name && !!f.name.length);
|
13511
|
+
let nanoFields = Array.from(this.host.querySelectorAll(this.nanoFieldSelector));
|
13512
|
+
let plainFields = Array.from(this.host.querySelectorAll(this.extraFieldSelector)).filter((e) => !e.closest(this.nanoFieldSelector));
|
13513
|
+
nanoFields = nanoFields.filter((f) => !!f.name && !!f.name.length);
|
13514
|
+
plainFields = plainFields.filter((f) => !!f.name && !!f.name.length);
|
14320
13515
|
// do we have any currently un-watched fields?
|
14321
|
-
if (!
|
13516
|
+
if (![...nanoFields, ...plainFields].filter((f) => !this.allFields.includes(f)).length)
|
14322
13517
|
return;
|
14323
13518
|
// setup the initial store state / refresh on new fields
|
14324
|
-
this.
|
13519
|
+
this.nanoFields = nanoFields;
|
13520
|
+
this.plainFields = plainFields;
|
13521
|
+
this.allFields = [...nanoFields, ...plainFields];
|
13522
|
+
this.storeToFields(this.allFields);
|
14325
13523
|
this.validateOnChange();
|
14326
|
-
this.
|
14327
|
-
this.nanoPayloadChange.emit(this.
|
13524
|
+
this.fieldsToStore(this.allFields);
|
13525
|
+
this.nanoPayloadChange.emit(this._store.state);
|
13526
|
+
}
|
13527
|
+
storeToFields(fields) {
|
13528
|
+
fields.forEach((field) => {
|
13529
|
+
var _a;
|
13530
|
+
const fieldName = field.name;
|
13531
|
+
if (!fieldName.length ||
|
13532
|
+
typeof this._store.state[fieldName] === 'undefined')
|
13533
|
+
return;
|
13534
|
+
if (field.tagName === 'NANO-CHECKBOX' ||
|
13535
|
+
['radio', 'checkbox'].includes(field.type)) {
|
13536
|
+
let cb = field;
|
13537
|
+
if (cb.type === 'radio' ||
|
13538
|
+
cb.type === 'segment' ||
|
13539
|
+
cb.type === 'segment-pill') {
|
13540
|
+
// single radio type control
|
13541
|
+
if (this._store.state[fieldName] === cb.value)
|
13542
|
+
cb.checked = true;
|
13543
|
+
else
|
13544
|
+
cb.checked = false;
|
13545
|
+
}
|
13546
|
+
else if (Array.isArray(this._store.state[fieldName])) {
|
13547
|
+
// multiple checkbox like controls
|
13548
|
+
if (this._store.state[fieldName].includes(cb.value))
|
13549
|
+
cb.checked = true;
|
13550
|
+
else
|
13551
|
+
cb.checked = false;
|
13552
|
+
}
|
13553
|
+
else {
|
13554
|
+
// single checkbox like control
|
13555
|
+
if (this._store.state[fieldName] === cb.value)
|
13556
|
+
cb.checked = true;
|
13557
|
+
else
|
13558
|
+
cb.checked = false;
|
13559
|
+
}
|
13560
|
+
return;
|
13561
|
+
}
|
13562
|
+
if (field.tagName === 'NANO-FILE-UPLOAD') {
|
13563
|
+
const ff = field;
|
13564
|
+
// this can only work if the field is empty rn... a one-time deal
|
13565
|
+
if (!((_a = ff.files) === null || _a === void 0 ? void 0 : _a.length))
|
13566
|
+
ff.files = this._store.state[fieldName];
|
13567
|
+
return;
|
13568
|
+
}
|
13569
|
+
// default
|
13570
|
+
field.value = this._store.state[fieldName];
|
13571
|
+
});
|
14328
13572
|
}
|
14329
13573
|
/** Loops through all `nano-...` fields and extracts their values into our store */
|
14330
|
-
|
13574
|
+
fieldsToStore(fields) {
|
14331
13575
|
fields.forEach((field) => {
|
14332
13576
|
const fieldName = field.name;
|
14333
13577
|
if (!fieldName.length)
|
14334
13578
|
return;
|
14335
|
-
|
14336
|
-
|
14337
|
-
|
14338
|
-
|
14339
|
-
|
14340
|
-
|
14341
|
-
|
14342
|
-
|
14343
|
-
|
14344
|
-
|
14345
|
-
|
14346
|
-
|
14347
|
-
|
14348
|
-
|
14349
|
-
|
14350
|
-
|
14351
|
-
|
14352
|
-
|
14353
|
-
|
14354
|
-
|
14355
|
-
|
14356
|
-
}
|
14357
|
-
else {
|
14358
|
-
this.store.state[fieldName] = currentArr.filter((v) => v !== cb.value);
|
13579
|
+
if (field.tagName === 'NANO-CHECKBOX' ||
|
13580
|
+
['radio', 'checkbox'].includes(field.type)) {
|
13581
|
+
let cb = field;
|
13582
|
+
if (cb.type === 'radio' ||
|
13583
|
+
cb.type === 'segment' ||
|
13584
|
+
cb.type === 'segment-pill') {
|
13585
|
+
// radio type control - only one can be checked
|
13586
|
+
if (cb.checked)
|
13587
|
+
this._store.state[fieldName] = cb.value;
|
13588
|
+
}
|
13589
|
+
else if (this.allFields.filter((f) => f.name === fieldName &&
|
13590
|
+
(f.tagName === 'NANO-CHECKBOX' ||
|
13591
|
+
f.type === 'checkbox')).length > 1) {
|
13592
|
+
// multiple checkbox type control
|
13593
|
+
const currentArr = Array.isArray(this._store.state[fieldName])
|
13594
|
+
? this._store.state[fieldName]
|
13595
|
+
: [];
|
13596
|
+
if (cb.checked) {
|
13597
|
+
// checked
|
13598
|
+
if (!this._store.state[fieldName].includes(cb.value)) {
|
13599
|
+
this._store.state[fieldName] = [...currentArr, cb.value];
|
14359
13600
|
}
|
14360
13601
|
}
|
13602
|
+
else {
|
13603
|
+
// unchecked
|
13604
|
+
this._store.state[fieldName] = currentArr.filter((v) => v !== cb.value);
|
13605
|
+
}
|
13606
|
+
}
|
13607
|
+
else {
|
13608
|
+
// single checkbox - on or off
|
13609
|
+
if (cb.checked)
|
13610
|
+
this._store.state[fieldName] = cb.value;
|
14361
13611
|
else
|
14362
|
-
this.
|
14363
|
-
|
14364
|
-
|
14365
|
-
|
14366
|
-
|
14367
|
-
|
14368
|
-
|
14369
|
-
|
13612
|
+
this._store.state[fieldName] = '';
|
13613
|
+
}
|
13614
|
+
return;
|
13615
|
+
}
|
13616
|
+
if (field.tagName === 'NANO-FILE-UPLOAD') {
|
13617
|
+
const ff = field;
|
13618
|
+
if (!this.fileStateEqual(fieldName, ff))
|
13619
|
+
this._store.state[fieldName] = ff.files;
|
13620
|
+
return;
|
14370
13621
|
}
|
13622
|
+
// default
|
13623
|
+
this._store.state[fieldName] = field.value;
|
14371
13624
|
});
|
14372
13625
|
}
|
14373
|
-
/**
|
13626
|
+
/**
|
13627
|
+
* Tries to ascertain whether the current model
|
13628
|
+
* value is the same as the `nano-file-upload` value
|
13629
|
+
* @param fieldName - the key to access from the data store
|
13630
|
+
* @param field - the nano-file-upload field to assess against
|
13631
|
+
* @returns true for equal, false for not equal
|
13632
|
+
*/
|
13633
|
+
fileStateEqual(fieldName, field) {
|
13634
|
+
return (JSON.stringify(this._store.state[fieldName]) ===
|
13635
|
+
JSON.stringify(field.files) ||
|
13636
|
+
this._store.state[fieldName] == field.files);
|
13637
|
+
}
|
13638
|
+
/**
|
13639
|
+
* Checks for user defined validations
|
13640
|
+
* @param key - current key of the data model to validate
|
13641
|
+
* @param newVal - the newly set, incoming value to validate
|
13642
|
+
*/
|
14374
13643
|
async validate(key, newVal) {
|
14375
13644
|
if (!this.validation)
|
14376
13645
|
return;
|
14377
|
-
const res = this.validation(key, newVal, this.
|
13646
|
+
const res = this.validation(key, newVal, this._store.state);
|
14378
13647
|
// no nothing - return
|
14379
13648
|
if (!res)
|
14380
13649
|
return;
|
14381
13650
|
// stencil public methods are async
|
14382
|
-
// so we must
|
13651
|
+
// so we must coerce our validation
|
14383
13652
|
// collection loop into a promise
|
14384
13653
|
await Promise.all(Object.entries(res).map(async ([key, o]) => {
|
14385
13654
|
// switch on/off validation messages
|
14386
|
-
const field = this.
|
13655
|
+
const field = this.allFields.find((f) => f.name === key);
|
14387
13656
|
let validityTarget = field;
|
14388
13657
|
if (field.tagName === 'NANO-CHECKBOX') {
|
13658
|
+
// if we have a checkbox-group, set the validation message there
|
14389
13659
|
const cbg = field.closest('nano-checkbox-group');
|
14390
13660
|
validityTarget = cbg || field;
|
14391
13661
|
}
|
14392
|
-
|
14393
|
-
|
13662
|
+
if ((validityTarget.validityMessage ||
|
13663
|
+
validityTarget.validationMessage) === o.msg &&
|
13664
|
+
o.valid) {
|
13665
|
+
// status is now valid - clear the error
|
14394
13666
|
await this.setFieldError(validityTarget, '');
|
14395
|
-
|
13667
|
+
}
|
14396
13668
|
else if (!o.valid) {
|
13669
|
+
// status is invalid. Set the error
|
14397
13670
|
await this.setFieldError(validityTarget, o.msg);
|
14398
13671
|
}
|
14399
13672
|
}));
|
14400
13673
|
}
|
13674
|
+
/** Loops through all store entries and checks custom validation */
|
13675
|
+
async validateAllFields() {
|
13676
|
+
// This forces our loop to `await` and finish sequentially ... silly async stencil methods
|
13677
|
+
await Object.entries(this._store.state).reduce(async (memo, [key, value]) => {
|
13678
|
+
await memo;
|
13679
|
+
await this.validate(key, value);
|
13680
|
+
}, undefined);
|
13681
|
+
}
|
14401
13682
|
/**
|
14402
13683
|
* Utility to smooth out setting error messages
|
14403
13684
|
* (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)
|
@@ -14407,16 +13688,10 @@ let FieldValidator = class extends H {
|
|
14407
13688
|
async setFieldError(field, msg) {
|
14408
13689
|
if (field['showError'])
|
14409
13690
|
await field.showError(msg);
|
14410
|
-
else
|
13691
|
+
else if (field['setError'])
|
14411
13692
|
await field.setError(msg);
|
14412
|
-
|
14413
|
-
|
14414
|
-
async validateAllFields() {
|
14415
|
-
// This forces our loop to `await` and finish sequentially ... silly async stencil methods
|
14416
|
-
await Object.entries(this.store.state).reduce(async (memo, [key, value]) => {
|
14417
|
-
await memo;
|
14418
|
-
await this.validate(key, value);
|
14419
|
-
}, undefined);
|
13693
|
+
else
|
13694
|
+
field.setCustomValidity(msg);
|
14420
13695
|
}
|
14421
13696
|
scrollToFirstInvalid() {
|
14422
13697
|
if (!this.scrollToInvalid)
|
@@ -14439,23 +13714,27 @@ let FieldValidator = class extends H {
|
|
14439
13714
|
}
|
14440
13715
|
connectedCallback() {
|
14441
13716
|
this.userForm = this.host.querySelector('form');
|
13717
|
+
this._store = createStore({});
|
14442
13718
|
}
|
14443
13719
|
componentDidLoad() {
|
14444
13720
|
requestAnimationFrame(() => {
|
14445
|
-
this.store = createStore({});
|
14446
13721
|
this.setupFields();
|
14447
13722
|
this.attachSlotObserver();
|
14448
|
-
this.store.on('set', (key, value) => this.handleStoreChange(key, value));
|
14449
13723
|
this.host.addEventListener('nanoChange', this.handleFieldChange);
|
13724
|
+
this.host.addEventListener('input', this.handlePlainFieldChange);
|
13725
|
+
this.host.addEventListener('change', this.handlePlainFieldChange);
|
14450
13726
|
this.host.addEventListener('submit', this.handleSubmit);
|
13727
|
+
this._store.on('set', this.handleStoreChange);
|
14451
13728
|
});
|
14452
13729
|
}
|
14453
13730
|
disconnectedCallback() {
|
14454
13731
|
if (this.mo)
|
14455
13732
|
this.mo.disconnect();
|
14456
|
-
this.store.dispose();
|
14457
13733
|
this.host.removeEventListener('nanoChange', this.handleFieldChange);
|
13734
|
+
this.host.removeEventListener('input', this.handlePlainFieldChange);
|
13735
|
+
this.host.removeEventListener('change', this.handlePlainFieldChange);
|
14458
13736
|
this.host.removeEventListener('submit', this.handleSubmit);
|
13737
|
+
this._store.reset();
|
14459
13738
|
if (this.activeForm)
|
14460
13739
|
this.activeForm.removeEventListener('invalid', this.handleFormInvalid, true);
|
14461
13740
|
}
|
@@ -14465,11 +13744,12 @@ let FieldValidator = class extends H {
|
|
14465
13744
|
get host() { return this; }
|
14466
13745
|
static get watchers() { return {
|
14467
13746
|
"userForm": ["userFormChange"],
|
14468
|
-
"validateOn": ["validateOnChange"]
|
13747
|
+
"validateOn": ["validateOnChange"],
|
13748
|
+
"extraFieldSelector": ["attachSlotObserver"]
|
14469
13749
|
}; }
|
14470
13750
|
};
|
14471
13751
|
|
14472
|
-
const fileUploadCss = ".sc-nano-file-upload-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, \"currentColor\");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, \"currentColor\");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0, 116, 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239, 65, 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1em);--btn-padding-end:var(--nano-btn-padding-end, 1em)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) / 2);margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__more.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:0.9em;position:relative;-webkit-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:\"\";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgba(var(--drop-border-tint), 0.5);border-style:dashed;top:0;bottom:0;left:0;right:0;-webkit-transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgba(var(--drop-border--invalid), 1)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{top:5px;bottom:5px;left:5px;right:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgba(var(--drop-border-tint), 1);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;top:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:hideListItem 0.3s ease-in-out forwards;animation:hideListItem 0.3s ease-in-out forwards}@-webkit-keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{-webkit-animation:showListItem 0.3s ease-in-out forwards;animation:showListItem 0.3s ease-in-out forwards}@-webkit-keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px 5px;margin-right:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgba(var(--drop-border--invalid), 1)}.file-upload__button.sc-nano-file-upload{margin:0;padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;-webkit-transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;padding-left:var(--nano-btn-padding-start, 1rem);padding-right:var(--nano-btn-padding-end, 1rem);padding-top:var(--nano-btn-padding-top, 0.5rem);padding-bottom:var(--nano-btn-padding-bottom, 0.5rem);-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--nano-btn-padding-start, 1rem);padding-inline-start:var(--nano-btn-padding-start, 1rem);-webkit-padding-end:var(--nano-btn-padding-end, 1rem);padding-inline-end:var(--nano-btn-padding-end, 1rem)}}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.5rem;margin-right:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-top:-0.188rem;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0;margin-right:0.5rem}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}}.file-upload__button.sc-nano-file-upload:hover:not(.file-upload__button--disabled){-webkit-box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){-webkit-box-shadow:none;box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{-webkit-box-shadow:none;box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.4rem;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.4rem;margin-inline-start:0.4rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}";
|
13752
|
+
const fileUploadCss = ".sc-nano-file-upload-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, \"currentColor\");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, \"currentColor\");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0, 116, 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239, 65, 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1em);--btn-padding-end:var(--nano-btn-padding-end, 1em)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) / 2);margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__more.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:0.9em;position:relative;-webkit-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:\"\";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgba(var(--drop-border-tint), 0.5);border-style:dashed;top:0;bottom:0;left:0;right:0;-webkit-transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgba(var(--drop-border--invalid), 1)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{top:5px;bottom:5px;left:5px;right:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgba(var(--drop-border-tint), 1);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;top:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:hideListItem 0.3s ease-in-out forwards;animation:hideListItem 0.3s ease-in-out forwards}@-webkit-keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{-webkit-animation:showListItem 0.3s ease-in-out forwards;animation:showListItem 0.3s ease-in-out forwards}@-webkit-keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px 5px;margin-right:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgba(var(--drop-border--invalid), 1)}.file-upload__button.sc-nano-file-upload{padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;-webkit-transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;padding-left:var(--nano-btn-padding-start, 1rem);padding-right:var(--nano-btn-padding-end, 1rem);padding-top:var(--nano-btn-padding-top, 0.5rem);padding-bottom:var(--nano-btn-padding-bottom, 0.5rem);-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--nano-btn-padding-start, 1rem);padding-inline-start:var(--nano-btn-padding-start, 1rem);-webkit-padding-end:var(--nano-btn-padding-end, 1rem);padding-inline-end:var(--nano-btn-padding-end, 1rem)}}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.5rem;margin-right:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-top:-0.188rem;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0;margin-right:0.5rem}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}}.file-upload__button.sc-nano-file-upload:hover:not(.file-upload__button--disabled){-webkit-box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){-webkit-box-shadow:none;box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{-webkit-box-shadow:none;box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.4rem;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.4rem;margin-inline-start:0.4rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}";
|
14473
13753
|
|
14474
13754
|
let fileInputIds = 0;
|
14475
13755
|
let getDataTransfer = () => new DataTransfer();
|
@@ -14677,7 +13957,7 @@ let FileUpload = class extends H {
|
|
14677
13957
|
/** A File array that lists every selected file.
|
14678
13958
|
* Has an added `objectURL` property returning a `DOMString`
|
14679
13959
|
* containing an object URL that can be used to reference the contents of the specified source
|
14680
|
-
* This list has no more than one member unless the multiple attribute is specified
|
13960
|
+
* This list has no more than one member unless the multiple attribute is specified */
|
14681
13961
|
get files() {
|
14682
13962
|
return this.inputEl
|
14683
13963
|
? Array.from(this.inputEl.files).map((file) => {
|
@@ -14686,6 +13966,9 @@ let FileUpload = class extends H {
|
|
14686
13966
|
})
|
14687
13967
|
: [];
|
14688
13968
|
}
|
13969
|
+
set files(fs) {
|
13970
|
+
this.addNewFiles(this.arrToFileList(fs));
|
13971
|
+
}
|
14689
13972
|
/** A file input's value attribute contains a DOMString that represents the path to the selected file(s).
|
14690
13973
|
* If the user selected multiple files, the value represents the first file in the list of files they selected.
|
14691
13974
|
* You can reset the file-upload control by setting the value to an emptry string e.g. `var input.value = ''` */
|
@@ -15964,8 +15247,9 @@ let GlobalNav = class extends H {
|
|
15964
15247
|
static get style() { return globalNavCss; }
|
15965
15248
|
};
|
15966
15249
|
|
15967
|
-
const globalSearchResultsCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:block;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.main-search{display:-webkit-box;display:-ms-flexbox;display:flex;background:white;font-size:14px;min-height:calc(100vh - 63px);-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.main-search__wrap{display:contents;height:100%}.main-search ul{margin:0;padding:0;list-style:none}.main-search li{margin:0;padding:0}.main-search button:not(.result__tags-tag){-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;position:relative;top:-2px}.main-search .icon-button{color:inherit;-ms-flex-item-align:normal;-ms-grid-row-align:normal;align-self:normal;padding:9px 7px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.main-search__topbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1em}.main-search__topbar::after{content:\"\";width:calc(100% - 30px);left:30px;position:relative;border-bottom:1px solid #e5eef1;padding-top:0.9em}.main-search__applied-filters{border:solid 1px #e4e6e8;text-transform:uppercase;border-radius:3px;font-weight:bold;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0.9;padding:5px 5px 0 5px;letter-spacing:2px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:0.5rem}.main-search__applied-filters span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}:host(.small) .main-search__applied-filters{display:none}.main-search__applied-nofilter{margin-left:0;margin-right:5px;margin-top:0;margin-bottom:3px;padding-left:7px;padding-right:7px;padding-top:10px;padding-bottom:10px;font-size:12px;color:rgba(69, 85, 86, 0.85)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-nofilter{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:5px;margin-inline-end:5px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-nofilter{padding-left:unset;padding-right:unset;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px}}.main-search__applied-filter{padding-left:8px;padding-right:2px;padding-top:5px;padding-bottom:3px;margin-left:0;margin-right:5px;margin-top:0;margin-bottom:5px;color:#455556;font-size:11px;border-radius:2px;border:solid 1px rgba(0, 132, 169, 0.5);background-color:rgba(0, 132, 169, 0.2);line-height:1}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:2px;padding-inline-end:2px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:5px;margin-inline-end:5px}}.main-search__applied-filter .icon-button{padding-left:10px;padding-right:4px;padding-top:2px;padding-bottom:1px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter .icon-button{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:4px;padding-inline-end:4px}}.main-search__applied-filter .icon-button nano-icon{pointer-events:none}.main-search .topbar__bkbtn{position:relative;left:-7px}:host(.small) .main-search .topbar__query{display:none}.main-search .topbar__filtering{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:1em;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__filtering{margin-left:unset;margin-right:unset;-webkit-margin-start:1em;margin-inline-start:1em;-webkit-margin-end:0;margin-inline-end:0}}.main-search .topbar__order{min-width:175px;max-width:200px;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__order{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .main-search .topbar__order{max-width:300px}.main-search .topbar nano-select{opacity:1;-webkit-transition:0.1s ease opacity;transition:0.1s ease opacity}.main-search .topbar nano-select:not(.hydrated){opacity:0}.main-search .topbar__show-filters{margin-left:0.5em;margin-right:0;margin-top:0;margin-bottom:0;text-transform:uppercase;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__show-filters{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5em;margin-inline-start:0.5em;-webkit-margin-end:0;margin-inline-end:0}}.main-search .topbar__show-filters nano-icon{font-size:20px}:host(.small) .main-search .topbar__show-filters{display:-webkit-box;display:-ms-flexbox;display:flex}.main-search .topbar__filter-count{width:12px;height:12px;-webkit-box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);border:solid 1px #005c76;background-color:#005c76;color:white;font-size:7px;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1;margin-bottom:3px}.main-search__results{font-size:14px;padding:1em 40px;color:rgba(69, 85, 86, 0.85);width:70%;height:100%}@media (max-width: 576px){.main-search__results{padding:1em 20px}}:host(.small) .main-search__results{width:100%}.main-search__filters{outline:none;padding-left:0;padding-right:40px;padding-top:1.8em;padding-bottom:1em;-webkit-box-flex:1;-ms-flex:1 1 30%;flex:1 1 30%;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__filters{padding-left:unset;padding-right:unset;-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:40px;padding-inline-end:40px}}@media (max-width: 576px){.main-search__filters{padding-right:20px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__filters{padding-right:unset;-webkit-padding-end:20px;padding-inline-end:20px}}}:host(:not(.small)) .main-search__filters{max-width:350px;min-width:220px}.filters{color:#455556;background:white;font-size:14px}:host(.small) .filters{position:fixed;width:0;height:0;z-index:10;top:0;right:0;-webkit-transition:all 0s ease 0.5s;transition:all 0s ease 0.5s;background:none}:host(.small) .filters.show{height:100vh;width:100vw;-webkit-transition:all 0s ease 0s;transition:all 0s ease 0s}:host(.small) .filters.show::after{opacity:1}:host(.small) .filters::after{content:\"\";background:rgba(0, 0, 0, 0.5);position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;opacity:0;-webkit-transition:0.1s ease opacity;transition:0.1s ease opacity}.filters__close-filters{display:none !important;font-size:1.4em}:host(.small) .filters__close-filters{display:inline-block !important;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.small) .filters__close-filters{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .filters-wrap{position:absolute;top:0;right:0;background:#f7f6f6;-webkit-transform:translateX(100%);transform:translateX(100%);width:300px;min-width:200px;max-width:80vw;-webkit-transition:-webkit-transform 0.3s ease;transition:-webkit-transform 0.3s ease;transition:transform 0.3s ease;transition:transform 0.3s ease, -webkit-transform 0.3s ease;padding:1em;color:black;overflow:auto;height:100vh}:host(.small) .filters.show .filters-wrap{-webkit-transform:translateX(0%);transform:translateX(0%);-webkit-box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1);box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1)}.filters ul{margin:0;padding:0;list-style:none}.filters li{margin:0;padding:0}.filters nano-details{--padding:0.8em;margin:0.8em 0}.filters nano-details strong[slot]{display:block;padding-left:calc(20px - 0.8em)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters nano-details strong[slot]{padding-left:unset;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);}}.filters nano-details nano-icon[slot=icon-end]{padding-left:calc(20px - 0.8em);padding-right:calc(20px - 0.8em)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters nano-details nano-icon[slot=icon-end]{padding-left:unset;padding-right:unset;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);-webkit-padding-end:calc(20px - 0.8em);padding-inline-end:calc(20px - 0.8em)}}.filters li:last-child .filter-label{margin-bottom:0}.filters .filter-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;margin:0.5em 0;line-height:1.4;z-index:0}.filters .filter-label::before{margin-left:0;margin-right:1em;margin-top:0;margin-bottom:0;content:\"\";border:1px solid #007495;background:#fff;border-radius:3px;height:1em;width:1em;min-width:1em;min-height:1em;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters .filter-label::before{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:1em;margin-inline-end:1em}}.filters .filter-label::after{background-image:url(\"data:image/svg+xml;charset=utf-8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'><path%20fill='%23ffffff'%20d='M173.898%20439.404l-166.4-166.4c-9.997-9.997-9.997-26.206%200-36.204l36.203-36.204c9.997-9.998%2026.207-9.998%2036.204%200L192%20312.69%20432.095%2072.596c9.997-9.997%2026.207-9.997%2036.204%200l36.203%2036.204c9.997%209.997%209.997%2026.206%200%2036.204l-294.4%20294.401c-9.998%209.997-26.207%209.997-36.204-.001z'/></svg>\");content:\"\";height:0.7em;width:0.7em;position:absolute;left:2px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:1;display:block;background-size:100%;background-position:center center;background-repeat:no-repeat}:host([dir=rtl]) .filters .filter-label::after{right:1px;left:auto}.filters .filter-cb{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.filters .filter-cb:checked+.filter-label::before{background:#245a6f}.filters .filter-cb:focus+.filter-label::before{-webkit-box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7);box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7)}.filters-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.filters-reset{color:#007495;font-size:12px;text-decoration:underline;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters-reset{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .filters-reset{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.filters-title{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;text-transform:uppercase;color:rgba(69, 85, 86, 0.85);font-weight:bold;font-size:14px}:host(.small) .filters-title{display:none}.result{text-decoration:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-bottom:14px;border-bottom:1px solid #90c6e7}.result *{word-wrap:break-word;word-break:break-word}.result__title{margin:1em 0 0.5em 0;width:70%;display:-webkit-box;display:-ms-flexbox;display:flex}.result__title a{color:#0084a9;font-size:14px;line-height:1.43;text-decoration:none;font-weight:600}.result__title nano-icon{margin-left:0;margin-right:0.5em;margin-top:0;margin-bottom:0;min-width:20px;min-height:20px;opacity:0.8}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.result__title nano-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5em;margin-inline-end:0.5em}}@media (max-width: 992px){.result__title{width:100%}}.result__body{color:#455556;font-size:13px;width:70%;text-decoration:none}@media (max-width: 992px){.result__body{width:100%}}.result__pdf{display:inline-block;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;color:#b5aea7}.result__meta{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;color:#455556;font-size:11px;line-height:13px;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.result__meta>*{margin-top:0.5rem}.result__meta>*:not(:last-child){-webkit-padding-end:0;padding-inline-end:0}.result__meta>*:not(:last-child)::after{content:\"\";height:1rem;width:1px;background:#90c6e7;display:inline-block;-webkit-margin-start:0.7rem;margin-inline-start:0.7rem;-webkit-margin-end:0.7rem;margin-inline-end:0.7rem}@media (max-width: 576px){.result__meta>*:not(:last-child)::after{display:none}}@media (max-width: 576px){.result__meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}.result__tags{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media (max-width: 576px){.result__tags{-webkit-padding-start:0;padding-inline-start:0}}.result__tags-tag{color:#455556;display:inline-block;font-size:0.4375rem;letter-spacing:1.4px;background:#fff;border-radius:2px;text-transform:uppercase;padding:0 4px 1px 5px;font-weight:600;margin:3px 0.25rem 0.25rem 0;border:1px solid #b5aea7;white-space:nowrap;line-height:13px}.result__type{font-weight:600;text-transform:capitalize;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.result__date{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#455556}.result__source{color:#455556;-webkit-padding-end:0.75rem;padding-inline-end:0.75rem}.result__authors{font-size:12px;color:#455556;margin-bottom:0.25rem;text-decoration:none;width:70%}.result__buttons{width:70%;margin-bottom:0.5rem}.result__buttons-button{background-color:#007495;color:#fff;padding:5px 8px 1px;border-radius:4px;display:inline-block;font-size:11px;text-decoration:none;border:none}.result__promo{width:70%;margin-bottom:0.5rem;text-decoration:none;color:#455556}.result__promo-box{width:300px;background-color:#e3eef1;padding:12px 12px 8px 4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:1rem}.result__promo-bigdate{-webkit-box-flex:0;-ms-flex:0 1 60px;flex:0 1 60px;text-align:center;font-weight:600;color:#007495;text-transform:uppercase;line-height:1.25;letter-spacing:1.5px}@media (max-width: 992px){.result__promo-bigdate{width:100%}}.result__promo-bigdate span{color:#455556;display:block}.result__promo-bigdate~div{-webkit-padding-start:1rem;padding-inline-start:1rem;-webkit-border-start:1px solid #c5dbe1;border-inline-start:1px solid #c5dbe1}.result__promo-date{font-size:12px}.result__promo-venue{font-size:12px}.result__promo nano-icon{color:#007495;position:relative;top:1px;-webkit-padding-end:2px;padding-inline-end:2px}.result__image{display:block;background-size:cover;background-repeat:no-repeat;background-position:center;border-radius:4px;position:relative;width:100%;height:150px;margin-bottom:0.5rem}@media (min-width: 576px){.result__image{width:142px;height:80px}}.result__image nano-icon{position:absolute;top:calc(50% - 0.75rem);left:calc(50% - 0.75rem);font-size:1.5rem;color:#0084a9;--primary-color:#fff;--secondary-color:#0084a9;--primary-opacity:1}@media (max-width: 576px){.result__image nano-icon{font-size:3rem;top:calc(50% - 1.5rem);left:calc(50% - 1.5rem)}}.result__video-body{width:70%;text-decoration:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media (max-width: 992px){.result__video-body{width:100%}}@media (max-width: 576px){.result__video-body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}}.result__video-body .result__body{-webkit-padding-start:1rem;padding-inline-start:1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 576px){.result__video-body .result__body{-webkit-padding-start:0;padding-inline-start:0}}.result__video-body .result__body p{display:inline;margin:0}.result__video-body .result__body u,.result__video-body .result__body li,.result__video-body .result__body a{text-decoration:none}.result__video-body .result__body .result__meta{margin-top:0.5rem}.result__video-body .result__body .result__description{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.search-empty{padding:3rem 0;text-align:center;border-top:1px solid #e5eef1}.search-empty h2{color:#455556;font-size:1.125rem;margin-bottom:0.5rem}.search-empty-icon{font-size:7rem;--icon-color:#e4e6e8;margin-bottom:2rem}.search__highlight{background:#fbffbf;font-style:normal}";
|
15250
|
+
const globalSearchResultsCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:block;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.main-search{display:-webkit-box;display:-ms-flexbox;display:flex;background:white;font-size:14px;min-height:calc(100vh - 63px);-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.main-search__wrap{display:contents;height:100%}.main-search ul{margin:0;padding:0;list-style:none}.main-search li{margin:0;padding:0}.main-search button:not(.result__tags-tag){-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;position:relative;top:-2px}.main-search .icon-button{color:inherit;-ms-flex-item-align:normal;-ms-grid-row-align:normal;align-self:normal;padding:9px 7px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.main-search__topbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1em}.main-search__topbar::after{content:\"\";width:calc(100% - 30px);left:30px;position:relative;border-bottom:1px solid #e5eef1;padding-top:0.9em}.main-search__applied-filters{border:solid 1px #e4e6e8;text-transform:uppercase;border-radius:3px;font-weight:bold;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0.9;padding:5px 5px 0 5px;letter-spacing:2px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:0.5rem}.main-search__applied-filters span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}:host(.small) .main-search__applied-filters{display:none}.main-search__applied-nofilter{margin-left:0;margin-right:5px;margin-top:0;margin-bottom:3px;padding-left:7px;padding-right:7px;padding-top:10px;padding-bottom:10px;font-size:12px;color:rgba(69, 85, 86, 0.85)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-nofilter{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:5px;margin-inline-end:5px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-nofilter{padding-left:unset;padding-right:unset;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px}}.main-search__applied-filter{padding-left:8px;padding-right:2px;padding-top:5px;padding-bottom:3px;margin-left:0;margin-right:5px;margin-top:0;margin-bottom:5px;color:#455556;font-size:11px;border-radius:2px;border:solid 1px rgba(0, 132, 169, 0.5);background-color:rgba(0, 132, 169, 0.2);line-height:1}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:2px;padding-inline-end:2px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:5px;margin-inline-end:5px}}.main-search__applied-filter .icon-button{padding-left:10px;padding-right:4px;padding-top:2px;padding-bottom:1px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__applied-filter .icon-button{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:4px;padding-inline-end:4px}}.main-search__applied-filter .icon-button nano-icon{pointer-events:none}.main-search .topbar__bkbtn{position:relative;left:-7px}:host(.small) .main-search .topbar__query{display:none}.main-search .topbar__filtering{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:1em;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__filtering{margin-left:unset;margin-right:unset;-webkit-margin-start:1em;margin-inline-start:1em;-webkit-margin-end:0;margin-inline-end:0}}.main-search .topbar__order{min-width:175px;max-width:200px;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__order{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .main-search .topbar__order{max-width:300px}.main-search .topbar nano-select{opacity:1;-webkit-transition:0.1s ease opacity;transition:0.1s ease opacity}.main-search .topbar nano-select:not(.hydrated){opacity:0}.main-search .topbar__show-filters{margin-left:0.5em;margin-right:0;margin-top:0;margin-bottom:0;text-transform:uppercase;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search .topbar__show-filters{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5em;margin-inline-start:0.5em;-webkit-margin-end:0;margin-inline-end:0}}.main-search .topbar__show-filters nano-icon{font-size:20px}:host(.small) .main-search .topbar__show-filters{display:-webkit-box;display:-ms-flexbox;display:flex}.main-search .topbar__filter-count{width:12px;height:12px;-webkit-box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);border:solid 1px #005c76;background-color:#005c76;color:white;font-size:7px;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1;margin-bottom:3px}.main-search__results{font-size:14px;padding:1em 40px;color:rgba(69, 85, 86, 0.85);width:70%;height:100%}@media (max-width: 576px){.main-search__results{padding:1em 20px}}:host(.small) .main-search__results{width:100%}.main-search__filters{outline:none;padding-left:0;padding-right:40px;padding-top:1.8em;padding-bottom:1em;-webkit-box-flex:1;-ms-flex:1 1 30%;flex:1 1 30%;-webkit-box-sizing:border-box;box-sizing:border-box}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__filters{padding-left:unset;padding-right:unset;-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:40px;padding-inline-end:40px}}@media (max-width: 576px){.main-search__filters{padding-right:20px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.main-search__filters{padding-right:unset;-webkit-padding-end:20px;padding-inline-end:20px}}}:host(:not(.small)) .main-search__filters{max-width:350px;min-width:220px}.filters{color:#455556;background:white;font-size:14px}:host(.small) .filters{position:fixed;width:0;height:0;z-index:10;top:0;right:0;-webkit-transition:all 0s ease 0.5s;transition:all 0s ease 0.5s;background:none}:host(.small) .filters.show{height:100vh;width:100vw;-webkit-transition:all 0s ease 0s;transition:all 0s ease 0s}:host(.small) .filters.show::after{opacity:1}:host(.small) .filters::after{content:\"\";background:rgba(0, 0, 0, 0.5);position:absolute;left:0;top:0;right:0;bottom:0;z-index:-1;opacity:0;-webkit-transition:0.1s ease opacity;transition:0.1s ease opacity}.filters__close-filters{display:none !important;font-size:1.4em}:host(.small) .filters__close-filters{display:inline-block !important;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.small) .filters__close-filters{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}.filters__old-posts{-webkit-margin-start:1rem;margin-inline-start:1rem}:host(.small) .filters-wrap{position:absolute;top:0;right:0;background:#f7f6f6;-webkit-transform:translateX(100%);transform:translateX(100%);width:300px;min-width:200px;max-width:80vw;-webkit-transition:-webkit-transform 0.3s ease;transition:-webkit-transform 0.3s ease;transition:transform 0.3s ease;transition:transform 0.3s ease, -webkit-transform 0.3s ease;padding:1em;color:black;overflow:auto;height:100vh}:host(.small) .filters.show .filters-wrap{-webkit-transform:translateX(0%);transform:translateX(0%);-webkit-box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1);box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1)}.filters ul{margin:0;padding:0;list-style:none}.filters li{margin:0;padding:0}.filters nano-details{--padding:0.8em;margin:0.8em 0}.filters nano-details strong[slot]{display:block;padding-left:calc(20px - 0.8em)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters nano-details strong[slot]{padding-left:unset;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);}}.filters nano-details nano-icon[slot=icon-end]{padding-left:calc(20px - 0.8em);padding-right:calc(20px - 0.8em)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters nano-details nano-icon[slot=icon-end]{padding-left:unset;padding-right:unset;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);-webkit-padding-end:calc(20px - 0.8em);padding-inline-end:calc(20px - 0.8em)}}.filters li:last-child .filter-label{margin-bottom:0}.filters .filter-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;margin:0.5em 0;line-height:1.4;z-index:0}.filters .filter-label::before{margin-left:0;margin-right:1em;margin-top:0;margin-bottom:0;content:\"\";border:1px solid #007495;background:#fff;border-radius:3px;height:1em;width:1em;min-width:1em;min-height:1em;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters .filter-label::before{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:1em;margin-inline-end:1em}}.filters .filter-label::after{background-image:url(\"data:image/svg+xml;charset=utf-8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'><path%20fill='%23ffffff'%20d='M173.898%20439.404l-166.4-166.4c-9.997-9.997-9.997-26.206%200-36.204l36.203-36.204c9.997-9.998%2026.207-9.998%2036.204%200L192%20312.69%20432.095%2072.596c9.997-9.997%2026.207-9.997%2036.204%200l36.203%2036.204c9.997%209.997%209.997%2026.206%200%2036.204l-294.4%20294.401c-9.998%209.997-26.207%209.997-36.204-.001z'/></svg>\");content:\"\";height:0.7em;width:0.7em;position:absolute;left:2px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:1;display:block;background-size:100%;background-position:center center;background-repeat:no-repeat}:host([dir=rtl]) .filters .filter-label::after{right:1px;left:auto}.filters .filter-cb{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.filters .filter-cb:checked+.filter-label::before{background:#245a6f}.filters .filter-cb:focus+.filter-label::before{-webkit-box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7);box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7)}.filters-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #90c6e7;padding-bottom:0.5rem;margin-bottom:0.5rem}.filters-reset{color:#007495;font-size:12px;text-decoration:underline;margin-left:auto;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.filters-reset{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:0;margin-inline-end:0}}:host(.small) .filters-reset{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.filters-title{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;text-transform:uppercase;color:rgba(69, 85, 86, 0.85);font-weight:bold;font-size:14px}:host(.small) .filters-title{display:none}.result{text-decoration:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-bottom:14px;border-bottom:1px solid #90c6e7}.result *{word-wrap:break-word;word-break:break-word}.result__title{margin:1em 0 0.5em 0;width:70%;display:-webkit-box;display:-ms-flexbox;display:flex}.result__title a{color:#0084a9;font-size:14px;line-height:1.43;text-decoration:none;font-weight:600}.result__title nano-icon{margin-left:0;margin-right:0.5em;margin-top:0;margin-bottom:0;min-width:20px;min-height:20px;opacity:0.8}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.result__title nano-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5em;margin-inline-end:0.5em}}@media (max-width: 992px){.result__title{width:100%}}.result__body{color:#455556;font-size:13px;width:70%;text-decoration:none}@media (max-width: 992px){.result__body{width:100%}}.result__pdf{display:inline-block;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;color:#b5aea7}.result__meta{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;color:#455556;font-size:11px;line-height:13px;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.result__meta>*{margin-top:0.5rem}.result__meta>*:not(:last-child){-webkit-padding-end:0;padding-inline-end:0}.result__meta>*:not(:last-child)::after{content:\"\";height:1rem;width:1px;background:#90c6e7;display:inline-block;-webkit-margin-start:0.7rem;margin-inline-start:0.7rem;-webkit-margin-end:0.7rem;margin-inline-end:0.7rem}@media (max-width: 576px){.result__meta>*:not(:last-child)::after{display:none}}@media (max-width: 576px){.result__meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}.result__tags{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media (max-width: 576px){.result__tags{-webkit-padding-start:0;padding-inline-start:0}}.result__tags-tag{color:#455556;display:inline-block;font-size:0.4375rem;letter-spacing:1.4px;background:#fff;border-radius:2px;text-transform:uppercase;padding:0 4px 1px 5px;font-weight:600;margin:3px 0.25rem 0.25rem 0;border:1px solid #b5aea7;white-space:nowrap;line-height:13px}.result__type{font-weight:600;text-transform:capitalize;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.result__date{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#455556}.result__source{color:#455556;-webkit-padding-end:0.75rem;padding-inline-end:0.75rem}.result__authors{font-size:12px;color:#455556;margin-bottom:0.25rem;text-decoration:none;width:70%}.result__buttons{width:70%;margin-bottom:0.5rem}.result__buttons-button{background-color:#007495;color:#fff;padding:5px 8px 1px;border-radius:4px;display:inline-block;font-size:11px;text-decoration:none;border:none}.result__promo{width:70%;margin-bottom:0.5rem;text-decoration:none;color:#455556}.result__promo-box{width:300px;background-color:#e3eef1;padding:12px 12px 8px 4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:1rem}.result__promo-bigdate{-webkit-box-flex:0;-ms-flex:0 1 60px;flex:0 1 60px;text-align:center;font-weight:600;color:#007495;text-transform:uppercase;line-height:1.25;letter-spacing:1.5px}@media (max-width: 992px){.result__promo-bigdate{width:100%}}.result__promo-bigdate span{color:#455556;display:block}.result__promo-bigdate~div{-webkit-padding-start:1rem;padding-inline-start:1rem;-webkit-border-start:1px solid #c5dbe1;border-inline-start:1px solid #c5dbe1}.result__promo-date{font-size:12px}.result__promo-venue{font-size:12px}.result__promo nano-icon{color:#007495;position:relative;top:1px;-webkit-padding-end:2px;padding-inline-end:2px}.result__image{display:block;background-size:cover;background-repeat:no-repeat;background-position:center;border-radius:4px;position:relative;width:100%;height:150px;margin-bottom:0.5rem}@media (min-width: 576px){.result__image{width:142px;height:80px}}.result__image nano-icon{position:absolute;top:calc(50% - 0.75rem);left:calc(50% - 0.75rem);font-size:1.5rem;color:#0084a9;--primary-color:#fff;--secondary-color:#0084a9;--primary-opacity:1}@media (max-width: 576px){.result__image nano-icon{font-size:3rem;top:calc(50% - 1.5rem);left:calc(50% - 1.5rem)}}.result__video-body{width:70%;text-decoration:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media (max-width: 992px){.result__video-body{width:100%}}@media (max-width: 576px){.result__video-body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}}.result__video-body .result__body{-webkit-padding-start:1rem;padding-inline-start:1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 576px){.result__video-body .result__body{-webkit-padding-start:0;padding-inline-start:0}}.result__video-body .result__body p{display:inline;margin:0}.result__video-body .result__body u,.result__video-body .result__body li,.result__video-body .result__body a{text-decoration:none}.result__video-body .result__body .result__meta{margin-top:0.5rem}.result__video-body .result__body .result__description{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.search-empty{padding:3rem 0;text-align:center;border-top:1px solid #e5eef1}.search-empty h2{color:#455556;font-size:1.125rem;margin-bottom:0.5rem}.search-empty-icon{font-size:7rem;--icon-color:#e4e6e8;margin-bottom:2rem}.search__highlight{background:#fbffbf;font-style:normal}";
|
15968
15251
|
|
15252
|
+
const filterOldPosts = 'created > ' + Math.floor((Date.now() - 63115200000) / 1000);
|
15969
15253
|
let GlobalSearchResults = class extends H {
|
15970
15254
|
constructor() {
|
15971
15255
|
super();
|
@@ -16047,6 +15331,12 @@ let GlobalSearchResults = class extends H {
|
|
16047
15331
|
});
|
16048
15332
|
}
|
16049
15333
|
this.filtersDiv = this.algoliaEle.querySelector('#main-search-filters');
|
15334
|
+
let oldResults = this.algoliaEle.querySelector('.old-posts');
|
15335
|
+
if (oldResults) {
|
15336
|
+
oldResults.addEventListener('change', (e) => {
|
15337
|
+
this.toggleOldResults(e.target.checked);
|
15338
|
+
});
|
15339
|
+
}
|
16050
15340
|
}
|
16051
15341
|
attachResultListeners(e) {
|
16052
15342
|
if (e && e.composedPath().find((el) => el === this.algoliaEle)) {
|
@@ -16105,8 +15395,15 @@ let GlobalSearchResults = class extends H {
|
|
16105
15395
|
document.body.style.overflow = '';
|
16106
15396
|
setTimeout(() => this.openFilterBtn.focus(), 20);
|
16107
15397
|
}
|
15398
|
+
toggleOldResults(show) {
|
15399
|
+
if (show)
|
15400
|
+
this.algoliaEle.filters = this.algoliaEle.filters.filter((f) => !f.startsWith('created > '));
|
15401
|
+
else
|
15402
|
+
this.algoliaEle.filters = [...this.algoliaEle.filters, filterOldPosts];
|
15403
|
+
console.log(this.algoliaEle.filters);
|
15404
|
+
}
|
16108
15405
|
componentDidLoad() {
|
16109
|
-
this.ro = new
|
15406
|
+
this.ro = new ResizeObserver((entries) => {
|
16110
15407
|
for (const entry of entries) {
|
16111
15408
|
if (!entry.contentRect.width)
|
16112
15409
|
return;
|
@@ -16114,9 +15411,7 @@ let GlobalSearchResults = class extends H {
|
|
16114
15411
|
}
|
16115
15412
|
});
|
16116
15413
|
this.ro.observe(this.el);
|
16117
|
-
this.algoliaEle.filters = [
|
16118
|
-
'created > ' + Math.floor((Date.now() - 63115200000) / 1000),
|
16119
|
-
]; // only get last 2 years
|
15414
|
+
this.algoliaEle.filters = [filterOldPosts]; // only get last 2 years
|
16120
15415
|
}
|
16121
15416
|
render() {
|
16122
15417
|
return (h$1(Host$1, { class: { small: this.currentWidth < 677 }, dir: this.el.ownerDocument.dir === 'rtl' ? 'rtl' : false }, h$1("nano-algolia", { "store-id": "searchq", "store-method": "url-hash-push", class: "main-search__wrap sc-nano-global-search-results", ref: (ele) => raf(() => (this.algoliaEle = ele)), id: "main-search" }, h$1("script", { type: "text/template", slot: "template" }, `<div class="main-search sc-nano-global-search-results">
|
@@ -16415,6 +15710,10 @@ let GlobalSearchResults = class extends H {
|
|
16415
15710
|
{{ /if }}
|
16416
15711
|
|
16417
15712
|
<div>
|
15713
|
+
<input class="sc-nano-global-search-results filter-cb old-posts filters__old-posts" type="checkbox" name="old-posts" id="old-posts" value="nice" />
|
15714
|
+
<label class="sc-nano-global-search-results filter-label" for="old-posts">
|
15715
|
+
<span>Include posts older than 2 years</span>
|
15716
|
+
</label>
|
16418
15717
|
{{ @if(it.origFilters['type']) }}
|
16419
15718
|
<nano-details class="sc-nano-global-search-results" open={true} icon-rotation="180">
|
16420
15719
|
<strong slot="label">Type</strong>
|
@@ -16726,7 +16025,7 @@ let Grid = class extends H {
|
|
16726
16025
|
});
|
16727
16026
|
}
|
16728
16027
|
componentDidLoad() {
|
16729
|
-
this.ro = new
|
16028
|
+
this.ro = new ResizeObserver((entries) => {
|
16730
16029
|
for (const entry of entries) {
|
16731
16030
|
if (!entry.contentRect.width)
|
16732
16031
|
return;
|
@@ -17216,6 +16515,10 @@ let IconButton = class extends H {
|
|
17216
16515
|
/** Set to true to disable the button. */
|
17217
16516
|
this.disabled = false;
|
17218
16517
|
}
|
16518
|
+
/** Sets focus on the internal button */
|
16519
|
+
async setFocus() {
|
16520
|
+
this.button.focus();
|
16521
|
+
}
|
17219
16522
|
componentDidLoad() {
|
17220
16523
|
focusVisible.observe(this.button);
|
17221
16524
|
}
|
@@ -17612,6 +16915,7 @@ let Input = class extends H {
|
|
17612
16915
|
this.nativeInput.dispatchEvent(event);
|
17613
16916
|
};
|
17614
16917
|
this.validate = debounce$2(this.validate, 50);
|
16918
|
+
this.handleBlur = this.handleBlur.bind(this);
|
17615
16919
|
}
|
17616
16920
|
get nativeInputWrap() {
|
17617
16921
|
return this._nativeInputWrap;
|
@@ -17697,6 +17001,15 @@ let Input = class extends H {
|
|
17697
17001
|
this.nativeInput.click();
|
17698
17002
|
}
|
17699
17003
|
}
|
17004
|
+
/**
|
17005
|
+
* Sets focus and select the text on the specified `nano-input`. Use this method instead of the global
|
17006
|
+
* `input.select()`.
|
17007
|
+
*/
|
17008
|
+
async select() {
|
17009
|
+
if (this.nativeInput) {
|
17010
|
+
this.nativeInput.select();
|
17011
|
+
}
|
17012
|
+
}
|
17700
17013
|
/**
|
17701
17014
|
* Returns the native `<input>` element used under the hood.
|
17702
17015
|
*/
|
@@ -17726,11 +17039,14 @@ let Input = class extends H {
|
|
17726
17039
|
const kev = e;
|
17727
17040
|
let target;
|
17728
17041
|
raf(() => {
|
17729
|
-
if (kev.key) {
|
17042
|
+
if (e instanceof KeyboardEvent && kev.key) {
|
17730
17043
|
if (kev.key !== 'Tab')
|
17731
17044
|
return;
|
17732
17045
|
target = document.activeElement;
|
17733
17046
|
}
|
17047
|
+
else if (e instanceof FocusEvent) {
|
17048
|
+
target = document.activeElement;
|
17049
|
+
}
|
17734
17050
|
else
|
17735
17051
|
target = e.target;
|
17736
17052
|
if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {
|
@@ -17833,10 +17149,10 @@ let Input = class extends H {
|
|
17833
17149
|
disabled,
|
17834
17150
|
clearControl: this.clearInput,
|
17835
17151
|
}))(this);
|
17836
|
-
return (h$1(Host$1, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, h$1(FormControlWrap, Object.assign({}, wrapOptions), h$1(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }), this.type !== 'textarea' && (h$1("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (h$1("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
|
17152
|
+
return (h$1(Host$1, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, h$1(FormControlWrap, Object.assign({}, wrapOptions), h$1(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }), this.type !== 'textarea' && (h$1("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onBlur: this.handleBlur, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (h$1("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
|
17837
17153
|
'input__native-ctrl': true,
|
17838
17154
|
input__resizable: this.resize === 'true',
|
17839
|
-
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate }))), h$1("slot", null))));
|
17155
|
+
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate, onBlur: this.handleBlur }))), h$1("slot", null))));
|
17840
17156
|
}
|
17841
17157
|
get el() { return this; }
|
17842
17158
|
static get watchers() { return {
|
@@ -19294,7 +18610,7 @@ let ResizeObserve = class extends H {
|
|
19294
18610
|
return retObj;
|
19295
18611
|
}
|
19296
18612
|
attachRO() {
|
19297
|
-
this.ro = new
|
18613
|
+
this.ro = new ResizeObserver((entries) => {
|
19298
18614
|
for (const entry of entries) {
|
19299
18615
|
this.currentWidth = entry.contentRect.width;
|
19300
18616
|
this.currentHeight = entry.contentRect.height;
|
@@ -19512,6 +18828,7 @@ let Select = class extends H {
|
|
19512
18828
|
const { value, selected, label, filterMeta } = ao;
|
19513
18829
|
return { value, selected, label, filterMeta };
|
19514
18830
|
});
|
18831
|
+
this.customValidate();
|
19515
18832
|
};
|
19516
18833
|
this.handleDocumentKeyDown = (ev) => {
|
19517
18834
|
if (!this.multiple || !this.hasFocus)
|
@@ -19720,6 +19037,7 @@ let Select = class extends H {
|
|
19720
19037
|
*/
|
19721
19038
|
// eslint-disable-next-line @stencil/no-unused-watch
|
19722
19039
|
valueChanged() {
|
19040
|
+
this.customValidate();
|
19723
19041
|
if (this.onInit) {
|
19724
19042
|
if (this.multiple)
|
19725
19043
|
this.currInsertIndex = this.value.length - 1;
|
@@ -24154,7 +23472,7 @@ let Slides = class extends H {
|
|
24154
23472
|
// the slideshow has been initialised without any dimensions - let's add a one show
|
24155
23473
|
// resize observer to kick it off when it gets some dimensions
|
24156
23474
|
if (!this.host.getBoundingClientRect().height) {
|
24157
|
-
const ro = (this.resizeO = new
|
23475
|
+
const ro = (this.resizeO = new ResizeObserver(() => {
|
24158
23476
|
flick.resize();
|
24159
23477
|
this.resizeO.disconnect();
|
24160
23478
|
}));
|
@@ -24647,7 +23965,7 @@ let Sticker = class extends H {
|
|
24647
23965
|
this.parentSizeObserver.disconnect();
|
24648
23966
|
this.parentSizeObserver = undefined;
|
24649
23967
|
}
|
24650
|
-
this.parentSizeObserver = new
|
23968
|
+
this.parentSizeObserver = new ResizeObserver((entries) => {
|
24651
23969
|
for (const entry of entries) {
|
24652
23970
|
let height, width;
|
24653
23971
|
if (entry.contentRect.height)
|
@@ -24827,7 +24145,7 @@ let Sticker = class extends H {
|
|
24827
24145
|
this.contentSizeObserver.disconnect();
|
24828
24146
|
this.contentSizeObserver = undefined;
|
24829
24147
|
}
|
24830
|
-
this.contentSizeObserver = new
|
24148
|
+
this.contentSizeObserver = new ResizeObserver((entries) => {
|
24831
24149
|
for (const entry of entries) {
|
24832
24150
|
if (this.pauseResizeWatcher)
|
24833
24151
|
return;
|
@@ -25209,6 +24527,10 @@ let Tab = class extends H {
|
|
25209
24527
|
this.handleCloseClick = () => {
|
25210
24528
|
this.nanoTabClose.emit();
|
25211
24529
|
};
|
24530
|
+
this.handleCloseKeydown = (e) => {
|
24531
|
+
if (e.key === ' ')
|
24532
|
+
this.handleCloseClick();
|
24533
|
+
};
|
25212
24534
|
}
|
25213
24535
|
/** Sets focus to the tab. */
|
25214
24536
|
async setFocus() {
|
@@ -25224,7 +24546,7 @@ let Tab = class extends H {
|
|
25224
24546
|
'nanotab--active': this.active,
|
25225
24547
|
'nanotab--disabled': this.disabled,
|
25226
24548
|
'nanotab--closable': this.closable,
|
25227
|
-
}, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, tabIndex: -1 })))));
|
24549
|
+
}, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, onKeyDown: this.handleCloseKeydown, tabIndex: -1 })))));
|
25228
24550
|
}
|
25229
24551
|
get host() { return this; }
|
25230
24552
|
static get style() { return tabCss; }
|
@@ -25340,6 +24662,9 @@ let TabGroup = class extends H {
|
|
25340
24662
|
if (['top'].includes(this.placement)) {
|
25341
24663
|
scrollIntoView(tabs[index], this.nav, 'horizontal', 'center');
|
25342
24664
|
}
|
24665
|
+
// need to stop bubbling otherwise it will focus on parent tabs if nested
|
24666
|
+
event.stopPropagation();
|
24667
|
+
// stop the browser moving about
|
25343
24668
|
event.preventDefault();
|
25344
24669
|
}
|
25345
24670
|
}
|
@@ -25626,7 +24951,7 @@ let TabGroup = class extends H {
|
|
25626
24951
|
focusVisible.observe(this.leftBtn);
|
25627
24952
|
focusVisible.observe(this.rightBtn);
|
25628
24953
|
}
|
25629
|
-
this.resizeObserver = new
|
24954
|
+
this.resizeObserver = new ResizeObserver(() => {
|
25630
24955
|
setTimeout(() => {
|
25631
24956
|
this.updateScrollControls();
|
25632
24957
|
this.syncActiveTabIndicator();
|
@@ -25679,7 +25004,7 @@ let TabGroup = class extends H {
|
|
25679
25004
|
static get style() { return tabGroupCss; }
|
25680
25005
|
};
|
25681
25006
|
|
25682
|
-
const tooltipCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-width:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));-webkit-transform:translateY(10px) translateZ(0);transform:translateY(10px) translateZ(0);-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;-webkit-transition-delay:var(--hide-delay);transition-delay:var(--hide-delay);-webkit-transition-duration:var(--hide-duration);transition-duration:var(--hide-duration);-webkit-transition-timing-function:var(--hide-timing-function);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;width:0;height:0;color:black;-webkit-transition:0.2s ease transform;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000)
|
25007
|
+
const tooltipCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-width:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));-webkit-transform:translateY(10px) translateZ(0);transform:translateY(10px) translateZ(0);-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;-webkit-transition-delay:var(--hide-delay);transition-delay:var(--hide-delay);-webkit-transition-duration:var(--hide-duration);transition-duration:var(--hide-duration);-webkit-transition-timing-function:var(--hide-timing-function);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;width:0;height:0;color:black;-webkit-transition:0.2s ease transform;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000)}.tooltip-positioner[data-popper-placement^=top] .tooltip{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:translateY(-10px) translateZ(0);transform:translateY(-10px) translateZ(0)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip{-webkit-transform-origin:top;transform-origin:top}.tooltip-positioner[data-popper-placement^=left] .tooltip{-webkit-transform-origin:right;transform-origin:right}.tooltip-positioner[data-popper-placement^=right] .tooltip{-webkit-transform-origin:left;transform-origin:left}.tooltip-positioner.popover-visible .tooltip{opacity:1;-webkit-transform:none;transform:none;-webkit-transition-delay:var(--show-delay);transition-delay:var(--show-delay);-webkit-transition-duration:var(--show-duration);transition-duration:var(--show-duration);-webkit-transition-timing-function:var(--show-timing-function);transition-timing-function:var(--show-timing-function)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip-arrow{bottom:100%;left:calc(50% - 5px);border-bottom:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=bottom-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=bottom-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=top] .tooltip-arrow{top:100%;left:calc(50% - 5px);border-top:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=top-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=top-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=left] .tooltip-arrow{top:calc(50% - 5px);left:100%;border-left:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=left-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=left-end] .tooltip-arrow{top:auto;bottom:5px}.tooltip-positioner[data-popper-placement^=right] .tooltip-arrow{top:calc(50% - 5px);right:100%;border-right:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=right-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=right-end] .tooltip-arrow{top:auto;bottom:5px}";
|
25683
25008
|
|
25684
25009
|
let id = 0;
|
25685
25010
|
let Tooltip = class extends H {
|
@@ -25873,14 +25198,14 @@ const NanoAspectRatio = /*@__PURE__*/proxyCustomElement(AspectRatio, [1,"nano-as
|
|
25873
25198
|
const NanoCheckbox = /*@__PURE__*/proxyCustomElement(Checkbox, [6,"nano-checkbox",{"hasFocus":[1540,"has-focus"],"checked":[1540],"disabled":[516],"value":[513],"name":[513],"required":[516],"type":[513],"label":[1],"indeterminate":[1540],"invalid":[2564],"validityMessage":[2049,"validity-message"],"color":[1],"form":[1],"inputType":[32],"_invalid":[32]},[[16,"reset","onReset"]]]);
|
25874
25199
|
const NanoCheckboxGroup = /*@__PURE__*/proxyCustomElement(CheckboxGroup, [6,"nano-checkbox-group",{"validateOn":[1025,"validate-on"],"showInlineError":[4,"show-inline-error"],"min":[2],"max":[2],"disabled":[516],"legend":[1],"invalid":[2564],"validityMessage":[2049,"validity-message"],"checkboxes":[32],"nativeCbs":[32],"errorMessage":[32],"showErrorMsg":[32],"hasHelperSlot":[32],"_invalid":[32]},[[0,"nanoChange","handleCbChange"]]]);
|
25875
25200
|
const NanoDatalist = /*@__PURE__*/proxyCustomElement(DataList, [1,"nano-datalist",{"selected":[1040],"dropDownConfig":[6160],"options":[16],"input":[1],"type":[1],"activeOptions":[2064],"open":[1028],"disableFilter":[4,"disable-filter"],"disabled":[4],"actvOptEles":[32],"connectedInput":[32],"inputLabel":[32],"hasNoResult":[32],"shouldOpen":[32],"canOpen":[32],"optionIds":[32]}]);
|
25876
|
-
const NanoDateInput = /*@__PURE__*/proxyCustomElement(DateInput, [6,"nano-date-input",{"invalid":[2564],"validityMessage":[2049,"validity-message"],"helperText":[4,"helper-text"],"helperTextFormat":[16],"floatLabel":[4,"float-label"],"name":[1],"readonly":[4],"size":[2],"form":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"disabled":[4],"color":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"label":[1],"placeholder":[1025],"value":[1537],"validateOn":[1,"validate-on"],"showInlineError":[516,"show-inline-error"],"dateOrder":[1,"date-order"],"required":[4],"min":[1],"max":[1],"hideLabel":[4,"hide-label"],"picker":[4],"initialPickerDate":[1,"initial-picker-date"],"pickerOpen":[1540,"picker-open"],"closeAfterPicked":[4,"close-after-picked"],"dropDownConfig":[6160],"pattern":[32],"inputValue":[32],"_invalid":[32]}]);
|
25201
|
+
const NanoDateInput = /*@__PURE__*/proxyCustomElement(DateInput, [6,"nano-date-input",{"invalid":[2564],"validityMessage":[2049,"validity-message"],"helperText":[4,"helper-text"],"helperTextFormat":[16],"floatLabel":[4,"float-label"],"name":[1],"readonly":[4],"size":[2],"form":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"disabled":[4],"color":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"label":[1],"placeholder":[1025],"value":[1537],"validateOn":[1,"validate-on"],"showInlineError":[516,"show-inline-error"],"dateOrder":[1,"date-order"],"required":[4],"min":[1],"max":[1],"hideLabel":[4,"hide-label"],"picker":[4],"initialPickerDate":[1,"initial-picker-date"],"pickerOpen":[1540,"picker-open"],"closeAfterPicked":[4,"close-after-picked"],"dropDownConfig":[6160],"dateValue":[2064],"isDateDisabled":[16],"pattern":[32],"inputValue":[32],"_invalid":[32]}]);
|
25877
25202
|
const NanoDatePicker = /*@__PURE__*/proxyCustomElement(DatePicker, [1,"nano-date-picker",{"selectedDate":[1025,"selected-date"],"min":[1],"max":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"color":[1],"isDateDisabled":[16],"isModal":[4,"is-modal"],"firstFocusEle":[16],"activeFocus":[32],"focusedDay":[32]}]);
|
25878
25203
|
const NanoDetails = /*@__PURE__*/proxyCustomElement(Details, [1,"nano-details",{"label":[1],"open":[1540],"noHandle":[4,"no-handle"],"iconRotation":[2,"icon-rotation"],"color":[1],"isLoading":[32]}]);
|
25879
25204
|
const NanoDialog = /*@__PURE__*/proxyCustomElement(Dialog, [1,"nano-dialog",{"showRibbon":[4,"show-ribbon"],"open":[1540],"label":[1],"noHeader":[4,"no-header"],"noFooter":[4,"no-footer"],"noUserDismiss":[4,"no-user-dismiss"],"storeId":[1,"store-id"],"storeMethod":[1,"store-method"],"hoist":[4],"isVisible":[32],"noDismiss":[32],"hasFooter":[32]}]);
|
25880
25205
|
const NanoDrawer = /*@__PURE__*/proxyCustomElement(Drawer, [1,"nano-drawer",{"open":[1540],"label":[1],"placement":[1],"contained":[4],"noHeader":[4,"no-header"],"type":[1],"contentSelector":[1,"content-selector"],"hasFooter":[32],"isVisible":[32]}]);
|
25881
25206
|
const NanoDropdown = /*@__PURE__*/proxyCustomElement(Dropdown, [1,"nano-dropdown",{"autoOpen":[4,"auto-open"],"open":[1540],"closeOnSelect":[4,"close-on-select"],"containingElement":[1040],"tetherTo":[16],"placement":[1],"distance":[2],"skidding":[2],"hoist":[4],"dialogTitle":[1,"dialog-title"]},[[0,"nanoOpen","secondaryOpen"],[0,"nanoClose","secondaryClose"],[0,"nanoSelect","handlePanelSelect"]]]);
|
25882
|
-
const NanoFieldValidator = /*@__PURE__*/proxyCustomElement(FieldValidator, [4,"nano-field-validator",{"validateOn":[1025,"validate-on"],"scrollToInvalid":[4,"scroll-to-invalid"],"dirty":[2564],"valid":[2564],"payload":[2064],"showValidation":[2052,"show-validation"],"validationState":[2064],"validation":[16],"
|
25883
|
-
const NanoFileUpload = /*@__PURE__*/proxyCustomElement(FileUpload, [6,"nano-file-upload",{"name":[1],"accept":[1],"capture":[1],"maxFileSize":[2,"max-file-size"],"maxFiles":[2,"max-files"],"label":[1],"placeholder":[1],"hideLabel":[4,"hide-label"],"required":[4],"disabled":[516],"clearInput":[4,"clear-input"],"showInlineError":[516,"show-inline-error"],"validateOn":[1025,"validate-on"],"form":[1],"invalid":[2564],"validityMessage":[2049,"validity-message"],"files":[
|
25207
|
+
const NanoFieldValidator = /*@__PURE__*/proxyCustomElement(FieldValidator, [4,"nano-field-validator",{"validateOn":[1025,"validate-on"],"scrollToInvalid":[4,"scroll-to-invalid"],"dirty":[2564],"valid":[2564],"store":[2064],"payload":[2064],"showValidation":[2052,"show-validation"],"validationState":[2064],"extraFieldSelector":[1,"extra-field-selector"],"validation":[16],"submitted":[32],"userForm":[32],"_dirty":[32],"_valid":[32],"_store":[32]}]);
|
25208
|
+
const NanoFileUpload = /*@__PURE__*/proxyCustomElement(FileUpload, [6,"nano-file-upload",{"name":[1],"accept":[1],"capture":[1],"maxFileSize":[2,"max-file-size"],"maxFiles":[2,"max-files"],"label":[1],"placeholder":[1],"hideLabel":[4,"hide-label"],"required":[4],"disabled":[516],"clearInput":[4,"clear-input"],"showInlineError":[516,"show-inline-error"],"validateOn":[1025,"validate-on"],"form":[1],"invalid":[2564],"validityMessage":[2049,"validity-message"],"files":[6160],"value":[6145],"hasHelperSlot":[32],"hasLabelSlot":[32],"errorMessage":[32],"isDragging":[32],"fileList":[32],"hasFocus":[32],"_invalid":[32]},[[8,"click","globalClickHandler"],[8,"keydown","globalKeydownHandler"],[16,"reset","onReset"]]]);
|
25884
25209
|
const NanoGlobalNav = /*@__PURE__*/proxyCustomElement(GlobalNav, [1,"nano-global-nav",{"env":[1],"ssoDataUrl":[1,"sso-data-url"],"ssoRedirect":[1,"sso-redirect"],"getMyAccountData":[4,"get-my-account-data"],"activeMyAccountSections":[16],"showSearch":[4,"show-search"],"showLogo":[4,"show-logo"],"logoUrl":[1,"logo-url"],"searchIndeces":[16],"myAccountUser":[1040],"searchAppId":[1025,"search-app-id"],"searchApiKey":[1025,"search-api-key"],"searchValue":[1025,"search-value"],"searchIndex":[1025,"search-index"],"cartCount":[1026,"cart-count"],"msgCount":[1026,"msg-count"],"cartUrl":[1025,"cart-url"],"msgUrl":[1025,"msg-url"],"hasLoggedinSlot":[32],"hasSiteSlot":[32],"hasPromotionSlot":[32],"aboutSlotLen":[32],"iconSlotLen":[32],"mainSlotLen":[32],"overflowSlotLen":[32],"searchSlotLen":[32],"internalSearchIndeces":[32],"thresholdReady":[32],"remoteDataReady":[32],"ready":[32],"isResizing":[32],"intersectRatio":[32],"threshold":[32],"modalOpen":[32],"modalIsOpen":[32],"searchBarShown":[32],"scrollingUp":[32],"searchLoading":[32],"showAutocomplete":[32],"secondaryMenuOpen":[32],"userMenuOpen":[32],"menuFullScreen":[32],"searchValInternal":[32]},[[0,"nanoOpen","secondaryOpen"],[0,"nanoClose","secondaryClose"]]]);
|
25885
25210
|
const NanoGlobalSearchResults = /*@__PURE__*/proxyCustomElement(GlobalSearchResults, [1,"nano-global-search-results",{"algoliaEle":[32],"currentWidth":[32],"apiKey":[32],"appId":[32],"index":[32]},[[16,"nanoSearchReset","handleGlobalNavReset"],[16,"nanoSearchResult","handleGlobalNavSearch"],[0,"nanoChange","handleReorder"],[0,"nanoResultsShown","attachListeners"],[16,"nanoNewResults","attachResultListeners"]]]);
|
25886
25211
|
const NanoGrid = /*@__PURE__*/proxyCustomElement(Grid, [1,"nano-grid",{"sSize":[2,"s-size"],"mSize":[2,"m-size"],"lSize":[2,"l-size"],"xlSize":[2,"xl-size"],"sCols":[2,"s-cols"],"mCols":[2,"m-cols"],"lCols":[2,"l-cols"],"xlCols":[2,"xl-cols"],"xxlCols":[2,"xxl-cols"],"showHelper":[516,"show-helper"],"contentPanel":[516,"content-panel"],"fullHeight":[516,"full-height"],"ready":[32],"isSmall":[32],"isMedium":[32],"isLarge":[32],"isXL":[32],"isXXL":[32]}]);
|
@@ -26357,991 +25682,6 @@ const shadowCss = /*#__PURE__*/Object.freeze({
|
|
26357
25682
|
scopeCss: scopeCss
|
26358
25683
|
});
|
26359
25684
|
|
26360
|
-
/**
|
26361
|
-
* Copyright 2016 Google Inc. All Rights Reserved.
|
26362
|
-
*
|
26363
|
-
* Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.
|
26364
|
-
*
|
26365
|
-
* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
|
26366
|
-
*
|
26367
|
-
*/
|
26368
|
-
(function() {
|
26369
|
-
|
26370
|
-
// Exit early if we're not running in a browser.
|
26371
|
-
if (typeof window !== 'object') {
|
26372
|
-
return;
|
26373
|
-
}
|
26374
|
-
|
26375
|
-
// Exit early if all IntersectionObserver and IntersectionObserverEntry
|
26376
|
-
// features are natively supported.
|
26377
|
-
if ('IntersectionObserver' in window &&
|
26378
|
-
'IntersectionObserverEntry' in window &&
|
26379
|
-
'intersectionRatio' in window.IntersectionObserverEntry.prototype) {
|
26380
|
-
|
26381
|
-
// Minimal polyfill for Edge 15's lack of `isIntersecting`
|
26382
|
-
// See: https://github.com/w3c/IntersectionObserver/issues/211
|
26383
|
-
if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {
|
26384
|
-
Object.defineProperty(window.IntersectionObserverEntry.prototype,
|
26385
|
-
'isIntersecting', {
|
26386
|
-
get: function () {
|
26387
|
-
return this.intersectionRatio > 0;
|
26388
|
-
}
|
26389
|
-
});
|
26390
|
-
}
|
26391
|
-
return;
|
26392
|
-
}
|
26393
|
-
|
26394
|
-
|
26395
|
-
/**
|
26396
|
-
* A local reference to the document.
|
26397
|
-
*/
|
26398
|
-
var document = window.document;
|
26399
|
-
|
26400
|
-
|
26401
|
-
/**
|
26402
|
-
* An IntersectionObserver registry. This registry exists to hold a strong
|
26403
|
-
* reference to IntersectionObserver instances currently observing a target
|
26404
|
-
* element. Without this registry, instances without another reference may be
|
26405
|
-
* garbage collected.
|
26406
|
-
*/
|
26407
|
-
var registry = [];
|
26408
|
-
|
26409
|
-
/**
|
26410
|
-
* The signal updater for cross-origin intersection. When not null, it means
|
26411
|
-
* that the polyfill is configured to work in a cross-origin mode.
|
26412
|
-
* @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}
|
26413
|
-
*/
|
26414
|
-
var crossOriginUpdater = null;
|
26415
|
-
|
26416
|
-
/**
|
26417
|
-
* The current cross-origin intersection. Only used in the cross-origin mode.
|
26418
|
-
* @type {DOMRect|ClientRect}
|
26419
|
-
*/
|
26420
|
-
var crossOriginRect = null;
|
26421
|
-
|
26422
|
-
|
26423
|
-
/**
|
26424
|
-
* Creates the global IntersectionObserverEntry constructor.
|
26425
|
-
* https://w3c.github.io/IntersectionObserver/#intersection-observer-entry
|
26426
|
-
* @param {Object} entry A dictionary of instance properties.
|
26427
|
-
* @constructor
|
26428
|
-
*/
|
26429
|
-
function IntersectionObserverEntry(entry) {
|
26430
|
-
this.time = entry.time;
|
26431
|
-
this.target = entry.target;
|
26432
|
-
this.rootBounds = ensureDOMRect(entry.rootBounds);
|
26433
|
-
this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);
|
26434
|
-
this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());
|
26435
|
-
this.isIntersecting = !!entry.intersectionRect;
|
26436
|
-
|
26437
|
-
// Calculates the intersection ratio.
|
26438
|
-
var targetRect = this.boundingClientRect;
|
26439
|
-
var targetArea = targetRect.width * targetRect.height;
|
26440
|
-
var intersectionRect = this.intersectionRect;
|
26441
|
-
var intersectionArea = intersectionRect.width * intersectionRect.height;
|
26442
|
-
|
26443
|
-
// Sets intersection ratio.
|
26444
|
-
if (targetArea) {
|
26445
|
-
// Round the intersection ratio to avoid floating point math issues:
|
26446
|
-
// https://github.com/w3c/IntersectionObserver/issues/324
|
26447
|
-
this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));
|
26448
|
-
} else {
|
26449
|
-
// If area is zero and is intersecting, sets to 1, otherwise to 0
|
26450
|
-
this.intersectionRatio = this.isIntersecting ? 1 : 0;
|
26451
|
-
}
|
26452
|
-
}
|
26453
|
-
|
26454
|
-
|
26455
|
-
/**
|
26456
|
-
* Creates the global IntersectionObserver constructor.
|
26457
|
-
* https://w3c.github.io/IntersectionObserver/#intersection-observer-interface
|
26458
|
-
* @param {Function} callback The function to be invoked after intersection
|
26459
|
-
* changes have queued. The function is not invoked if the queue has
|
26460
|
-
* been emptied by calling the `takeRecords` method.
|
26461
|
-
* @param {Object=} opt_options Optional configuration options.
|
26462
|
-
* @constructor
|
26463
|
-
*/
|
26464
|
-
function IntersectionObserver(callback, opt_options) {
|
26465
|
-
|
26466
|
-
var options = opt_options || {};
|
26467
|
-
|
26468
|
-
if (typeof callback != 'function') {
|
26469
|
-
throw new Error('callback must be a function');
|
26470
|
-
}
|
26471
|
-
|
26472
|
-
if (options.root && options.root.nodeType != 1) {
|
26473
|
-
throw new Error('root must be an Element');
|
26474
|
-
}
|
26475
|
-
|
26476
|
-
// Binds and throttles `this._checkForIntersections`.
|
26477
|
-
this._checkForIntersections = throttle(
|
26478
|
-
this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);
|
26479
|
-
|
26480
|
-
// Private properties.
|
26481
|
-
this._callback = callback;
|
26482
|
-
this._observationTargets = [];
|
26483
|
-
this._queuedEntries = [];
|
26484
|
-
this._rootMarginValues = this._parseRootMargin(options.rootMargin);
|
26485
|
-
|
26486
|
-
// Public properties.
|
26487
|
-
this.thresholds = this._initThresholds(options.threshold);
|
26488
|
-
this.root = options.root || null;
|
26489
|
-
this.rootMargin = this._rootMarginValues.map(function(margin) {
|
26490
|
-
return margin.value + margin.unit;
|
26491
|
-
}).join(' ');
|
26492
|
-
|
26493
|
-
/** @private @const {!Array<!Document>} */
|
26494
|
-
this._monitoringDocuments = [];
|
26495
|
-
/** @private @const {!Array<function()>} */
|
26496
|
-
this._monitoringUnsubscribes = [];
|
26497
|
-
}
|
26498
|
-
|
26499
|
-
|
26500
|
-
/**
|
26501
|
-
* The minimum interval within which the document will be checked for
|
26502
|
-
* intersection changes.
|
26503
|
-
*/
|
26504
|
-
IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;
|
26505
|
-
|
26506
|
-
|
26507
|
-
/**
|
26508
|
-
* The frequency in which the polyfill polls for intersection changes.
|
26509
|
-
* this can be updated on a per instance basis and must be set prior to
|
26510
|
-
* calling `observe` on the first target.
|
26511
|
-
*/
|
26512
|
-
IntersectionObserver.prototype.POLL_INTERVAL = null;
|
26513
|
-
|
26514
|
-
/**
|
26515
|
-
* Use a mutation observer on the root element
|
26516
|
-
* to detect intersection changes.
|
26517
|
-
*/
|
26518
|
-
IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;
|
26519
|
-
|
26520
|
-
|
26521
|
-
/**
|
26522
|
-
* Sets up the polyfill in the cross-origin mode. The result is the
|
26523
|
-
* updater function that accepts two arguments: `boundingClientRect` and
|
26524
|
-
* `intersectionRect` - just as these fields would be available to the
|
26525
|
-
* parent via `IntersectionObserverEntry`. This function should be called
|
26526
|
-
* each time the iframe receives intersection information from the parent
|
26527
|
-
* window, e.g. via messaging.
|
26528
|
-
* @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}
|
26529
|
-
*/
|
26530
|
-
IntersectionObserver._setupCrossOriginUpdater = function() {
|
26531
|
-
if (!crossOriginUpdater) {
|
26532
|
-
/**
|
26533
|
-
* @param {DOMRect|ClientRect} boundingClientRect
|
26534
|
-
* @param {DOMRect|ClientRect} intersectionRect
|
26535
|
-
*/
|
26536
|
-
crossOriginUpdater = function(boundingClientRect, intersectionRect) {
|
26537
|
-
if (!boundingClientRect || !intersectionRect) {
|
26538
|
-
crossOriginRect = getEmptyRect();
|
26539
|
-
} else {
|
26540
|
-
crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);
|
26541
|
-
}
|
26542
|
-
registry.forEach(function(observer) {
|
26543
|
-
observer._checkForIntersections();
|
26544
|
-
});
|
26545
|
-
};
|
26546
|
-
}
|
26547
|
-
return crossOriginUpdater;
|
26548
|
-
};
|
26549
|
-
|
26550
|
-
|
26551
|
-
/**
|
26552
|
-
* Resets the cross-origin mode.
|
26553
|
-
*/
|
26554
|
-
IntersectionObserver._resetCrossOriginUpdater = function() {
|
26555
|
-
crossOriginUpdater = null;
|
26556
|
-
crossOriginRect = null;
|
26557
|
-
};
|
26558
|
-
|
26559
|
-
|
26560
|
-
/**
|
26561
|
-
* Starts observing a target element for intersection changes based on
|
26562
|
-
* the thresholds values.
|
26563
|
-
* @param {Element} target The DOM element to observe.
|
26564
|
-
*/
|
26565
|
-
IntersectionObserver.prototype.observe = function(target) {
|
26566
|
-
var isTargetAlreadyObserved = this._observationTargets.some(function(item) {
|
26567
|
-
return item.element == target;
|
26568
|
-
});
|
26569
|
-
|
26570
|
-
if (isTargetAlreadyObserved) {
|
26571
|
-
return;
|
26572
|
-
}
|
26573
|
-
|
26574
|
-
if (!(target && target.nodeType == 1)) {
|
26575
|
-
throw new Error('target must be an Element');
|
26576
|
-
}
|
26577
|
-
|
26578
|
-
this._registerInstance();
|
26579
|
-
this._observationTargets.push({element: target, entry: null});
|
26580
|
-
this._monitorIntersections(target.ownerDocument);
|
26581
|
-
this._checkForIntersections();
|
26582
|
-
};
|
26583
|
-
|
26584
|
-
|
26585
|
-
/**
|
26586
|
-
* Stops observing a target element for intersection changes.
|
26587
|
-
* @param {Element} target The DOM element to observe.
|
26588
|
-
*/
|
26589
|
-
IntersectionObserver.prototype.unobserve = function(target) {
|
26590
|
-
this._observationTargets =
|
26591
|
-
this._observationTargets.filter(function(item) {
|
26592
|
-
return item.element != target;
|
26593
|
-
});
|
26594
|
-
this._unmonitorIntersections(target.ownerDocument);
|
26595
|
-
if (this._observationTargets.length == 0) {
|
26596
|
-
this._unregisterInstance();
|
26597
|
-
}
|
26598
|
-
};
|
26599
|
-
|
26600
|
-
|
26601
|
-
/**
|
26602
|
-
* Stops observing all target elements for intersection changes.
|
26603
|
-
*/
|
26604
|
-
IntersectionObserver.prototype.disconnect = function() {
|
26605
|
-
this._observationTargets = [];
|
26606
|
-
this._unmonitorAllIntersections();
|
26607
|
-
this._unregisterInstance();
|
26608
|
-
};
|
26609
|
-
|
26610
|
-
|
26611
|
-
/**
|
26612
|
-
* Returns any queue entries that have not yet been reported to the
|
26613
|
-
* callback and clears the queue. This can be used in conjunction with the
|
26614
|
-
* callback to obtain the absolute most up-to-date intersection information.
|
26615
|
-
* @return {Array} The currently queued entries.
|
26616
|
-
*/
|
26617
|
-
IntersectionObserver.prototype.takeRecords = function() {
|
26618
|
-
var records = this._queuedEntries.slice();
|
26619
|
-
this._queuedEntries = [];
|
26620
|
-
return records;
|
26621
|
-
};
|
26622
|
-
|
26623
|
-
|
26624
|
-
/**
|
26625
|
-
* Accepts the threshold value from the user configuration object and
|
26626
|
-
* returns a sorted array of unique threshold values. If a value is not
|
26627
|
-
* between 0 and 1 and error is thrown.
|
26628
|
-
* @private
|
26629
|
-
* @param {Array|number=} opt_threshold An optional threshold value or
|
26630
|
-
* a list of threshold values, defaulting to [0].
|
26631
|
-
* @return {Array} A sorted list of unique and valid threshold values.
|
26632
|
-
*/
|
26633
|
-
IntersectionObserver.prototype._initThresholds = function(opt_threshold) {
|
26634
|
-
var threshold = opt_threshold || [0];
|
26635
|
-
if (!Array.isArray(threshold)) threshold = [threshold];
|
26636
|
-
|
26637
|
-
return threshold.sort().filter(function(t, i, a) {
|
26638
|
-
if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {
|
26639
|
-
throw new Error('threshold must be a number between 0 and 1 inclusively');
|
26640
|
-
}
|
26641
|
-
return t !== a[i - 1];
|
26642
|
-
});
|
26643
|
-
};
|
26644
|
-
|
26645
|
-
|
26646
|
-
/**
|
26647
|
-
* Accepts the rootMargin value from the user configuration object
|
26648
|
-
* and returns an array of the four margin values as an object containing
|
26649
|
-
* the value and unit properties. If any of the values are not properly
|
26650
|
-
* formatted or use a unit other than px or %, and error is thrown.
|
26651
|
-
* @private
|
26652
|
-
* @param {string=} opt_rootMargin An optional rootMargin value,
|
26653
|
-
* defaulting to '0px'.
|
26654
|
-
* @return {Array<Object>} An array of margin objects with the keys
|
26655
|
-
* value and unit.
|
26656
|
-
*/
|
26657
|
-
IntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {
|
26658
|
-
var marginString = opt_rootMargin || '0px';
|
26659
|
-
var margins = marginString.split(/\s+/).map(function(margin) {
|
26660
|
-
var parts = /^(-?\d*\.?\d+)(px|%)$/.exec(margin);
|
26661
|
-
if (!parts) {
|
26662
|
-
throw new Error('rootMargin must be specified in pixels or percent');
|
26663
|
-
}
|
26664
|
-
return {value: parseFloat(parts[1]), unit: parts[2]};
|
26665
|
-
});
|
26666
|
-
|
26667
|
-
// Handles shorthand.
|
26668
|
-
margins[1] = margins[1] || margins[0];
|
26669
|
-
margins[2] = margins[2] || margins[0];
|
26670
|
-
margins[3] = margins[3] || margins[1];
|
26671
|
-
|
26672
|
-
return margins;
|
26673
|
-
};
|
26674
|
-
|
26675
|
-
|
26676
|
-
/**
|
26677
|
-
* Starts polling for intersection changes if the polling is not already
|
26678
|
-
* happening, and if the page's visibility state is visible.
|
26679
|
-
* @param {!Document} doc
|
26680
|
-
* @private
|
26681
|
-
*/
|
26682
|
-
IntersectionObserver.prototype._monitorIntersections = function(doc) {
|
26683
|
-
var win = doc.defaultView;
|
26684
|
-
if (!win) {
|
26685
|
-
// Already destroyed.
|
26686
|
-
return;
|
26687
|
-
}
|
26688
|
-
if (this._monitoringDocuments.indexOf(doc) != -1) {
|
26689
|
-
// Already monitoring.
|
26690
|
-
return;
|
26691
|
-
}
|
26692
|
-
|
26693
|
-
// Private state for monitoring.
|
26694
|
-
var callback = this._checkForIntersections;
|
26695
|
-
var monitoringInterval = null;
|
26696
|
-
var domObserver = null;
|
26697
|
-
|
26698
|
-
// If a poll interval is set, use polling instead of listening to
|
26699
|
-
// resize and scroll events or DOM mutations.
|
26700
|
-
if (this.POLL_INTERVAL) {
|
26701
|
-
monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);
|
26702
|
-
} else {
|
26703
|
-
addEvent(win, 'resize', callback, true);
|
26704
|
-
addEvent(doc, 'scroll', callback, true);
|
26705
|
-
if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {
|
26706
|
-
domObserver = new win.MutationObserver(callback);
|
26707
|
-
domObserver.observe(doc, {
|
26708
|
-
attributes: true,
|
26709
|
-
childList: true,
|
26710
|
-
characterData: true,
|
26711
|
-
subtree: true
|
26712
|
-
});
|
26713
|
-
}
|
26714
|
-
}
|
26715
|
-
|
26716
|
-
this._monitoringDocuments.push(doc);
|
26717
|
-
this._monitoringUnsubscribes.push(function() {
|
26718
|
-
// Get the window object again. When a friendly iframe is destroyed, it
|
26719
|
-
// will be null.
|
26720
|
-
var win = doc.defaultView;
|
26721
|
-
|
26722
|
-
if (win) {
|
26723
|
-
if (monitoringInterval) {
|
26724
|
-
win.clearInterval(monitoringInterval);
|
26725
|
-
}
|
26726
|
-
removeEvent(win, 'resize', callback, true);
|
26727
|
-
}
|
26728
|
-
|
26729
|
-
removeEvent(doc, 'scroll', callback, true);
|
26730
|
-
if (domObserver) {
|
26731
|
-
domObserver.disconnect();
|
26732
|
-
}
|
26733
|
-
});
|
26734
|
-
|
26735
|
-
// Also monitor the parent.
|
26736
|
-
if (doc != (this.root && this.root.ownerDocument || document)) {
|
26737
|
-
var frame = getFrameElement(doc);
|
26738
|
-
if (frame) {
|
26739
|
-
this._monitorIntersections(frame.ownerDocument);
|
26740
|
-
}
|
26741
|
-
}
|
26742
|
-
};
|
26743
|
-
|
26744
|
-
|
26745
|
-
/**
|
26746
|
-
* Stops polling for intersection changes.
|
26747
|
-
* @param {!Document} doc
|
26748
|
-
* @private
|
26749
|
-
*/
|
26750
|
-
IntersectionObserver.prototype._unmonitorIntersections = function(doc) {
|
26751
|
-
var index = this._monitoringDocuments.indexOf(doc);
|
26752
|
-
if (index == -1) {
|
26753
|
-
return;
|
26754
|
-
}
|
26755
|
-
|
26756
|
-
var rootDoc = (this.root && this.root.ownerDocument || document);
|
26757
|
-
|
26758
|
-
// Check if any dependent targets are still remaining.
|
26759
|
-
var hasDependentTargets =
|
26760
|
-
this._observationTargets.some(function(item) {
|
26761
|
-
var itemDoc = item.element.ownerDocument;
|
26762
|
-
// Target is in this context.
|
26763
|
-
if (itemDoc == doc) {
|
26764
|
-
return true;
|
26765
|
-
}
|
26766
|
-
// Target is nested in this context.
|
26767
|
-
while (itemDoc && itemDoc != rootDoc) {
|
26768
|
-
var frame = getFrameElement(itemDoc);
|
26769
|
-
itemDoc = frame && frame.ownerDocument;
|
26770
|
-
if (itemDoc == doc) {
|
26771
|
-
return true;
|
26772
|
-
}
|
26773
|
-
}
|
26774
|
-
return false;
|
26775
|
-
});
|
26776
|
-
if (hasDependentTargets) {
|
26777
|
-
return;
|
26778
|
-
}
|
26779
|
-
|
26780
|
-
// Unsubscribe.
|
26781
|
-
var unsubscribe = this._monitoringUnsubscribes[index];
|
26782
|
-
this._monitoringDocuments.splice(index, 1);
|
26783
|
-
this._monitoringUnsubscribes.splice(index, 1);
|
26784
|
-
unsubscribe();
|
26785
|
-
|
26786
|
-
// Also unmonitor the parent.
|
26787
|
-
if (doc != rootDoc) {
|
26788
|
-
var frame = getFrameElement(doc);
|
26789
|
-
if (frame) {
|
26790
|
-
this._unmonitorIntersections(frame.ownerDocument);
|
26791
|
-
}
|
26792
|
-
}
|
26793
|
-
};
|
26794
|
-
|
26795
|
-
|
26796
|
-
/**
|
26797
|
-
* Stops polling for intersection changes.
|
26798
|
-
* @param {!Document} doc
|
26799
|
-
* @private
|
26800
|
-
*/
|
26801
|
-
IntersectionObserver.prototype._unmonitorAllIntersections = function() {
|
26802
|
-
var unsubscribes = this._monitoringUnsubscribes.slice(0);
|
26803
|
-
this._monitoringDocuments.length = 0;
|
26804
|
-
this._monitoringUnsubscribes.length = 0;
|
26805
|
-
for (var i = 0; i < unsubscribes.length; i++) {
|
26806
|
-
unsubscribes[i]();
|
26807
|
-
}
|
26808
|
-
};
|
26809
|
-
|
26810
|
-
|
26811
|
-
/**
|
26812
|
-
* Scans each observation target for intersection changes and adds them
|
26813
|
-
* to the internal entries queue. If new entries are found, it
|
26814
|
-
* schedules the callback to be invoked.
|
26815
|
-
* @private
|
26816
|
-
*/
|
26817
|
-
IntersectionObserver.prototype._checkForIntersections = function() {
|
26818
|
-
if (!this.root && crossOriginUpdater && !crossOriginRect) {
|
26819
|
-
// Cross origin monitoring, but no initial data available yet.
|
26820
|
-
return;
|
26821
|
-
}
|
26822
|
-
|
26823
|
-
var rootIsInDom = this._rootIsInDom();
|
26824
|
-
var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();
|
26825
|
-
|
26826
|
-
this._observationTargets.forEach(function(item) {
|
26827
|
-
var target = item.element;
|
26828
|
-
var targetRect = getBoundingClientRect(target);
|
26829
|
-
var rootContainsTarget = this._rootContainsTarget(target);
|
26830
|
-
var oldEntry = item.entry;
|
26831
|
-
var intersectionRect = rootIsInDom && rootContainsTarget &&
|
26832
|
-
this._computeTargetAndRootIntersection(target, targetRect, rootRect);
|
26833
|
-
|
26834
|
-
var newEntry = item.entry = new IntersectionObserverEntry({
|
26835
|
-
time: now(),
|
26836
|
-
target: target,
|
26837
|
-
boundingClientRect: targetRect,
|
26838
|
-
rootBounds: crossOriginUpdater && !this.root ? null : rootRect,
|
26839
|
-
intersectionRect: intersectionRect
|
26840
|
-
});
|
26841
|
-
|
26842
|
-
if (!oldEntry) {
|
26843
|
-
this._queuedEntries.push(newEntry);
|
26844
|
-
} else if (rootIsInDom && rootContainsTarget) {
|
26845
|
-
// If the new entry intersection ratio has crossed any of the
|
26846
|
-
// thresholds, add a new entry.
|
26847
|
-
if (this._hasCrossedThreshold(oldEntry, newEntry)) {
|
26848
|
-
this._queuedEntries.push(newEntry);
|
26849
|
-
}
|
26850
|
-
} else {
|
26851
|
-
// If the root is not in the DOM or target is not contained within
|
26852
|
-
// root but the previous entry for this target had an intersection,
|
26853
|
-
// add a new record indicating removal.
|
26854
|
-
if (oldEntry && oldEntry.isIntersecting) {
|
26855
|
-
this._queuedEntries.push(newEntry);
|
26856
|
-
}
|
26857
|
-
}
|
26858
|
-
}, this);
|
26859
|
-
|
26860
|
-
if (this._queuedEntries.length) {
|
26861
|
-
this._callback(this.takeRecords(), this);
|
26862
|
-
}
|
26863
|
-
};
|
26864
|
-
|
26865
|
-
|
26866
|
-
/**
|
26867
|
-
* Accepts a target and root rect computes the intersection between then
|
26868
|
-
* following the algorithm in the spec.
|
26869
|
-
* TODO(philipwalton): at this time clip-path is not considered.
|
26870
|
-
* https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo
|
26871
|
-
* @param {Element} target The target DOM element
|
26872
|
-
* @param {Object} targetRect The bounding rect of the target.
|
26873
|
-
* @param {Object} rootRect The bounding rect of the root after being
|
26874
|
-
* expanded by the rootMargin value.
|
26875
|
-
* @return {?Object} The final intersection rect object or undefined if no
|
26876
|
-
* intersection is found.
|
26877
|
-
* @private
|
26878
|
-
*/
|
26879
|
-
IntersectionObserver.prototype._computeTargetAndRootIntersection =
|
26880
|
-
function(target, targetRect, rootRect) {
|
26881
|
-
// If the element isn't displayed, an intersection can't happen.
|
26882
|
-
if (window.getComputedStyle(target).display == 'none') return;
|
26883
|
-
|
26884
|
-
var intersectionRect = targetRect;
|
26885
|
-
var parent = getParentNode(target);
|
26886
|
-
var atRoot = false;
|
26887
|
-
|
26888
|
-
while (!atRoot && parent) {
|
26889
|
-
var parentRect = null;
|
26890
|
-
var parentComputedStyle = parent.nodeType == 1 ?
|
26891
|
-
window.getComputedStyle(parent) : {};
|
26892
|
-
|
26893
|
-
// If the parent isn't displayed, an intersection can't happen.
|
26894
|
-
if (parentComputedStyle.display == 'none') return null;
|
26895
|
-
|
26896
|
-
if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {
|
26897
|
-
atRoot = true;
|
26898
|
-
if (parent == this.root || parent == document) {
|
26899
|
-
if (crossOriginUpdater && !this.root) {
|
26900
|
-
if (!crossOriginRect ||
|
26901
|
-
crossOriginRect.width == 0 && crossOriginRect.height == 0) {
|
26902
|
-
// A 0-size cross-origin intersection means no-intersection.
|
26903
|
-
parent = null;
|
26904
|
-
parentRect = null;
|
26905
|
-
intersectionRect = null;
|
26906
|
-
} else {
|
26907
|
-
parentRect = crossOriginRect;
|
26908
|
-
}
|
26909
|
-
} else {
|
26910
|
-
parentRect = rootRect;
|
26911
|
-
}
|
26912
|
-
} else {
|
26913
|
-
// Check if there's a frame that can be navigated to.
|
26914
|
-
var frame = getParentNode(parent);
|
26915
|
-
var frameRect = frame && getBoundingClientRect(frame);
|
26916
|
-
var frameIntersect =
|
26917
|
-
frame &&
|
26918
|
-
this._computeTargetAndRootIntersection(frame, frameRect, rootRect);
|
26919
|
-
if (frameRect && frameIntersect) {
|
26920
|
-
parent = frame;
|
26921
|
-
parentRect = convertFromParentRect(frameRect, frameIntersect);
|
26922
|
-
} else {
|
26923
|
-
parent = null;
|
26924
|
-
intersectionRect = null;
|
26925
|
-
}
|
26926
|
-
}
|
26927
|
-
} else {
|
26928
|
-
// If the element has a non-visible overflow, and it's not the <body>
|
26929
|
-
// or <html> element, update the intersection rect.
|
26930
|
-
// Note: <body> and <html> cannot be clipped to a rect that's not also
|
26931
|
-
// the document rect, so no need to compute a new intersection.
|
26932
|
-
var doc = parent.ownerDocument;
|
26933
|
-
if (parent != doc.body &&
|
26934
|
-
parent != doc.documentElement &&
|
26935
|
-
parentComputedStyle.overflow != 'visible') {
|
26936
|
-
parentRect = getBoundingClientRect(parent);
|
26937
|
-
}
|
26938
|
-
}
|
26939
|
-
|
26940
|
-
// If either of the above conditionals set a new parentRect,
|
26941
|
-
// calculate new intersection data.
|
26942
|
-
if (parentRect) {
|
26943
|
-
intersectionRect = computeRectIntersection(parentRect, intersectionRect);
|
26944
|
-
}
|
26945
|
-
if (!intersectionRect) break;
|
26946
|
-
parent = parent && getParentNode(parent);
|
26947
|
-
}
|
26948
|
-
return intersectionRect;
|
26949
|
-
};
|
26950
|
-
|
26951
|
-
|
26952
|
-
/**
|
26953
|
-
* Returns the root rect after being expanded by the rootMargin value.
|
26954
|
-
* @return {ClientRect} The expanded root rect.
|
26955
|
-
* @private
|
26956
|
-
*/
|
26957
|
-
IntersectionObserver.prototype._getRootRect = function() {
|
26958
|
-
var rootRect;
|
26959
|
-
if (this.root) {
|
26960
|
-
rootRect = getBoundingClientRect(this.root);
|
26961
|
-
} else {
|
26962
|
-
// Use <html>/<body> instead of window since scroll bars affect size.
|
26963
|
-
var html = document.documentElement;
|
26964
|
-
var body = document.body;
|
26965
|
-
rootRect = {
|
26966
|
-
top: 0,
|
26967
|
-
left: 0,
|
26968
|
-
right: html.clientWidth || body.clientWidth,
|
26969
|
-
width: html.clientWidth || body.clientWidth,
|
26970
|
-
bottom: html.clientHeight || body.clientHeight,
|
26971
|
-
height: html.clientHeight || body.clientHeight
|
26972
|
-
};
|
26973
|
-
}
|
26974
|
-
return this._expandRectByRootMargin(rootRect);
|
26975
|
-
};
|
26976
|
-
|
26977
|
-
|
26978
|
-
/**
|
26979
|
-
* Accepts a rect and expands it by the rootMargin value.
|
26980
|
-
* @param {DOMRect|ClientRect} rect The rect object to expand.
|
26981
|
-
* @return {ClientRect} The expanded rect.
|
26982
|
-
* @private
|
26983
|
-
*/
|
26984
|
-
IntersectionObserver.prototype._expandRectByRootMargin = function(rect) {
|
26985
|
-
var margins = this._rootMarginValues.map(function(margin, i) {
|
26986
|
-
return margin.unit == 'px' ? margin.value :
|
26987
|
-
margin.value * (i % 2 ? rect.width : rect.height) / 100;
|
26988
|
-
});
|
26989
|
-
var newRect = {
|
26990
|
-
top: rect.top - margins[0],
|
26991
|
-
right: rect.right + margins[1],
|
26992
|
-
bottom: rect.bottom + margins[2],
|
26993
|
-
left: rect.left - margins[3]
|
26994
|
-
};
|
26995
|
-
newRect.width = newRect.right - newRect.left;
|
26996
|
-
newRect.height = newRect.bottom - newRect.top;
|
26997
|
-
|
26998
|
-
return newRect;
|
26999
|
-
};
|
27000
|
-
|
27001
|
-
|
27002
|
-
/**
|
27003
|
-
* Accepts an old and new entry and returns true if at least one of the
|
27004
|
-
* threshold values has been crossed.
|
27005
|
-
* @param {?IntersectionObserverEntry} oldEntry The previous entry for a
|
27006
|
-
* particular target element or null if no previous entry exists.
|
27007
|
-
* @param {IntersectionObserverEntry} newEntry The current entry for a
|
27008
|
-
* particular target element.
|
27009
|
-
* @return {boolean} Returns true if a any threshold has been crossed.
|
27010
|
-
* @private
|
27011
|
-
*/
|
27012
|
-
IntersectionObserver.prototype._hasCrossedThreshold =
|
27013
|
-
function(oldEntry, newEntry) {
|
27014
|
-
|
27015
|
-
// To make comparing easier, an entry that has a ratio of 0
|
27016
|
-
// but does not actually intersect is given a value of -1
|
27017
|
-
var oldRatio = oldEntry && oldEntry.isIntersecting ?
|
27018
|
-
oldEntry.intersectionRatio || 0 : -1;
|
27019
|
-
var newRatio = newEntry.isIntersecting ?
|
27020
|
-
newEntry.intersectionRatio || 0 : -1;
|
27021
|
-
|
27022
|
-
// Ignore unchanged ratios
|
27023
|
-
if (oldRatio === newRatio) return;
|
27024
|
-
|
27025
|
-
for (var i = 0; i < this.thresholds.length; i++) {
|
27026
|
-
var threshold = this.thresholds[i];
|
27027
|
-
|
27028
|
-
// Return true if an entry matches a threshold or if the new ratio
|
27029
|
-
// and the old ratio are on the opposite sides of a threshold.
|
27030
|
-
if (threshold == oldRatio || threshold == newRatio ||
|
27031
|
-
threshold < oldRatio !== threshold < newRatio) {
|
27032
|
-
return true;
|
27033
|
-
}
|
27034
|
-
}
|
27035
|
-
};
|
27036
|
-
|
27037
|
-
|
27038
|
-
/**
|
27039
|
-
* Returns whether or not the root element is an element and is in the DOM.
|
27040
|
-
* @return {boolean} True if the root element is an element and is in the DOM.
|
27041
|
-
* @private
|
27042
|
-
*/
|
27043
|
-
IntersectionObserver.prototype._rootIsInDom = function() {
|
27044
|
-
return !this.root || containsDeep(document, this.root);
|
27045
|
-
};
|
27046
|
-
|
27047
|
-
|
27048
|
-
/**
|
27049
|
-
* Returns whether or not the target element is a child of root.
|
27050
|
-
* @param {Element} target The target element to check.
|
27051
|
-
* @return {boolean} True if the target element is a child of root.
|
27052
|
-
* @private
|
27053
|
-
*/
|
27054
|
-
IntersectionObserver.prototype._rootContainsTarget = function(target) {
|
27055
|
-
return containsDeep(this.root || document, target) &&
|
27056
|
-
(!this.root || this.root.ownerDocument == target.ownerDocument);
|
27057
|
-
};
|
27058
|
-
|
27059
|
-
|
27060
|
-
/**
|
27061
|
-
* Adds the instance to the global IntersectionObserver registry if it isn't
|
27062
|
-
* already present.
|
27063
|
-
* @private
|
27064
|
-
*/
|
27065
|
-
IntersectionObserver.prototype._registerInstance = function() {
|
27066
|
-
if (registry.indexOf(this) < 0) {
|
27067
|
-
registry.push(this);
|
27068
|
-
}
|
27069
|
-
};
|
27070
|
-
|
27071
|
-
|
27072
|
-
/**
|
27073
|
-
* Removes the instance from the global IntersectionObserver registry.
|
27074
|
-
* @private
|
27075
|
-
*/
|
27076
|
-
IntersectionObserver.prototype._unregisterInstance = function() {
|
27077
|
-
var index = registry.indexOf(this);
|
27078
|
-
if (index != -1) registry.splice(index, 1);
|
27079
|
-
};
|
27080
|
-
|
27081
|
-
|
27082
|
-
/**
|
27083
|
-
* Returns the result of the performance.now() method or null in browsers
|
27084
|
-
* that don't support the API.
|
27085
|
-
* @return {number} The elapsed time since the page was requested.
|
27086
|
-
*/
|
27087
|
-
function now() {
|
27088
|
-
return window.performance && performance.now && performance.now();
|
27089
|
-
}
|
27090
|
-
|
27091
|
-
|
27092
|
-
/**
|
27093
|
-
* Throttles a function and delays its execution, so it's only called at most
|
27094
|
-
* once within a given time period.
|
27095
|
-
* @param {Function} fn The function to throttle.
|
27096
|
-
* @param {number} timeout The amount of time that must pass before the
|
27097
|
-
* function can be called again.
|
27098
|
-
* @return {Function} The throttled function.
|
27099
|
-
*/
|
27100
|
-
function throttle(fn, timeout) {
|
27101
|
-
var timer = null;
|
27102
|
-
return function () {
|
27103
|
-
if (!timer) {
|
27104
|
-
timer = setTimeout(function() {
|
27105
|
-
fn();
|
27106
|
-
timer = null;
|
27107
|
-
}, timeout);
|
27108
|
-
}
|
27109
|
-
};
|
27110
|
-
}
|
27111
|
-
|
27112
|
-
|
27113
|
-
/**
|
27114
|
-
* Adds an event handler to a DOM node ensuring cross-browser compatibility.
|
27115
|
-
* @param {Node} node The DOM node to add the event handler to.
|
27116
|
-
* @param {string} event The event name.
|
27117
|
-
* @param {Function} fn The event handler to add.
|
27118
|
-
* @param {boolean} opt_useCapture Optionally adds the even to the capture
|
27119
|
-
* phase. Note: this only works in modern browsers.
|
27120
|
-
*/
|
27121
|
-
function addEvent(node, event, fn, opt_useCapture) {
|
27122
|
-
if (typeof node.addEventListener == 'function') {
|
27123
|
-
node.addEventListener(event, fn, opt_useCapture || false);
|
27124
|
-
}
|
27125
|
-
else if (typeof node.attachEvent == 'function') {
|
27126
|
-
node.attachEvent('on' + event, fn);
|
27127
|
-
}
|
27128
|
-
}
|
27129
|
-
|
27130
|
-
|
27131
|
-
/**
|
27132
|
-
* Removes a previously added event handler from a DOM node.
|
27133
|
-
* @param {Node} node The DOM node to remove the event handler from.
|
27134
|
-
* @param {string} event The event name.
|
27135
|
-
* @param {Function} fn The event handler to remove.
|
27136
|
-
* @param {boolean} opt_useCapture If the event handler was added with this
|
27137
|
-
* flag set to true, it should be set to true here in order to remove it.
|
27138
|
-
*/
|
27139
|
-
function removeEvent(node, event, fn, opt_useCapture) {
|
27140
|
-
if (typeof node.removeEventListener == 'function') {
|
27141
|
-
node.removeEventListener(event, fn, opt_useCapture || false);
|
27142
|
-
}
|
27143
|
-
else if (typeof node.detatchEvent == 'function') {
|
27144
|
-
node.detatchEvent('on' + event, fn);
|
27145
|
-
}
|
27146
|
-
}
|
27147
|
-
|
27148
|
-
|
27149
|
-
/**
|
27150
|
-
* Returns the intersection between two rect objects.
|
27151
|
-
* @param {Object} rect1 The first rect.
|
27152
|
-
* @param {Object} rect2 The second rect.
|
27153
|
-
* @return {?Object|?ClientRect} The intersection rect or undefined if no
|
27154
|
-
* intersection is found.
|
27155
|
-
*/
|
27156
|
-
function computeRectIntersection(rect1, rect2) {
|
27157
|
-
var top = Math.max(rect1.top, rect2.top);
|
27158
|
-
var bottom = Math.min(rect1.bottom, rect2.bottom);
|
27159
|
-
var left = Math.max(rect1.left, rect2.left);
|
27160
|
-
var right = Math.min(rect1.right, rect2.right);
|
27161
|
-
var width = right - left;
|
27162
|
-
var height = bottom - top;
|
27163
|
-
|
27164
|
-
return (width >= 0 && height >= 0) && {
|
27165
|
-
top: top,
|
27166
|
-
bottom: bottom,
|
27167
|
-
left: left,
|
27168
|
-
right: right,
|
27169
|
-
width: width,
|
27170
|
-
height: height
|
27171
|
-
} || null;
|
27172
|
-
}
|
27173
|
-
|
27174
|
-
|
27175
|
-
/**
|
27176
|
-
* Shims the native getBoundingClientRect for compatibility with older IE.
|
27177
|
-
* @param {Element} el The element whose bounding rect to get.
|
27178
|
-
* @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.
|
27179
|
-
*/
|
27180
|
-
function getBoundingClientRect(el) {
|
27181
|
-
var rect;
|
27182
|
-
|
27183
|
-
try {
|
27184
|
-
rect = el.getBoundingClientRect();
|
27185
|
-
} catch (err) {
|
27186
|
-
// Ignore Windows 7 IE11 "Unspecified error"
|
27187
|
-
// https://github.com/w3c/IntersectionObserver/pull/205
|
27188
|
-
}
|
27189
|
-
|
27190
|
-
if (!rect) return getEmptyRect();
|
27191
|
-
|
27192
|
-
// Older IE
|
27193
|
-
if (!(rect.width && rect.height)) {
|
27194
|
-
rect = {
|
27195
|
-
top: rect.top,
|
27196
|
-
right: rect.right,
|
27197
|
-
bottom: rect.bottom,
|
27198
|
-
left: rect.left,
|
27199
|
-
width: rect.right - rect.left,
|
27200
|
-
height: rect.bottom - rect.top
|
27201
|
-
};
|
27202
|
-
}
|
27203
|
-
return rect;
|
27204
|
-
}
|
27205
|
-
|
27206
|
-
|
27207
|
-
/**
|
27208
|
-
* Returns an empty rect object. An empty rect is returned when an element
|
27209
|
-
* is not in the DOM.
|
27210
|
-
* @return {ClientRect} The empty rect.
|
27211
|
-
*/
|
27212
|
-
function getEmptyRect() {
|
27213
|
-
return {
|
27214
|
-
top: 0,
|
27215
|
-
bottom: 0,
|
27216
|
-
left: 0,
|
27217
|
-
right: 0,
|
27218
|
-
width: 0,
|
27219
|
-
height: 0
|
27220
|
-
};
|
27221
|
-
}
|
27222
|
-
|
27223
|
-
|
27224
|
-
/**
|
27225
|
-
* Ensure that the result has all of the necessary fields of the DOMRect.
|
27226
|
-
* Specifically this ensures that `x` and `y` fields are set.
|
27227
|
-
*
|
27228
|
-
* @param {?DOMRect|?ClientRect} rect
|
27229
|
-
* @return {?DOMRect}
|
27230
|
-
*/
|
27231
|
-
function ensureDOMRect(rect) {
|
27232
|
-
// A `DOMRect` object has `x` and `y` fields.
|
27233
|
-
if (!rect || 'x' in rect) {
|
27234
|
-
return rect;
|
27235
|
-
}
|
27236
|
-
// A IE's `ClientRect` type does not have `x` and `y`. The same is the case
|
27237
|
-
// for internally calculated Rect objects. For the purposes of
|
27238
|
-
// `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`
|
27239
|
-
// for these fields.
|
27240
|
-
return {
|
27241
|
-
top: rect.top,
|
27242
|
-
y: rect.top,
|
27243
|
-
bottom: rect.bottom,
|
27244
|
-
left: rect.left,
|
27245
|
-
x: rect.left,
|
27246
|
-
right: rect.right,
|
27247
|
-
width: rect.width,
|
27248
|
-
height: rect.height
|
27249
|
-
};
|
27250
|
-
}
|
27251
|
-
|
27252
|
-
|
27253
|
-
/**
|
27254
|
-
* Inverts the intersection and bounding rect from the parent (frame) BCR to
|
27255
|
-
* the local BCR space.
|
27256
|
-
* @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.
|
27257
|
-
* @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.
|
27258
|
-
* @return {ClientRect} The local root bounding rect for the parent's children.
|
27259
|
-
*/
|
27260
|
-
function convertFromParentRect(parentBoundingRect, parentIntersectionRect) {
|
27261
|
-
var top = parentIntersectionRect.top - parentBoundingRect.top;
|
27262
|
-
var left = parentIntersectionRect.left - parentBoundingRect.left;
|
27263
|
-
return {
|
27264
|
-
top: top,
|
27265
|
-
left: left,
|
27266
|
-
height: parentIntersectionRect.height,
|
27267
|
-
width: parentIntersectionRect.width,
|
27268
|
-
bottom: top + parentIntersectionRect.height,
|
27269
|
-
right: left + parentIntersectionRect.width
|
27270
|
-
};
|
27271
|
-
}
|
27272
|
-
|
27273
|
-
|
27274
|
-
/**
|
27275
|
-
* Checks to see if a parent element contains a child element (including inside
|
27276
|
-
* shadow DOM).
|
27277
|
-
* @param {Node} parent The parent element.
|
27278
|
-
* @param {Node} child The child element.
|
27279
|
-
* @return {boolean} True if the parent node contains the child node.
|
27280
|
-
*/
|
27281
|
-
function containsDeep(parent, child) {
|
27282
|
-
var node = child;
|
27283
|
-
while (node) {
|
27284
|
-
if (node == parent) return true;
|
27285
|
-
|
27286
|
-
node = getParentNode(node);
|
27287
|
-
}
|
27288
|
-
return false;
|
27289
|
-
}
|
27290
|
-
|
27291
|
-
|
27292
|
-
/**
|
27293
|
-
* Gets the parent node of an element or its host element if the parent node
|
27294
|
-
* is a shadow root.
|
27295
|
-
* @param {Node} node The node whose parent to get.
|
27296
|
-
* @return {Node|null} The parent node or null if no parent exists.
|
27297
|
-
*/
|
27298
|
-
function getParentNode(node) {
|
27299
|
-
var parent = node.parentNode;
|
27300
|
-
|
27301
|
-
if (node.nodeType == /* DOCUMENT */ 9 && node != document) {
|
27302
|
-
// If this node is a document node, look for the embedding frame.
|
27303
|
-
return getFrameElement(node);
|
27304
|
-
}
|
27305
|
-
|
27306
|
-
if (parent && parent.nodeType == 11 && parent.host) {
|
27307
|
-
// If the parent is a shadow root, return the host element.
|
27308
|
-
return parent.host;
|
27309
|
-
}
|
27310
|
-
|
27311
|
-
if (parent && parent.assignedSlot) {
|
27312
|
-
// If the parent is distributed in a <slot>, return the parent of a slot.
|
27313
|
-
return parent.assignedSlot.parentNode;
|
27314
|
-
}
|
27315
|
-
|
27316
|
-
return parent;
|
27317
|
-
}
|
27318
|
-
|
27319
|
-
|
27320
|
-
/**
|
27321
|
-
* Returns the embedding frame element, if any.
|
27322
|
-
* @param {!Document} doc
|
27323
|
-
* @return {!Element}
|
27324
|
-
*/
|
27325
|
-
function getFrameElement(doc) {
|
27326
|
-
try {
|
27327
|
-
return doc.defaultView && doc.defaultView.frameElement || null;
|
27328
|
-
} catch (e) {
|
27329
|
-
// Ignore the error.
|
27330
|
-
return null;
|
27331
|
-
}
|
27332
|
-
}
|
27333
|
-
|
27334
|
-
|
27335
|
-
// Exposes the constructors globally.
|
27336
|
-
window.IntersectionObserver = IntersectionObserver;
|
27337
|
-
window.IntersectionObserverEntry = IntersectionObserverEntry;
|
27338
|
-
|
27339
|
-
}());
|
27340
|
-
|
27341
|
-
const intersectionObserver = /*#__PURE__*/Object.freeze({
|
27342
|
-
__proto__: null
|
27343
|
-
});
|
27344
|
-
|
27345
25685
|
(function () {
|
27346
25686
|
|
27347
25687
|
var UNSUPPORTED_ENVIRONMENT = typeof window === "undefined";
|
@@ -29412,6 +27752,6 @@ const index = /*#__PURE__*/Object.freeze({
|
|
29412
27752
|
GESTURE_CONTROLLER: GESTURE_CONTROLLER
|
29413
27753
|
});
|
29414
27754
|
|
29415
|
-
export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle
|
27755
|
+
export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, getTabbableElements as nanoGetTabElements, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle as nanoThrottle, setAssetPath, setPlatformOptions };
|
29416
27756
|
|
29417
27757
|
//# sourceMappingURL=index.js.map
|