wcs-core 3.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/cjs/{grid-pagination-ff65e0ff.js → grid-pagination-4b55c908.js} +1 -2
- package/dist/cjs/grid-pagination-4b55c908.js.map +1 -0
- package/dist/cjs/{helpers-11518d4f.js → helpers-4a14051a.js} +41 -1
- package/dist/cjs/helpers-4a14051a.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/wcs-action-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-app.cjs.entry.js +0 -1
- package/dist/cjs/wcs-app.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-button.cjs.entry.js +17 -3
- package/dist/cjs/wcs-button.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-checkbox.cjs.entry.js +0 -1
- package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-com-nav-category.cjs.entry.js +1 -1
- package/dist/cjs/wcs-com-nav-category.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-com-nav-submenu.cjs.entry.js +1 -1
- package/dist/cjs/wcs-com-nav-submenu.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-com-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-counter.cjs.entry.js +130 -0
- package/dist/cjs/wcs-counter.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-dropdown-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/wcs-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-editable-field.cjs.entry.js +16 -3
- package/dist/cjs/wcs-editable-field.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-error_2.cjs.entry.js +1 -1
- package/dist/cjs/wcs-error_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-field.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-footer.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-galactic-menu.cjs.entry.js +1 -1
- package/dist/cjs/wcs-galactic-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-galactic.cjs.entry.js +0 -1
- package/dist/cjs/wcs-galactic.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-grid-column.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-grid-pagination.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid.cjs.entry.js +1 -1
- package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-header.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-hint.cjs.entry.js +3 -3
- package/dist/cjs/wcs-hint.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +0 -1
- package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-input.cjs.entry.js +14 -4
- package/dist/cjs/wcs-input.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-native-select.cjs.entry.js +102 -0
- package/dist/cjs/wcs-native-select.cjs.entry.js.map +1 -0
- package/dist/cjs/wcs-nav-item.cjs.entry.js +1 -1
- package/dist/cjs/wcs-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-radio.cjs.entry.js +3 -3
- package/dist/cjs/wcs-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-select_2.cjs.entry.js +229 -72
- package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-switch.cjs.entry.js +0 -1
- package/dist/cjs/wcs-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-textarea.cjs.entry.js +5 -3
- package/dist/cjs/wcs-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/wcs.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/action-bar/action-bar.js.map +1 -1
- package/dist/collection/components/app/app.js +0 -1
- package/dist/collection/components/app/app.js.map +1 -1
- package/dist/collection/components/button/button-interface.js +5 -1
- package/dist/collection/components/button/button-interface.js.map +1 -1
- package/dist/collection/components/button/button.css +28 -20
- package/dist/collection/components/button/button.js +54 -5
- package/dist/collection/components/button/button.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.js +0 -1
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/com-nav/com-nav.js.map +1 -1
- package/dist/collection/components/com-nav-category/com-nav-category.js.map +1 -1
- package/dist/collection/components/com-nav-submenu/com-nav-submenu.js.map +1 -1
- package/dist/collection/components/counter/counter-interface.js +6 -0
- package/dist/collection/components/counter/counter-interface.js.map +1 -0
- package/dist/collection/components/counter/counter.css +93 -0
- package/dist/collection/components/counter/counter.js +293 -0
- package/dist/collection/components/counter/counter.js.map +1 -0
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/editable-field/editable-field-interface.js +5 -1
- package/dist/collection/components/editable-field/editable-field-interface.js.map +1 -1
- package/dist/collection/components/editable-field/editable-field.css +21 -6
- package/dist/collection/components/editable-field/editable-field.js +33 -2
- package/dist/collection/components/editable-field/editable-field.js.map +1 -1
- package/dist/collection/components/field/field.js +4 -0
- package/dist/collection/components/field/field.js.map +1 -1
- package/dist/collection/components/footer/footer.js +5 -0
- package/dist/collection/components/footer/footer.js.map +1 -1
- package/dist/collection/components/form-field/form-field.js +1 -1
- package/dist/collection/components/form-field/form-field.js.map +1 -1
- package/dist/collection/components/galactic/galactic.js +0 -1
- package/dist/collection/components/galactic/galactic.js.map +1 -1
- package/dist/collection/components/galactic-menu/galactic-menu.js.map +1 -1
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/grid-column/grid-column.js.map +1 -1
- package/dist/collection/components/grid-pagination/grid-pagination.js +0 -1
- package/dist/collection/components/grid-pagination/grid-pagination.js.map +1 -1
- package/dist/collection/components/header/header.js +5 -0
- package/dist/collection/components/header/header.js.map +1 -1
- package/dist/collection/components/hint/hint.js +2 -2
- package/dist/collection/components/hint/hint.js.map +1 -1
- package/dist/collection/components/horizontal-stepper/horizontal-stepper.js +0 -2
- package/dist/collection/components/horizontal-stepper/horizontal-stepper.js.map +1 -1
- package/dist/collection/components/input/input-interface.js +5 -1
- package/dist/collection/components/input/input-interface.js.map +1 -1
- package/dist/collection/components/input/input.css +21 -4
- package/dist/collection/components/input/input.js +30 -19
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/native-select/native-select.component.js +153 -0
- package/dist/collection/components/native-select/native-select.component.js.map +1 -0
- package/dist/collection/components/native-select/native-select.css +78 -0
- package/dist/collection/components/radio/radio.component.js +1 -1
- package/dist/collection/components/radio/radio.component.js.map +1 -1
- package/dist/collection/components/radio/radio.css +15 -4
- package/dist/collection/components/radio-group/radio-group.js.map +1 -1
- package/dist/collection/components/select/select-interface.js +5 -1
- package/dist/collection/components/select/select-interface.js.map +1 -1
- package/dist/collection/components/select/select.css +41 -37
- package/dist/collection/components/select/select.js +233 -68
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/select-option/select-option.css +3 -0
- package/dist/collection/components/select-option/select-option.js +25 -3
- package/dist/collection/components/select-option/select-option.js.map +1 -1
- package/dist/collection/components/switch/switch.js +0 -1
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/components/tab/tab.js.map +1 -1
- package/dist/collection/components/tabs/tabs.js.map +1 -1
- package/dist/collection/components/textarea/textarea.css +3 -1
- package/dist/collection/components/textarea/textarea.js +23 -1
- package/dist/collection/components/textarea/textarea.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/index.js +3 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/shared-types.js +2 -0
- package/dist/collection/shared-types.js.map +1 -0
- package/dist/collection/utils/helpers.js +30 -0
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/esm/{grid-pagination-62f9fbbc.js → grid-pagination-41354861.js} +2 -3
- package/dist/esm/grid-pagination-41354861.js.map +1 -0
- package/dist/esm/{helpers-e9b73aad.js → helpers-1f7170dd.js} +32 -2
- package/dist/esm/helpers-1f7170dd.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/wcs-action-bar.entry.js.map +1 -1
- package/dist/esm/wcs-app.entry.js +1 -2
- package/dist/esm/wcs-app.entry.js.map +1 -1
- package/dist/esm/wcs-button.entry.js +17 -3
- package/dist/esm/wcs-button.entry.js.map +1 -1
- package/dist/esm/wcs-checkbox.entry.js +1 -2
- package/dist/esm/wcs-checkbox.entry.js.map +1 -1
- package/dist/esm/wcs-com-nav-category.entry.js +1 -1
- package/dist/esm/wcs-com-nav-category.entry.js.map +1 -1
- package/dist/esm/wcs-com-nav-submenu.entry.js +1 -1
- package/dist/esm/wcs-com-nav-submenu.entry.js.map +1 -1
- package/dist/esm/wcs-com-nav.entry.js.map +1 -1
- package/dist/esm/wcs-counter.entry.js +126 -0
- package/dist/esm/wcs-counter.entry.js.map +1 -0
- package/dist/esm/wcs-dropdown-item.entry.js +1 -1
- package/dist/esm/wcs-dropdown.entry.js +1 -1
- package/dist/esm/wcs-dropdown.entry.js.map +1 -1
- package/dist/esm/wcs-editable-field.entry.js +16 -3
- package/dist/esm/wcs-editable-field.entry.js.map +1 -1
- package/dist/esm/wcs-error_2.entry.js +1 -1
- package/dist/esm/wcs-error_2.entry.js.map +1 -1
- package/dist/esm/wcs-field.entry.js.map +1 -1
- package/dist/esm/wcs-footer.entry.js.map +1 -1
- package/dist/esm/wcs-galactic-menu.entry.js +1 -1
- package/dist/esm/wcs-galactic-menu.entry.js.map +1 -1
- package/dist/esm/wcs-galactic.entry.js +1 -2
- package/dist/esm/wcs-galactic.entry.js.map +1 -1
- package/dist/esm/wcs-grid-column.entry.js.map +1 -1
- package/dist/esm/wcs-grid-pagination.entry.js +1 -1
- package/dist/esm/wcs-grid.entry.js +1 -1
- package/dist/esm/wcs-grid.entry.js.map +1 -1
- package/dist/esm/wcs-header.entry.js.map +1 -1
- package/dist/esm/wcs-hint.entry.js +3 -3
- package/dist/esm/wcs-hint.entry.js.map +1 -1
- package/dist/esm/wcs-horizontal-stepper.entry.js +0 -1
- package/dist/esm/wcs-horizontal-stepper.entry.js.map +1 -1
- package/dist/esm/wcs-input.entry.js +14 -4
- package/dist/esm/wcs-input.entry.js.map +1 -1
- package/dist/esm/wcs-native-select.entry.js +98 -0
- package/dist/esm/wcs-native-select.entry.js.map +1 -0
- package/dist/esm/wcs-nav-item.entry.js +1 -1
- package/dist/esm/wcs-radio-group.entry.js.map +1 -1
- package/dist/esm/wcs-radio.entry.js +3 -3
- package/dist/esm/wcs-radio.entry.js.map +1 -1
- package/dist/esm/wcs-select_2.entry.js +229 -72
- package/dist/esm/wcs-select_2.entry.js.map +1 -1
- package/dist/esm/wcs-switch.entry.js +1 -2
- package/dist/esm/wcs-switch.entry.js.map +1 -1
- package/dist/esm/wcs-tab.entry.js.map +1 -1
- package/dist/esm/wcs-tabs.entry.js.map +1 -1
- package/dist/esm/wcs-textarea.entry.js +5 -3
- package/dist/esm/wcs-textarea.entry.js.map +1 -1
- package/dist/esm/wcs-tooltip.entry.js.map +1 -1
- package/dist/esm/wcs.js +1 -1
- package/dist/types/components/action-bar/action-bar.d.ts +2 -2
- package/dist/types/components/app/app.d.ts +0 -1
- package/dist/types/components/button/button-interface.d.ts +5 -1
- package/dist/types/components/button/button.d.ts +16 -7
- package/dist/types/components/checkbox/checkbox.d.ts +0 -1
- package/dist/types/components/com-nav/com-nav.d.ts +4 -4
- package/dist/types/components/com-nav-category/com-nav-category.d.ts +2 -2
- package/dist/types/components/com-nav-submenu/com-nav-submenu.d.ts +2 -2
- package/dist/types/components/counter/counter-interface.d.ts +7 -0
- package/dist/types/components/counter/counter.d.ts +67 -0
- package/dist/types/components/dropdown/dropdown.d.ts +2 -2
- package/dist/types/components/editable-field/editable-field-interface.d.ts +4 -0
- package/dist/types/components/editable-field/editable-field.d.ts +10 -13
- package/dist/types/components/field/field.d.ts +4 -0
- package/dist/types/components/footer/footer.d.ts +5 -0
- package/dist/types/components/form-field/form-field.d.ts +4 -4
- package/dist/types/components/galactic/galactic.d.ts +0 -1
- package/dist/types/components/galactic-menu/galactic-menu.d.ts +2 -2
- package/dist/types/components/grid/grid.d.ts +4 -4
- package/dist/types/components/grid-column/grid-column.d.ts +1 -1
- package/dist/types/components/grid-pagination/grid-pagination.d.ts +0 -1
- package/dist/types/components/header/header.d.ts +5 -0
- package/dist/types/components/hint/hint.d.ts +4 -1
- package/dist/types/components/horizontal-stepper/horizontal-stepper.d.ts +2 -4
- package/dist/types/components/input/input-interface.d.ts +4 -0
- package/dist/types/components/input/input.d.ts +8 -8
- package/dist/types/components/native-select/native-select.component.d.ts +56 -0
- package/dist/types/components/radio/radio.component.d.ts +1 -1
- package/dist/types/components/radio-group/radio-group.d.ts +1 -1
- package/dist/types/components/select/select-interface.d.ts +4 -0
- package/dist/types/components/select/select.d.ts +32 -20
- package/dist/types/components/select-option/select-option.d.ts +9 -3
- package/dist/types/components/switch/switch.d.ts +0 -1
- package/dist/types/components/tabs/tabs.d.ts +3 -3
- package/dist/types/components/textarea/textarea.d.ts +10 -2
- package/dist/types/components/tooltip/tooltip.d.ts +1 -2
- package/dist/types/components.d.ts +242 -22
- package/dist/types/index.d.ts +2 -0
- package/dist/types/shared-types.d.ts +10 -0
- package/dist/types/utils/helpers.d.ts +10 -0
- package/dist/wcs/p-029eb12a.entry.js +2 -0
- package/dist/wcs/p-029eb12a.entry.js.map +1 -0
- package/dist/wcs/p-069555a1.entry.js.map +1 -1
- package/dist/wcs/p-07b8cd36.entry.js.map +1 -1
- package/dist/wcs/p-12ac2547.js +2 -0
- package/dist/wcs/p-12ac2547.js.map +1 -0
- package/dist/wcs/p-1e43122f.entry.js.map +1 -1
- package/dist/wcs/p-26c4c983.entry.js +2 -0
- package/dist/wcs/p-26c4c983.entry.js.map +1 -0
- package/dist/wcs/p-26e7de5c.entry.js +16 -0
- package/dist/wcs/p-26e7de5c.entry.js.map +1 -0
- package/dist/wcs/p-31a8d23f.entry.js +2 -0
- package/dist/wcs/{p-d11c66d4.entry.js.map → p-31a8d23f.entry.js.map} +1 -1
- package/dist/wcs/p-463667c9.entry.js +2 -0
- package/dist/wcs/p-475ac7c5.js +2 -0
- package/dist/wcs/p-475ac7c5.js.map +1 -0
- package/dist/wcs/p-47d8ece5.entry.js.map +1 -1
- package/dist/wcs/p-4a9f8e94.entry.js.map +1 -1
- package/dist/wcs/p-4b2d8a6d.entry.js +2 -0
- package/dist/wcs/p-4b2d8a6d.entry.js.map +1 -0
- package/dist/wcs/{p-c7b42bae.entry.js → p-4b4d53e2.entry.js} +2 -2
- package/dist/wcs/p-50dce764.entry.js.map +1 -1
- package/dist/wcs/{p-8762cf93.entry.js → p-554ca93c.entry.js} +2 -2
- package/dist/wcs/p-627bbb6a.entry.js.map +1 -1
- package/dist/wcs/p-64dd7356.entry.js.map +1 -1
- package/dist/wcs/p-6acbf38a.entry.js +2 -0
- package/dist/wcs/{p-7d7472e2.entry.js.map → p-6acbf38a.entry.js.map} +1 -1
- package/dist/wcs/{p-6f921d57.entry.js → p-732b2faa.entry.js} +2 -2
- package/dist/wcs/p-732b2faa.entry.js.map +1 -0
- package/dist/wcs/{p-587fea23.entry.js → p-966a241e.entry.js} +2 -2
- package/dist/wcs/p-966a241e.entry.js.map +1 -0
- package/dist/wcs/p-9ecdeaf9.entry.js +2 -0
- package/dist/wcs/p-9ecdeaf9.entry.js.map +1 -0
- package/dist/wcs/p-a24fa4f4.entry.js +2 -0
- package/dist/wcs/p-a24fa4f4.entry.js.map +1 -0
- package/dist/wcs/p-a5cd4c07.entry.js +2 -0
- package/dist/wcs/{p-8bb19e58.entry.js.map → p-a5cd4c07.entry.js.map} +1 -1
- package/dist/wcs/p-b229a91c.entry.js +2 -0
- package/dist/wcs/p-b229a91c.entry.js.map +1 -0
- package/dist/wcs/{p-d998e112.entry.js → p-b6cd196d.entry.js} +2 -2
- package/dist/wcs/{p-d998e112.entry.js.map → p-b6cd196d.entry.js.map} +1 -1
- package/dist/wcs/p-b856f2f6.entry.js +2 -0
- package/dist/wcs/p-b856f2f6.entry.js.map +1 -0
- package/dist/wcs/{p-274232e6.entry.js → p-bcb8b731.entry.js} +2 -2
- package/dist/wcs/p-bcb8b731.entry.js.map +1 -0
- package/dist/wcs/p-d2da0c9f.entry.js +2 -0
- package/dist/wcs/p-d2da0c9f.entry.js.map +1 -0
- package/dist/wcs/p-d3f1cafe.entry.js.map +1 -1
- package/dist/wcs/p-d6b3f742.entry.js +2 -0
- package/dist/wcs/p-d6b3f742.entry.js.map +1 -0
- package/dist/wcs/p-ee453b6e.entry.js +2 -0
- package/dist/wcs/p-ee453b6e.entry.js.map +1 -0
- package/dist/wcs/p-f386bb8b.entry.js.map +1 -1
- package/dist/wcs/{p-e4dcd310.entry.js → p-f82e7a61.entry.js} +2 -2
- package/dist/wcs/{p-e4dcd310.entry.js.map → p-f82e7a61.entry.js.map} +1 -1
- package/dist/wcs/p-fc3f5b53.entry.js.map +1 -1
- package/dist/wcs/wcs.css +1 -1
- package/dist/wcs/wcs.esm.js +1 -1
- package/dist/wcs/wcs.esm.js.map +1 -1
- package/package.json +17 -12
- package/dist/cjs/grid-pagination-ff65e0ff.js.map +0 -1
- package/dist/cjs/helpers-11518d4f.js.map +0 -1
- package/dist/esm/grid-pagination-62f9fbbc.js.map +0 -1
- package/dist/esm/helpers-e9b73aad.js.map +0 -1
- package/dist/wcs/p-111ae1af.entry.js +0 -2
- package/dist/wcs/p-111ae1af.entry.js.map +0 -1
- package/dist/wcs/p-14e04d5e.entry.js +0 -2
- package/dist/wcs/p-14e04d5e.entry.js.map +0 -1
- package/dist/wcs/p-274232e6.entry.js.map +0 -1
- package/dist/wcs/p-2920b759.entry.js +0 -16
- package/dist/wcs/p-2920b759.entry.js.map +0 -1
- package/dist/wcs/p-3e370f48.entry.js +0 -2
- package/dist/wcs/p-49e66081.entry.js +0 -2
- package/dist/wcs/p-49e66081.entry.js.map +0 -1
- package/dist/wcs/p-504fb24e.entry.js +0 -2
- package/dist/wcs/p-504fb24e.entry.js.map +0 -1
- package/dist/wcs/p-5140269d.entry.js +0 -2
- package/dist/wcs/p-5140269d.entry.js.map +0 -1
- package/dist/wcs/p-587fea23.entry.js.map +0 -1
- package/dist/wcs/p-62db1219.js +0 -2
- package/dist/wcs/p-62db1219.js.map +0 -1
- package/dist/wcs/p-6f921d57.entry.js.map +0 -1
- package/dist/wcs/p-7d7472e2.entry.js +0 -2
- package/dist/wcs/p-89b3550b.entry.js +0 -2
- package/dist/wcs/p-89b3550b.entry.js.map +0 -1
- package/dist/wcs/p-8bb19e58.entry.js +0 -2
- package/dist/wcs/p-9157466f.entry.js +0 -2
- package/dist/wcs/p-9157466f.entry.js.map +0 -1
- package/dist/wcs/p-d11c66d4.entry.js +0 -2
- package/dist/wcs/p-d218509e.entry.js +0 -2
- package/dist/wcs/p-d218509e.entry.js.map +0 -1
- package/dist/wcs/p-dc57a5f7.js +0 -2
- package/dist/wcs/p-dc57a5f7.js.map +0 -1
- /package/dist/wcs/{p-3e370f48.entry.js.map → p-463667c9.entry.js.map} +0 -0
- /package/dist/wcs/{p-c7b42bae.entry.js.map → p-4b4d53e2.entry.js.map} +0 -0
- /package/dist/wcs/{p-8762cf93.entry.js.map → p-554ca93c.entry.js.map} +0 -0
|
@@ -178,11 +178,13 @@
|
|
|
178
178
|
--wcs-select-value-color: var(--wcs-primary);
|
|
179
179
|
--wcs-select-border-color: transparent;
|
|
180
180
|
--wcs-select-overlay-max-height: 360px;
|
|
181
|
-
--wcs-select-option-height:
|
|
181
|
+
--wcs-select-option-height: var(--wcs-size-m);
|
|
182
|
+
--wcs-select-border-width: 1px;
|
|
182
183
|
display: block;
|
|
183
184
|
position: relative;
|
|
184
185
|
outline: none;
|
|
185
186
|
user-select: none;
|
|
187
|
+
box-sizing: border-box;
|
|
186
188
|
}
|
|
187
189
|
:host svg {
|
|
188
190
|
flex-shrink: 0;
|
|
@@ -198,18 +200,6 @@
|
|
|
198
200
|
opacity: 100;
|
|
199
201
|
}
|
|
200
202
|
|
|
201
|
-
:host([class~=expanded][overlaydirection=top]) .wcs-select-control {
|
|
202
|
-
border: var(--wcs-select-border-color) solid 1px;
|
|
203
|
-
border-top-left-radius: 0;
|
|
204
|
-
border-top-right-radius: 0;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
:host([class~=expanded][overlaydirection=bottom]) .wcs-select-control {
|
|
208
|
-
border: var(--wcs-select-border-color) solid 1px;
|
|
209
|
-
border-bottom-left-radius: 0;
|
|
210
|
-
border-bottom-right-radius: 0;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
203
|
:host(.expanded) {
|
|
214
204
|
--wcs-select-border-color: var(--wcs-text-light);
|
|
215
205
|
}
|
|
@@ -243,7 +233,8 @@
|
|
|
243
233
|
}
|
|
244
234
|
|
|
245
235
|
label {
|
|
246
|
-
padding: calc(var(--wcs-padding)
|
|
236
|
+
padding-left: calc(var(--wcs-padding) - var(--wcs-select-border-width));
|
|
237
|
+
padding-right: calc(var(--wcs-padding) - var(--wcs-select-border-width));
|
|
247
238
|
font-weight: 500;
|
|
248
239
|
cursor: pointer;
|
|
249
240
|
color: var(--wcs-select-color);
|
|
@@ -253,11 +244,28 @@ label {
|
|
|
253
244
|
text-overflow: ellipsis;
|
|
254
245
|
}
|
|
255
246
|
|
|
247
|
+
:host([size=m]) {
|
|
248
|
+
min-height: var(--wcs-size-m);
|
|
249
|
+
--wcs-select-font-size: 1rem;
|
|
250
|
+
}
|
|
251
|
+
:host([size=m]) .wcs-select-control {
|
|
252
|
+
min-height: var(--wcs-size-m);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
:host([size=l]) {
|
|
256
|
+
min-height: var(--wcs-size-l);
|
|
257
|
+
--wcs-select-font-size: 1.0625rem;
|
|
258
|
+
}
|
|
259
|
+
:host([size=l]) .wcs-select-control {
|
|
260
|
+
min-height: var(--wcs-size-l);
|
|
261
|
+
}
|
|
262
|
+
|
|
256
263
|
:host([chips]) .wcs-select-control {
|
|
257
264
|
flex-wrap: wrap;
|
|
258
265
|
}
|
|
259
266
|
|
|
260
267
|
.wcs-select-control {
|
|
268
|
+
box-sizing: border-box;
|
|
261
269
|
--mdc-ripple-fg-size: 0;
|
|
262
270
|
--mdc-ripple-left: 0;
|
|
263
271
|
--mdc-ripple-top: 0;
|
|
@@ -272,8 +280,8 @@ label {
|
|
|
272
280
|
padding-right: var(--wcs-text-padding);
|
|
273
281
|
background-color: var(--wcs-select-background-color);
|
|
274
282
|
border-radius: var(--wcs-select-border-radius);
|
|
275
|
-
border: var(--wcs-select-border-color) solid
|
|
276
|
-
font-size: 1rem;
|
|
283
|
+
border: var(--wcs-select-border-color) solid var(--wcs-select-border-width);
|
|
284
|
+
font-size: var(--wcs-select-font-size, 1rem);
|
|
277
285
|
line-height: 1.5;
|
|
278
286
|
cursor: pointer;
|
|
279
287
|
}
|
|
@@ -371,42 +379,38 @@ label {
|
|
|
371
379
|
font-weight: var(--wcs-font-weight-form-value);
|
|
372
380
|
}
|
|
373
381
|
|
|
382
|
+
.wcs-select-value-container {
|
|
383
|
+
margin-top: 4px;
|
|
384
|
+
margin-bottom: 4px;
|
|
385
|
+
margin-left: calc(var(--wcs-margin) / 2);
|
|
386
|
+
max-width: calc(100% - (24px + var(--wcs-base-margin)));
|
|
387
|
+
display: flex;
|
|
388
|
+
flex-direction: row;
|
|
389
|
+
gap: 4px;
|
|
390
|
+
align-items: center;
|
|
391
|
+
flex-wrap: wrap;
|
|
392
|
+
}
|
|
393
|
+
|
|
374
394
|
.wcs-select-chip {
|
|
395
|
+
line-height: 1.375;
|
|
375
396
|
color: var(--wcs-contrast);
|
|
376
397
|
background-color: var(--wcs-base);
|
|
377
398
|
border-radius: 0.75rem;
|
|
378
399
|
display: flex;
|
|
379
400
|
align-items: center;
|
|
380
|
-
margin: calc(var(--wcs-base-margin) / 2);
|
|
381
401
|
padding: calc((var(--wcs-padding) - 8px) / 2) var(--wcs-padding);
|
|
382
402
|
overflow: initial;
|
|
383
403
|
}
|
|
384
404
|
|
|
385
|
-
:host([overlaydirection=top]) .wcs-select-options {
|
|
386
|
-
-webkit-transform: translateY(-100%);
|
|
387
|
-
transform: translateY(-100%);
|
|
388
|
-
border-left: var(--wcs-select-border-color) solid 1px;
|
|
389
|
-
border-right: var(--wcs-select-border-color) solid 1px;
|
|
390
|
-
border-top: var(--wcs-select-border-color) solid 1px;
|
|
391
|
-
border-top-right-radius: var(--wcs-border-radius);
|
|
392
|
-
border-top-left-radius: var(--wcs-border-radius);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
:host([overlaydirection=bottom]) .wcs-select-options {
|
|
396
|
-
border-left: var(--wcs-select-border-color) solid 1px;
|
|
397
|
-
border-right: var(--wcs-select-border-color) solid 1px;
|
|
398
|
-
border-bottom: var(--wcs-select-border-color) solid 1px;
|
|
399
|
-
border-bottom-right-radius: var(--wcs-border-radius);
|
|
400
|
-
border-bottom-left-radius: var(--wcs-border-radius);
|
|
401
|
-
}
|
|
402
|
-
|
|
403
405
|
.wcs-select-options {
|
|
404
406
|
display: none;
|
|
405
407
|
position: absolute;
|
|
406
|
-
z-index:
|
|
407
|
-
|
|
408
|
+
z-index: 999999999;
|
|
409
|
+
border: solid var(--wcs-select-border-width) var(--wcs-select-border-color);
|
|
410
|
+
border-radius: var(--wcs-select-border-radius);
|
|
408
411
|
max-height: var(--wcs-select-overlay-max-height);
|
|
409
412
|
overflow-y: auto;
|
|
413
|
+
width: calc(100% - 2 * var(--wcs-select-border-width));
|
|
410
414
|
background-color: var(--wcs-white);
|
|
411
415
|
color: var(--wcs-text-medium);
|
|
412
416
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { h, Host } from '@stencil/core';
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import { interpret, Machine } from 'xstate';
|
|
4
|
+
import { isWcsSelectSize, WcsSelectSizeValue } from './select-interface';
|
|
4
5
|
import { SelectArrow } from './select-arrow';
|
|
5
|
-
import { isElement } from '../../utils/helpers';
|
|
6
|
+
import { isDownArrowKey, isElement, isEnterKey, isEscapeKey, isHomeKey, isLeftArrowKey, isPageDownKey, isPageUpKey, isRightArrowKey, isTabKey, isUpArrowKey, generateUniqueId, findItemLabel, isSpaceKey, } from '../../utils/helpers';
|
|
6
7
|
import { SelectChips } from './select-chips';
|
|
7
8
|
import { MDCRipple } from '@material/ripple';
|
|
9
|
+
import { createPopper } from '@popperjs/core';
|
|
8
10
|
const SELECT_MACHINE_CONFIG = {
|
|
9
11
|
key: 'select',
|
|
10
12
|
initial: 'closed',
|
|
@@ -14,7 +16,7 @@ const SELECT_MACHINE_CONFIG = {
|
|
|
14
16
|
on: {
|
|
15
17
|
CLICK: 'opened',
|
|
16
18
|
OPEN: 'opened',
|
|
17
|
-
|
|
19
|
+
OPTION_SELECTED: { actions: ['selectOption'] }
|
|
18
20
|
},
|
|
19
21
|
},
|
|
20
22
|
opened: {
|
|
@@ -22,7 +24,7 @@ const SELECT_MACHINE_CONFIG = {
|
|
|
22
24
|
on: {
|
|
23
25
|
CLICK: 'closed',
|
|
24
26
|
CLOSE: 'closed',
|
|
25
|
-
|
|
27
|
+
OPTION_SELECTED: { actions: ['selectOption'] }
|
|
26
28
|
},
|
|
27
29
|
},
|
|
28
30
|
}
|
|
@@ -34,11 +36,13 @@ const SELECT_MACHINE_CONFIG = {
|
|
|
34
36
|
* <wcs-select>
|
|
35
37
|
* <wcs-select-option value="1">One</wcs-select-option>
|
|
36
38
|
* </wcs-select>```
|
|
37
|
-
* @todo Complete keyboard navigation.
|
|
38
39
|
*/
|
|
39
40
|
export class Select {
|
|
40
41
|
constructor() {
|
|
42
|
+
this.selectId = `wcs-select-${selectIds++}`;
|
|
43
|
+
this.optionsId = generateUniqueId("OPTIONS");
|
|
41
44
|
this.expanded = false;
|
|
45
|
+
this.size = 'm';
|
|
42
46
|
this.hasLoaded = false;
|
|
43
47
|
this.displayText = undefined;
|
|
44
48
|
this.focused = undefined;
|
|
@@ -133,9 +137,29 @@ export class Select {
|
|
|
133
137
|
if (this.value !== undefined) {
|
|
134
138
|
this.updateSelectedValue(this.value);
|
|
135
139
|
}
|
|
140
|
+
this.popper = this.createPopperInstance();
|
|
141
|
+
// if the select is inside a wcs-form-field, we set an id to the wcs-label if present
|
|
142
|
+
// the wcs-label element reference is kept to compute aria-label value during the rendering
|
|
143
|
+
this.labelElement = findItemLabel(this.el);
|
|
144
|
+
if (this.labelElement) {
|
|
145
|
+
this.labelElement.id = this.selectId + "-lbl";
|
|
146
|
+
}
|
|
136
147
|
// TODO: is this still usefull for anything ?
|
|
137
148
|
this.hasLoaded = true;
|
|
138
149
|
}
|
|
150
|
+
createPopperInstance() {
|
|
151
|
+
return createPopper(this.controlEl, this.optionsEl, {
|
|
152
|
+
placement: "bottom",
|
|
153
|
+
modifiers: [
|
|
154
|
+
{
|
|
155
|
+
name: 'offset',
|
|
156
|
+
options: {
|
|
157
|
+
offset: [0, 4] // we want 4px between select control and select options
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
});
|
|
162
|
+
}
|
|
139
163
|
emitChange(newValue) {
|
|
140
164
|
this.wcsChange.emit({
|
|
141
165
|
value: newValue
|
|
@@ -160,6 +184,12 @@ export class Select {
|
|
|
160
184
|
});
|
|
161
185
|
observer.observe(this.el, { childList: true });
|
|
162
186
|
}
|
|
187
|
+
componentWillLoad() {
|
|
188
|
+
if (!isWcsSelectSize(this.size)) {
|
|
189
|
+
console.error(`Invalid size value for wcs-select : "${this.size}". Must be one of "${WcsSelectSizeValue.join(', ')}"`);
|
|
190
|
+
this.size = "m"; // Default fallback value
|
|
191
|
+
}
|
|
192
|
+
}
|
|
163
193
|
componentWillUpdate() {
|
|
164
194
|
if (this.multiple) {
|
|
165
195
|
this.options
|
|
@@ -174,22 +204,47 @@ export class Select {
|
|
|
174
204
|
}
|
|
175
205
|
return [];
|
|
176
206
|
}
|
|
207
|
+
get notDisabledOptions() {
|
|
208
|
+
var _a;
|
|
209
|
+
const opts = (_a = this.el) === null || _a === void 0 ? void 0 : _a.querySelectorAll('wcs-select-option:not([disabled])');
|
|
210
|
+
if (opts && opts.length !== 0) {
|
|
211
|
+
return opts;
|
|
212
|
+
}
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
177
215
|
initMachineOptions() {
|
|
178
216
|
return {
|
|
179
217
|
actions: {
|
|
180
218
|
open: () => {
|
|
219
|
+
var _a;
|
|
181
220
|
if (!this.disabled) {
|
|
182
|
-
this.updateOverlayDirection();
|
|
183
221
|
this.expanded = true;
|
|
184
|
-
this.focused =
|
|
222
|
+
this.focused = false;
|
|
223
|
+
if (this.notDisabledOptions.length > 0) {
|
|
224
|
+
this.lastFocusedOptionElement = (_a = this.lastSelectedOptionElement) !== null && _a !== void 0 ? _a : this.notDisabledOptions[0];
|
|
225
|
+
requestAnimationFrame(() => {
|
|
226
|
+
var _a;
|
|
227
|
+
(_a = this.lastFocusedOptionElement) === null || _a === void 0 ? void 0 : _a.focus();
|
|
228
|
+
});
|
|
229
|
+
}
|
|
185
230
|
}
|
|
186
231
|
},
|
|
187
|
-
close: () => {
|
|
188
|
-
|
|
232
|
+
close: (_, event) => {
|
|
233
|
+
var _a, _b;
|
|
234
|
+
if (event.type === 'CLOSE') {
|
|
235
|
+
if ((_a = event.value) === null || _a === void 0 ? void 0 : _a.shouldBlur) {
|
|
236
|
+
(_b = this.el.closest("wcs-select")) === null || _b === void 0 ? void 0 : _b.focus();
|
|
237
|
+
this.focused = false;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
this.el.focus();
|
|
241
|
+
this.focused = true;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
189
244
|
this.expanded = false;
|
|
190
245
|
},
|
|
191
246
|
selectOption: (_, event) => {
|
|
192
|
-
if (event.type === '
|
|
247
|
+
if (event.type === 'OPTION_SELECTED') {
|
|
193
248
|
this.handleClickEvent(event.value);
|
|
194
249
|
}
|
|
195
250
|
}
|
|
@@ -199,41 +254,6 @@ export class Select {
|
|
|
199
254
|
}
|
|
200
255
|
};
|
|
201
256
|
}
|
|
202
|
-
/**
|
|
203
|
-
* This method controls whether or not the overlay has enough space to be displayed
|
|
204
|
-
* at the bottom of the select component.
|
|
205
|
-
*
|
|
206
|
-
* It compute the size of the expended select by adding the theoretical dimensions of the
|
|
207
|
-
* overlay calculated from the number of options plus the initial select size.
|
|
208
|
-
* @private
|
|
209
|
-
*/
|
|
210
|
-
updateOverlayDirection() {
|
|
211
|
-
// We retrieve values from CSS variables
|
|
212
|
-
const overlayMaxHeight = +getComputedStyle(this.el).getPropertyValue('--wcs-select-overlay-max-height').replace(/\D/g, '');
|
|
213
|
-
const optionSize = +getComputedStyle(this.el).getPropertyValue('--wcs-select-option-height').replace(/\D/g, '');
|
|
214
|
-
const selectBounding = this.el.getBoundingClientRect();
|
|
215
|
-
const maxOptionsCount = Math.floor(overlayMaxHeight / optionSize);
|
|
216
|
-
// Maximum size of the overlay is 360px, otherwise the size is calculated from the number of options
|
|
217
|
-
const optionsOverlaySize = this.options.length > maxOptionsCount ? overlayMaxHeight + 1 : this.options.length * optionSize + 1;
|
|
218
|
-
const remainingHeightAfterOpen = window.innerHeight - (selectBounding.y + selectBounding.height + optionsOverlaySize);
|
|
219
|
-
// There are not enough pixels to open the overlay below the component
|
|
220
|
-
if (remainingHeightAfterOpen < 0) {
|
|
221
|
-
this.overlayDirection = 'top';
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
this.overlayDirection = 'bottom';
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
updateOverlayMargin() {
|
|
228
|
-
if (this.controlEl && this.optionsEl) {
|
|
229
|
-
if (this.overlayDirection === 'top') {
|
|
230
|
-
this.optionsEl.style.marginTop = '-' + this.controlEl.getBoundingClientRect().height + 'px';
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
this.optionsEl.style.marginTop = '0';
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
257
|
handleClickEvent(event) {
|
|
238
258
|
if (this.multiple) {
|
|
239
259
|
this.handleClickOnMultiple(event);
|
|
@@ -248,10 +268,13 @@ export class Select {
|
|
|
248
268
|
const { value, displayText, chipColor, chipBackgroundColor } = event;
|
|
249
269
|
this.values.push({ value, displayText, chipColor, chipBackgroundColor });
|
|
250
270
|
event.source.selected = true;
|
|
271
|
+
this.lastSelectedOptionElement = event.source;
|
|
251
272
|
}
|
|
252
273
|
else {
|
|
253
274
|
event.source.selected = false;
|
|
254
275
|
this.values.splice(index, 1);
|
|
276
|
+
if (this.lastSelectedOptionElement === event.source)
|
|
277
|
+
this.lastSelectedOptionElement = null;
|
|
255
278
|
}
|
|
256
279
|
this.updateValueWithValues();
|
|
257
280
|
}
|
|
@@ -271,6 +294,7 @@ export class Select {
|
|
|
271
294
|
event.source.selected = true;
|
|
272
295
|
this.value = event.value;
|
|
273
296
|
this.displayText = event.displayText;
|
|
297
|
+
this.lastSelectedOptionElement = event.source;
|
|
274
298
|
this.stateService.send('CLOSE');
|
|
275
299
|
}
|
|
276
300
|
disconnectedCallback() {
|
|
@@ -302,20 +326,136 @@ export class Select {
|
|
|
302
326
|
}
|
|
303
327
|
}
|
|
304
328
|
onWindowClickEvent(event) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
const clickedOnSelectOrChildren = event.composedPath().map(x => x.nodeName).indexOf('WCS-SELECT') !== -1;
|
|
329
|
+
const firstSelectInEventPath = event.composedPath().filter(x => x.nodeName === 'WCS-SELECT')[0];
|
|
330
|
+
const clickOnCurrentSelect = firstSelectInEventPath === this.el;
|
|
308
331
|
// TODO: Move this logic in the state machine
|
|
309
332
|
// FIXME: Doesnt work with single + disabled option
|
|
310
|
-
if (this.expanded && !
|
|
333
|
+
if (this.expanded && !clickOnCurrentSelect) {
|
|
311
334
|
this.stateService.send('CLOSE');
|
|
312
335
|
}
|
|
313
336
|
}
|
|
337
|
+
onKeyDown(_event) {
|
|
338
|
+
// close
|
|
339
|
+
if (this.stateService.getSnapshot().matches("closed")) {
|
|
340
|
+
if (isEnterKey(_event) || (_event.altKey && isDownArrowKey(_event)) || isSpaceKey(_event)) {
|
|
341
|
+
_event.preventDefault();
|
|
342
|
+
_event.stopPropagation();
|
|
343
|
+
this.stateService.send('OPEN');
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
if (this.multiple) {
|
|
347
|
+
if (isDownArrowKey(_event)) {
|
|
348
|
+
this.stateService.send('OPEN');
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
if (isDownArrowKey(_event) || isRightArrowKey(_event)) {
|
|
353
|
+
_event.preventDefault();
|
|
354
|
+
this.selectClosestOption("next");
|
|
355
|
+
}
|
|
356
|
+
if (isUpArrowKey(_event) || isLeftArrowKey(_event)) {
|
|
357
|
+
_event.preventDefault();
|
|
358
|
+
this.selectClosestOption("previous");
|
|
359
|
+
}
|
|
360
|
+
else if (isPageDownKey(_event)) {
|
|
361
|
+
_event.preventDefault();
|
|
362
|
+
this.selectLastOption();
|
|
363
|
+
}
|
|
364
|
+
else if (isPageUpKey(_event) || isHomeKey(_event)) {
|
|
365
|
+
_event.preventDefault();
|
|
366
|
+
this.selectFirstOption();
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
// open
|
|
371
|
+
else if (this.stateService.getSnapshot().matches("opened")) {
|
|
372
|
+
if (isEscapeKey(_event) || (_event.altKey && isUpArrowKey(_event))) {
|
|
373
|
+
this.stateService.send({ type: "CLOSE", value: { shouldBlur: false } });
|
|
374
|
+
}
|
|
375
|
+
else if (isTabKey(_event) || (_event.shiftKey && isTabKey(_event))) {
|
|
376
|
+
this.stateService.send({ type: "CLOSE", value: { shouldBlur: true } });
|
|
377
|
+
}
|
|
378
|
+
else if (isDownArrowKey(_event)) {
|
|
379
|
+
_event.preventDefault();
|
|
380
|
+
this.focusClosestOption("next");
|
|
381
|
+
}
|
|
382
|
+
else if (isUpArrowKey(_event)) {
|
|
383
|
+
_event.preventDefault();
|
|
384
|
+
this.focusClosestOption("previous");
|
|
385
|
+
}
|
|
386
|
+
else if (isPageUpKey(_event) || isHomeKey(_event)) {
|
|
387
|
+
_event.preventDefault();
|
|
388
|
+
this.focusFirstOption();
|
|
389
|
+
}
|
|
390
|
+
else if (isPageDownKey(_event)) {
|
|
391
|
+
_event.preventDefault();
|
|
392
|
+
this.focusLastOption();
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
getClosestActiveOptionIndexForState(direction, state) {
|
|
397
|
+
let currentIndex = Array.from(this.notDisabledOptions).indexOf(state === 'focused' ? this.lastFocusedOptionElement : this.lastSelectedOptionElement);
|
|
398
|
+
if (direction === 'next' && currentIndex < this.notDisabledOptions.length - 1) {
|
|
399
|
+
currentIndex++;
|
|
400
|
+
}
|
|
401
|
+
else if (direction === 'previous' && currentIndex > 0) {
|
|
402
|
+
currentIndex--;
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
return 'nothing';
|
|
406
|
+
}
|
|
407
|
+
return currentIndex;
|
|
408
|
+
}
|
|
409
|
+
selectOption(indexToSelect) {
|
|
410
|
+
this.lastSelectedOptionElement = this.notDisabledOptions[indexToSelect];
|
|
411
|
+
this.lastSelectedOptionElement.selected = true;
|
|
412
|
+
this.sendOptionSelectedToStateMachine({
|
|
413
|
+
source: this.lastSelectedOptionElement,
|
|
414
|
+
value: this.value,
|
|
415
|
+
displayText: this.lastSelectedOptionElement.innerText
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
selectClosestOption(direction) {
|
|
419
|
+
const indexToSelect = this.getClosestActiveOptionIndexForState(direction, 'selected');
|
|
420
|
+
if (indexToSelect === 'nothing')
|
|
421
|
+
return;
|
|
422
|
+
this.selectOption(indexToSelect);
|
|
423
|
+
}
|
|
424
|
+
selectFirstOption() {
|
|
425
|
+
if (this.notDisabledOptions.length < 1) {
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
this.selectOption(0);
|
|
429
|
+
}
|
|
430
|
+
selectLastOption() {
|
|
431
|
+
if (this.notDisabledOptions.length < 1) {
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
this.selectOption(this.notDisabledOptions.length - 1);
|
|
435
|
+
}
|
|
436
|
+
focusOption(indexToFocus) {
|
|
437
|
+
var _a;
|
|
438
|
+
this.lastFocusedOptionElement = this.notDisabledOptions[indexToFocus];
|
|
439
|
+
(_a = this.lastFocusedOptionElement) === null || _a === void 0 ? void 0 : _a.focus();
|
|
440
|
+
this.el.setAttribute("aria-activedescendant", this.lastFocusedOptionElement.id);
|
|
441
|
+
}
|
|
442
|
+
focusClosestOption(direction) {
|
|
443
|
+
const indexToFocus = this.getClosestActiveOptionIndexForState(direction, 'focused');
|
|
444
|
+
if (indexToFocus === 'nothing')
|
|
445
|
+
return;
|
|
446
|
+
this.focusOption(indexToFocus);
|
|
447
|
+
}
|
|
448
|
+
focusFirstOption() {
|
|
449
|
+
this.focusOption(0);
|
|
450
|
+
}
|
|
451
|
+
focusLastOption() {
|
|
452
|
+
this.focusOption(this.notDisabledOptions.length - 1);
|
|
453
|
+
}
|
|
314
454
|
selectedOptionChanged(event) {
|
|
315
|
-
this.
|
|
455
|
+
this.sendOptionSelectedToStateMachine(event.detail);
|
|
316
456
|
}
|
|
317
|
-
|
|
318
|
-
this.stateService.send({ type: '
|
|
457
|
+
sendOptionSelectedToStateMachine(event) {
|
|
458
|
+
this.stateService.send({ type: 'OPTION_SELECTED', value: event });
|
|
319
459
|
}
|
|
320
460
|
onSlotchange() {
|
|
321
461
|
this.updateSelectedValue(this.value);
|
|
@@ -324,27 +464,22 @@ export class Select {
|
|
|
324
464
|
this.options
|
|
325
465
|
.forEach(opt => {
|
|
326
466
|
if (opt.value === v.value) {
|
|
327
|
-
this.
|
|
467
|
+
this.sendOptionSelectedToStateMachine(Object.assign(Object.assign({}, v), { source: opt }));
|
|
328
468
|
}
|
|
329
469
|
});
|
|
330
470
|
}
|
|
471
|
+
componentDidRender() {
|
|
472
|
+
var _a;
|
|
473
|
+
(_a = this.popper) === null || _a === void 0 ? void 0 : _a.update();
|
|
474
|
+
}
|
|
331
475
|
render() {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
: h("label", { class: "wcs-select-value" }, this.displayText))
|
|
340
|
-
: h("label", { class: "wcs-select-placeholder" }, this.placeholder), h(SelectArrow, { up: this.expanded })), h("div", { class: "wcs-select-options" }, h("slot", { name: "wcs-select-option", onSlotchange: this.onSlotchange.bind(this) }))));
|
|
341
|
-
}
|
|
342
|
-
updateStyles() {
|
|
343
|
-
// Make the options container width the same width as everything.
|
|
344
|
-
const borderSize = 1;
|
|
345
|
-
// TODO: Consider using a mutation observer to rerender the size each time ?
|
|
346
|
-
// Be cautious as it may cause infinite loop with render ?
|
|
347
|
-
this.optionsEl.setAttribute('style', `width: ${Math.ceil(this.el.offsetWidth - 2 * borderSize)}px;`);
|
|
476
|
+
const ariaLabelValue = `${this.labelElement ? this.labelElement.innerText : ''} ${this.hasValue ? this.displayText : ''}`.trimEnd();
|
|
477
|
+
return (h(Host, Object.assign({ class: this.expanded ? 'expanded ' : '', overlayDirection: this.overlayDirection }, this.focusedAttributes(), { role: "combobox", "aria-haspopup": "listbox", "aria-disabled": this.disabled ? 'true' : null, "aria-expanded": this.expanded ? 'true' : 'false', "aria-controls": this.optionsId, "aria-owns": this.optionsId, "aria-multiselectable": this.multiple ? 'true' : 'false', "aria-label": ariaLabelValue }), h("div", { class: "wcs-select-control" }, h("div", { class: "wcs-select-value-container" }, this.hasValue
|
|
478
|
+
?
|
|
479
|
+
(this.chips ?
|
|
480
|
+
this.values.map((option) => h(SelectChips, { disabled: this.disabled, option: option, onRemove: this.removeChip.bind(this) }))
|
|
481
|
+
: h("label", { class: "wcs-select-value" }, this.displayText))
|
|
482
|
+
: h("label", { class: "wcs-select-placeholder" }, this.placeholder)), h(SelectArrow, { up: this.expanded })), h("div", { class: "wcs-select-options", id: this.optionsId, role: "listbox" }, h("slot", { name: "wcs-select-option", onSlotchange: this.onSlotchange.bind(this) }))));
|
|
348
483
|
}
|
|
349
484
|
focusedAttributes() {
|
|
350
485
|
return !this.disabled ? { tabIndex: 0 } : {};
|
|
@@ -363,6 +498,29 @@ export class Select {
|
|
|
363
498
|
}
|
|
364
499
|
static get properties() {
|
|
365
500
|
return {
|
|
501
|
+
"size": {
|
|
502
|
+
"type": "string",
|
|
503
|
+
"mutable": false,
|
|
504
|
+
"complexType": {
|
|
505
|
+
"original": "WcsSelectSize",
|
|
506
|
+
"resolved": "\"l\" | \"m\"",
|
|
507
|
+
"references": {
|
|
508
|
+
"WcsSelectSize": {
|
|
509
|
+
"location": "import",
|
|
510
|
+
"path": "./select-interface"
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
"required": false,
|
|
515
|
+
"optional": false,
|
|
516
|
+
"docs": {
|
|
517
|
+
"tags": [],
|
|
518
|
+
"text": "Specify the size (height) of the select."
|
|
519
|
+
},
|
|
520
|
+
"attribute": "size",
|
|
521
|
+
"reflect": true,
|
|
522
|
+
"defaultValue": "'m'"
|
|
523
|
+
},
|
|
366
524
|
"value": {
|
|
367
525
|
"type": "any",
|
|
368
526
|
"mutable": true,
|
|
@@ -604,6 +762,12 @@ export class Select {
|
|
|
604
762
|
"target": "window",
|
|
605
763
|
"capture": false,
|
|
606
764
|
"passive": false
|
|
765
|
+
}, {
|
|
766
|
+
"name": "keydown",
|
|
767
|
+
"method": "onKeyDown",
|
|
768
|
+
"target": undefined,
|
|
769
|
+
"capture": false,
|
|
770
|
+
"passive": false
|
|
607
771
|
}, {
|
|
608
772
|
"name": "wcsSelectOptionClick",
|
|
609
773
|
"method": "selectedOptionChanged",
|
|
@@ -613,4 +777,5 @@ export class Select {
|
|
|
613
777
|
}];
|
|
614
778
|
}
|
|
615
779
|
}
|
|
780
|
+
let selectIds = 0;
|
|
616
781
|
//# sourceMappingURL=select.js.map
|