@nanoporetech-digital/components 1.14.1 → 1.15.3
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 +42 -0
- package/dist/cjs/{algolia-data-4d5ee8da.js → algolia-data-a98ccf4f.js} +2 -2
- package/dist/cjs/algolia-data-a98ccf4f.js.map +1 -0
- package/dist/cjs/algoliasearch.umd-5dc661c5.js +12 -0
- package/dist/cjs/algoliasearch.umd-5dc661c5.js.map +1 -0
- package/dist/cjs/{component-store-4dfd3a12.js → component-store-8d99743e.js} +2 -2
- package/dist/cjs/{component-store-4dfd3a12.js.map → component-store-8d99743e.js.map} +1 -1
- package/dist/cjs/{global-befb7a64.js → global-aa92d50f.js} +5 -3
- package/dist/cjs/global-aa92d50f.js.map +1 -0
- package/dist/cjs/{index-197e7a3f.js → index-f12395b8.js} +3 -1
- package/dist/cjs/index-f12395b8.js.map +1 -0
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-input.cjs.entry.js +5 -5
- package/dist/cjs/nano-algolia-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +5 -5
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/nano-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/nano-components.cjs.js +3 -3
- package/dist/cjs/nano-date-input.cjs.entry.js +43 -15
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker_2.cjs.entry.js +31 -11
- package/dist/cjs/nano-date-picker_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +14 -8
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +5 -9
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +7 -14
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +4 -4
- package/dist/cjs/nano-global-search-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +1 -1
- package/dist/cjs/nano-icon-button.cjs.entry.js +2 -2
- package/dist/cjs/nano-icon.cjs.entry.js +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +12 -2
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-menu.cjs.entry.js +2 -2
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +2 -2
- package/dist/cjs/nano-range.cjs.entry.js +2 -2
- package/dist/cjs/nano-rating.cjs.entry.js +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-select-option.cjs.entry.js +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +2 -2
- package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
- package/dist/cjs/nano-sticker.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +3 -3
- package/dist/cjs/nano-tab.cjs.entry.js +2 -2
- package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/alert/alert.css +3 -3
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/algolia/algolia-data.js.map +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +3 -3
- package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
- package/dist/collection/components/algolia/algolia-input.js +7 -7
- package/dist/collection/components/algolia/algolia-input.js.map +1 -1
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +7 -7
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js +7 -2
- package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox-group.css +2 -2
- package/dist/collection/components/checkbox/checkbox-group.js +2 -2
- package/dist/collection/components/checkbox/checkbox.css +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- package/dist/collection/components/date-input/date-input.css +0 -4
- package/dist/collection/components/date-input/date-input.js +70 -21
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +15 -4
- package/dist/collection/components/date-picker/date-picker.js +44 -16
- package/dist/collection/components/date-picker/date-picker.js.map +1 -1
- package/dist/collection/components/details/details.css +3 -3
- package/dist/collection/components/details/details.js +13 -7
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.css +2 -3
- package/dist/collection/components/dialog/dialog.js +6 -10
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +2 -1
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload-interface.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +9 -17
- package/dist/collection/components/file-upload/file-upload.js +17 -20
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.css +2 -2
- package/dist/collection/components/global-nav/global-nav.js +4 -4
- package/dist/collection/components/global-search-results/global-search-results.css +3 -3
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon-button/icon-button.css +2 -2
- package/dist/collection/components/input/input.css +5 -6
- package/dist/collection/components/input/input.js +25 -6
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/menu/menu.css +7 -7
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/range/range.css +4 -4
- package/dist/collection/components/range/range.js +4 -4
- package/dist/collection/components/resize-observe/resize-observe.js +1 -1
- package/dist/collection/components/select/select.css +4 -4
- package/dist/collection/components/select/select.js +5 -5
- package/dist/collection/components/slides/slides.css +2 -2
- package/dist/collection/components/slides/slides.js +7 -7
- package/dist/collection/components/spinner/spinner.css +2 -2
- package/dist/collection/components/tabs/tab-group.css +6 -6
- package/dist/collection/components/tabs/tab-group.js +2 -2
- package/dist/collection/components/tabs/tab.css +2 -2
- package/dist/collection/global/script/global.js +4 -2
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/utils/testing/index.js +91 -18
- package/dist/collection/utils/testing/index.js.map +1 -1
- package/dist/custom-elements/index.js +131 -74
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{algolia-data-6db3f5f2.js → algolia-data-b31a9800.js} +2 -2
- package/dist/esm/algolia-data-b31a9800.js.map +1 -0
- package/dist/esm/algoliasearch.umd-7ecbe0e9.js +10 -0
- package/dist/esm/algoliasearch.umd-7ecbe0e9.js.map +1 -0
- package/dist/esm/{component-store-6736ee0f.js → component-store-93172454.js} +2 -2
- package/dist/esm/{component-store-6736ee0f.js.map → component-store-93172454.js.map} +1 -1
- package/dist/esm/{global-c85d24a2.js → global-118ae701.js} +5 -3
- package/dist/esm/global-118ae701.js.map +1 -0
- package/dist/esm/{index-8e9bc704.js → index-912ef959.js} +3 -1
- package/dist/esm/index-912ef959.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/nano-accordion.entry.js +1 -1
- package/dist/esm/nano-alert.entry.js +2 -2
- package/dist/esm/nano-algolia-filter.entry.js +3 -3
- package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm/nano-algolia-input.entry.js +5 -5
- package/dist/esm/nano-algolia-input.entry.js.map +1 -1
- package/dist/esm/nano-algolia-pagination.entry.js +2 -2
- package/dist/esm/nano-algolia-results.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +5 -5
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-aspect-ratio.entry.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +2 -2
- package/dist/esm/nano-checkbox.entry.js +2 -2
- package/dist/esm/nano-components.js +3 -3
- package/dist/esm/nano-date-input.entry.js +43 -15
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker_2.entry.js +31 -11
- package/dist/esm/nano-date-picker_2.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +14 -8
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +5 -9
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +1 -1
- package/dist/esm/nano-file-upload.entry.js +7 -14
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +4 -4
- package/dist/esm/nano-global-search-results.entry.js +2 -2
- package/dist/esm/nano-grid_3.entry.js +1 -1
- package/dist/esm/nano-hero.entry.js +1 -1
- package/dist/esm/nano-icon-button.entry.js +2 -2
- package/dist/esm/nano-icon.entry.js +1 -1
- package/dist/esm/nano-input.entry.js +12 -2
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +1 -1
- package/dist/esm/nano-menu.entry.js +2 -2
- package/dist/esm/nano-nav-item_2.entry.js +2 -2
- package/dist/esm/nano-range.entry.js +2 -2
- package/dist/esm/nano-rating.entry.js +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm/nano-select-option.entry.js +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/nano-slides.entry.js +2 -2
- package/dist/esm/nano-spinner.entry.js +2 -2
- package/dist/esm/nano-sticker.entry.js +1 -1
- package/dist/esm/nano-tab-content.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +3 -3
- package/dist/esm/nano-tab.entry.js +2 -2
- package/dist/esm/nano-tooltip.entry.js +1 -1
- package/dist/esm-es5/{algolia-data-6db3f5f2.js → algolia-data-b31a9800.js} +2 -2
- package/dist/esm-es5/algolia-data-b31a9800.js.map +1 -0
- package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js +4 -0
- package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js.map +1 -0
- package/dist/esm-es5/{component-store-6736ee0f.js → component-store-93172454.js} +2 -2
- package/dist/esm-es5/{component-store-6736ee0f.js.map → component-store-93172454.js.map} +0 -0
- package/dist/esm-es5/{global-c85d24a2.js → global-118ae701.js} +2 -2
- package/dist/esm-es5/global-118ae701.js.map +1 -0
- package/dist/esm-es5/index-912ef959.js +2 -0
- package/dist/esm-es5/index-912ef959.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/nano-accordion.entry.js +1 -1
- package/dist/esm-es5/nano-alert.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-results.entry.js +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-aspect-ratio.entry.js +1 -1
- package/dist/esm-es5/nano-checkbox-group.entry.js +1 -1
- package/dist/esm-es5/nano-checkbox.entry.js +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-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_2.entry.js +1 -1
- package/dist/esm-es5/nano-date-picker_2.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-dialog.entry.js +1 -1
- package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
- package/dist/esm-es5/nano-drawer.entry.js +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-nav.entry.js +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
- package/dist/esm-es5/nano-grid_3.entry.js +1 -1
- package/dist/esm-es5/nano-hero.entry.js +1 -1
- package/dist/esm-es5/nano-icon-button.entry.js +1 -1
- package/dist/esm-es5/nano-icon.entry.js +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-menu-drawer.entry.js +1 -1
- package/dist/esm-es5/nano-menu.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-range.entry.js +1 -1
- package/dist/esm-es5/nano-rating.entry.js +1 -1
- package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm-es5/nano-select-option.entry.js +1 -1
- package/dist/esm-es5/nano-slide.entry.js +1 -1
- package/dist/esm-es5/nano-slides.entry.js +2 -2
- package/dist/esm-es5/nano-spinner.entry.js +1 -1
- package/dist/esm-es5/nano-sticker.entry.js +1 -1
- package/dist/esm-es5/nano-tab-content.entry.js +1 -1
- package/dist/esm-es5/nano-tab-group.entry.js +1 -1
- package/dist/esm-es5/nano-tab.entry.js +1 -1
- package/dist/esm-es5/nano-tooltip.entry.js +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-dbd71a33.system.entry.js → p-007c6041.system.entry.js} +2 -2
- package/dist/nano-components/{p-dbd71a33.system.entry.js.map → p-007c6041.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-83bf885b.entry.js → p-02177814.entry.js} +2 -2
- package/dist/nano-components/{p-83bf885b.entry.js.map → p-02177814.entry.js.map} +0 -0
- package/dist/nano-components/{p-df2764c8.system.entry.js → p-046af455.system.entry.js} +2 -2
- package/dist/nano-components/{p-df2764c8.system.entry.js.map → p-046af455.system.entry.js.map} +0 -0
- package/dist/nano-components/p-05c062ae.js +4 -0
- package/dist/nano-components/p-05c062ae.js.map +1 -0
- package/dist/nano-components/{p-4d17169a.entry.js → p-104a9d64.entry.js} +2 -2
- package/dist/nano-components/p-104a9d64.entry.js.map +1 -0
- package/dist/nano-components/{p-55b80a92.system.entry.js → p-10f24f67.system.entry.js} +2 -2
- package/dist/nano-components/{p-55b80a92.system.entry.js.map → p-10f24f67.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-6403dd02.system.entry.js → p-1c7614c4.system.entry.js} +2 -2
- package/dist/nano-components/p-1c7614c4.system.entry.js.map +1 -0
- package/dist/nano-components/{p-007c6ccc.system.entry.js → p-1d16e897.system.entry.js} +2 -2
- package/dist/nano-components/{p-007c6ccc.system.entry.js.map → p-1d16e897.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-daf1462f.system.entry.js → p-21a6f295.system.entry.js} +2 -2
- package/dist/nano-components/{p-daf1462f.system.entry.js.map → p-21a6f295.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-acbc08ea.system.entry.js → p-273b19b0.system.entry.js} +2 -2
- package/dist/nano-components/{p-acbc08ea.system.entry.js.map → p-273b19b0.system.entry.js.map} +0 -0
- package/dist/nano-components/p-28123e6e.entry.js +2 -0
- package/dist/nano-components/p-28123e6e.entry.js.map +1 -0
- package/dist/nano-components/{p-f1cd2d9b.entry.js → p-2ae39fa1.entry.js} +2 -2
- package/dist/nano-components/{p-f1cd2d9b.entry.js.map → p-2ae39fa1.entry.js.map} +0 -0
- package/dist/nano-components/{p-9393bfbb.system.entry.js → p-2edaf0eb.system.entry.js} +3 -3
- package/dist/nano-components/{p-9393bfbb.system.entry.js.map → p-2edaf0eb.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-e7e898f5.system.entry.js → p-2f876f68.system.entry.js} +2 -2
- package/dist/nano-components/{p-e7e898f5.system.entry.js.map → p-2f876f68.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-19962dda.system.entry.js → p-305ba54b.system.entry.js} +2 -2
- package/dist/nano-components/{p-19962dda.system.entry.js.map → p-305ba54b.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-5f9e92b0.system.entry.js → p-30a22cd0.system.entry.js} +2 -2
- package/dist/nano-components/{p-5f9e92b0.system.entry.js.map → p-30a22cd0.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-cc8fb176.system.entry.js → p-31c52d0a.system.entry.js} +2 -2
- package/dist/nano-components/{p-cc8fb176.system.entry.js.map → p-31c52d0a.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-c6f7ce64.system.entry.js → p-325f32b3.system.entry.js} +2 -2
- package/dist/nano-components/p-325f32b3.system.entry.js.map +1 -0
- package/dist/nano-components/{p-3f9a70f8.entry.js → p-3b2ea5fd.entry.js} +2 -2
- package/dist/nano-components/{p-3f9a70f8.entry.js.map → p-3b2ea5fd.entry.js.map} +0 -0
- package/dist/nano-components/{p-0283a2ec.js → p-4370f8ae.js} +2 -2
- package/dist/nano-components/p-4370f8ae.js.map +1 -0
- package/dist/nano-components/{p-8097b205.system.js → p-4647a31f.system.js} +2 -2
- package/dist/nano-components/{p-8097b205.system.js.map → p-4647a31f.system.js.map} +0 -0
- package/dist/nano-components/{p-447ed63d.system.entry.js → p-491096f0.system.entry.js} +2 -2
- package/dist/nano-components/p-491096f0.system.entry.js.map +1 -0
- package/dist/nano-components/{p-1de83f90.system.entry.js → p-4e21bfe1.system.entry.js} +2 -2
- package/dist/nano-components/{p-1de83f90.system.entry.js.map → p-4e21bfe1.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-6855167a.entry.js → p-4fa0b560.entry.js} +2 -2
- package/dist/nano-components/{p-6855167a.entry.js.map → p-4fa0b560.entry.js.map} +0 -0
- package/dist/nano-components/{p-7db31794.system.entry.js → p-4fbc3c8b.system.entry.js} +2 -2
- package/dist/nano-components/{p-7db31794.system.entry.js.map → p-4fbc3c8b.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-5198e4c6.system.js → p-508484f8.system.js} +2 -2
- package/dist/nano-components/p-508484f8.system.js.map +1 -0
- package/dist/nano-components/p-5672ebbb.system.entry.js +2 -0
- package/dist/nano-components/p-5672ebbb.system.entry.js.map +1 -0
- package/dist/nano-components/{p-7a8ea050.entry.js → p-574143b5.entry.js} +2 -2
- package/dist/nano-components/{p-7a8ea050.entry.js.map → p-574143b5.entry.js.map} +0 -0
- package/dist/nano-components/{p-ff530ea6.system.entry.js → p-57434dc5.system.entry.js} +2 -2
- package/dist/nano-components/{p-ff530ea6.system.entry.js.map → p-57434dc5.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-44cf7aeb.entry.js → p-574f1393.entry.js} +2 -2
- package/dist/nano-components/p-574f1393.entry.js.map +1 -0
- package/dist/nano-components/{p-24ad4b09.entry.js → p-580eac05.entry.js} +2 -2
- package/dist/nano-components/{p-24ad4b09.entry.js.map → p-580eac05.entry.js.map} +0 -0
- package/dist/nano-components/{p-fc9828c7.entry.js → p-59aba360.entry.js} +2 -2
- package/dist/nano-components/{p-fc9828c7.entry.js.map → p-59aba360.entry.js.map} +0 -0
- package/dist/nano-components/{p-c8945124.system.js → p-698a8ab3.system.js} +2 -2
- package/dist/nano-components/p-698a8ab3.system.js.map +1 -0
- package/dist/nano-components/{p-c05d2d62.entry.js → p-6a3eee01.entry.js} +2 -2
- package/dist/nano-components/{p-c05d2d62.entry.js.map → p-6a3eee01.entry.js.map} +0 -0
- package/dist/nano-components/{p-ddaa8946.entry.js → p-6aab52a0.entry.js} +2 -2
- package/dist/nano-components/p-6aab52a0.entry.js.map +1 -0
- package/dist/nano-components/{p-4b9a1f76.entry.js → p-6dc59ae8.entry.js} +2 -2
- package/dist/nano-components/{p-4b9a1f76.entry.js.map → p-6dc59ae8.entry.js.map} +0 -0
- package/dist/nano-components/{p-057177d7.entry.js → p-6eba639a.entry.js} +3 -3
- package/dist/nano-components/{p-057177d7.entry.js.map → p-6eba639a.entry.js.map} +0 -0
- package/dist/nano-components/{p-185dedd1.system.entry.js → p-73d969d0.system.entry.js} +2 -2
- package/dist/nano-components/{p-185dedd1.system.entry.js.map → p-73d969d0.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-4a319e09.system.entry.js → p-7dc79f13.system.entry.js} +2 -2
- package/dist/nano-components/{p-4a319e09.system.entry.js.map → p-7dc79f13.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-fd6ff03f.entry.js → p-7df31b1c.entry.js} +2 -2
- package/dist/nano-components/{p-fd6ff03f.entry.js.map → p-7df31b1c.entry.js.map} +0 -0
- package/dist/nano-components/{p-172053d0.system.entry.js → p-7e208086.system.entry.js} +2 -2
- package/dist/nano-components/{p-172053d0.system.entry.js.map → p-7e208086.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-173755c4.system.entry.js → p-7e4129b4.system.entry.js} +2 -2
- package/dist/nano-components/{p-173755c4.system.entry.js.map → p-7e4129b4.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-f3bb5f81.entry.js → p-7e68796f.entry.js} +2 -2
- package/dist/nano-components/{p-f3bb5f81.entry.js.map → p-7e68796f.entry.js.map} +0 -0
- package/dist/nano-components/{p-a17e6ab1.entry.js → p-81d7fd45.entry.js} +2 -2
- package/dist/nano-components/{p-a17e6ab1.entry.js.map → p-81d7fd45.entry.js.map} +0 -0
- package/dist/nano-components/{p-981f997c.entry.js → p-82571543.entry.js} +2 -2
- package/dist/nano-components/p-82571543.entry.js.map +1 -0
- package/dist/nano-components/{p-016c6482.system.entry.js → p-844a1134.system.entry.js} +2 -2
- package/dist/nano-components/{p-016c6482.system.entry.js.map → p-844a1134.system.entry.js.map} +0 -0
- package/dist/nano-components/p-8535a942.entry.js +2 -0
- package/dist/nano-components/{p-6d718c9a.entry.js.map → p-8535a942.entry.js.map} +1 -1
- package/dist/nano-components/{p-e422c66f.entry.js → p-8c1d85ae.entry.js} +2 -2
- package/dist/nano-components/{p-e422c66f.entry.js.map → p-8c1d85ae.entry.js.map} +0 -0
- package/dist/nano-components/{p-46f84983.system.entry.js → p-8ed6acea.system.entry.js} +2 -2
- package/dist/nano-components/{p-46f84983.system.entry.js.map → p-8ed6acea.system.entry.js.map} +0 -0
- package/dist/nano-components/p-9164e5e2.system.entry.js +2 -0
- package/dist/nano-components/p-9164e5e2.system.entry.js.map +1 -0
- package/dist/nano-components/{p-896b7462.system.entry.js → p-9371d81b.system.entry.js} +2 -2
- package/dist/nano-components/{p-896b7462.system.entry.js.map → p-9371d81b.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-b49d1e17.system.entry.js → p-95a4c3f2.system.entry.js} +2 -2
- package/dist/nano-components/{p-b49d1e17.system.entry.js.map → p-95a4c3f2.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-06cc7501.entry.js → p-96ba0d00.entry.js} +2 -2
- package/dist/nano-components/{p-06cc7501.entry.js.map → p-96ba0d00.entry.js.map} +0 -0
- package/dist/nano-components/p-99637978.entry.js +2 -0
- package/dist/nano-components/p-99637978.entry.js.map +1 -0
- package/dist/nano-components/{p-56a8af2c.entry.js → p-9ccd832b.entry.js} +2 -2
- package/dist/nano-components/{p-56a8af2c.entry.js.map → p-9ccd832b.entry.js.map} +0 -0
- package/dist/nano-components/{p-2116ecb5.js → p-a1680208.js} +2 -2
- package/dist/nano-components/{p-2116ecb5.js.map → p-a1680208.js.map} +0 -0
- package/dist/nano-components/{p-b4a53bea.entry.js → p-a53a193c.entry.js} +2 -2
- package/dist/nano-components/{p-b4a53bea.entry.js.map → p-a53a193c.entry.js.map} +0 -0
- package/dist/nano-components/{p-b74ba77b.system.entry.js → p-a7ac7964.system.entry.js} +2 -2
- package/dist/nano-components/{p-b74ba77b.system.entry.js.map → p-a7ac7964.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-30c68e8e.system.entry.js → p-aadd8c31.system.entry.js} +2 -2
- package/dist/nano-components/{p-30c68e8e.system.entry.js.map → p-aadd8c31.system.entry.js.map} +0 -0
- package/dist/nano-components/p-ab666582.entry.js +2 -0
- package/dist/nano-components/p-ab666582.entry.js.map +1 -0
- package/dist/nano-components/p-acd5d0f0.system.entry.js +2 -0
- package/dist/nano-components/p-acd5d0f0.system.entry.js.map +1 -0
- package/dist/nano-components/p-af9f6453.system.js +2 -0
- package/dist/nano-components/p-af9f6453.system.js.map +1 -0
- package/dist/nano-components/p-b1d3ab54.system.entry.js +2 -0
- package/dist/nano-components/p-b1d3ab54.system.entry.js.map +1 -0
- package/dist/nano-components/{p-bd04677f.entry.js → p-b3131821.entry.js} +2 -2
- package/dist/nano-components/{p-bd04677f.entry.js.map → p-b3131821.entry.js.map} +0 -0
- package/dist/nano-components/{p-ef46375f.entry.js → p-b7a58722.entry.js} +2 -2
- package/dist/nano-components/{p-ef46375f.entry.js.map → p-b7a58722.entry.js.map} +0 -0
- package/dist/nano-components/p-bb0619e6.js +2 -0
- package/dist/nano-components/p-bb0619e6.js.map +1 -0
- package/dist/nano-components/{p-081356e2.entry.js → p-c3f861c5.entry.js} +2 -2
- package/dist/nano-components/{p-081356e2.entry.js.map → p-c3f861c5.entry.js.map} +0 -0
- package/dist/nano-components/{p-ab384425.system.entry.js → p-c655e010.system.entry.js} +2 -2
- package/dist/nano-components/{p-ab384425.system.entry.js.map → p-c655e010.system.entry.js.map} +0 -0
- package/dist/nano-components/p-c72b22be.entry.js +2 -0
- package/dist/nano-components/p-c72b22be.entry.js.map +1 -0
- package/dist/nano-components/{p-d7ddc7e3.entry.js → p-d250987a.entry.js} +2 -2
- package/dist/nano-components/{p-d7ddc7e3.entry.js.map → p-d250987a.entry.js.map} +0 -0
- package/dist/nano-components/{p-b1badcb1.system.entry.js → p-d393d10a.system.entry.js} +2 -2
- package/dist/nano-components/{p-b1badcb1.system.entry.js.map → p-d393d10a.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-868872fa.entry.js → p-db271541.entry.js} +2 -2
- package/dist/nano-components/{p-868872fa.entry.js.map → p-db271541.entry.js.map} +0 -0
- package/dist/nano-components/p-dccd86ec.system.js +4 -0
- package/dist/nano-components/p-dccd86ec.system.js.map +1 -0
- package/dist/nano-components/p-e0cc37fb.entry.js +2 -0
- package/dist/nano-components/{p-b19e2af5.entry.js.map → p-e0cc37fb.entry.js.map} +1 -1
- package/dist/nano-components/{p-db4ba5d8.system.entry.js → p-e28536b4.system.entry.js} +2 -2
- package/dist/nano-components/{p-db4ba5d8.system.entry.js.map → p-e28536b4.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-b2804245.entry.js → p-ebf34764.entry.js} +2 -2
- package/dist/nano-components/{p-b2804245.entry.js.map → p-ebf34764.entry.js.map} +0 -0
- package/dist/nano-components/p-edddeaae.system.js +2 -0
- package/dist/nano-components/{p-f2d24fc6.system.js.map → p-edddeaae.system.js.map} +1 -1
- package/dist/nano-components/{p-d7a2499b.entry.js → p-ef5d9308.entry.js} +2 -2
- package/dist/nano-components/{p-d7a2499b.entry.js.map → p-ef5d9308.entry.js.map} +0 -0
- package/dist/nano-components/p-f234e064.system.entry.js +2 -0
- package/dist/nano-components/p-f234e064.system.entry.js.map +1 -0
- package/dist/nano-components/{p-6dae7bdd.system.entry.js → p-f27c9429.system.entry.js} +2 -2
- package/dist/nano-components/{p-6dae7bdd.system.entry.js.map → p-f27c9429.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-3c25067f.entry.js → p-f3688bce.entry.js} +2 -2
- package/dist/nano-components/{p-3c25067f.entry.js.map → p-f3688bce.entry.js.map} +0 -0
- package/dist/nano-components/{p-66a5132f.system.entry.js → p-f86db7c0.system.entry.js} +2 -2
- package/dist/nano-components/{p-66a5132f.system.entry.js.map → p-f86db7c0.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7e259efb.system.entry.js → p-fa86645d.system.entry.js} +2 -2
- package/dist/nano-components/p-fa86645d.system.entry.js.map +1 -0
- package/dist/nano-components/{p-b5ff5764.entry.js → p-fdfa03d7.entry.js} +2 -2
- package/dist/nano-components/{p-b5ff5764.entry.js.map → p-fdfa03d7.entry.js.map} +0 -0
- package/dist/nano-components/p-ff2ff5b0.js +2 -0
- package/dist/nano-components/p-ff2ff5b0.js.map +1 -0
- package/dist/nano-components/p-ff5890b4.entry.js +2 -0
- package/dist/nano-components/p-ff5890b4.entry.js.map +1 -0
- package/dist/nano-components/{p-dbe19aba.entry.js → p-ffab923c.entry.js} +2 -2
- package/dist/nano-components/{p-dbe19aba.entry.js.map → p-ffab923c.entry.js.map} +0 -0
- package/dist/themes/nanopore.css +1 -1
- package/dist/types/components/date-input/date-input.d.ts +9 -0
- package/dist/types/components/date-picker/date-picker.d.ts +9 -4
- package/dist/types/components/details/details.d.ts +1 -0
- package/dist/types/components/file-upload/file-upload-interface.d.ts +4 -3
- package/dist/types/components/file-upload/file-upload.d.ts +2 -12
- package/dist/types/components/input/input.d.ts +1 -0
- package/dist/types/components.d.ts +16 -7
- package/dist/types/utils/testing/index.d.ts +4 -1
- package/docs-json.json +60 -31
- package/docs-vscode.json +4 -0
- package/package.json +18 -19
- package/dist/cjs/algolia-data-4d5ee8da.js.map +0 -1
- package/dist/cjs/algoliasearch.umd-51f0001d.js +0 -12
- package/dist/cjs/algoliasearch.umd-51f0001d.js.map +0 -1
- package/dist/cjs/global-befb7a64.js.map +0 -1
- package/dist/cjs/index-197e7a3f.js.map +0 -1
- package/dist/esm/algolia-data-6db3f5f2.js.map +0 -1
- package/dist/esm/algoliasearch.umd-2c129faa.js +0 -10
- package/dist/esm/algoliasearch.umd-2c129faa.js.map +0 -1
- package/dist/esm/global-c85d24a2.js.map +0 -1
- package/dist/esm/index-8e9bc704.js.map +0 -1
- package/dist/esm-es5/algolia-data-6db3f5f2.js.map +0 -1
- package/dist/esm-es5/algoliasearch.umd-2c129faa.js +0 -4
- package/dist/esm-es5/algoliasearch.umd-2c129faa.js.map +0 -1
- package/dist/esm-es5/global-c85d24a2.js.map +0 -1
- package/dist/esm-es5/index-8e9bc704.js +0 -2
- package/dist/esm-es5/index-8e9bc704.js.map +0 -1
- package/dist/nano-components/p-01e5c484.system.entry.js +0 -2
- package/dist/nano-components/p-01e5c484.system.entry.js.map +0 -1
- package/dist/nano-components/p-0283a2ec.js.map +0 -1
- package/dist/nano-components/p-03e4f363.system.js +0 -2
- package/dist/nano-components/p-03e4f363.system.js.map +0 -1
- package/dist/nano-components/p-19aecfb6.js +0 -2
- package/dist/nano-components/p-19aecfb6.js.map +0 -1
- package/dist/nano-components/p-23da4de5.js +0 -4
- package/dist/nano-components/p-23da4de5.js.map +0 -1
- package/dist/nano-components/p-2e2b4393.system.entry.js +0 -2
- package/dist/nano-components/p-2e2b4393.system.entry.js.map +0 -1
- package/dist/nano-components/p-32c68c7c.entry.js +0 -2
- package/dist/nano-components/p-32c68c7c.entry.js.map +0 -1
- package/dist/nano-components/p-38ed336b.entry.js +0 -2
- package/dist/nano-components/p-38ed336b.entry.js.map +0 -1
- package/dist/nano-components/p-447ed63d.system.entry.js.map +0 -1
- package/dist/nano-components/p-44cf7aeb.entry.js.map +0 -1
- package/dist/nano-components/p-4573be34.entry.js +0 -2
- package/dist/nano-components/p-4573be34.entry.js.map +0 -1
- package/dist/nano-components/p-4d17169a.entry.js.map +0 -1
- package/dist/nano-components/p-5198e4c6.system.js.map +0 -1
- package/dist/nano-components/p-6403dd02.system.entry.js.map +0 -1
- package/dist/nano-components/p-68eb3c21.entry.js +0 -2
- package/dist/nano-components/p-68eb3c21.entry.js.map +0 -1
- package/dist/nano-components/p-6d718c9a.entry.js +0 -2
- package/dist/nano-components/p-6edd2945.system.entry.js +0 -2
- package/dist/nano-components/p-6edd2945.system.entry.js.map +0 -1
- package/dist/nano-components/p-7e259efb.system.entry.js.map +0 -1
- package/dist/nano-components/p-981f997c.entry.js.map +0 -1
- package/dist/nano-components/p-b19e2af5.entry.js +0 -2
- package/dist/nano-components/p-c6f7ce64.system.entry.js.map +0 -1
- package/dist/nano-components/p-c8945124.system.js.map +0 -1
- package/dist/nano-components/p-cb750e49.system.js +0 -4
- package/dist/nano-components/p-cb750e49.system.js.map +0 -1
- package/dist/nano-components/p-ddaa8946.entry.js.map +0 -1
- package/dist/nano-components/p-eb090a2c.system.entry.js +0 -2
- package/dist/nano-components/p-eb090a2c.system.entry.js.map +0 -1
- package/dist/nano-components/p-f2d24fc6.system.js +0 -2
- package/dist/nano-components/p-f31f23ad.entry.js +0 -2
- package/dist/nano-components/p-f31f23ad.entry.js.map +0 -1
- package/dist/nano-components/p-fc189b6d.js +0 -2
- package/dist/nano-components/p-fc189b6d.js.map +0 -1
- package/dist/nano-components/p-fd4630d0.system.entry.js +0 -2
- package/dist/nano-components/p-fd4630d0.system.entry.js.map +0 -1
@@ -1,2 +0,0 @@
|
|
1
|
-
var __awaiter=this&&this.__awaiter||function(e,t,a,n){function o(e){return e instanceof a?e:new a((function(t){t(e)}))}return new(a||(a=Promise))((function(a,i){function r(e){try{d(n.next(e))}catch(t){i(t)}}function s(e){try{d(n["throw"](e))}catch(t){i(t)}}function d(e){e.done?a(e.value):o(e.value).then(r,s)}d((n=n.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var a={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},n,o,i,r;return r={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function s(e){return function(t){return d([e,t])}}function d(r){if(n)throw new TypeError("Generator is already executing.");while(a)try{if(n=1,o&&(i=r[0]&2?o["return"]:r[0]?o["throw"]||((i=o["return"])&&i.call(o),0):o.next)&&!(i=i.call(o,r[1])).done)return i;if(o=0,i)r=[r[0]&2,i.value];switch(r[0]){case 0:case 1:i=r;break;case 4:a.label++;return{value:r[1],done:false};case 5:a.label++;o=r[1];r=[0];continue;case 7:r=a.ops.pop();a.trys.pop();continue;default:if(!(i=a.trys,i=i.length>0&&i[i.length-1])&&(r[0]===6||r[0]===2)){a=0;continue}if(r[0]===3&&(!i||r[1]>i[0]&&r[1]<i[3])){a.label=r[1];break}if(r[0]===6&&a.label<i[1]){a.label=i[1];i=r;break}if(i&&a.label<i[2]){a.label=i[2];a.ops.push(r);break}if(i[2])a.ops.pop();a.trys.pop();continue}r=t.call(e,a)}catch(s){r=[6,s];o=0}finally{n=i=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};System.register(["./p-03e4f363.system.js","./p-492a8fa8.system.js","./p-a057ad2d.system.js","./p-1477b91d.system.js","./p-94f03788.system.js","./p-0c67773b.system.js"],(function(e){"use strict";var t,a,n,o,i,r,s,d,l,c,u,h,p,f,b,g,v,y,m,w,_,x;return{setters:[function(e){t=e.h;a=e.r;n=e.c;o=e.e;i=e.g},function(e){r=e.b;s=e.D;d=e.i;l=e.p;c=e.d;u=e.s;h=e.e;p=e.f;f=e.g;b=e.h;g=e.j;v=e.k;y=e.a},function(e){m=e.c},function(e){w=e.P},function(e){_=e.t},function(e){x=e.a}],execute:function(){var D;(function(e){e[e["Sunday"]=0]="Sunday";e[e["Monday"]=1]="Monday";e[e["Tuesday"]=2]="Tuesday";e[e["Wednesday"]=3]="Wednesday";e[e["Thursday"]=4]="Thursday";e[e["Friday"]=5]="Friday";e[e["Saturday"]=6]="Saturday"})(D||(D={}));function k(e,t){if(e==null||t==null){return false}return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function M(e,t){var a=new Date(e);a.setDate(a.getDate()+t);return a}function S(e,t){if(t===void 0){t=D.Monday}var a=new Date(e);var n=a.getDay();var o=(n<t?7:0)+n-t;a.setDate(a.getDate()-o);return a}function T(e,t){if(t===void 0){t=D.Monday}var a=new Date(e);var n=a.getDay();var o=(n<t?-7:0)+6-(n-t);a.setDate(a.getDate()+o);return a}function F(e){return new Date(e.getFullYear(),e.getMonth(),1)}function z(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function Y(e,t,a){return O(e,t,a)===e}function O(e,t,a){var n=e.getTime();if(t&&t instanceof Date&&n<t.getTime()){return t}if(a&&a instanceof Date&&n>a.getTime()){return a}return e}function C(e,t){var a=[];var n=e;while(!k(n,t)){a.push(n);n=M(n,1)}a.push(n);return a}function A(e,t){if(t===void 0){t=D.Monday}var a=S(F(e),t);var n=T(z(e),t);return C(a,n)}var N=function(e){var a=e.focusedDay,n=e.today,o=e.day,i=e.onDaySelect,r=e.onKeyboardNavigation,s=e.focusedDayRef,d=e.inRange,l=e.disabled,c=e.isSelected;var u=k(o,n);var h=k(o,a);var p=o.getMonth()!==a.getMonth()||l;var f=!d;function b(e){i(e,o)}return t("button",{class:{"duet-date__day":true,"is-outside":f,"is-disabled":p,"is-today":u},tabIndex:h?0:-1,onClick:b,onKeyDown:r,disabled:f,type:"button","aria-pressed":c?"true":"false",ref:function(e){if(h&&e&&s){s(e)}}},t("span",{"aria-hidden":"true"},o.getDate()),t("span",{class:"duet-date__vhidden"},o.toLocaleDateString(undefined,{day:"numeric",month:"long"})))};function P(e,t){var a=[];for(var n=0;n<e.length;n+=t){a.push(e.slice(n,n+t))}return a}function L(e,t,a){return e.map((function(n,o){var i=(o+t)%e.length;return a(e[i])}))}var E=function(e){var a=e.selectedDate,n=e.focusedDate,o=e.labelledById,i=e.localization,r=e.firstDayOfWeek,s=e.min,d=e.max,l=e.onDateSelect,c=e.onKeyboardNavigation,u=e.focusedDayRef,h=e.onMouseDown,p=e.onFocusIn,f=e.isDateDisabled;var b=new Date;var g=A(n,r);return t("table",{class:"duet-date__table",role:"grid","aria-labelledby":o,onFocusin:p,onMouseDown:h},t("thead",null,t("tr",null,L(i.dayNames,r,(function(e){return t("th",{class:"duet-date__table-header",scope:"col"},t("span",{"aria-hidden":"true"},e.substr(0,2)),t("span",{class:"duet-date__vhidden"},e))})))),t("tbody",null,P(g,7).map((function(e){return t("tr",{class:"duet-date__row"},e.map((function(e){return t("td",{class:"duet-date__cell",role:"gridcell","aria-selected":k(e,a)?"true":undefined},t(N,{day:e,today:b,focusedDay:n,inRange:Y(e,s,d),onDaySelect:l,onKeyboardNavigation:c,focusedDayRef:u,disabled:f(e),isSelected:k(e,a)}))})))}))))};var I={buttonLabel:"Choose date",placeholder:"YYYY-MM-DD",selectedDateMessage:"Selected date is",prevMonthLabel:"Previous month",nextMonthLabel:"Next month",monthSelectLabel:"Month",yearSelectLabel:"Year",closeLabel:"Close window",keyboardInstruction:"You can use arrow keys to navigate dates",calendarHeading:"Choose a date",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]};var W=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #0084a9));--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, #0084a9));--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}.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+.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}';function K(e,t){var a=[];for(var n=e;n<=t;n++){a.push(n)}return a}var j=e("nano_date_picker",function(){function e(e){var t=this;a(this,e);this.nanoDatePicked=n(this,"nanoDatePicked",7);this.monthSelectId=r("NanoDateMonth");this.yearSelectId=r("NanoDateYear");this.dialogLabelId=r("NanoDateLabel");this.initialTouchX=null;this.initialTouchY=null;this.activeFocus=false;this.focusedDay=new Date;this.selectedDate="";this.min="";this.max="";this.firstDayOfWeek=s.Monday;this.localization=I;this.isDateDisabled=function(){return false};this.isModal=false;this.enableActiveFocus=function(){t.activeFocus=true};this.disableActiveFocus=function(){t.activeFocus=false};this.handleTouchStart=function(e){var a=e.changedTouches[0];t.initialTouchX=a.pageX;t.initialTouchY=a.pageY};this.handleTouchMove=function(e){e.preventDefault()};this.handleTouchEnd=function(e){var a=e.changedTouches[0];var n=a.pageX-t.initialTouchX;var o=a.pageY-t.initialTouchY;var i=70;var r=Math.abs(n)>=i&&Math.abs(o)<=i;if(r){t.addMonths(n<0?1:-1)}t.initialTouchY=null;t.initialTouchX=null};this.handleNextMonthClick=function(e){e.preventDefault();t.addMonths(1)};this.handlePreviousMonthClick=function(e){e.preventDefault();t.addMonths(-1)};this.handleKeyboardNavigation=function(e){if(e.key==="Tab"&&!e.shiftKey&&t.isModal){e.preventDefault();var a=t.firstFocusEle||t.firstFocusableElement;a.focus();return}var n=true;switch(e.key){case"ArrowRight":t.addDays(1);break;case"ArrowLeft":t.addDays(-1);break;case"ArrowDown":t.addDays(7);break;case"ArrowUp":t.addDays(-7);break;case"PageUp":if(e.shiftKey){t.addYears(-1)}else{t.addMonths(-1)}break;case"PageDown":if(e.shiftKey){t.addYears(1)}else{t.addMonths(1)}break;case"Home":t.startOfWeek();break;case"End":t.endOfWeek();break;default:n=false}if(n){e.preventDefault();t.enableActiveFocus()}};this.handleDaySelect=function(e,a){var n=!t.isDateDisabled(a);var o=d(a,l(t.min),l(t.max));if(!o||!n){return}if(a.getMonth()===t.focusedDay.getMonth()){t.setValue(a)}else{t.setFocusedDay(a)}};this.handleMonthSelect=function(e){t.setMonth(parseInt(e.target.value,10))};this.handleYearSelect=function(e){t.setYear(parseInt(e.target.value,10))};this.processFocusedDayNode=function(e){t.focusedDayNode=e;if(t.activeFocus){setTimeout((function(){return e.focus()}),0)}}}e.prototype.setFocus=function(e){if(e===void 0){e=false}return __awaiter(this,void 0,void 0,(function(){var t=this;return __generator(this,(function(a){this.setFocusedDay(l(this.selectedDate)||new Date);if(e){setTimeout((function(e){return t.focusedDayNode.focus()}),20);return[2]}clearTimeout(this.focusTimeoutId);this.focusTimeoutId=setTimeout((function(){return t.monthSelectNode.focus()}),20);return[2]}))}))};e.prototype.handleSelectedDateChange=function(){this.setFocus(true)};e.prototype.addDays=function(e){this.setFocusedDay(c(this.focusedDay,e))};e.prototype.addMonths=function(e){this.setMonth(this.focusedDay.getMonth()+e)};e.prototype.addYears=function(e){this.setYear(this.focusedDay.getFullYear()+e)};e.prototype.startOfWeek=function(){this.setFocusedDay(u(this.focusedDay,this.firstDayOfWeek))};e.prototype.endOfWeek=function(){this.setFocusedDay(h(this.focusedDay,this.firstDayOfWeek))};e.prototype.setMonth=function(e){var t=p(f(this.focusedDay),e);var a=b(t);var n=p(this.focusedDay,e);this.setFocusedDay(g(n,t,a))};e.prototype.setYear=function(e){var t=v(f(this.focusedDay),e);var a=b(t);var n=v(this.focusedDay,e);this.setFocusedDay(g(n,t,a))};e.prototype.setFocusedDay=function(e){this.focusedDay=g(e,l(this.min),l(this.max))};e.prototype.setValue=function(e){this.selectedDate=y(e);this.nanoDatePicked.emit({value:this.selectedDate,valueAsDate:e})};e.prototype.componentWillLoad=function(){this.handleSelectedDateChange()};e.prototype.render=function(){var e=this;var a=l(this.selectedDate);var n=(a||this.focusedDay).getFullYear();var i=this.focusedDay.getMonth();var r=this.focusedDay.getFullYear();var s=l(this.min);var c=l(this.max);var u=s!=null&&s.getMonth()===i&&s.getFullYear()===r;var h=c!=null&&c.getMonth()===i&&c.getFullYear()===r;var p=n-10;var g=n+10;if(s)p=s.getFullYear();if(c)g=c.getFullYear();return t(o,{class:Object.assign({},m(this.color))},t("div",{class:"duet-date"},t("div",{class:{"duet-date__dialog":true,"is-active":true},onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd},t("div",{class:"duet-date__dialog-content"},t("div",{class:"duet-date__vhidden duet-date__instructions","aria-live":"polite"},this.localization.keyboardInstruction),t("div",{class:"duet-date__header",onFocusin:this.disableActiveFocus},t("div",null,t("h2",{id:this.dialogLabelId,class:"duet-date__vhidden","aria-live":"polite"},this.localization.monthNames[i]," ",this.focusedDay.getFullYear()),t("label",{htmlFor:this.monthSelectId,class:"duet-date__vhidden"},this.localization.monthSelectLabel),t("div",{class:"duet-date__select"},t("select",{id:this.monthSelectId,class:"duet-date__select--month",ref:function(t){return e.firstFocusableElement=e.monthSelectNode=t},onChange:this.handleMonthSelect},this.localization.monthNames.map((function(e,a){return t("option",{key:e,value:a,selected:a===i,disabled:!d(new Date(r,a,1),s?f(s):null,c?b(c):null)},e)}))),t("div",{class:"duet-date__select-label","aria-hidden":"true"},t("span",null,this.localization.monthNamesShort[i]),t("nano-icon",{name:"light/chevron-down"}))),t("label",{htmlFor:this.yearSelectId,class:"duet-date__vhidden"},this.localization.yearSelectLabel),t("div",{class:"duet-date__select"},t("select",{id:this.yearSelectId,class:"duet-date__select--year",onChange:this.handleYearSelect},K(p,g).map((function(e){return t("option",{key:e,selected:e===r},e)}))),t("div",{class:"duet-date__select-label","aria-hidden":"true"},t("span",null,this.focusedDay.getFullYear()),t("nano-icon",{name:"light/chevron-down"})))),t("div",{class:"duet-date__nav"},t("button",{class:"duet-date__prev",onClick:this.handlePreviousMonthClick,disabled:u,type:"button"},t("nano-icon",{name:"light/chevron-left"}),t("span",{class:"duet-date__vhidden"},this.localization.prevMonthLabel)),t("button",{class:"duet-date__next",onClick:this.handleNextMonthClick,disabled:h,type:"button"},t("nano-icon",{name:"light/chevron-right"}),t("span",{class:"duet-date__vhidden"},this.localization.nextMonthLabel)))),t("div",null,t(E,{selectedDate:a,focusedDate:this.focusedDay,onDateSelect:this.handleDaySelect,onKeyboardNavigation:this.handleKeyboardNavigation,labelledById:this.dialogLabelId,localization:this.localization,firstDayOfWeek:this.firstDayOfWeek,focusedDayRef:this.processFocusedDayNode,min:s,max:c,isDateDisabled:this.isDateDisabled}))))))};Object.defineProperty(e.prototype,"host",{get:function(){return i(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{selectedDate:["handleSelectedDateChange"]}},enumerable:false,configurable:true});return e}());j.style=W;var H=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--width:auto;--border:var(--nano-layer-border-style, 1px solid var(--nano-layer-border-color, rgba(0, 0, 0, 0.1)));--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--background:var(--nano-layer-bg, #fff);--padding:10px 0;--overflow:hidden;--dropdown-z-index:var(--nano-layer-index-dropdown, 300)}.dropdown{position:relative}.dropdown__trigger{display:block}.dropdown__positioner{position:absolute;z-index:var(--dropdown-z-index)}@media (max-width: 35.9375em){.dropdown__positioner{z-index:100}}.dropdown__panel{padding:var(--padding);background:var(--background);width:var(--width);border:var(--border);border-radius:var(--border-radius);color:currentColor;-webkit-box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);box-shadow:0 2px 8px rgba(0, 0, 0, 0.1);opacity:0;-webkit-transition:0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;transition:0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;min-height:20px;overflow:var(--overflow);-webkit-box-sizing:content-box !important;box-sizing:content-box !important}.dropdown__panel.top{-webkit-transform:translateY(-20px) translateZ(0);transform:translateY(-20px) translateZ(0)}.dropdown__panel.bottom{-webkit-transform:translateY(20px) translateZ(0);transform:translateY(20px) translateZ(0)}.dropdown__positioner.popover-visible .dropdown__panel{opacity:1;-webkit-transform:translateY(0) translateZ(0);transform:translateY(0) translateZ(0)}.dropdown__panel ::slotted(nano-menu){max-height:50vh}.dropdown__accessible-title{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}";var R=e("nano_dropdown",function(){function e(e){var t=this;a(this,e);this.nanoShow=n(this,"nanoShow",7);this.nanoAfterShow=n(this,"nanoAfterShow",7);this.nanoHide=n(this,"nanoHide",7);this.nanoAfterHide=n(this,"nanoAfterHide",7);this.dropdownId="dropdown-"+J++;this.labelId=this.dropdownId+"-title";this.ignoreOpenWatcher=false;this.menuFocused=false;this.autoOpen=true;this.open=false;this.closeOnSelect=true;this.tetherTo=null;this.placement="bottom-start";this.distance=2;this.skidding=0;this.hoist=false;this.togglePanel=function(){if(!t.autoOpen)return;t.open?t.hide():t.show()};this.handleTriggerKeyDown=function(e){if(!t.open&&["ArrowDown","ArrowUp"," "].includes(e.key)){t.show();e.preventDefault();e.stopPropagation()}};this.handleTriggerSlotChange=function(){t.updateAccessibleTrigger()}}e.prototype.handleOpenChange=function(){if(!this.ignoreOpenWatcher){this.open?this.show():this.hide();this.updateAccessibleTrigger()}};e.prototype.handleTetherToChange=function(){this.createPopover();this.updateAccessibleTrigger()};e.prototype.handlePopoverOptionsChange=function(){this.popover.setOptions({strategy:this.hoist?"fixed":"absolute",placement:this.placement,skidding:this.skidding,distance:this.distance})};e.prototype.menuFocus=function(e){var t=e.target;if(!t||!t.tagName||t.tagName.toLowerCase()!=="nano-menu")return;this.menuFocused=true};e.prototype.secondaryOpen=function(e){var t=this;if(!e.detail.secondaryMenu)return;e.stopPropagation();this.panel.classList.add("loading");_(this.panel).then((function(){return t.panel.classList.remove("loading")}));this.panel.style.minHeight=e.detail.secondaryMenu.scrollHeight+"px"};e.prototype.secondaryClose=function(e){if(!e.detail.secondaryMenu)return;e.stopPropagation();if(!e.target.parentElement)return;this.panel.style.minHeight=e.target.parentElement.scrollHeight+"px"};e.prototype.handlePanelSelect=function(e){var t=e.target;if(this.closeOnSelect&&t.tagName.toLowerCase()==="nano-menu")this.hide()};e.prototype.show=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){this.ignoreOpenWatcher=true;this.open=true;e=this.nanoShow.emit();if(e.defaultPrevented){this.open=false;this.ignoreOpenWatcher=false;return[2]}this.popover.show();this.ignoreOpenWatcher=false;document.addEventListener("mousedown",this.handleDocumentMouseDown);document.addEventListener("keydown",this.handleDocumentKeyDown);return[2]}))}))};e.prototype.hide=function(){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(t){this.ignoreOpenWatcher=true;this.open=false;e=this.nanoHide.emit();if(e.defaultPrevented){this.open=true;this.ignoreOpenWatcher=false;return[2]}if(this.popover)this.popover.hide();this.ignoreOpenWatcher=false;document.removeEventListener("mousedown",this.handleDocumentMouseDown);document.removeEventListener("keydown",this.handleDocumentKeyDown);this.menuFocused=false;return[2]}))}))};e.prototype.getMenu=function(){return this.host.querySelector("nano-menu")};e.prototype.updateAccessibleTrigger=function(){var e;if(!this.tetherTo){var t=Array.from(this.host.querySelectorAll('[slot="trigger"]'));e=t.map(x)[0]}else{e=this.tetherTo}if(e){e.setAttribute("aria-haspopup","true");e.setAttribute("aria-expanded",this.open?"true":"false")}};e.prototype.handleDocumentKeyDown=function(e){var t=this;if(e.key==="Escape"){this.hide();return}if(e.key==="Tab"){setTimeout((function(){if(document.activeElement&&document.activeElement.closest(t.containingElement.tagName.toLowerCase())!==t.containingElement){t.hide();return}}))}var a=this.getMenu();if(a&&["ArrowDown","ArrowUp"].includes(e.key)){if(!this.open||this.menuFocused)return;e.preventDefault();a.setFocus();return}if(a&&e.target!==a){a.dispatchEvent(new KeyboardEvent(e.type,e));return}};e.prototype.handleDocumentMouseDown=function(e){var t=e.target;if(t.closest(this.containingElement.tagName.toLowerCase())!==this.containingElement){this.hide();return}};e.prototype.createPopover=function(){var e=this;if(this.popover){this.hide();this.popover.destroy();this.popover=null}this.popover=new w(this.tetherTo||this.trigger,this.positioner,{strategy:this.hoist?"fixed":"absolute",placement:this.placement,distance:this.distance,skidding:this.skidding,transitionElement:this.panel,onAfterHide:function(){return e.nanoAfterHide.emit()},onAfterShow:function(){return e.nanoAfterShow.emit()},onTransitionEnd:function(){if(!e.open){e.panel.scrollTop=0}}});if(this.open){this.show()}};e.prototype.connectedCallback=function(){this.handleDocumentKeyDown=this.handleDocumentKeyDown.bind(this);this.handleDocumentMouseDown=this.handleDocumentMouseDown.bind(this);this.handlePanelSelect=this.handlePanelSelect.bind(this);if(!this.containingElement)this.containingElement=this.host};e.prototype.componentDidLoad=function(){this.createPopover()};e.prototype.disconnectedCallback=function(){this.hide();if(this.popover)this.popover.destroy()};e.prototype.render=function(){var e=this;return t("div",{part:"base",id:this.dropdownId,class:{dropdown:true,"dropdown--open":this.open},"aria-expanded":this.open?"true":"false","aria-haspopup":"true"},t("span",{part:"trigger",class:"dropdown__trigger",ref:function(t){return e.trigger=t},onKeyDown:this.handleTriggerKeyDown,onClick:this.togglePanel},t("slot",{name:"trigger",onSlotchange:this.handleTriggerSlotChange})),t("div",{ref:function(t){return e.positioner=t},class:"dropdown__positioner"},t("div",{ref:function(t){return e.panel=t},part:"panel",class:"dropdown__panel "+this.placement.split("-").join(" "),"aria-hidden":!this.open,role:"dialog","aria-modal":"true","aria-labelledby":this.dialogTitle?this.labelId:undefined},this.dialogTitle&&t("h2",{id:this.labelId,class:"dropdown__accessible-title","aria-live":"polite"},this.dialogTitle),t("slot",null))))};Object.defineProperty(e.prototype,"host",{get:function(){return i(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{open:["handleOpenChange"],tetherTo:["handleTetherToChange"],placement:["handlePopoverOptionsChange"],distance:["handlePopoverOptionsChange"],skidding:["handlePopoverOptionsChange"],hoist:["handlePopoverOptionsChange"]}},enumerable:false,configurable:true});return e}());var J=0;R.style=H}}}));
|
2
|
-
//# sourceMappingURL=p-fd4630d0.system.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["src/components/date-picker/duet-date-picker/date-utils.ts","src/components/date-picker/duet-date-picker/date-picker-day.tsx","src/components/date-picker/duet-date-picker/date-picker-month.tsx","src/components/date-picker/duet-date-picker/date-localization.ts","src/components/date-picker/date-picker.scss?tag=nano-date-picker&encapsulation=shadow","src/components/date-picker/date-picker.tsx","src/components/dropdown/dropdown.scss?tag=nano-dropdown&encapsulation=shadow","src/components/dropdown/dropdown.tsx"],"names":["DaysOfWeek","isEqual","a","b","getFullYear","getMonth","getDate","addDays","date","days","d","Date","setDate","startOfWeek","firstDayOfWeek","Monday","day","getDay","diff","endOfWeek","startOfMonth","endOfMonth","inRange","min","max","clamp","time","getTime","getDaysInRange","start","end","current","push","getViewOfMonth","DatePickerDay","_a","focusedDay","today","onDaySelect","onKeyboardNavigation","focusedDayRef","disabled","isSelected","isToday","isFocused","isDisabled","isOutsideRange","handleClick","e","h","class","duet-date__day","is-outside","is-disabled","is-today","tabIndex","onClick","onKeyDown","type","aria-pressed","ref","el","aria-hidden","toLocaleDateString","undefined","month","chunk","array","chunkSize","result","i","length","slice","mapWithOffset","startingOffset","mapFn","map","_","adjustedIndex","DatePickerMonth","selectedDate","focusedDate","labelledById","localization","onDateSelect","onMouseDown","onFocusIn","isDateDisabled","role","aria-labelledby","onFocusin","dayNames","dayName","scope","substr","week","aria-selected","buttonLabel","placeholder","selectedDateMessage","prevMonthLabel","nextMonthLabel","monthSelectLabel","yearSelectLabel","closeLabel","keyboardInstruction","calendarHeading","monthNames","monthNamesShort","datePickerCss","range","from","to","NanoDatePicker","exports","class_1","hostRef","_this","this","monthSelectId","createIdentifier","yearSelectId","dialogLabelId","initialTouchX","initialTouchY","activeFocus","defaultLocalization","isModal","enableActiveFocus","disableActiveFocus","handleTouchStart","event","touch","changedTouches","pageX","pageY","handleTouchMove","preventDefault","handleTouchEnd","distX","distY","threshold","isHorizontalSwipe","Math","abs","addMonths","handleNextMonthClick","handlePreviousMonthClick","handleKeyboardNavigation","key","shiftKey","ele","firstFocusEle","firstFocusableElement","focus","handled","addYears","handleDaySelect","_event","isAllowed","isInRange","parseISODate","setValue","setFocusedDay","handleMonthSelect","setMonth","parseInt","target","value","handleYearSelect","setYear","processFocusedDayNode","element","focusedDayNode","setTimeout","prototype","setFocus","clearTimeout","focusTimeoutId","monthSelectNode","handleSelectedDateChange","months","years","year","printISODate","nanoDatePicked","emit","valueAsDate","componentWillLoad","render","selectedYear","focusedMonth","focusedYear","minDate","maxDate","prevMonthDisabled","nextMonthDisabled","minYear","maxYear","Host","Object","assign","createColorClasses","color","duet-date__dialog","is-active","onTouchMove","onTouchStart","onTouchEnd","aria-live","id","htmlFor","onChange","selected","name","dropdownCss","Dropdown","class_2","dropdownId","dropDownIds","labelId","ignoreOpenWatcher","menuFocused","autoOpen","open","closeOnSelect","tetherTo","placement","distance","skidding","hoist","togglePanel","hide","show","handleTriggerKeyDown","includes","stopPropagation","handleTriggerSlotChange","updateAccessibleTrigger","handleOpenChange","handleTetherToChange","createPopover","handlePopoverOptionsChange","popover","setOptions","strategy","menuFocus","ev","tagName","toLowerCase","secondaryOpen","detail","secondaryMenu","panel","classList","add","transitionDone","then","remove","style","minHeight","scrollHeight","secondaryClose","parentElement","handlePanelSelect","nanoShow","defaultPrevented","document","addEventListener","handleDocumentMouseDown","handleDocumentKeyDown","nanoHide","removeEventListener","getMenu","host","querySelector","accessibleTrigger","assignedElements","Array","querySelectorAll","getNearestTabbableElement","setAttribute","activeElement","closest","containingElement","menu","dispatchEvent","KeyboardEvent","destroy","Popover","trigger","positioner","transitionElement","onAfterHide","nanoAfterHide","onAfterShow","nanoAfterShow","onTransitionEnd","scrollTop","connectedCallback","bind","componentDidLoad","disconnectedCallback","part","dropdown","dropdown--open","aria-expanded","aria-haspopup","onSlotchange","split","join","aria-modal","dialogTitle"],"mappings":"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","sourcesContent":["const ISO_DATE_FORMAT = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\nexport enum DaysOfWeek {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\nexport function createDate(year: string, month: string, day: string): Date {\n var dayInt = parseInt(day, 10);\n var monthInt = parseInt(month, 10);\n var yearInt = parseInt(year, 10);\n\n const isValid =\n Number.isInteger(yearInt) && // all parts should be integers\n Number.isInteger(monthInt) &&\n Number.isInteger(dayInt) &&\n monthInt > 0 && // month must be 1-12\n monthInt <= 12 &&\n dayInt > 0 && // day must be 1-31\n dayInt <= 31 &&\n yearInt > 0;\n\n if (isValid) {\n return new Date(yearInt, monthInt - 1, dayInt);\n }\n}\n\n/**\n * @param value date string in ISO format YYYY-MM-DD\n */\nexport function parseISODate(value: string): Date {\n if (!value) {\n return;\n }\n\n const matches = value.match(ISO_DATE_FORMAT);\n\n if (matches) {\n return createDate(matches[1], matches[2], matches[3]);\n }\n}\n\n/**\n * print date in format YYYY-MM-DD\n * @param date\n */\nexport function printISODate(date: Date): string {\n if (!date) {\n return '';\n }\n\n var d = date.getDate().toString(10);\n var m = (date.getMonth() + 1).toString(10);\n var y = date.getFullYear().toString(10);\n\n // days are not zero-indexed, so pad if less than 10\n if (date.getDate() < 10) {\n d = `0${d}`;\n }\n\n // months *are* zero-indexed, pad if less than 9!\n if (date.getMonth() < 9) {\n m = `0${m}`;\n }\n\n return `${y}-${m}-${d}`;\n}\n\n/**\n * Compare if two dates are equal in terms of day, month, and year\n */\nexport function isEqual(a: Date, b: Date): boolean {\n if (a == null || b == null) {\n return false;\n }\n\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function addDays(date: Date, days: number): Date {\n var d = new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const d = new Date(date);\n d.setMonth(date.getMonth() + months);\n return d;\n}\n\nexport function addYears(date: Date, years: number): Date {\n const d = new Date(date);\n d.setFullYear(date.getFullYear() + years);\n return d;\n}\n\nexport function startOfWeek(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date {\n var d = new Date(date);\n var day = d.getDay();\n var diff = (day < firstDayOfWeek ? 7 : 0) + day - firstDayOfWeek;\n\n d.setDate(d.getDate() - diff);\n return d;\n}\n\nexport function endOfWeek(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date {\n var d = new Date(date);\n var day = d.getDay();\n var diff = (day < firstDayOfWeek ? -7 : 0) + 6 - (day - firstDayOfWeek);\n\n d.setDate(d.getDate() + diff);\n return d;\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nexport function setMonth(date: Date, month: number): Date {\n const d = new Date(date);\n d.setMonth(month);\n return d;\n}\n\nexport function setYear(date: Date, year: number): Date {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n}\n\n/**\n * Check if date is within a min and max\n */\nexport function inRange(date: Date, min?: Date, max?: Date): boolean {\n return clamp(date, min, max) === date;\n}\n\n/**\n * Ensures date is within range, returns min or max if out of bounds\n */\nexport function clamp(date: Date, min?: Date, max?: Date): Date {\n const time = date.getTime();\n\n if (min && min instanceof Date && time < min.getTime()) {\n return min;\n }\n\n if (max && max instanceof Date && time > max.getTime()) {\n return max;\n }\n\n return date;\n}\n\n/**\n * given start and end date, return an (inclusive) array of all dates in between\n * @param start\n * @param end\n */\nfunction getDaysInRange(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = start;\n\n while (!isEqual(current, end)) {\n days.push(current);\n current = addDays(current, 1);\n }\n\n days.push(current);\n\n return days;\n}\n\n/**\n * given a date, return an array of dates from a calendar perspective\n * @param date\n * @param firstDayOfWeek\n */\nexport function getViewOfMonth(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date[] {\n const start = startOfWeek(startOfMonth(date), firstDayOfWeek);\n const end = endOfWeek(endOfMonth(date), firstDayOfWeek);\n\n return getDaysInRange(start, end);\n}\n\n/**\n * Form random hash\n */\nexport function chr4() {\n return Math.random().toString(16).slice(-4);\n}\n\n/**\n * Create random identifier with a prefix\n * @param prefix\n */\nexport function createIdentifier(prefix) {\n return `${prefix}-${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;\n}\n","import { h, FunctionalComponent } from '@stencil/core';\nimport { isEqual } from './date-utils';\n\nexport type DatePickerDayProps = {\n focusedDay: Date;\n today: Date;\n day: Date;\n inRange: boolean;\n disabled: boolean;\n onDaySelect: (event: MouseEvent, day: Date) => void;\n onKeyboardNavigation: (event: KeyboardEvent) => void;\n focusedDayRef?: (element: HTMLButtonElement) => void;\n isSelected;\n};\n\nexport const DatePickerDay: FunctionalComponent<DatePickerDayProps> = ({\n focusedDay,\n today,\n day,\n onDaySelect,\n onKeyboardNavigation,\n focusedDayRef,\n inRange,\n disabled,\n isSelected,\n}) => {\n const isToday = isEqual(day, today);\n const isFocused = isEqual(day, focusedDay);\n const isDisabled = day.getMonth() !== focusedDay.getMonth() || disabled;\n const isOutsideRange = !inRange;\n\n function handleClick(e) {\n onDaySelect(e, day);\n }\n\n return (\n <button\n class={{\n 'duet-date__day': true,\n 'is-outside': isOutsideRange,\n 'is-disabled': isDisabled,\n 'is-today': isToday,\n }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={onKeyboardNavigation}\n disabled={isOutsideRange}\n type=\"button\"\n aria-pressed={isSelected ? 'true' : 'false'}\n ref={(el) => {\n if (isFocused && el && focusedDayRef) {\n focusedDayRef(el);\n }\n }}\n >\n <span aria-hidden=\"true\">{day.getDate()}</span>\n <span class=\"duet-date__vhidden\">\n {day.toLocaleDateString(undefined, { day: 'numeric', month: 'long' })}\n </span>\n </button>\n );\n};\n","import { h, FunctionalComponent } from '@stencil/core';\nimport { DuetLocalizedText } from './date-localization';\nimport { DatePickerDay, DatePickerDayProps } from './date-picker-day';\nimport { getViewOfMonth, inRange, DaysOfWeek, isEqual } from './date-utils';\nimport { DateDisabledPredicate } from '../../../interface';\n\nfunction chunk<T>(array: T[], chunkSize: number): T[][] {\n const result = [];\n\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n\n return result;\n}\n\nfunction mapWithOffset<T, U>(\n array: T[],\n startingOffset: number,\n mapFn: (item: T) => U\n): U[] {\n return array.map((_, i) => {\n const adjustedIndex = (i + startingOffset) % array.length;\n return mapFn(array[adjustedIndex]);\n });\n}\n\ntype DatePickerMonthProps = {\n selectedDate: Date;\n focusedDate: Date;\n labelledById: string;\n localization: DuetLocalizedText;\n firstDayOfWeek: DaysOfWeek;\n min?: Date;\n max?: Date;\n onDateSelect: DatePickerDayProps['onDaySelect'];\n onKeyboardNavigation: DatePickerDayProps['onKeyboardNavigation'];\n focusedDayRef: (element: HTMLButtonElement) => void;\n onFocusIn?: (e: FocusEvent) => void;\n onMouseDown?: (e: MouseEvent) => void;\n isDateDisabled: DateDisabledPredicate;\n};\n\nexport const DatePickerMonth: FunctionalComponent<DatePickerMonthProps> = ({\n selectedDate,\n focusedDate,\n labelledById,\n localization,\n firstDayOfWeek,\n min,\n max,\n onDateSelect,\n onKeyboardNavigation,\n focusedDayRef,\n onMouseDown,\n onFocusIn,\n isDateDisabled,\n}) => {\n const today = new Date();\n const days = getViewOfMonth(focusedDate, firstDayOfWeek);\n\n return (\n <table\n class=\"duet-date__table\"\n role=\"grid\"\n aria-labelledby={labelledById}\n // @ts-ignore\n onFocusin={onFocusIn}\n onMouseDown={onMouseDown}\n >\n <thead>\n <tr>\n {mapWithOffset(localization.dayNames, firstDayOfWeek, (dayName) => (\n <th class=\"duet-date__table-header\" scope=\"col\">\n <span aria-hidden=\"true\">{dayName.substr(0, 2)}</span>\n <span class=\"duet-date__vhidden\">{dayName}</span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {chunk(days, 7).map((week) => (\n <tr class=\"duet-date__row\">\n {week.map((day) => (\n <td\n class=\"duet-date__cell\"\n role=\"gridcell\"\n aria-selected={isEqual(day, selectedDate) ? 'true' : undefined}\n >\n <DatePickerDay\n day={day}\n today={today}\n focusedDay={focusedDate}\n inRange={inRange(day, min, max)}\n onDaySelect={onDateSelect}\n onKeyboardNavigation={onKeyboardNavigation}\n focusedDayRef={focusedDayRef}\n disabled={isDateDisabled(day)}\n isSelected={isEqual(day, selectedDate)}\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n","type MonthsNames = [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n];\ntype DayNames = [string, string, string, string, string, string, string];\n\nexport type DuetLocalizedText = {\n buttonLabel: string;\n placeholder: string;\n selectedDateMessage: string;\n prevMonthLabel: string;\n nextMonthLabel: string;\n monthSelectLabel: string;\n yearSelectLabel: string;\n closeLabel: string;\n keyboardInstruction: string;\n calendarHeading: string;\n dayNames: DayNames;\n monthNames: MonthsNames;\n monthNamesShort: MonthsNames;\n};\n\nconst localization: DuetLocalizedText = {\n buttonLabel: 'Choose date',\n placeholder: 'YYYY-MM-DD',\n selectedDateMessage: 'Selected date is',\n prevMonthLabel: 'Previous month',\n nextMonthLabel: 'Next month',\n monthSelectLabel: 'Month',\n yearSelectLabel: 'Year',\n closeLabel: 'Close window',\n keyboardInstruction: 'You can use arrow keys to navigate dates',\n calendarHeading: 'Choose a date',\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthNamesShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n};\n\nexport default localization;\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --background: defaults to #{$layer-bg-color}\n * @prop --active-color: defaults to var(--nano-color-base, #{nano-color(primary,base)})\n * @prop --active-text-color: defaults to var(--nano-color-contrast, #{nano-color(primary, contrast)})\n * @prop --focus-shadow: defaults to #{$control-focus-style}\n * @prop --inactive-color: defaults to #{$button-bg-color}\n */\n\n --background: #{$layer-bg-color};\n --active-color: var(--nano-color-base, #{nano-color(primary, base)});\n --active-text-color:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --focus-shadow: #{$control-focus-style};\n --inactive-color: #{$button-bg-color};\n\n display: block;\n font-size: 16px;\n}\n\n:host(.nano-color) {\n --active-color: var(--nano-color-base, #{nano-color(primary, base)});\n --active-text-color: #{current-color(contrast)};\n --focus-shadow: #{$control-focus-size current-color(tint, 0.56)};\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER\n// ---------------------------------------------\n\n.duet-date *,\n.duet-date *::before,\n.duet-date *::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n.duet-date {\n box-sizing: border-box;\n color: currentColor;\n display: block;\n margin: 0;\n position: relative;\n text-align: left;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ DIALOG\n// ---------------------------------------------\n\n.duet-date__dialog {\n display: flex;\n top: 100%;\n max-width: 100%;\n width: 100%;\n\n &.is-left {\n left: auto;\n right: 0;\n width: auto;\n }\n}\n\n.duet-date__dialog-content {\n background: var(--background);\n min-width: 290px;\n padding: 16px 16px 20px;\n position: relative;\n transform: none;\n max-width: 100%;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ TABLE\n// ---------------------------------------------\n\n.duet-date__table {\n border-collapse: collapse;\n border-spacing: 0;\n font-size: 1em;\n line-height: 1.25;\n text-align: center;\n width: 100%;\n}\n\n.duet-date__table-header {\n font-size: 0.75em;\n font-weight: 600;\n letter-spacing: 1px;\n line-height: 1.25;\n padding-bottom: 8px;\n text-decoration: none;\n text-transform: uppercase;\n}\n\n.duet-date__cell {\n text-align: center;\n}\n\n.duet-date__day {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n display: inline-block;\n font-size: 0.875em;\n font-variant-numeric: tabular-nums;\n line-height: 1.25;\n position: relative;\n text-align: center;\n vertical-align: middle;\n z-index: 1;\n transition: 0.15s ease all;\n height: 2.5em;\n width: 2.5em;\n\n &.is-today {\n box-shadow: 0 0 0 1px var(--active-color);\n position: relative;\n }\n\n &:hover::before,\n &.is-today::before {\n content: '';\n background: var(--active-color);\n border-radius: 50%;\n bottom: 0;\n left: 0;\n opacity: 0.16;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n [aria-selected='true'] & {\n background: var(--active-color);\n color: var(--active-text-color);\n box-shadow: none;\n outline: 0;\n }\n\n &:active {\n background: var(--active-color);\n box-shadow: var(--focus-shadow);\n color: var(--active-text-color);\n }\n\n &:focus {\n box-shadow: var(--focus-shadow);\n outline: 0;\n }\n\n &.is-disabled {\n background: transparent;\n box-shadow: none;\n cursor: default;\n opacity: 0.5;\n\n &::before {\n display: none;\n }\n }\n\n &.is-outside {\n background: var(--inactive-color);\n box-shadow: none;\n cursor: default;\n opacity: 0.6;\n pointer-events: none;\n\n &::before {\n display: none;\n }\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ HEADER\n// ---------------------------------------------\n\n.duet-date__header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ NAVIGATION\n// ---------------------------------------------\n\n.duet-date__nav {\n white-space: nowrap;\n}\n\n.duet-date__prev,\n.duet-date__next {\n background: var(--inactive-color);\n -moz-appearance: none;\n -webkit-appearance: none;\n align-items: center;\n appearance: none;\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n display: inline-flex;\n justify-content: space-around;\n margin-left: 8px;\n padding: 0;\n transition: background-color 300ms ease;\n font-size: 0.9em;\n height: 2.2em;\n width: 2.2em;\n\n &:focus {\n box-shadow: var(--focus-shadow);\n outline: 0;\n }\n\n &:active:focus {\n box-shadow: none;\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.5;\n }\n\n nano-icon {\n margin: 0 auto;\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ SELECT\n// ---------------------------------------------\n\n.duet-date__select {\n display: inline-flex;\n margin-top: 4px;\n position: relative;\n\n span {\n margin-right: 4px;\n }\n\n select {\n cursor: pointer;\n font-size: 1em;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 2;\n\n &:focus + .duet-date__select-label {\n box-shadow: var(--focus-shadow);\n }\n }\n}\n\n.duet-date__select-label {\n align-items: center;\n border-radius: 4px;\n display: flex;\n font-size: 1.25em;\n font-weight: 600;\n line-height: 1.25;\n padding: 0 4px 0 8px;\n pointer-events: none;\n position: relative;\n width: 100%;\n z-index: 1;\n\n nano-icon {\n font-size: 0.55em;\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ VISUALLY HIDDEN\n// ---------------------------------------------\n\n.duet-date__vhidden {\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n top: 0;\n width: 1px;\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n Prop,\n Element,\n h,\n Event,\n EventEmitter,\n State,\n Method,\n Watch,\n} from '@stencil/core';\nimport {\n addDays,\n startOfWeek,\n endOfWeek,\n setMonth,\n setYear,\n clamp,\n inRange,\n endOfMonth,\n startOfMonth,\n printISODate,\n parseISODate,\n createIdentifier,\n DaysOfWeek,\n} from '../../utils/date-utils';\nimport { DatePickerMonth } from './duet-date-picker/date-picker-month';\nimport defaultLocalization from './duet-date-picker/date-localization';\n\nimport {\n PickerChangeEvent,\n DuetLocalizedText,\n DateDisabledPredicate,\n Color,\n} from '../../interface';\nimport { createColorClasses } from '../../utils';\n\nfunction range(from: number, to: number) {\n var result: number[] = [];\n for (var i = from; i <= to; i++) {\n result.push(i);\n }\n return result;\n}\n\n/**\n * A highly performant, small and accessible date-picker.\n * Customised from [Duet date-picker](https://duetds.github.io/date-picker/).\n */\n@Component({\n tag: 'nano-date-picker',\n styleUrl: 'date-picker.scss',\n shadow: true,\n})\nexport class NanoDatePicker implements ComponentInterface {\n private monthSelectId = createIdentifier('NanoDateMonth');\n private yearSelectId = createIdentifier('NanoDateYear');\n private dialogLabelId = createIdentifier('NanoDateLabel');\n\n private firstFocusableElement: HTMLElement;\n private monthSelectNode: HTMLElement;\n private focusedDayNode: HTMLButtonElement;\n\n private focusTimeoutId: ReturnType<typeof setTimeout>;\n\n private initialTouchX: number = null;\n private initialTouchY: number = null;\n\n @Element() host: HTMLNanoDatePickerElement;\n\n @State() activeFocus = false;\n @State() focusedDay = new Date();\n\n // Public Property API\n\n /** Selected Date. Must be in IS0-8601 format: YYYY-MM-DD. */\n @Prop({ mutable: true }) selectedDate: string = '';\n\n /** Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the max property. */\n @Prop() min: string = '';\n\n /** Maximum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the min property. */\n @Prop() max: string = '';\n\n /** Which day is considered first day of the week? `0` for Sunday, `1` for Monday, etc.\n * Default is Monday. */\n @Prop() firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday;\n\n /** Button labels, day names, month names, etc, used for localization.\n * Default is English. */\n @Prop() localization: DuetLocalizedText = defaultLocalization;\n\n /** The color to use from the application's color palette. */\n @Prop() color?: Color;\n\n /** Controls which days are disabled and therefore disallowed.\n * For example, this can be used to disallow selection of weekends. */\n @Prop() isDateDisabled: DateDisabledPredicate = () => false;\n\n /** Controls whether the picker is a modal or dialog,\n * popup control and will therefore keep focus within the control */\n @Prop() isModal: boolean = false;\n\n /** @internal First focusable element. Relevant for keeping focus within the control */\n @Prop() firstFocusEle: HTMLElement;\n\n // Events\n\n /** Event emitted when a date is selected. */\n @Event() nanoDatePicked: EventEmitter<PickerChangeEvent>;\n\n // Public methods API\n\n /** Focus to the calendar. If day set, will focus to the current selected day.\n * @param day\n */\n @Method()\n async setFocus(day: boolean = false) {\n this.setFocusedDay(parseISODate(this.selectedDate) || new Date());\n\n if (day) {\n setTimeout((_) => this.focusedDayNode.focus(), 20);\n return;\n }\n clearTimeout(this.focusTimeoutId);\n this.focusTimeoutId = setTimeout(() => this.monthSelectNode.focus(), 20);\n }\n\n @Watch('selectedDate')\n handleSelectedDateChange() {\n this.setFocus(true);\n }\n\n // Local methods.\n\n private enableActiveFocus = () => {\n this.activeFocus = true;\n };\n\n private disableActiveFocus = () => {\n this.activeFocus = false;\n };\n\n private addDays(days: number) {\n this.setFocusedDay(addDays(this.focusedDay, days));\n }\n\n private addMonths(months: number) {\n this.setMonth(this.focusedDay.getMonth() + months);\n }\n\n private addYears(years: number) {\n this.setYear(this.focusedDay.getFullYear() + years);\n }\n\n private startOfWeek() {\n this.setFocusedDay(startOfWeek(this.focusedDay, this.firstDayOfWeek));\n }\n\n private endOfWeek() {\n this.setFocusedDay(endOfWeek(this.focusedDay, this.firstDayOfWeek));\n }\n\n private setMonth(month: number) {\n const min = setMonth(startOfMonth(this.focusedDay), month);\n const max = endOfMonth(min);\n const date = setMonth(this.focusedDay, month);\n\n this.setFocusedDay(clamp(date, min, max));\n }\n\n private setYear(year: number) {\n const min = setYear(startOfMonth(this.focusedDay), year);\n const max = endOfMonth(min);\n const date = setYear(this.focusedDay, year);\n\n this.setFocusedDay(clamp(date, min, max));\n }\n\n private setFocusedDay(day: Date) {\n this.focusedDay = clamp(\n day,\n parseISODate(this.min),\n parseISODate(this.max)\n );\n }\n\n private handleTouchStart = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n this.initialTouchX = touch.pageX;\n this.initialTouchY = touch.pageY;\n };\n\n private handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n };\n\n private handleTouchEnd = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n const distX = touch.pageX - this.initialTouchX; // get horizontal dist traveled\n const distY = touch.pageY - this.initialTouchY; // get vertical dist traveled\n const threshold = 70;\n\n const isHorizontalSwipe =\n Math.abs(distX) >= threshold && Math.abs(distY) <= threshold;\n\n if (isHorizontalSwipe) {\n this.addMonths(distX < 0 ? 1 : -1);\n }\n\n this.initialTouchY = null;\n this.initialTouchX = null;\n };\n\n private handleNextMonthClick = (event: MouseEvent) => {\n event.preventDefault();\n this.addMonths(1);\n };\n\n private handlePreviousMonthClick = (event: MouseEvent) => {\n event.preventDefault();\n this.addMonths(-1);\n };\n\n private handleKeyboardNavigation = (event: KeyboardEvent) => {\n // handle tab separately, since it needs to be treated\n // differently to other keyboard interactions\n if (event.key === 'Tab' && !event.shiftKey && this.isModal) {\n event.preventDefault();\n let ele = this.firstFocusEle || this.firstFocusableElement;\n ele.focus();\n return;\n }\n\n var handled = true;\n\n switch (event.key) {\n case 'ArrowRight':\n this.addDays(1);\n break;\n case 'ArrowLeft':\n this.addDays(-1);\n break;\n case 'ArrowDown':\n this.addDays(7);\n break;\n case 'ArrowUp':\n this.addDays(-7);\n break;\n case 'PageUp':\n if (event.shiftKey) {\n this.addYears(-1);\n } else {\n this.addMonths(-1);\n }\n break;\n case 'PageDown':\n if (event.shiftKey) {\n this.addYears(1);\n } else {\n this.addMonths(1);\n }\n break;\n case 'Home':\n this.startOfWeek();\n break;\n case 'End':\n this.endOfWeek();\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n this.enableActiveFocus();\n }\n };\n\n private handleDaySelect = (_event: MouseEvent, day: Date) => {\n const isAllowed = !this.isDateDisabled(day);\n const isInRange = inRange(\n day,\n parseISODate(this.min),\n parseISODate(this.max)\n );\n\n if (!isInRange || !isAllowed) {\n return;\n }\n\n if (day.getMonth() === this.focusedDay.getMonth()) {\n this.setValue(day);\n } else {\n this.setFocusedDay(day);\n }\n };\n\n private handleMonthSelect = (e) => {\n this.setMonth(parseInt(e.target.value, 10));\n };\n\n private handleYearSelect = (e) => {\n this.setYear(parseInt(e.target.value, 10));\n };\n\n private setValue(date: Date) {\n this.selectedDate = printISODate(date);\n this.nanoDatePicked.emit({\n value: this.selectedDate,\n valueAsDate: date,\n });\n }\n\n private processFocusedDayNode = (element: HTMLButtonElement) => {\n this.focusedDayNode = element;\n\n if (this.activeFocus) {\n setTimeout(() => element.focus(), 0);\n }\n };\n\n componentWillLoad() {\n this.handleSelectedDateChange();\n }\n\n render() {\n const valueAsDate = parseISODate(this.selectedDate);\n const selectedYear = (valueAsDate || this.focusedDay).getFullYear();\n const focusedMonth = this.focusedDay.getMonth();\n const focusedYear = this.focusedDay.getFullYear();\n\n const minDate = parseISODate(this.min);\n const maxDate = parseISODate(this.max);\n const prevMonthDisabled =\n minDate != null &&\n minDate.getMonth() === focusedMonth &&\n minDate.getFullYear() === focusedYear;\n const nextMonthDisabled =\n maxDate != null &&\n maxDate.getMonth() === focusedMonth &&\n maxDate.getFullYear() === focusedYear;\n\n let minYear = selectedYear - 10;\n let maxYear = selectedYear + 10;\n if (minDate) minYear = minDate.getFullYear();\n if (maxDate) maxYear = maxDate.getFullYear();\n\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div class=\"duet-date\">\n <div\n class={{\n 'duet-date__dialog': true,\n 'is-active': true,\n }}\n onTouchMove={this.handleTouchMove}\n onTouchStart={this.handleTouchStart}\n onTouchEnd={this.handleTouchEnd}\n >\n <div class=\"duet-date__dialog-content\">\n <div\n class=\"duet-date__vhidden duet-date__instructions\"\n aria-live=\"polite\"\n >\n {this.localization.keyboardInstruction}\n </div>\n {/**\n * With onFocusIn, which is what TS types expect, Stencil ends up listening to a\n * focusIn event, which is wrong as it needs to be focusin. So we had to use onFocusin\n * here which is wrong for the TS types, but ends up with the correct event listener\n * in Stencil. See issue: https://github.com/ionic-team/stencil/issues/2628\n */}\n {/* @ts-ignore */}\n <div\n class=\"duet-date__header\"\n onFocusin={this.disableActiveFocus}\n >\n <div>\n <h2\n id={this.dialogLabelId}\n class=\"duet-date__vhidden\"\n aria-live=\"polite\"\n >\n {this.localization.monthNames[focusedMonth]}{' '}\n {this.focusedDay.getFullYear()}\n </h2>\n <label\n htmlFor={this.monthSelectId}\n class=\"duet-date__vhidden\"\n >\n {this.localization.monthSelectLabel}\n </label>\n <div class=\"duet-date__select\">\n <select\n id={this.monthSelectId}\n class=\"duet-date__select--month\"\n ref={(element) =>\n (this.firstFocusableElement = this.monthSelectNode =\n element)\n }\n onChange={this.handleMonthSelect}\n >\n {this.localization.monthNames.map((month, i) => (\n <option\n key={month}\n value={i}\n selected={i === focusedMonth}\n disabled={\n !inRange(\n new Date(focusedYear, i, 1),\n minDate ? startOfMonth(minDate) : null,\n maxDate ? endOfMonth(maxDate) : null\n )\n }\n >\n {month}\n </option>\n ))}\n </select>\n <div class=\"duet-date__select-label\" aria-hidden=\"true\">\n <span>\n {this.localization.monthNamesShort[focusedMonth]}\n </span>\n <nano-icon name=\"light/chevron-down\"></nano-icon>\n </div>\n </div>\n\n <label htmlFor={this.yearSelectId} class=\"duet-date__vhidden\">\n {this.localization.yearSelectLabel}\n </label>\n <div class=\"duet-date__select\">\n <select\n id={this.yearSelectId}\n class=\"duet-date__select--year\"\n onChange={this.handleYearSelect}\n >\n {range(minYear, maxYear).map((year) => (\n <option key={year} selected={year === focusedYear}>\n {year}\n </option>\n ))}\n </select>\n <div class=\"duet-date__select-label\" aria-hidden=\"true\">\n <span>{this.focusedDay.getFullYear()}</span>\n <nano-icon name=\"light/chevron-down\"></nano-icon>\n </div>\n </div>\n </div>\n\n <div class=\"duet-date__nav\">\n <button\n class=\"duet-date__prev\"\n onClick={this.handlePreviousMonthClick}\n disabled={prevMonthDisabled}\n type=\"button\"\n >\n <nano-icon name=\"light/chevron-left\"></nano-icon>\n <span class=\"duet-date__vhidden\">\n {this.localization.prevMonthLabel}\n </span>\n </button>\n <button\n class=\"duet-date__next\"\n onClick={this.handleNextMonthClick}\n disabled={nextMonthDisabled}\n type=\"button\"\n >\n <nano-icon name=\"light/chevron-right\"></nano-icon>\n <span class=\"duet-date__vhidden\">\n {this.localization.nextMonthLabel}\n </span>\n </button>\n </div>\n </div>\n <div>\n <DatePickerMonth\n selectedDate={valueAsDate}\n focusedDate={this.focusedDay}\n onDateSelect={this.handleDaySelect}\n onKeyboardNavigation={this.handleKeyboardNavigation}\n labelledById={this.dialogLabelId}\n localization={this.localization}\n firstDayOfWeek={this.firstDayOfWeek}\n focusedDayRef={this.processFocusedDayNode}\n min={minDate}\n max={maxDate}\n isDateDisabled={this.isDateDisabled}\n />\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --width: width of the dropdown. Defaults to 'auto'\n * @prop --border: Defaults to #{$layer-border-style}\n * @prop --border-radius: Defaults to #{$layer-bg-color};\n * @prop --background: Defaults to #{$layer-bg-color};\n * @prop --padding: padding of the drop down. Default to '10px 0';\n */\n\n --width: auto;\n --border: #{$layer-border-style};\n --border-radius: #{$layer-border-radius};\n --background: #{$layer-bg-color};\n --padding: 10px 0;\n --overflow: hidden;\n --dropdown-z-index: #{$layer-index-dropdown};\n}\n\n.dropdown {\n position: relative;\n\n &__trigger {\n display: block;\n }\n\n &__positioner {\n position: absolute;\n z-index: var(--dropdown-z-index);\n\n @media (max-width: 35.9375em) {\n z-index: 100;\n }\n }\n\n &__panel {\n padding: var(--padding);\n background: var(--background);\n width: var(--width);\n border: var(--border);\n border-radius: var(--border-radius);\n color: currentColor;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: 0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;\n min-height: 20px;\n overflow: var(--overflow);\n box-sizing: content-box !important;\n\n &.top {\n transform: translateY(-20px) translateZ(0);\n }\n\n &.bottom {\n transform: translateY(20px) translateZ(0);\n }\n\n .dropdown__positioner.popover-visible & {\n opacity: 1;\n transform: translateY(0) translateZ(0);\n }\n\n ::slotted(nano-menu) {\n max-height: 50vh;\n }\n }\n\n &__accessible-title {\n @include visually-hide();\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n Watch,\n h,\n Listen,\n ComponentInterface,\n} from '@stencil/core';\nimport Popover from '../../utils/popover';\nimport { transitionDone } from '../../utils';\nimport { NavItemEventDetail } from '../../interface';\nimport { getNearestTabbableElement } from '../../utils/tabbable';\n\n/**\n * Dropdowns show additional content in a panel.\n * Designed to work well with nano-menu components to provide a list of options (works well with nano-nav-items).\n * @slot trigger - The dropdown's trigger.\n * @slot - The dropdown's content.\n */\n@Component({\n tag: 'nano-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown implements ComponentInterface {\n private dropdownId = `dropdown-${dropDownIds++}`;\n private labelId = this.dropdownId + '-title';\n private ignoreOpenWatcher = false;\n private panel: HTMLElement;\n private popover: Popover;\n private trigger: HTMLElement;\n private positioner: HTMLElement;\n private menuFocused: boolean = false;\n\n @Element() host: HTMLNanoDropdownElement;\n\n /** Determines if the dropdown should open automatically when the trigger is clicked */\n @Prop() autoOpen = true;\n\n /** Indicates whether or not the dropdown is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n if (!this.ignoreOpenWatcher) {\n this.open ? this.show() : this.hide();\n this.updateAccessibleTrigger();\n }\n }\n\n /**\n * Determines whether the dropdown should hide when a menu item is selected.\n */\n @Prop() closeOnSelect = true;\n\n /**\n * The dropdown will close when the user interacts outside of this element (e.g. clicking).\n */\n @Prop({ mutable: true }) containingElement: HTMLElement;\n\n /**\n * If you don't want to use the trigger slot, you can use this to 'tether' the dropdown to another element.\n * And you will still need to control when the component is opened (using show() / hide() or the `open` prop)\n */\n @Prop() tetherTo: HTMLElement = null;\n\n @Watch('tetherTo')\n handleTetherToChange() {\n this.createPopover();\n this.updateAccessibleTrigger();\n }\n\n /**\n * The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'bottom-start';\n\n /**\n * The distance in pixels from which to offset the panel away from its trigger.\n */\n @Prop() distance = 2;\n\n /**\n * The distance in pixels from which to offset the panel along its trigger.\n */\n @Prop() skidding = 0;\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`.\n */\n @Prop() hoist = false;\n\n @Watch('placement')\n @Watch('distance')\n @Watch('skidding')\n @Watch('hoist')\n handlePopoverOptionsChange() {\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n skidding: this.skidding,\n distance: this.distance,\n });\n }\n\n /**\n * Title used to describe the dropdown content for accessibility\n */\n @Prop() dialogTitle!: string;\n\n // Events\n\n /**\n * Emitted when the dropdown opens. Calling `event.preventDefault()` will prevent it from being opened.\n */\n @Event() nanoShow: EventEmitter;\n\n /**\n * Emitted after the dropdown opens and all transitions are complete.\n */\n @Event() nanoAfterShow: EventEmitter;\n\n /**\n * Emitted when the dropdown closes. Calling `event.preventDefault()` will prevent it from being closed.\n */\n @Event() nanoHide: EventEmitter;\n\n /**\n * Emitted after the dropdown closes and all transitions are complete.\n */\n @Event() nanoAfterHide: EventEmitter;\n\n // Listeners\n\n @Listen('nanoFocus')\n menuFocus(ev: CustomEvent) {\n let target = ev.target as HTMLElement;\n if (\n !target ||\n !target.tagName ||\n target.tagName.toLowerCase() !== 'nano-menu'\n )\n return;\n this.menuFocused = true;\n }\n\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n this.panel.classList.add('loading');\n transitionDone(this.panel).then(() =>\n this.panel.classList.remove('loading')\n );\n this.panel.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n if (!(ev.target as HTMLElement).parentElement) return;\n this.panel.style.minHeight =\n (ev.target as HTMLElement).parentElement.scrollHeight + 'px';\n }\n\n @Listen('nanoSelect')\n handlePanelSelect(event: CustomEvent) {\n const target = event.target as HTMLElement;\n\n // Hide the dropdown when a menu item is selected\n if (this.closeOnSelect && target.tagName.toLowerCase() === 'nano-menu')\n this.hide();\n }\n\n // Methods\n\n /** Shows the dropdown panel */\n @Method()\n async show() {\n this.ignoreOpenWatcher = true;\n this.open = true;\n\n const nanoShow = this.nanoShow.emit();\n\n if (nanoShow.defaultPrevented) {\n this.open = false;\n this.ignoreOpenWatcher = false;\n return;\n }\n\n this.popover.show();\n this.ignoreOpenWatcher = false;\n\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n /** Hides the dropdown panel */\n @Method()\n async hide() {\n this.ignoreOpenWatcher = true;\n this.open = false;\n\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n this.ignoreOpenWatcher = false;\n return;\n }\n\n if (this.popover) this.popover.hide();\n this.ignoreOpenWatcher = false;\n\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n\n this.menuFocused = false;\n }\n\n // Private methods\n\n private getMenu() {\n return this.host.querySelector('nano-menu') as HTMLNanoMenuElement;\n }\n\n private togglePanel = () => {\n if (!this.autoOpen) return;\n this.open ? this.hide() : this.show();\n };\n\n // Slotted triggers can be arbitrary content, but we need to link them to the dropdown panel with `aria-haspopup` and\n // `aria-expanded`. These must be applied to the \"accessible trigger\" (the tabbable portion of the trigger element\n // that gets slotted in) so screen readers will understand them. The accessible trigger could be the slotted element,\n private updateAccessibleTrigger() {\n let accessibleTrigger: HTMLElement;\n if (!this.tetherTo) {\n const assignedElements = Array.from(\n this.host.querySelectorAll('[slot=\"trigger\"]')\n );\n accessibleTrigger = assignedElements.map(getNearestTabbableElement)[0];\n } else {\n accessibleTrigger = this.tetherTo;\n }\n\n if (accessibleTrigger) {\n accessibleTrigger.setAttribute('aria-haspopup', 'true');\n accessibleTrigger.setAttribute(\n 'aria-expanded',\n this.open ? 'true' : 'false'\n );\n }\n }\n\n // Handlers\n\n private handleDocumentKeyDown(event: KeyboardEvent) {\n // Close when escape is pressed\n if (event.key === 'Escape') {\n this.hide();\n return;\n }\n\n // Close when tabbing results in the focus leaving the close element\n if (event.key === 'Tab') {\n setTimeout(() => {\n if (\n document.activeElement &&\n document.activeElement.closest(\n this.containingElement.tagName.toLowerCase()\n ) !== this.containingElement\n ) {\n this.hide();\n return;\n }\n });\n }\n\n const menu = this.getMenu();\n\n // If a menu is present, focus on it when certain keys are pressed\n if (menu && ['ArrowDown', 'ArrowUp'].includes(event.key)) {\n if (!this.open || this.menuFocused) return;\n event.preventDefault();\n menu.setFocus();\n return;\n }\n\n // All other keys focus the menu and pass the event through to menu (necessary for type-to-search to work)\n if (menu && event.target !== menu) {\n menu.dispatchEvent(new KeyboardEvent(event.type, event));\n return;\n }\n }\n\n private handleDocumentMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n // Close when clicking outside of the close element\n if (\n target.closest(this.containingElement.tagName.toLowerCase()) !==\n this.containingElement\n ) {\n this.hide();\n return;\n }\n }\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n // Open the panel when pressing down or up while focused on the trigger\n if (!this.open && ['ArrowDown', 'ArrowUp', ' '].includes(event.key)) {\n this.show();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private handleTriggerSlotChange = () => {\n this.updateAccessibleTrigger();\n };\n\n private createPopover() {\n if (this.popover) {\n this.hide();\n this.popover.destroy();\n this.popover = null;\n }\n\n this.popover = new Popover(this.tetherTo || this.trigger, this.positioner, {\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.panel,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n onTransitionEnd: () => {\n if (!this.open) {\n this.panel.scrollTop = 0;\n }\n },\n });\n // Show on init if open\n if (this.open) {\n this.show();\n }\n }\n\n // Stencil hooks\n\n connectedCallback() {\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handlePanelSelect = this.handlePanelSelect.bind(this);\n\n if (!this.containingElement) this.containingElement = this.host;\n }\n\n componentDidLoad() {\n this.createPopover();\n }\n\n disconnectedCallback() {\n this.hide();\n if (this.popover) this.popover.destroy();\n }\n\n render() {\n return (\n <div\n part=\"base\"\n id={this.dropdownId}\n class={{\n dropdown: true,\n 'dropdown--open': this.open,\n }}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-haspopup=\"true\"\n >\n <span\n part=\"trigger\"\n class=\"dropdown__trigger\"\n ref={(el) => (this.trigger = el)}\n onKeyDown={this.handleTriggerKeyDown}\n onClick={this.togglePanel}\n >\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange} />\n </span>\n\n <div ref={(el) => (this.positioner = el)} class=\"dropdown__positioner\">\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class={`dropdown__panel ${this.placement.split('-').join(' ')}`}\n aria-hidden={!this.open}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={this.dialogTitle ? this.labelId : undefined}\n >\n {this.dialogTitle && (\n <h2\n id={this.labelId}\n class=\"dropdown__accessible-title\"\n aria-live=\"polite\"\n >\n {this.dialogTitle}\n </h2>\n )}\n <slot />\n </div>\n </div>\n </div>\n );\n }\n}\n\nlet dropDownIds = 0;\n"]}
|