@nanoporetech-digital/components 2.7.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/dist/cjs/{algoliasearch.umd-dcf18a4a.js → algoliasearch.umd-7ee60729.js} +3 -3
- package/dist/cjs/{algoliasearch.umd-dcf18a4a.js.map → algoliasearch.umd-7ee60729.js.map} +1 -1
- package/dist/cjs/{component-store-722032a5.js → component-store-19844199.js} +37 -25
- package/dist/cjs/component-store-19844199.js.map +1 -0
- package/dist/cjs/{form-control-8f530f7d.js → form-control-d54a847f.js} +26 -19
- package/dist/cjs/form-control-d54a847f.js.map +1 -0
- package/dist/cjs/index-cb62df44.js +5 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +1 -1
- package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +58 -20
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +27 -15
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +4 -3
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +17 -4
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +13 -2
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +529 -0
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-file-upload.cjs.entry.js +59 -36
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +46 -41
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +36 -20
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +53 -23
- package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +6 -4
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +2 -2
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/{popover-8c86d338.js → popover-5f152a19.js} +3 -8
- package/dist/cjs/{popover-8c86d338.js.map → popover-5f152a19.js.map} +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +2 -2
- package/dist/collection/components/algolia/algolia-input.js +5 -5
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +6 -6
- package/dist/collection/components/checkbox/checkbox-group.css +9 -6
- package/dist/collection/components/checkbox/checkbox-group.js +119 -25
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +1 -1
- package/dist/collection/components/checkbox/checkbox.js +83 -22
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +4 -2
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/date-input/date-input.js +44 -12
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.js +5 -5
- package/dist/collection/components/details/details.js +1 -1
- package/dist/collection/components/dialog/dialog.js +34 -1
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/field-validator/field-validator.js +577 -0
- package/dist/collection/components/field-validator/field-validator.js.map +1 -0
- package/dist/collection/components/file-upload/file-upload.css +17 -5
- package/dist/collection/components/file-upload/file-upload.js +111 -44
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/form-control/form-control.js +25 -18
- package/dist/collection/components/form-control/form-control.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +73 -45
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/icon/icon.js +2 -2
- package/dist/collection/components/icon/icon.js.map +1 -1
- package/dist/collection/components/input/input.css +56 -5
- package/dist/collection/components/input/input.js +65 -29
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/menu/menu.js +1 -2
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/range/range.js +4 -4
- package/dist/collection/components/resize-observe/resize-observe.js +7 -6
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +61 -7
- package/dist/collection/components/select/select.js +88 -32
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/slides/slides.js +7 -7
- package/dist/collection/components/{sticky → sticker}/sticker.css +0 -0
- package/dist/collection/components/{sticky → sticker}/sticker.js +2 -2
- package/dist/collection/components/sticker/sticker.js.map +1 -0
- package/dist/collection/components/tabs/tab-group.js +2 -2
- package/dist/collection/utils/popover.js +2 -7
- package/dist/collection/utils/popover.js.map +1 -1
- package/dist/collection/utils/store/component-store.js +4 -13
- package/dist/collection/utils/store/component-store.js.map +1 -1
- package/dist/collection/utils/store/get-set.js +15 -1
- package/dist/collection/utils/store/get-set.js.map +1 -1
- package/dist/components/algoliasearch.umd.js +2 -2
- package/dist/components/algoliasearch.umd.js.map +1 -1
- package/dist/components/component-store.js +36 -24
- package/dist/components/component-store.js.map +1 -1
- package/dist/components/datalist.js +3 -1
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/form-control.js +25 -18
- package/dist/components/form-control.js.map +1 -1
- package/dist/components/icon.js.map +1 -1
- package/dist/components/input.js +39 -21
- package/dist/components/input.js.map +1 -1
- package/dist/components/menu.js +1 -2
- package/dist/components/menu.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +62 -21
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-checkbox.js +31 -17
- package/dist/components/nano-checkbox.js.map +1 -1
- package/dist/components/nano-date-input.js +18 -4
- package/dist/components/nano-date-input.js.map +1 -1
- package/dist/components/nano-dialog.js +13 -1
- package/dist/components/nano-dialog.js.map +1 -1
- package/dist/components/nano-field-validator.d.ts +11 -0
- package/dist/components/nano-field-validator.js +557 -0
- package/dist/components/nano-field-validator.js.map +1 -0
- package/dist/components/nano-file-upload.js +62 -37
- package/dist/components/nano-file-upload.js.map +1 -1
- package/dist/components/nano-global-nav.js +45 -39
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/popover.js +2 -7
- package/dist/components/popover.js.map +1 -1
- package/dist/components/resize-observe.js +6 -4
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +57 -24
- package/dist/components/select.js.map +1 -1
- package/dist/components/sticker.js +2 -2
- package/dist/components/sticker.js.map +1 -1
- package/dist/custom-elements/index.d.ts +6 -0
- package/dist/custom-elements/index.js +2606 -705
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
- package/dist/esm/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +1 -1
- package/dist/esm/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
- package/dist/esm/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
- package/dist/esm/{component-store-b6fbfa35.js → component-store-d238fee4.js} +38 -26
- package/dist/esm/component-store-d238fee4.js.map +1 -0
- package/dist/esm/{form-control-c52b6256.js → form-control-ad05507c.js} +27 -20
- package/dist/esm/form-control-ad05507c.js.map +1 -0
- package/dist/esm/{index-5f8d16e7.js → index-c42becad.js} +7 -2
- package/dist/esm/{index-5f8d16e7.js.map → index-c42becad.js.map} +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/nano-accordion.entry.js +1 -1
- package/dist/esm/nano-alert.entry.js +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +3 -3
- package/dist/esm/nano-algolia-input.entry.js +4 -4
- 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 +4 -4
- package/dist/esm/nano-aspect-ratio.entry.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +59 -21
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-checkbox.entry.js +28 -16
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +2 -2
- package/dist/esm/nano-datalist_3.entry.js +5 -4
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +18 -5
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker.entry.js +1 -1
- package/dist/esm/nano-details.entry.js +1 -1
- package/dist/esm/nano-dialog.entry.js +14 -3
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +1 -1
- package/dist/esm/nano-dropdown.entry.js +2 -2
- package/dist/esm/nano-field-validator.entry.js +525 -0
- package/dist/esm/nano-field-validator.entry.js.map +1 -0
- package/dist/esm/nano-file-upload.entry.js +60 -37
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +47 -42
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +1 -1
- package/dist/esm/nano-grid_3.entry.js +1 -1
- package/dist/esm/nano-hero.entry.js +1 -1
- package/dist/esm/nano-icon-button.entry.js +1 -1
- package/dist/esm/nano-icon.entry.js +1 -1
- package/dist/esm/nano-icon.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +38 -22
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +55 -25
- package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +1 -1
- package/dist/esm/nano-rating.entry.js +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +7 -5
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/nano-slides.entry.js +1 -1
- package/dist/esm/nano-spinner.entry.js +1 -1
- package/dist/esm/nano-split-pane.entry.js +1 -1
- package/dist/esm/nano-sticker.entry.js +3 -3
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-content.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +2 -2
- package/dist/esm/nano-tab.entry.js +1 -1
- package/dist/esm/nano-tooltip.entry.js +2 -2
- package/dist/esm/{popover-7639005b.js → popover-a03563f3.js} +3 -8
- package/dist/esm/{popover-7639005b.js.map → popover-a03563f3.js.map} +1 -1
- package/dist/esm-es5/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
- package/dist/esm-es5/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +0 -0
- package/dist/esm-es5/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
- package/dist/esm-es5/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
- package/dist/esm-es5/component-store-d238fee4.js +5 -0
- package/dist/esm-es5/component-store-d238fee4.js.map +1 -0
- package/dist/esm-es5/form-control-ad05507c.js +5 -0
- package/dist/esm-es5/form-control-ad05507c.js.map +1 -0
- package/dist/esm-es5/{index-5f8d16e7.js → index-c42becad.js} +2 -2
- package/dist/esm-es5/{index-5f8d16e7.js.map → index-c42becad.js.map} +0 -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-input.entry.js +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-aspect-ratio.entry.js +1 -1
- package/dist/esm-es5/nano-checkbox-group.entry.js +2 -2
- package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm-es5/nano-checkbox.entry.js +1 -1
- package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
- package/dist/esm-es5/nano-components.js +1 -1
- package/dist/esm-es5/nano-components.js.map +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm-es5/nano-date-input.entry.js +1 -1
- package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-date-picker.entry.js +1 -1
- package/dist/esm-es5/nano-details.entry.js +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-dropdown.entry.js +1 -1
- package/dist/esm-es5/nano-field-validator.entry.js +5 -0
- package/dist/esm-es5/nano-field-validator.entry.js.map +1 -0
- package/dist/esm-es5/nano-file-upload.entry.js +2 -2
- 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-nav.entry.js.map +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-icon.entry.js.map +1 -1
- package/dist/esm-es5/nano-input.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-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 +2 -2
- package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-slide.entry.js +1 -1
- package/dist/esm-es5/nano-slides.entry.js +1 -1
- package/dist/esm-es5/nano-spinner.entry.js +1 -1
- package/dist/esm-es5/nano-split-pane.entry.js +1 -1
- package/dist/esm-es5/nano-sticker.entry.js +1 -1
- package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab-content.entry.js +1 -1
- package/dist/esm-es5/nano-tab-group.entry.js +1 -1
- package/dist/esm-es5/nano-tab.entry.js +2 -2
- package/dist/esm-es5/nano-tooltip.entry.js +1 -1
- package/dist/esm-es5/{popover-7639005b.js → popover-a03563f3.js} +2 -2
- package/dist/esm-es5/popover-a03563f3.js.map +1 -0
- package/dist/nano-components/nano-components.css +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/nano-components.js +1 -1
- package/dist/nano-components/p-00eaa36a.entry.js +5 -0
- package/dist/nano-components/p-00eaa36a.entry.js.map +1 -0
- package/dist/nano-components/{p-4429caac.system.entry.js → p-0c6c2141.system.entry.js} +2 -2
- package/dist/nano-components/{p-4429caac.system.entry.js.map → p-0c6c2141.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7232c046.system.entry.js → p-0d0dfc06.system.entry.js} +2 -2
- package/dist/nano-components/{p-7232c046.system.entry.js.map → p-0d0dfc06.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-e562bffd.entry.js → p-0e2e3f4a.entry.js} +2 -2
- package/dist/nano-components/{p-e562bffd.entry.js.map → p-0e2e3f4a.entry.js.map} +0 -0
- package/dist/nano-components/{p-56ba0d63.entry.js → p-1030797a.entry.js} +2 -2
- package/dist/nano-components/{p-56ba0d63.entry.js.map → p-1030797a.entry.js.map} +0 -0
- package/dist/nano-components/p-11451a4b.system.entry.js +5 -0
- package/dist/nano-components/p-11451a4b.system.entry.js.map +1 -0
- package/dist/nano-components/p-129e2b4b.system.js +5 -0
- package/dist/nano-components/p-129e2b4b.system.js.map +1 -0
- package/dist/nano-components/{p-c0ddb4c3.entry.js → p-166ade3e.entry.js} +2 -2
- package/dist/nano-components/{p-c0ddb4c3.entry.js.map → p-166ade3e.entry.js.map} +0 -0
- package/dist/nano-components/{p-5653961d.system.entry.js → p-1a30dfdd.system.entry.js} +2 -2
- package/dist/nano-components/p-1a30dfdd.system.entry.js.map +1 -0
- package/dist/nano-components/p-1b120f53.entry.js +5 -0
- package/dist/nano-components/p-1b120f53.entry.js.map +1 -0
- package/dist/nano-components/{p-7d351076.system.entry.js → p-21af2a5e.system.entry.js} +2 -2
- package/dist/nano-components/{p-7d351076.system.entry.js.map → p-21af2a5e.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-346588cc.entry.js → p-222d8095.entry.js} +2 -2
- package/dist/nano-components/{p-346588cc.entry.js.map → p-222d8095.entry.js.map} +0 -0
- package/dist/nano-components/p-241d90eb.system.entry.js +5 -0
- package/dist/nano-components/p-241d90eb.system.entry.js.map +1 -0
- package/dist/nano-components/{p-040b6cda.entry.js → p-2649fc8e.entry.js} +2 -2
- package/dist/nano-components/{p-040b6cda.entry.js.map → p-2649fc8e.entry.js.map} +0 -0
- package/dist/nano-components/{p-3456db01.entry.js → p-27efac97.entry.js} +2 -2
- package/dist/nano-components/{p-3456db01.entry.js.map → p-27efac97.entry.js.map} +0 -0
- package/dist/nano-components/{p-462ad4f1.entry.js → p-2c8d7273.entry.js} +2 -2
- package/dist/nano-components/{p-462ad4f1.entry.js.map → p-2c8d7273.entry.js.map} +0 -0
- package/dist/nano-components/{p-2e6c55e2.entry.js → p-2d53d1a0.entry.js} +2 -2
- package/dist/nano-components/{p-2e6c55e2.entry.js.map → p-2d53d1a0.entry.js.map} +0 -0
- package/dist/nano-components/{p-1f99d776.entry.js → p-3093915f.entry.js} +2 -2
- package/dist/nano-components/{p-1f99d776.entry.js.map → p-3093915f.entry.js.map} +0 -0
- package/dist/nano-components/{p-8a8f893b.system.entry.js → p-316f83a9.system.entry.js} +2 -2
- package/dist/nano-components/{p-8a8f893b.system.entry.js.map → p-316f83a9.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7246bef5.entry.js → p-325c1cad.entry.js} +2 -2
- package/dist/nano-components/{p-7246bef5.entry.js.map → p-325c1cad.entry.js.map} +0 -0
- package/dist/nano-components/{p-ec39b143.system.entry.js → p-32f396c0.system.entry.js} +2 -2
- package/dist/nano-components/{p-ec39b143.system.entry.js.map → p-32f396c0.system.entry.js.map} +0 -0
- package/dist/nano-components/p-32f4516e.js +5 -0
- package/dist/nano-components/p-32f4516e.js.map +1 -0
- package/dist/nano-components/{p-43543d18.entry.js → p-333237e8.entry.js} +2 -2
- package/dist/nano-components/{p-43543d18.entry.js.map → p-333237e8.entry.js.map} +0 -0
- package/dist/nano-components/{p-e7fdc62d.entry.js → p-35108e08.entry.js} +2 -2
- package/dist/nano-components/{p-e7fdc62d.entry.js.map → p-35108e08.entry.js.map} +0 -0
- package/dist/nano-components/{p-a898bf92.system.entry.js → p-379e21d9.system.entry.js} +2 -2
- package/dist/nano-components/{p-a898bf92.system.entry.js.map → p-379e21d9.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-3ad1d5aa.system.entry.js → p-39d36fd1.system.entry.js} +2 -2
- package/dist/nano-components/{p-3ad1d5aa.system.entry.js.map → p-39d36fd1.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-41a2e2e4.system.js → p-3a00de47.system.js} +2 -2
- package/dist/nano-components/{p-41a2e2e4.system.js.map → p-3a00de47.system.js.map} +0 -0
- package/dist/nano-components/{p-6afdb510.system.entry.js → p-3ccb176c.system.entry.js} +2 -2
- package/dist/nano-components/{p-6afdb510.system.entry.js.map → p-3ccb176c.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-178c34e3.js → p-3de7735c.js} +2 -2
- package/dist/nano-components/p-3de7735c.js.map +1 -0
- package/dist/nano-components/{p-08b43111.entry.js → p-3e930ac7.entry.js} +2 -2
- package/dist/nano-components/{p-08b43111.entry.js.map → p-3e930ac7.entry.js.map} +0 -0
- package/dist/nano-components/{p-d8d8bac6.system.entry.js → p-42cebbfe.system.entry.js} +2 -2
- package/dist/nano-components/{p-d8d8bac6.system.entry.js.map → p-42cebbfe.system.entry.js.map} +0 -0
- package/dist/nano-components/p-45070c8f.entry.js +5 -0
- package/dist/nano-components/p-45070c8f.entry.js.map +1 -0
- package/dist/nano-components/{p-3ef30ded.system.entry.js → p-48874481.system.entry.js} +2 -2
- package/dist/nano-components/{p-3ef30ded.system.entry.js.map → p-48874481.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-08ffc9a1.entry.js → p-4e2c0abb.entry.js} +2 -2
- package/dist/nano-components/{p-08ffc9a1.entry.js.map → p-4e2c0abb.entry.js.map} +0 -0
- package/dist/nano-components/{p-090f22a9.system.entry.js → p-5100ae70.system.entry.js} +2 -2
- package/dist/nano-components/{p-090f22a9.system.entry.js.map → p-5100ae70.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-593de29b.system.entry.js → p-52769304.system.entry.js} +2 -2
- package/dist/nano-components/{p-593de29b.system.entry.js.map → p-52769304.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-8278c5d2.system.entry.js → p-56f86047.system.entry.js} +2 -2
- package/dist/nano-components/{p-8278c5d2.system.entry.js.map → p-56f86047.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-3c475740.system.entry.js → p-5b66bb8f.system.entry.js} +2 -2
- package/dist/nano-components/p-5b66bb8f.system.entry.js.map +1 -0
- package/dist/nano-components/{p-033296c7.system.entry.js → p-5d17cfbb.system.entry.js} +2 -2
- package/dist/nano-components/{p-033296c7.system.entry.js.map → p-5d17cfbb.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-88f17c86.system.entry.js → p-5d5ea4ab.system.entry.js} +2 -2
- package/dist/nano-components/{p-88f17c86.system.entry.js.map → p-5d5ea4ab.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-20387cde.system.entry.js → p-6b4dd158.system.entry.js} +2 -2
- package/dist/nano-components/{p-20387cde.system.entry.js.map → p-6b4dd158.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-d24811c8.system.js → p-6b5760b1.system.js} +3 -3
- package/dist/nano-components/{p-d24811c8.system.js.map → p-6b5760b1.system.js.map} +1 -1
- package/dist/nano-components/p-6d138abf.entry.js +5 -0
- package/dist/nano-components/p-6d138abf.entry.js.map +1 -0
- package/dist/nano-components/{p-5066e563.system.entry.js → p-6dad332b.system.entry.js} +2 -2
- package/dist/nano-components/{p-5066e563.system.entry.js.map → p-6dad332b.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-730f60ea.entry.js → p-6ddb51e4.entry.js} +2 -2
- package/dist/nano-components/p-6ddb51e4.entry.js.map +1 -0
- package/dist/nano-components/p-71bbb7ba.entry.js +5 -0
- package/dist/nano-components/p-71bbb7ba.entry.js.map +1 -0
- package/dist/nano-components/p-71e9fa33.js +5 -0
- package/dist/nano-components/p-71e9fa33.js.map +1 -0
- package/dist/nano-components/p-72ed603c.system.entry.js +5 -0
- package/dist/nano-components/p-72ed603c.system.entry.js.map +1 -0
- package/dist/nano-components/{p-c9d09839.entry.js → p-73985eda.entry.js} +2 -2
- package/dist/nano-components/{p-c9d09839.entry.js.map → p-73985eda.entry.js.map} +0 -0
- package/dist/nano-components/{p-58d7f10f.entry.js → p-76c903db.entry.js} +2 -2
- package/dist/nano-components/{p-58d7f10f.entry.js.map → p-76c903db.entry.js.map} +0 -0
- package/dist/nano-components/{p-3aa1d07d.entry.js → p-76d9d1d4.entry.js} +2 -2
- package/dist/nano-components/p-76d9d1d4.entry.js.map +1 -0
- package/dist/nano-components/{p-f53989c3.system.entry.js → p-7aa7425d.system.entry.js} +2 -2
- package/dist/nano-components/{p-f53989c3.system.entry.js.map → p-7aa7425d.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-531d5275.system.entry.js → p-7ad4a27a.system.entry.js} +2 -2
- package/dist/nano-components/p-7ad4a27a.system.entry.js.map +1 -0
- package/dist/nano-components/{p-9acc4596.system.entry.js → p-7e55b214.system.entry.js} +3 -3
- package/dist/nano-components/{p-9acc4596.system.entry.js.map → p-7e55b214.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-62ecd3a1.system.entry.js → p-7f1374b6.system.entry.js} +2 -2
- package/dist/nano-components/{p-62ecd3a1.system.entry.js.map → p-7f1374b6.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-1e974cad.entry.js → p-7fe9d769.entry.js} +2 -2
- package/dist/nano-components/{p-1e974cad.entry.js.map → p-7fe9d769.entry.js.map} +0 -0
- package/dist/nano-components/p-85c8b070.system.entry.js +5 -0
- package/dist/nano-components/p-85c8b070.system.entry.js.map +1 -0
- package/dist/nano-components/{p-f2e7d2f9.system.entry.js → p-88779174.system.entry.js} +2 -2
- package/dist/nano-components/{p-f2e7d2f9.system.entry.js.map → p-88779174.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-4535e3bb.entry.js → p-8b6fcd6d.entry.js} +2 -2
- package/dist/nano-components/{p-4535e3bb.entry.js.map → p-8b6fcd6d.entry.js.map} +0 -0
- package/dist/nano-components/{p-6ade3290.entry.js → p-8eb4f24a.entry.js} +2 -2
- package/dist/nano-components/{p-6ade3290.entry.js.map → p-8eb4f24a.entry.js.map} +0 -0
- package/dist/nano-components/{p-07bdf44d.entry.js → p-8fe2f846.entry.js} +2 -2
- package/dist/nano-components/{p-07bdf44d.entry.js.map → p-8fe2f846.entry.js.map} +0 -0
- package/dist/nano-components/p-96150b2c.system.entry.js +5 -0
- package/dist/nano-components/p-96150b2c.system.entry.js.map +1 -0
- package/dist/nano-components/{p-bcd69559.entry.js → p-97b13ad2.entry.js} +2 -2
- package/dist/nano-components/{p-bcd69559.entry.js.map → p-97b13ad2.entry.js.map} +0 -0
- package/dist/nano-components/{p-c9c1a345.system.entry.js → p-a02cc654.system.entry.js} +2 -2
- package/dist/nano-components/{p-c9c1a345.system.entry.js.map → p-a02cc654.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-a77e3fbb.js → p-a0b93616.js} +3 -3
- package/dist/nano-components/{p-a77e3fbb.js.map → p-a0b93616.js.map} +1 -1
- package/dist/nano-components/p-a4969844.entry.js +5 -0
- package/dist/nano-components/p-a4969844.entry.js.map +1 -0
- package/dist/nano-components/{p-70dec19f.entry.js → p-a6327a9a.entry.js} +2 -2
- package/dist/nano-components/{p-70dec19f.entry.js.map → p-a6327a9a.entry.js.map} +0 -0
- package/dist/nano-components/p-a81db037.entry.js +5 -0
- package/dist/nano-components/p-a81db037.entry.js.map +1 -0
- package/dist/nano-components/{p-a315ed2c.entry.js → p-a9a4fc3e.entry.js} +2 -2
- package/dist/nano-components/{p-a315ed2c.entry.js.map → p-a9a4fc3e.entry.js.map} +1 -1
- package/dist/nano-components/{p-98222c39.system.entry.js → p-ab07c1fa.system.entry.js} +2 -2
- package/dist/nano-components/{p-98222c39.system.entry.js.map → p-ab07c1fa.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-ab5813a7.js → p-b5c33aff.js} +2 -2
- package/dist/nano-components/{p-ab5813a7.js.map → p-b5c33aff.js.map} +0 -0
- package/dist/nano-components/p-bc394857.system.entry.js +5 -0
- package/dist/nano-components/p-bc394857.system.entry.js.map +1 -0
- package/dist/nano-components/{p-ee3fe567.entry.js → p-bce998f2.entry.js} +2 -2
- package/dist/nano-components/p-bce998f2.entry.js.map +1 -0
- package/dist/nano-components/{p-92f85aaf.system.entry.js → p-bf9aa89d.system.entry.js} +2 -2
- package/dist/nano-components/{p-92f85aaf.system.entry.js.map → p-bf9aa89d.system.entry.js.map} +0 -0
- package/dist/nano-components/p-c070ffd3.system.entry.js +5 -0
- package/dist/nano-components/p-c070ffd3.system.entry.js.map +1 -0
- package/dist/nano-components/{p-50514e5e.entry.js → p-c4156fea.entry.js} +2 -2
- package/dist/nano-components/{p-50514e5e.entry.js.map → p-c4156fea.entry.js.map} +0 -0
- package/dist/nano-components/p-c9a2d24c.entry.js +5 -0
- package/dist/nano-components/p-c9a2d24c.entry.js.map +1 -0
- package/dist/nano-components/p-d01bd3c3.system.js +5 -0
- package/dist/nano-components/p-d01bd3c3.system.js.map +1 -0
- package/dist/nano-components/{p-1238f0fc.system.entry.js → p-d0385948.system.entry.js} +2 -2
- package/dist/nano-components/{p-1238f0fc.system.entry.js.map → p-d0385948.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-b59d2bd5.entry.js → p-d122b1ff.entry.js} +2 -2
- package/dist/nano-components/{p-b59d2bd5.entry.js.map → p-d122b1ff.entry.js.map} +0 -0
- package/dist/nano-components/{p-394c3c19.entry.js → p-defd4552.entry.js} +2 -2
- package/dist/nano-components/{p-394c3c19.entry.js.map → p-defd4552.entry.js.map} +0 -0
- package/dist/nano-components/{p-9745d44e.system.js → p-e43ec257.system.js} +2 -2
- package/dist/nano-components/p-e43ec257.system.js.map +1 -0
- package/dist/nano-components/p-e7140887.system.js +5 -0
- package/dist/nano-components/p-e7140887.system.js.map +1 -0
- package/dist/nano-components/{p-69439aa1.system.entry.js → p-e817ab4a.system.entry.js} +2 -2
- package/dist/nano-components/{p-69439aa1.system.entry.js.map → p-e817ab4a.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-22884654.system.entry.js → p-eacf5b5b.system.entry.js} +2 -2
- package/dist/nano-components/{p-22884654.system.entry.js.map → p-eacf5b5b.system.entry.js.map} +0 -0
- package/dist/nano-components/p-ed336501.entry.js +5 -0
- package/dist/nano-components/p-ed336501.entry.js.map +1 -0
- package/dist/nano-components/{p-5ae80fd7.js → p-ef7f1e9c.js} +2 -2
- package/dist/nano-components/{p-5ae80fd7.js.map → p-ef7f1e9c.js.map} +0 -0
- package/dist/nano-components/{p-59b3d24b.system.js → p-f48be9f5.system.js} +2 -2
- package/dist/nano-components/{p-59b3d24b.system.js.map → p-f48be9f5.system.js.map} +0 -0
- package/dist/nano-components/p-f710c763.system.entry.js +5 -0
- package/dist/nano-components/p-f710c763.system.entry.js.map +1 -0
- package/dist/nano-components/{p-65c10b3f.entry.js → p-fbe3c89e.entry.js} +2 -2
- package/dist/nano-components/{p-65c10b3f.entry.js.map → p-fbe3c89e.entry.js.map} +0 -0
- package/dist/nano-components/p-fc3702a0.system.entry.js +5 -0
- package/dist/nano-components/p-fc3702a0.system.entry.js.map +1 -0
- package/dist/nano-components/{p-ba13bb56.entry.js → p-ffc2063a.entry.js} +2 -2
- package/dist/nano-components/{p-ba13bb56.entry.js.map → p-ffc2063a.entry.js.map} +0 -0
- package/dist/nano-components/{p-383fda90.system.entry.js → p-fff27907.system.entry.js} +2 -2
- package/dist/nano-components/{p-383fda90.system.entry.js.map → p-fff27907.system.entry.js.map} +0 -0
- package/dist/types/components/checkbox/checkbox-group.d.ts +12 -1
- package/dist/types/components/checkbox/checkbox.d.ts +11 -3
- package/dist/types/components/date-input/date-input.d.ts +4 -0
- package/dist/types/components/dialog/dialog.d.ts +4 -1
- package/dist/types/components/field-validator/field-validator.d.ts +125 -0
- package/dist/types/components/file-upload/file-upload.d.ts +8 -0
- package/dist/types/components/form-control/form-control.d.ts +2 -0
- package/dist/types/components/global-nav/global-nav.d.ts +10 -3
- package/dist/types/components/icon/icon.d.ts +1 -1
- package/dist/types/components/input/input.d.ts +9 -1
- package/dist/types/components/resize-observe/resize-observe.d.ts +0 -1
- package/dist/types/components/select/select.d.ts +9 -1
- package/dist/types/components/{sticky → sticker}/sticker.d.ts +0 -0
- package/dist/types/components.d.ts +198 -7
- package/dist/types/utils/store/get-set.d.ts +1 -1
- package/docs-json.json +474 -18
- package/docs-vscode.json +83 -3
- package/package.json +3 -2
- package/dist/cjs/component-store-722032a5.js.map +0 -1
- package/dist/cjs/form-control-8f530f7d.js.map +0 -1
- package/dist/collection/components/sticky/sticker.js.map +0 -1
- package/dist/esm/component-store-b6fbfa35.js.map +0 -1
- package/dist/esm/form-control-c52b6256.js.map +0 -1
- package/dist/esm-es5/component-store-b6fbfa35.js +0 -5
- package/dist/esm-es5/component-store-b6fbfa35.js.map +0 -1
- package/dist/esm-es5/form-control-c52b6256.js +0 -5
- package/dist/esm-es5/form-control-c52b6256.js.map +0 -1
- package/dist/esm-es5/popover-7639005b.js.map +0 -1
- package/dist/nano-components/p-0618fac6.system.entry.js +0 -5
- package/dist/nano-components/p-0618fac6.system.entry.js.map +0 -1
- package/dist/nano-components/p-096682d9.system.js +0 -5
- package/dist/nano-components/p-096682d9.system.js.map +0 -1
- package/dist/nano-components/p-10a6216d.system.entry.js +0 -5
- package/dist/nano-components/p-10a6216d.system.entry.js.map +0 -1
- package/dist/nano-components/p-173bae15.system.entry.js +0 -5
- package/dist/nano-components/p-173bae15.system.entry.js.map +0 -1
- package/dist/nano-components/p-178c34e3.js.map +0 -1
- package/dist/nano-components/p-3aa1d07d.entry.js.map +0 -1
- package/dist/nano-components/p-3c475740.system.entry.js.map +0 -1
- package/dist/nano-components/p-4265cf95.system.entry.js +0 -5
- package/dist/nano-components/p-4265cf95.system.entry.js.map +0 -1
- package/dist/nano-components/p-4ee978ff.entry.js +0 -5
- package/dist/nano-components/p-4ee978ff.entry.js.map +0 -1
- package/dist/nano-components/p-531d5275.system.entry.js.map +0 -1
- package/dist/nano-components/p-5653961d.system.entry.js.map +0 -1
- package/dist/nano-components/p-5a0095f9.js +0 -5
- package/dist/nano-components/p-5a0095f9.js.map +0 -1
- package/dist/nano-components/p-5a315696.entry.js +0 -5
- package/dist/nano-components/p-5a315696.entry.js.map +0 -1
- package/dist/nano-components/p-5e7c7d3d.entry.js +0 -5
- package/dist/nano-components/p-5e7c7d3d.entry.js.map +0 -1
- package/dist/nano-components/p-730f60ea.entry.js.map +0 -1
- package/dist/nano-components/p-802e1416.system.entry.js +0 -5
- package/dist/nano-components/p-802e1416.system.entry.js.map +0 -1
- package/dist/nano-components/p-820d9e23.system.entry.js +0 -5
- package/dist/nano-components/p-820d9e23.system.entry.js.map +0 -1
- package/dist/nano-components/p-829d7f05.system.entry.js +0 -5
- package/dist/nano-components/p-829d7f05.system.entry.js.map +0 -1
- package/dist/nano-components/p-894d6967.entry.js +0 -5
- package/dist/nano-components/p-894d6967.entry.js.map +0 -1
- package/dist/nano-components/p-8e5afc61.system.entry.js +0 -5
- package/dist/nano-components/p-8e5afc61.system.entry.js.map +0 -1
- package/dist/nano-components/p-9745d44e.system.js.map +0 -1
- package/dist/nano-components/p-9d35768b.entry.js +0 -5
- package/dist/nano-components/p-9d35768b.entry.js.map +0 -1
- package/dist/nano-components/p-aaef7cc7.js +0 -5
- package/dist/nano-components/p-aaef7cc7.js.map +0 -1
- package/dist/nano-components/p-af7abf5e.entry.js +0 -5
- package/dist/nano-components/p-af7abf5e.entry.js.map +0 -1
- package/dist/nano-components/p-df0897ec.system.js +0 -5
- package/dist/nano-components/p-df0897ec.system.js.map +0 -1
- package/dist/nano-components/p-e1f46998.system.js +0 -5
- package/dist/nano-components/p-e1f46998.system.js.map +0 -1
- package/dist/nano-components/p-e7c69d4f.entry.js +0 -5
- package/dist/nano-components/p-e7c69d4f.entry.js.map +0 -1
- package/dist/nano-components/p-ee3fe567.entry.js.map +0 -1
- package/dist/nano-components/p-f3bf942d.entry.js +0 -5
- package/dist/nano-components/p-f3bf942d.entry.js.map +0 -1
@@ -116,7 +116,7 @@ export class Icon {
|
|
116
116
|
"references": {
|
117
117
|
"Color": {
|
118
118
|
"location": "import",
|
119
|
-
"path": "/builds/
|
119
|
+
"path": "/builds/LL4gZL7K/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
120
120
|
}
|
121
121
|
}
|
122
122
|
},
|
@@ -140,7 +140,7 @@ export class Icon {
|
|
140
140
|
"references": {}
|
141
141
|
},
|
142
142
|
"required": false,
|
143
|
-
"optional":
|
143
|
+
"optional": false,
|
144
144
|
"docs": {
|
145
145
|
"tags": [],
|
146
146
|
"text": "Specifies the label to use for accessibility. Defaults to the icon name."
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/components/icon/icon.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Build,\n Component,\n Element,\n Host,\n Prop,\n State,\n Watch,\n h,\n} from '@stencil/core';\nimport { getSvgContent, iconContent } from './request';\nimport { getName, getUrl } from './utils';\nimport { Color } from '../../interface';\nimport { createColorClasses } from '../../utils/theme';\n\nconst CANSHADOW = !!document.head.attachShadow;\n\n/**\n * An SVG loader / helper. Comes bundled with all fontawesome pro icons by default but can use any custom SVG (with an correct path). Lazily loads SVG for each icon, so will only request the icons that you're using and that are visible.\n */\n@Component({\n tag: 'nano-icon',\n assetsDirs: ['../../../node_modules/@fortawesome/fontawesome-pro/svgs'],\n styleUrl: 'icon.scss',\n shadow: true,\n})\nexport class Icon {\n private io?: IntersectionObserver;\n\n @Element() el!: HTMLNanoIconElement;\n\n @State() private svgContent?: string;\n @State() private isVisible = false;\n @State() private isLoading = true;\n\n /**\n * Color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * Specifies the label to use for accessibility. Defaults to the icon name.\n */\n @Prop({ mutable: true, reflect: true }) ariaLabel
|
1
|
+
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/components/icon/icon.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Build,\n Component,\n Element,\n Host,\n Prop,\n State,\n Watch,\n h,\n} from '@stencil/core';\nimport { getSvgContent, iconContent } from './request';\nimport { getName, getUrl } from './utils';\nimport { Color } from '../../interface';\nimport { createColorClasses } from '../../utils/theme';\n\nconst CANSHADOW = !!document.head.attachShadow;\n\n/**\n * An SVG loader / helper. Comes bundled with all fontawesome pro icons by default but can use any custom SVG (with an correct path). Lazily loads SVG for each icon, so will only request the icons that you're using and that are visible.\n */\n@Component({\n tag: 'nano-icon',\n assetsDirs: ['../../../node_modules/@fortawesome/fontawesome-pro/svgs'],\n styleUrl: 'icon.scss',\n shadow: true,\n})\nexport class Icon {\n private io?: IntersectionObserver;\n\n @Element() el!: HTMLNanoIconElement;\n\n @State() private svgContent?: string;\n @State() private isVisible = false;\n @State() private isLoading = true;\n\n /**\n * Color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * Specifies the label to use for accessibility. Defaults to the icon name.\n */\n @Prop({ mutable: true, reflect: true }) ariaLabel: string;\n\n /**\n * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n */\n @Prop() flipRtl?: boolean;\n\n /**\n * Specifies which icon to use from the built-in set of icons.\n */\n @Prop() name?: string;\n\n /**\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n /**\n * A combination of both `name` and `src`. If a `src` url is detected\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and set the `name` property.\n */\n @Prop() icon?: any;\n\n /**\n * The size of the icon.\n * Available options are: `\"small\"` and `\"large\"`.\n */\n @Prop() size?: 'small' | 'large';\n\n /**\n * If enabled, nano-icon will be loaded lazily when it's visible in the viewport.\n * Default, `false`.\n */\n @Prop() lazy = true;\n\n private setAriaLabel() {\n if (!this.ariaLabel) {\n const label = getName(this.name, this.icon);\n // user did not provide a label\n // come up with the label based on the icon name\n if (label) {\n this.ariaLabel = label.split('/').slice(-1)[0].replace(/\\-/g, ' ');\n }\n }\n }\n\n connectedCallback() {\n // purposely do not return the promise here because loading\n // the svg file should not hold up loading the app\n // only load the svg if it's visible\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n componentWillLoad() {\n this.setAriaLabel();\n }\n\n private waitUntilVisible(\n el: HTMLElement,\n rootMargin: string,\n cb: () => void\n ) {\n if (\n Build.isBrowser &&\n CANSHADOW &&\n this.lazy &&\n typeof window !== 'undefined' &&\n (window as any).IntersectionObserver\n ) {\n const io = (this.io = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting || (data[1] && data[1].isIntersecting)) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n },\n { rootMargin }\n ));\n\n io.observe(el);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('icon')\n loadIcon() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (iconContent.has(url)) {\n // sync if it's already loaded\n this.svgContent = iconContent.get(url);\n this.isLoading = false;\n } else {\n // async if it hasn't been loaded\n getSvgContent(url).then(() => {\n this.svgContent = iconContent.get(url);\n this.isLoading = false;\n });\n }\n }\n }\n this.setAriaLabel();\n }\n\n render() {\n const flipRtl =\n this.flipRtl ||\n (this.name &&\n (this.name.indexOf('arrow') > -1 ||\n this.name.indexOf('chevron') > -1) &&\n (this.el.ownerDocument as Document).dir === 'rtl' &&\n this.flipRtl !== false);\n\n return (\n <Host\n role=\"img\"\n class={{\n ...createColorClasses(this.color),\n loading: this.isLoading,\n [`icon-${this.size}`]: !!this.size,\n 'flip-rtl': !!flipRtl,\n }}\n >\n {Build.isBrowser && this.svgContent ? (\n <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n ) : (\n <div class=\"icon-inner\"></div>\n )}\n </Host>\n );\n }\n}\n"]}
|
@@ -14,6 +14,39 @@
|
|
14
14
|
opacity: 0.5;
|
15
15
|
}
|
16
16
|
|
17
|
+
.form-ctrl {
|
18
|
+
min-width: 100%;
|
19
|
+
display: block;
|
20
|
+
}
|
21
|
+
.form-ctrl.has-helper-end {
|
22
|
+
display: -webkit-box;
|
23
|
+
display: -ms-flexbox;
|
24
|
+
display: flex;
|
25
|
+
gap: 1rem;
|
26
|
+
opacity: 0;
|
27
|
+
}
|
28
|
+
.form-ctrl.has-helper-end.is-ready {
|
29
|
+
opacity: 1;
|
30
|
+
}
|
31
|
+
.form-ctrl.has-helper-end .form-ctrl__wrapper {
|
32
|
+
-webkit-box-flex: 1;
|
33
|
+
-ms-flex: 1 1 100%;
|
34
|
+
flex: 1 1 100%;
|
35
|
+
}
|
36
|
+
.form-ctrl.has-helper-end .form-ctrl__helper-end {
|
37
|
+
display: none;
|
38
|
+
}
|
39
|
+
.form-ctrl.has-helper-end.has-enough-width .form-ctrl__helper-end {
|
40
|
+
display: block;
|
41
|
+
}
|
42
|
+
.form-ctrl.has-helper-end.has-enough-width .form-ctrl__helper {
|
43
|
+
display: none;
|
44
|
+
}
|
45
|
+
|
46
|
+
.form-ctrl__wrapper {
|
47
|
+
display: block;
|
48
|
+
}
|
49
|
+
|
17
50
|
label,
|
18
51
|
.form-ctrl__more,
|
19
52
|
.form-ctrl__error,
|
@@ -64,6 +97,14 @@ label.visually-hide,
|
|
64
97
|
font-size: 0.8em;
|
65
98
|
opacity: 0.7;
|
66
99
|
}
|
100
|
+
.form-ctrl__float-label .form-ctrl__label-charcount {
|
101
|
+
opacity: 0;
|
102
|
+
-webkit-transition: opacity 0.125s ease-in;
|
103
|
+
transition: opacity 0.125s ease-in;
|
104
|
+
}
|
105
|
+
:host(.has-focus) .form-ctrl__float-label .form-ctrl__label-charcount, :host(.has-value) .form-ctrl__float-label .form-ctrl__label-charcount {
|
106
|
+
opacity: 1;
|
107
|
+
}
|
67
108
|
.form-ctrl__textarea .form-ctrl__float-label {
|
68
109
|
top: 50%;
|
69
110
|
}
|
@@ -181,6 +222,16 @@ label.visually-hide,
|
|
181
222
|
opacity: 0;
|
182
223
|
}
|
183
224
|
|
225
|
+
.form-ctrl__helper-end {
|
226
|
+
-webkit-box-flex: 1;
|
227
|
+
-ms-flex: 1 1 30%;
|
228
|
+
flex: 1 1 30%;
|
229
|
+
min-width: 150px;
|
230
|
+
font-size: var(--invalid-msg-font-size);
|
231
|
+
color: var(--help-msg-color);
|
232
|
+
font-style: italic;
|
233
|
+
}
|
234
|
+
|
184
235
|
.form-ctrl__error {
|
185
236
|
opacity: 0;
|
186
237
|
color: var(--invalid-msg-color);
|
@@ -372,7 +423,7 @@ label.visually-hide,
|
|
372
423
|
|
373
424
|
* @prop --padding-top: defaults to var(--nano-input-padding-top, var(--nano-input-padding, 8px));;
|
374
425
|
* @prop --padding-end: defaults to var(--nano-input-padding-end, var(--nano-input-padding, 8px));
|
375
|
-
* @prop --padding-bottom: defaults to var(--nano-input-padding-bottom, var(--nano-input-padding,
|
426
|
+
* @prop --padding-bottom: defaults to var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));
|
376
427
|
* @prop --padding-start: defaults to var(--nano-input-padding-start, var(--nano-input-padding, 8px));
|
377
428
|
|
378
429
|
* @prop --color-invalid: defaults to var(--nano-color-danger-rgb, 239, 65, 53);
|
@@ -415,7 +466,7 @@ label.visually-hide,
|
|
415
466
|
--placeholder-opacity: var(--nano-input-placeholder-opacity, 0.5);
|
416
467
|
--padding-top: var(--nano-input-padding-top, var(--nano-input-padding, 8px));
|
417
468
|
--padding-end: var(--nano-input-padding-end, var(--nano-input-padding, 8px));
|
418
|
-
--padding-bottom: var(--nano-input-padding-bottom, var(--nano-input-padding,
|
469
|
+
--padding-bottom: var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));
|
419
470
|
--padding-start: var(--nano-input-padding-start, var(--nano-input-padding, 8px));
|
420
471
|
--color-invalid: var(--nano-color-danger-rgb, 239, 65, 53);
|
421
472
|
--color--focus-rgb:
|
@@ -453,7 +504,7 @@ label.visually-hide,
|
|
453
504
|
width: 100%;
|
454
505
|
padding: 0 !important;
|
455
506
|
color: currentColor;
|
456
|
-
display:
|
507
|
+
display: block;
|
457
508
|
}
|
458
509
|
|
459
510
|
:host(.nano-color) {
|
@@ -598,8 +649,8 @@ label.visually-hide,
|
|
598
649
|
.form-ctrl__textarea .input__native-ctrl::placeholder {
|
599
650
|
line-height: 1.5em;
|
600
651
|
}
|
601
|
-
.has-float-label.form-ctrl__textarea .input__native-ctrl {
|
602
|
-
padding-top: 1.
|
652
|
+
.has-float-label .form-ctrl__textarea .input__native-ctrl {
|
653
|
+
padding-top: 1.75em;
|
603
654
|
}
|
604
655
|
:host([readonly]:not([readonly=false])) .input__native-ctrl {
|
605
656
|
-webkit-user-select: none;
|
@@ -2,19 +2,21 @@
|
|
2
2
|
* Web Components for Nanopore digital Web Apps
|
3
3
|
*/
|
4
4
|
import { Build, Component, Element, Event, Host, Method, Prop, State, Watch, h, Listen, } from '@stencil/core';
|
5
|
-
import { debounceEvent, closestElement, createColorClasses, raf, } from '../../utils';
|
5
|
+
import { debounceEvent, closestElement, createColorClasses, raf, debounce, } from '../../utils';
|
6
6
|
import { FormControl, FormControlWrap } from '../form-control/form-control';
|
7
7
|
let inputIds = 0;
|
8
8
|
/**
|
9
9
|
* The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML [input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input), but works great on desktop devices and integrates with the keyboard on mobile devices.
|
10
10
|
|
11
11
|
It is meant for text type inputs only, such as "text", "password", "email", "number", "search", "tel", and "url". It supports all standard text input events including keyup, keydown, keypress, and more.
|
12
|
+
The default styling reference comes from the [ONT styleguide](https://nanoporetech.zeroheight.com/styleguide/s/31282/p/230c74-text-input--textarea/b/942ee4)
|
12
13
|
* @slot start - suitable for inline action buttons or icons that may add extra contextual information
|
13
14
|
* @slot end - suitable for inline action buttons or icons that may add extra contextual information
|
14
15
|
* @slot value-start - similar to 'start', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist
|
15
16
|
* @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist
|
16
17
|
* @slot label - if you do not set a label attribute, you can use this slot for more complex markup
|
17
18
|
* @slot helper - helper text to accompany the form field underneath.
|
19
|
+
* @slot helper-end - helper text to accompany the form field on the side.
|
18
20
|
* @slot - can be used with a `nano-datalist`. See the `nano-datalist` docs for more information
|
19
21
|
*/
|
20
22
|
export class Input {
|
@@ -27,6 +29,7 @@ export class Input {
|
|
27
29
|
this.hasFocus = false;
|
28
30
|
this.hasLabelSlot = false;
|
29
31
|
this.hasHelperSlot = false;
|
32
|
+
this.hasHelperEndSlot = false;
|
30
33
|
this.errorMessage = '';
|
31
34
|
this.datalist = null;
|
32
35
|
this._invalid = false;
|
@@ -61,7 +64,7 @@ export class Input {
|
|
61
64
|
/**
|
62
65
|
* When should the field perform validation
|
63
66
|
*/
|
64
|
-
this.validateOn = '
|
67
|
+
this.validateOn = 'submitThenDirty';
|
65
68
|
/**
|
66
69
|
* Whether to show validation errors underneath input
|
67
70
|
*/
|
@@ -131,8 +134,7 @@ export class Input {
|
|
131
134
|
};
|
132
135
|
this.onInput = (ev) => {
|
133
136
|
const input = ev.target;
|
134
|
-
|
135
|
-
this.value = input.value || '';
|
137
|
+
this.value = (input === null || input === void 0 ? void 0 : input.value) || '';
|
136
138
|
this.nanoInput.emit(ev);
|
137
139
|
};
|
138
140
|
this.onBlur = () => {
|
@@ -168,6 +170,7 @@ export class Input {
|
|
168
170
|
const event = new window.Event('change');
|
169
171
|
this.nativeInput.dispatchEvent(event);
|
170
172
|
};
|
173
|
+
this.validate = debounce(this.validate, 50);
|
171
174
|
}
|
172
175
|
get nativeInputWrap() {
|
173
176
|
return this._nativeInputWrap;
|
@@ -191,13 +194,21 @@ export class Input {
|
|
191
194
|
get invalid() {
|
192
195
|
return this._invalid;
|
193
196
|
}
|
197
|
+
/**
|
198
|
+
* Current validation message - if any. @readonly
|
199
|
+
*/
|
200
|
+
get validityMessage() {
|
201
|
+
if (!this.nativeInput)
|
202
|
+
return '';
|
203
|
+
return this.nativeInput.validationMessage;
|
204
|
+
}
|
194
205
|
shouldValidate() {
|
195
206
|
if (!this.hasRendered)
|
196
207
|
return;
|
197
|
-
|
208
|
+
requestAnimationFrame(() => {
|
198
209
|
if (this.validateOn === 'dirty')
|
199
210
|
this.validate();
|
200
|
-
}
|
211
|
+
});
|
201
212
|
}
|
202
213
|
/**
|
203
214
|
* Update the native input element when the value changes
|
@@ -210,10 +221,10 @@ export class Input {
|
|
210
221
|
if (this.value.length)
|
211
222
|
this.nativeInput.style.height = this.nativeInput.scrollHeight + 'px';
|
212
223
|
}
|
213
|
-
|
224
|
+
requestAnimationFrame(() => {
|
214
225
|
if (this.validateOn === 'dirty')
|
215
226
|
this.validate();
|
216
|
-
}
|
227
|
+
});
|
217
228
|
}
|
218
229
|
debounceChanged() {
|
219
230
|
this.nanoChange = debounceEvent(this.nanoChange, this.debounce);
|
@@ -224,12 +235,16 @@ export class Input {
|
|
224
235
|
* @returns `{ isValid: boolean, errorMessage: string }`
|
225
236
|
*/
|
226
237
|
async reportValidity(validateFirst) {
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
238
|
+
return new Promise((resolve) => {
|
239
|
+
if (validateFirst)
|
240
|
+
this.validate();
|
241
|
+
setTimeout(() => {
|
242
|
+
resolve({
|
243
|
+
isValid: !this._invalid,
|
244
|
+
errorMessage: this.nativeInput.validationMessage,
|
245
|
+
});
|
246
|
+
}, 50);
|
247
|
+
});
|
233
248
|
}
|
234
249
|
/**
|
235
250
|
* Sets focus on the specified `nano-input`. Use this method instead of the global
|
@@ -310,6 +325,7 @@ export class Input {
|
|
310
325
|
// see if we have label / button content
|
311
326
|
this.hasLabelSlot = !!this.el.querySelectorAll('[slot="label"]');
|
312
327
|
this.hasHelperSlot = !!this.el.querySelector('[slot="helper"]');
|
328
|
+
this.hasHelperEndSlot = !!this.el.querySelector('[slot="helper-end"]');
|
313
329
|
this.datalist = this.el.querySelector('nano-datalist:not([slot])');
|
314
330
|
// breaking change introduced in v2. Rm in v3
|
315
331
|
if (!!this.el.querySelector('[slot="inline-button"]')) {
|
@@ -350,8 +366,9 @@ export class Input {
|
|
350
366
|
const value = this.getValue();
|
351
367
|
const labelId = this.inputId + '-lbl';
|
352
368
|
const moreId = this.showInlineError || this.hasHelperSlot ? this.inputId + '-more' : '';
|
369
|
+
const helperEndId = this.hasHelperEndSlot ? this.inputId + '-helper' : '';
|
353
370
|
this.rtl = this.el.ownerDocument.dir === 'rtl';
|
354
|
-
const compWrapOptions = (({ el, floatLabel, label, errorMessage, type, showInlineError, hasHelperSlot, hasLabelSlot, hideLabel, placeholder, maxlength, charCount, showCharCount, rtl, }) => ({
|
371
|
+
const compWrapOptions = (({ el, floatLabel, label, errorMessage, type, showInlineError, hasHelperSlot, hasLabelSlot, hideLabel, placeholder, maxlength, charCount, showCharCount, rtl, hasHelperEndSlot, }) => ({
|
355
372
|
el,
|
356
373
|
floatLabel,
|
357
374
|
label,
|
@@ -366,9 +383,11 @@ export class Input {
|
|
366
383
|
charCount,
|
367
384
|
showCharCount,
|
368
385
|
rtl,
|
386
|
+
hasHelperEndSlot,
|
369
387
|
}))(this);
|
370
388
|
const wrapOptions = Object.assign(Object.assign({}, compWrapOptions), { labelId,
|
371
|
-
moreId,
|
389
|
+
moreId,
|
390
|
+
helperEndId, hasValue: this.hasValue(), controlId: this.inputId });
|
372
391
|
const controlOptions = (({ clearInput, readonly, disabled }) => ({
|
373
392
|
clearInput,
|
374
393
|
readonly,
|
@@ -378,11 +397,11 @@ export class Input {
|
|
378
397
|
return (h(Host, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) },
|
379
398
|
h(FormControlWrap, Object.assign({}, wrapOptions),
|
380
399
|
h(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }),
|
381
|
-
this.type !== 'textarea' && (h("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate })),
|
400
|
+
this.type !== 'textarea' && (h("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate })),
|
382
401
|
this.type === 'textarea' && (h("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
|
383
402
|
'input__native-ctrl': true,
|
384
403
|
input__resizable: this.resize === 'true',
|
385
|
-
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate }))),
|
404
|
+
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate }))),
|
386
405
|
h("slot", null))));
|
387
406
|
}
|
388
407
|
static get is() { return "nano-input"; }
|
@@ -414,6 +433,25 @@ export class Input {
|
|
414
433
|
"reflect": true,
|
415
434
|
"defaultValue": "false"
|
416
435
|
},
|
436
|
+
"validityMessage": {
|
437
|
+
"type": "string",
|
438
|
+
"mutable": false,
|
439
|
+
"complexType": {
|
440
|
+
"original": "string",
|
441
|
+
"resolved": "string",
|
442
|
+
"references": {}
|
443
|
+
},
|
444
|
+
"required": false,
|
445
|
+
"optional": false,
|
446
|
+
"docs": {
|
447
|
+
"tags": [],
|
448
|
+
"text": "Current validation message - if any. @readonly"
|
449
|
+
},
|
450
|
+
"getter": true,
|
451
|
+
"setter": false,
|
452
|
+
"attribute": "validity-message",
|
453
|
+
"reflect": false
|
454
|
+
},
|
417
455
|
"color": {
|
418
456
|
"type": "string",
|
419
457
|
"mutable": false,
|
@@ -423,7 +461,7 @@ export class Input {
|
|
423
461
|
"references": {
|
424
462
|
"Color": {
|
425
463
|
"location": "import",
|
426
|
-
"path": "/builds/
|
464
|
+
"path": "/builds/LL4gZL7K/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
427
465
|
}
|
428
466
|
}
|
429
467
|
},
|
@@ -653,7 +691,7 @@ export class Input {
|
|
653
691
|
"setter": false,
|
654
692
|
"attribute": "validate-on",
|
655
693
|
"reflect": false,
|
656
|
-
"defaultValue": "'
|
694
|
+
"defaultValue": "'submitThenDirty'"
|
657
695
|
},
|
658
696
|
"showInlineError": {
|
659
697
|
"type": "boolean",
|
@@ -994,7 +1032,7 @@ export class Input {
|
|
994
1032
|
"references": {
|
995
1033
|
"TextFieldTypes": {
|
996
1034
|
"location": "import",
|
997
|
-
"path": "/builds/
|
1035
|
+
"path": "/builds/LL4gZL7K/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
998
1036
|
}
|
999
1037
|
}
|
1000
1038
|
},
|
@@ -1007,7 +1045,7 @@ export class Input {
|
|
1007
1045
|
"getter": false,
|
1008
1046
|
"setter": false,
|
1009
1047
|
"attribute": "type",
|
1010
|
-
"reflect":
|
1048
|
+
"reflect": true,
|
1011
1049
|
"defaultValue": "'text'"
|
1012
1050
|
},
|
1013
1051
|
"form": {
|
@@ -1022,7 +1060,7 @@ export class Input {
|
|
1022
1060
|
"optional": true,
|
1023
1061
|
"docs": {
|
1024
1062
|
"tags": [],
|
1025
|
-
"text": "The form element to associate the
|
1063
|
+
"text": "The form element to associate the input with (its form owner). Must be the id of a form."
|
1026
1064
|
},
|
1027
1065
|
"getter": false,
|
1028
1066
|
"setter": false,
|
@@ -1114,6 +1152,7 @@ export class Input {
|
|
1114
1152
|
"hasFocus": {},
|
1115
1153
|
"hasLabelSlot": {},
|
1116
1154
|
"hasHelperSlot": {},
|
1155
|
+
"hasHelperEndSlot": {},
|
1117
1156
|
"errorMessage": {},
|
1118
1157
|
"datalist": {},
|
1119
1158
|
"_invalid": {}
|
@@ -1153,7 +1192,7 @@ export class Input {
|
|
1153
1192
|
"references": {
|
1154
1193
|
"InputChangeEventDetail": {
|
1155
1194
|
"location": "import",
|
1156
|
-
"path": "/builds/
|
1195
|
+
"path": "/builds/LL4gZL7K/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
1157
1196
|
}
|
1158
1197
|
}
|
1159
1198
|
}
|
@@ -1242,7 +1281,7 @@ export class Input {
|
|
1242
1281
|
"references": {
|
1243
1282
|
"ControlValidityEventDetail": {
|
1244
1283
|
"location": "import",
|
1245
|
-
"path": "/builds/
|
1284
|
+
"path": "/builds/LL4gZL7K/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
1246
1285
|
}
|
1247
1286
|
}
|
1248
1287
|
}
|
@@ -1264,7 +1303,7 @@ export class Input {
|
|
1264
1303
|
},
|
1265
1304
|
"ControlValidity": {
|
1266
1305
|
"location": "import",
|
1267
|
-
"path": "/builds/
|
1306
|
+
"path": "/builds/LL4gZL7K/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
1268
1307
|
}
|
1269
1308
|
},
|
1270
1309
|
"return": "Promise<ControlValidity>"
|
@@ -1360,9 +1399,6 @@ export class Input {
|
|
1360
1399
|
}, {
|
1361
1400
|
"propName": "disabled",
|
1362
1401
|
"methodName": "shouldValidate"
|
1363
|
-
}, {
|
1364
|
-
"propName": "validateOn",
|
1365
|
-
"methodName": "shouldValidate"
|
1366
1402
|
}, {
|
1367
1403
|
"propName": "readonly",
|
1368
1404
|
"methodName": "shouldValidate"
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n ControlValidity,\n ControlValidityEventDetail,\n InputChangeEventDetail,\n TextFieldTypes,\n} from '../../interface';\nimport {\n debounceEvent,\n closestElement,\n createColorClasses,\n raf,\n} from '../../utils';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\n\nlet inputIds = 0;\n\n/**\n * The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML [input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input), but works great on desktop devices and integrates with the keyboard on mobile devices.\n\nIt is meant for text type inputs only, such as \"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", and \"url\". It supports all standard text input events including keyup, keydown, keypress, and more.\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot - can be used with a `nano-datalist`. See the `nano-datalist` docs for more information\n */\n@Component({\n tag: 'nano-input',\n styleUrl: 'input.scss',\n scoped: true,\n})\nexport class Input implements ComponentInterface {\n private nativeInput?: HTMLInputElement | HTMLTextAreaElement;\n private inputId = `nano-input-${inputIds++}`;\n private didBlurAfterEdit = false;\n private rtl: boolean = false;\n private mo?: MutationObserver;\n private charCount = 0;\n private hasRendered = false;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. User get/set to set datalist options\n private _nativeInputWrap: HTMLElement;\n private get nativeInputWrap() {\n return this._nativeInputWrap;\n }\n private set nativeInputWrap(ele: HTMLElement) {\n if (this._nativeInputWrap === ele) return;\n this._nativeInputWrap = ele;\n this.setDataListOpts();\n }\n\n @State() hasFocus = false;\n @State() hasLabelSlot = false;\n @State() hasHelperSlot = false;\n @State() errorMessage: string = '';\n @State() datalist: HTMLNanoDatalistElement = null;\n\n @Watch('datalist')\n setDataListOpts() {\n if (!this.datalist) return;\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n skidding: -1,\n tetherTo: this.nativeInputWrap,\n };\n }\n\n @Element() el!: HTMLNanoInputElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * The color to use from the application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * If the value of the type attribute is `\"file\"`, then this attribute will indicate the types of files that the server accepts, otherwise it will be ignored. The value must be a comma-separated list of unique content type specifiers.\n */\n @Prop() accept?: string;\n\n /**\n * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.\n */\n @Prop() autocapitalise: 'none' | 'sentences' | 'words' | 'characters' =\n 'none';\n\n /**\n * Indicates whether the value of the control can be automatically completed by the browser.\n */\n @Prop() autocomplete: 'on' | 'off' = 'off';\n\n /**\n * Whether auto correction should be enabled when the user is entering/editing the text value.\n */\n @Prop() autocorrect: 'on' | 'off' = 'off';\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.\n */\n @Prop() clearInput = false;\n\n /**\n * If `true`, the value will be cleared after focus upon edit. Defaults to `true` when `type` is `\"password\"`, `false` for all other types.\n */\n @Prop() clearOnEdit?: boolean;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n /**\n * If `true`, the user cannot interact with the input.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode?:\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submit';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively you may use a label slot.\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * The maximum value, which must not be less than its minimum (min attribute) value.\n */\n @Prop() max?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.\n */\n @Prop() maxlength?: number;\n\n /**\n * The minimum value, which must not be greater than its maximum (max attribute) value.\n */\n @Prop() min?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.\n */\n @Prop() minlength?: number;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * A regular expression that the value is checked against. The pattern must match the entire value, not just some subset. Use the title attribute to describe the pattern to help the user. This attribute applies when the value of the type attribute is `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() pattern?: string;\n\n /**\n * Instructional text that shows before the input has a value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * If `true`, the element will have its spelling and grammar checked.\n */\n @Prop() spellcheck = false;\n\n /**\n * Works with the min and max attributes to limit the increments at which a value can be set.\n * Possible values are: `\"any\"` or a positive floating point number.\n */\n @Prop() step?: string;\n\n /**\n * The initial size of the control. This value is in pixels unless the value of the type attribute is `\"text\"` or `\"password\"`, in which case it is an integer number of characters. This attribute applies only when the `type` attribute is set to `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() size?: number;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop() type: TextFieldTypes = 'text';\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * The value of the input.\n */\n @Prop({ mutable: true }) value?: string | null = '';\n\n /**\n * relevant to type=\"textarea\". Vertical resizing - enable / disable or make automatic.\n */\n @Prop() resize: 'true' | 'false' | 'auto' = 'auto';\n\n /**\n * relevant to type=\"textarea\". Default number of rows to show\n */\n @Prop() rows = 2;\n\n /**\n * relevant to type=\"textarea\".\n */\n @Prop() showCharCount = false;\n\n @Watch('minlength')\n @Watch('maxlength')\n @Watch('min')\n @Watch('max')\n @Watch('required')\n @Watch('disabled')\n @Watch('validateOn')\n @Watch('readonly')\n @Watch('pattern')\n @Watch('inputmode')\n protected shouldValidate() {\n if (!this.hasRendered) return;\n setTimeout(() => {\n if (this.validateOn === 'dirty') this.validate();\n }, 20);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n this.nanoChange.emit({ value: this.value });\n this.charCount = this.value.length;\n\n if (this.type === 'textarea' && this.resize === 'auto') {\n this.nativeInput.style.height = 'auto';\n if (this.value.length)\n this.nativeInput.style.height = this.nativeInput.scrollHeight + 'px';\n }\n\n setTimeout(() => {\n if (this.validateOn === 'dirty') this.validate();\n }, 20);\n }\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoChange = debounceEvent(this.nanoChange, this.debounce);\n }\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() nanoInput!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n if (validateFirst) this.validate();\n return {\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n };\n }\n\n /**\n * Sets focus on the specified `nano-input`. Use this method instead of the global\n * `input.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeInput) {\n this.nativeInput.focus();\n this.nativeInput.click();\n }\n }\n\n /**\n * Returns the native `<input>` element used under the hood.\n */\n @Method()\n getInputElement(): Promise<HTMLInputElement | HTMLTextAreaElement> {\n return Promise.resolve(this.nativeInput);\n }\n\n /**\n * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeInput) {\n this.nativeInput.setCustomValidity(message);\n this.validate();\n }\n }\n\n @Listen('reset', { target: 'body' })\n onReset(e) {\n const form = this.form\n ? document.querySelector('#' + this.form)\n : this.el.closest('form');\n if (!form || e.target !== this.el.closest('form')) return;\n\n this.value = '';\n }\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = document.activeElement;\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private shouldClearOnEdit() {\n const { type, clearOnEdit } = this;\n return clearOnEdit === undefined ? type === 'password' : clearOnEdit;\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private validate = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n if (!this.nativeInput.validity.valid) {\n if (this.showInlineError) {\n if (ev) ev.preventDefault();\n this.errorMessage = this.nativeInput.validationMessage;\n }\n this._invalid = true;\n } else this._invalid = false;\n\n this.nanoValidate.emit({\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n originalEvent: ev,\n });\n };\n\n private onInput = (ev: InputEvent) => {\n const input = ev.target as HTMLInputElement | null;\n if (input) this.value = input.value || '';\n this.nanoInput.emit(ev);\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n this.focusChanged();\n if (this.validateOn === 'dirty') this.validate();\n this.nanoBlur.emit();\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.focusChanged();\n this.nanoFocus.emit();\n };\n\n private onKeydown = () => {\n if (this.shouldClearOnEdit()) {\n // Did the input value change after it was blurred and edited?\n if (this.didBlurAfterEdit && this.hasValue()) {\n // Clear the input\n this.clearTextInput();\n }\n\n // Reset the flag\n this.didBlurAfterEdit = false;\n }\n };\n\n private clearTextInput = (ev?: Event) => {\n if (this.clearInput && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n this.value = '';\n this.nativeInput.value = '';\n const event = new window.Event('change');\n this.nativeInput.dispatchEvent(event);\n };\n\n private focusChanged() {\n // If clearOnEdit is enabled and the input blurred but has a value, set a flag\n if (!this.hasFocus && this.shouldClearOnEdit() && this.hasValue()) {\n this.didBlurAfterEdit = true;\n }\n }\n\n private hasValue(): boolean {\n return this.getValue().length > 0;\n }\n\n private slotChangeObserver() {\n if (!Build.isBrowser) return;\n\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / button content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]');\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n this.datalist = this.el.querySelector('nano-datalist:not([slot])');\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"inline-button\"]')) {\n console.warn(\n 'The `inline-button` slot was renamed to `end` in v2 - please update your code',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n connectedCallback() {\n this.debounceChanged();\n if (Build.isBrowser) {\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n }\n\n disconnectedCallback() {\n if (Build.isBrowser) {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n }\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.hasRendered = true;\n if (this.autofocus) setTimeout((_) => this.setFocus(), 300);\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const value = this.getValue();\n const labelId = this.inputId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.inputId + '-more' : '';\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n hasValue: this.hasValue(),\n controlId: this.inputId,\n };\n\n const controlOptions = (({ clearInput, readonly, disabled }) => ({\n clearInput,\n readonly,\n disabled,\n clearControl: this.clearInput,\n }))(this);\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n dir={this.rtl ? 'rtl' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': this.hasValue(),\n 'has-focus': this.hasFocus,\n 'is-invalid': this._invalid,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearTextInput}\n control={this.el}\n ref={(el) => (this.nativeInputWrap = el)}\n >\n {this.type !== 'textarea' && (\n <input\n id={this.inputId}\n class=\"input__native-ctrl\"\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId}\n disabled={this.disabled}\n accept={this.accept}\n autoCapitalize={this.autocapitalise}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n step={this.step}\n size={this.size}\n type={this.type}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n />\n )}\n {this.type === 'textarea' && (\n <textarea\n rows={this.floatLabel ? 1 : this.rows}\n id={this.inputId}\n class={{\n 'input__native-ctrl': true,\n input__resizable: this.resize === 'true',\n }}\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId}\n disabled={this.disabled}\n autoCapitalize={this.autocapitalise}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n minLength={this.minlength}\n maxLength={this.maxlength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n ></textarea>\n )}\n </FormControl>\n <slot />\n </FormControlWrap>\n </Host>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n ControlValidity,\n ControlValidityEventDetail,\n InputChangeEventDetail,\n TextFieldTypes,\n} from '../../interface';\nimport {\n debounceEvent,\n closestElement,\n createColorClasses,\n raf,\n debounce,\n} from '../../utils';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\n\nlet inputIds = 0;\n\n/**\n * The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML [input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input), but works great on desktop devices and integrates with the keyboard on mobile devices.\n\nIt is meant for text type inputs only, such as \"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", and \"url\". It supports all standard text input events including keyup, keydown, keypress, and more.\nThe default styling reference comes from the [ONT styleguide](https://nanoporetech.zeroheight.com/styleguide/s/31282/p/230c74-text-input--textarea/b/942ee4)\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot helper-end - helper text to accompany the form field on the side.\n * @slot - can be used with a `nano-datalist`. See the `nano-datalist` docs for more information\n */\n@Component({\n tag: 'nano-input',\n styleUrl: 'input.scss',\n scoped: true,\n})\nexport class Input implements ComponentInterface {\n private nativeInput?: HTMLInputElement | HTMLTextAreaElement;\n private inputId = `nano-input-${inputIds++}`;\n private didBlurAfterEdit = false;\n private rtl: boolean = false;\n private mo?: MutationObserver;\n private charCount = 0;\n private hasRendered = false;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. User get/set to set datalist options\n private _nativeInputWrap: HTMLElement;\n private get nativeInputWrap() {\n return this._nativeInputWrap;\n }\n private set nativeInputWrap(ele: HTMLElement) {\n if (this._nativeInputWrap === ele) return;\n this._nativeInputWrap = ele;\n this.setDataListOpts();\n }\n\n constructor() {\n this.validate = debounce(this.validate, 50);\n }\n\n @State() hasFocus = false;\n @State() hasLabelSlot = false;\n @State() hasHelperSlot = false;\n @State() hasHelperEndSlot = false;\n @State() errorMessage: string = '';\n @State() datalist: HTMLNanoDatalistElement = null;\n\n @Watch('datalist')\n setDataListOpts() {\n if (!this.datalist) return;\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n skidding: -1,\n tetherTo: this.nativeInputWrap,\n };\n }\n\n @Element() el!: HTMLNanoInputElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n if (!this.nativeInput) return '';\n return this.nativeInput.validationMessage;\n }\n\n /**\n * The color to use from the application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * If the value of the type attribute is `\"file\"`, then this attribute will indicate the types of files that the server accepts, otherwise it will be ignored. The value must be a comma-separated list of unique content type specifiers.\n */\n @Prop() accept?: string;\n\n /**\n * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.\n */\n @Prop() autocapitalise: 'none' | 'sentences' | 'words' | 'characters' =\n 'none';\n\n /**\n * Indicates whether the value of the control can be automatically completed by the browser.\n */\n @Prop() autocomplete: 'on' | 'off' = 'off';\n\n /**\n * Whether auto correction should be enabled when the user is entering/editing the text value.\n */\n @Prop() autocorrect: 'on' | 'off' = 'off';\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.\n */\n @Prop() clearInput = false;\n\n /**\n * If `true`, the value will be cleared after focus upon edit. Defaults to `true` when `type` is `\"password\"`, `false` for all other types.\n */\n @Prop() clearOnEdit?: boolean;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n /**\n * If `true`, the user cannot interact with the input.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode?:\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively you may use a label slot.\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * The maximum value, which must not be less than its minimum (min attribute) value.\n */\n @Prop() max?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.\n */\n @Prop() maxlength?: number;\n\n /**\n * The minimum value, which must not be greater than its maximum (max attribute) value.\n */\n @Prop() min?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.\n */\n @Prop() minlength?: number;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * A regular expression that the value is checked against. The pattern must match the entire value, not just some subset. Use the title attribute to describe the pattern to help the user. This attribute applies when the value of the type attribute is `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() pattern?: string;\n\n /**\n * Instructional text that shows before the input has a value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * If `true`, the element will have its spelling and grammar checked.\n */\n @Prop() spellcheck = false;\n\n /**\n * Works with the min and max attributes to limit the increments at which a value can be set.\n * Possible values are: `\"any\"` or a positive floating point number.\n */\n @Prop() step?: string;\n\n /**\n * The initial size of the control. This value is in pixels unless the value of the type attribute is `\"text\"` or `\"password\"`, in which case it is an integer number of characters. This attribute applies only when the `type` attribute is set to `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() size?: number;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop({ reflect: true }) type: TextFieldTypes = 'text';\n\n /**\n * The form element to associate the input with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * The value of the input.\n */\n @Prop({ mutable: true }) value?: string | null = '';\n\n /**\n * relevant to type=\"textarea\". Vertical resizing - enable / disable or make automatic.\n */\n @Prop() resize: 'true' | 'false' | 'auto' = 'auto';\n\n /**\n * relevant to type=\"textarea\". Default number of rows to show\n */\n @Prop() rows = 2;\n\n /**\n * relevant to type=\"textarea\".\n */\n @Prop() showCharCount = false;\n\n @Watch('minlength')\n @Watch('maxlength')\n @Watch('min')\n @Watch('max')\n @Watch('required')\n @Watch('disabled')\n @Watch('readonly')\n @Watch('pattern')\n @Watch('inputmode')\n protected shouldValidate() {\n if (!this.hasRendered) return;\n requestAnimationFrame(() => {\n if (this.validateOn === 'dirty') this.validate();\n });\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n this.nanoChange.emit({ value: this.value });\n this.charCount = this.value.length;\n\n if (this.type === 'textarea' && this.resize === 'auto') {\n this.nativeInput.style.height = 'auto';\n if (this.value.length)\n this.nativeInput.style.height = this.nativeInput.scrollHeight + 'px';\n }\n\n requestAnimationFrame(() => {\n if (this.validateOn === 'dirty') this.validate();\n });\n }\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoChange = debounceEvent(this.nanoChange, this.debounce);\n }\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() nanoInput!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) this.validate();\n setTimeout(() => {\n resolve({\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n });\n }, 50);\n });\n }\n\n /**\n * Sets focus on the specified `nano-input`. Use this method instead of the global\n * `input.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeInput) {\n this.nativeInput.focus();\n this.nativeInput.click();\n }\n }\n\n /**\n * Returns the native `<input>` element used under the hood.\n */\n @Method()\n getInputElement(): Promise<HTMLInputElement | HTMLTextAreaElement> {\n return Promise.resolve(this.nativeInput);\n }\n\n /**\n * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeInput) {\n this.nativeInput.setCustomValidity(message);\n this.validate();\n }\n }\n\n @Listen('reset', { target: 'body' })\n onReset(e) {\n const form = this.form\n ? document.querySelector('#' + this.form)\n : this.el.closest('form');\n if (!form || e.target !== this.el.closest('form')) return;\n\n this.value = '';\n }\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = document.activeElement;\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private shouldClearOnEdit() {\n const { type, clearOnEdit } = this;\n return clearOnEdit === undefined ? type === 'password' : clearOnEdit;\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private validate = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n if (!this.nativeInput.validity.valid) {\n if (this.showInlineError) {\n if (ev) ev.preventDefault();\n this.errorMessage = this.nativeInput.validationMessage;\n }\n this._invalid = true;\n } else this._invalid = false;\n\n this.nanoValidate.emit({\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n originalEvent: ev,\n });\n };\n\n private onInput = (ev: InputEvent) => {\n const input = ev.target as HTMLInputElement | null;\n this.value = input?.value || '';\n this.nanoInput.emit(ev);\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n this.focusChanged();\n if (this.validateOn === 'dirty') this.validate();\n this.nanoBlur.emit();\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.focusChanged();\n this.nanoFocus.emit();\n };\n\n private onKeydown = () => {\n if (this.shouldClearOnEdit()) {\n // Did the input value change after it was blurred and edited?\n if (this.didBlurAfterEdit && this.hasValue()) {\n // Clear the input\n this.clearTextInput();\n }\n\n // Reset the flag\n this.didBlurAfterEdit = false;\n }\n };\n\n private clearTextInput = (ev?: Event) => {\n if (this.clearInput && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n this.value = '';\n this.nativeInput.value = '';\n const event = new window.Event('change');\n this.nativeInput.dispatchEvent(event);\n };\n\n private focusChanged() {\n // If clearOnEdit is enabled and the input blurred but has a value, set a flag\n if (!this.hasFocus && this.shouldClearOnEdit() && this.hasValue()) {\n this.didBlurAfterEdit = true;\n }\n }\n\n private hasValue(): boolean {\n return this.getValue().length > 0;\n }\n\n private slotChangeObserver() {\n if (!Build.isBrowser) return;\n\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / button content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]');\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n this.hasHelperEndSlot = !!this.el.querySelector('[slot=\"helper-end\"]');\n this.datalist = this.el.querySelector('nano-datalist:not([slot])');\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"inline-button\"]')) {\n console.warn(\n 'The `inline-button` slot was renamed to `end` in v2 - please update your code',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n connectedCallback() {\n this.debounceChanged();\n if (Build.isBrowser) {\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n }\n\n disconnectedCallback() {\n if (Build.isBrowser) {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n }\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.hasRendered = true;\n if (this.autofocus) setTimeout((_) => this.setFocus(), 300);\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const value = this.getValue();\n const labelId = this.inputId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.inputId + '-more' : '';\n const helperEndId = this.hasHelperEndSlot ? this.inputId + '-helper' : '';\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n hasHelperEndSlot,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n hasHelperEndSlot,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n helperEndId,\n hasValue: this.hasValue(),\n controlId: this.inputId,\n };\n\n const controlOptions = (({ clearInput, readonly, disabled }) => ({\n clearInput,\n readonly,\n disabled,\n clearControl: this.clearInput,\n }))(this);\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n dir={this.rtl ? 'rtl' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': this.hasValue(),\n 'has-focus': this.hasFocus,\n 'is-invalid': this._invalid,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearTextInput}\n control={this.el}\n ref={(el) => (this.nativeInputWrap = el)}\n >\n {this.type !== 'textarea' && (\n <input\n id={this.inputId}\n class=\"input__native-ctrl\"\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n accept={this.accept}\n autoCapitalize={this.autocapitalise}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n step={this.step}\n size={this.size}\n type={this.type}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n />\n )}\n {this.type === 'textarea' && (\n <textarea\n rows={this.floatLabel ? 1 : this.rows}\n id={this.inputId}\n class={{\n 'input__native-ctrl': true,\n input__resizable: this.resize === 'true',\n }}\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n autoCapitalize={this.autocapitalise}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n minLength={this.minlength}\n maxLength={this.maxlength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n ></textarea>\n )}\n </FormControl>\n <slot />\n </FormControlWrap>\n </Host>\n );\n }\n}\n"]}
|
@@ -148,8 +148,7 @@ export class Menu {
|
|
148
148
|
i.classList.contains('has-focus'));
|
149
149
|
}
|
150
150
|
get selectedItem() {
|
151
|
-
|
152
|
-
return this.getItems.find((i) => i.selected || i === activeElement);
|
151
|
+
return this.getItems.find((i) => i.selected);
|
153
152
|
}
|
154
153
|
async setActiveFocusItem(item, focus = true) {
|
155
154
|
const items = this.getItems;
|