@inera/ids-react 8.1.0 → 9.0.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/components/accordion/accordion-base.d.ts +18 -0
- package/components/accordion/accordion-base.js +33 -0
- package/components/accordion/accordion.d.ts +5 -4
- package/components/accordion/accordion.js +16 -35
- package/components/alert/alert-base.d.ts +21 -0
- package/components/alert/alert-base.js +29 -0
- package/components/alert/alert.d.ts +3 -19
- package/components/alert/alert.js +8 -18
- package/components/alert/global-alert-base.d.ts +15 -0
- package/components/alert/global-alert-base.js +21 -0
- package/components/alert/global-alert.d.ts +7 -0
- package/components/alert/global-alert.js +19 -0
- package/components/badge/badge.js +2 -2
- package/components/breadcrumbs/breadcrumbs.js +2 -2
- package/components/{button-group → button}/button-group.js +2 -2
- package/components/button/button.js +3 -3
- package/components/card/card.js +3 -3
- package/components/carousel/carousel-item.d.ts +5 -4
- package/components/carousel/carousel-item.js +8 -6
- package/components/carousel/carousel.d.ts +4 -1
- package/components/carousel/carousel.js +24 -39
- package/components/{pagination/data-pagination → data-pagination}/data-pagination.d.ts +2 -6
- package/components/data-pagination/data-pagination.js +12 -0
- package/components/date-label/date-label.js +2 -2
- package/components/dialog/dialog-base.d.ts +21 -0
- package/components/dialog/dialog-base.js +29 -0
- package/components/dialog/dialog.d.ts +14 -17
- package/components/dialog/dialog.js +36 -36
- package/components/dropdown/dropdown-base.d.ts +18 -0
- package/components/dropdown/dropdown-base.js +42 -0
- package/components/dropdown/dropdown-content-button.d.ts +0 -1
- package/components/dropdown/dropdown-content-button.js +0 -1
- package/components/dropdown/dropdown-content-link.d.ts +2 -3
- package/components/dropdown/dropdown-content-link.js +3 -10
- package/components/dropdown/dropdown.d.ts +11 -13
- package/components/dropdown/dropdown.js +34 -53
- package/components/footer-1177/footer-1177.d.ts +6 -7
- package/components/footer-1177/footer-1177.js +8 -5
- package/components/footer-1177-admin/footer-1177-admin.d.ts +6 -7
- package/components/footer-1177-admin/footer-1177-admin.js +9 -6
- package/components/footer-1177-pro/footer-1177-pro.d.ts +6 -7
- package/components/footer-1177-pro/footer-1177-pro.js +9 -6
- package/components/footer-inera/footer-inera.d.ts +6 -7
- package/components/footer-inera/footer-inera.js +9 -6
- package/components/footer-inera-admin/footer-inera-admin.d.ts +6 -7
- package/components/footer-inera-admin/footer-inera-admin.js +9 -6
- package/components/form/check-button/check-button.d.ts +5 -6
- package/components/form/check-button/check-button.js +5 -10
- package/components/form/checkbox/checkbox-base.d.ts +19 -0
- package/components/form/checkbox/checkbox-base.js +29 -0
- package/components/form/checkbox/checkbox-group-base.d.ts +12 -0
- package/components/form/checkbox/checkbox-group-base.js +13 -0
- package/components/form/checkbox/checkbox-group.d.ts +4 -5
- package/components/form/checkbox/checkbox-group.js +26 -30
- package/components/form/checkbox/checkbox.d.ts +3 -3
- package/components/form/checkbox/checkbox.js +17 -40
- package/components/form/darkmode-toggle/darkmode-toggle.d.ts +11 -0
- package/components/form/darkmode-toggle/darkmode-toggle.js +13 -0
- package/components/form/datepicker/datepicker.d.ts +36 -0
- package/components/form/datepicker/datepicker.js +217 -0
- package/components/form/error-message/error-message.d.ts +1 -2
- package/components/form/error-message/error-message.js +2 -4
- package/components/form/form-hooks/useGroupValidity.d.ts +4 -1
- package/components/form/form-hooks/useGroupValidity.js +7 -2
- package/components/form/form-hooks/useInputValidity.d.ts +1 -1
- package/components/form/form-hooks/useInputValidity.js +9 -5
- package/components/form/input/input-base.d.ts +24 -0
- package/components/form/input/input-base.js +32 -0
- package/components/form/input/input.d.ts +3 -2
- package/components/form/input/input.js +8 -24
- package/components/form/radio/radio-base.d.ts +16 -0
- package/components/form/radio/radio-base.js +24 -0
- package/components/form/radio/radio-group-base.d.ts +13 -0
- package/components/form/radio/radio-group-base.js +10 -0
- package/components/form/radio/radio-group.d.ts +6 -5
- package/components/form/radio/radio-group.js +25 -19
- package/components/form/radio/radio.d.ts +9 -9
- package/components/form/radio/radio.js +7 -19
- package/components/form/radio-button/radio-button-group-base.d.ts +8 -0
- package/components/form/radio-button/radio-button-group-base.js +8 -0
- package/components/form/radio-button/radio-button-group.d.ts +4 -3
- package/components/form/radio-button/radio-button-group.js +18 -12
- package/components/form/radio-button/radio-button.d.ts +4 -5
- package/components/form/radio-button/radio-button.js +5 -10
- package/components/form/range/range-base.d.ts +18 -0
- package/components/form/range/range-base.js +16 -0
- package/components/form/range/range.d.ts +3 -6
- package/components/form/range/range.js +23 -23
- package/components/form/select/select-base.d.ts +19 -0
- package/components/form/select/select-base.js +24 -0
- package/components/form/select/select.d.ts +7 -7
- package/components/form/select/select.js +8 -18
- package/components/form/select-multiple/select-multiple-base.d.ts +27 -0
- package/components/form/select-multiple/select-multiple-base.js +27 -0
- package/components/form/select-multiple/select-multiple.d.ts +10 -7
- package/components/form/select-multiple/select-multiple.js +29 -54
- package/components/form/spinner/spinner.d.ts +3 -4
- package/components/form/spinner/spinner.js +3 -7
- package/components/form/textarea/textarea-base.d.ts +24 -0
- package/components/form/textarea/textarea-base.js +34 -0
- package/components/form/textarea/textarea.d.ts +4 -5
- package/components/form/textarea/textarea.js +6 -22
- package/components/form/time/time-base.d.ts +17 -0
- package/components/form/time/time-base.js +24 -0
- package/components/form/time/time.d.ts +8 -7
- package/components/form/time/time.js +5 -16
- package/components/form/toggle/toggle.d.ts +1 -2
- package/components/form/toggle/toggle.js +5 -8
- package/components/grid/column.d.ts +1 -1
- package/components/grid/column.js +6 -7
- package/components/grid/container.d.ts +1 -0
- package/components/grid/container.js +9 -5
- package/components/grid/row.js +1 -1
- package/components/grid-layout/grid-column.d.ts +19 -0
- package/components/grid-layout/grid-column.js +14 -0
- package/components/grid-layout/grid-container.d.ts +10 -0
- package/components/grid-layout/grid-container.js +17 -0
- package/components/grid-layout/grid-row.d.ts +8 -0
- package/components/grid-layout/grid-row.js +12 -0
- package/components/header-1177/header-1177-avatar-base.d.ts +16 -0
- package/components/header-1177/header-1177-avatar-base.js +24 -0
- package/components/header-1177/header-1177-avatar.d.ts +4 -7
- package/components/header-1177/header-1177-avatar.js +35 -42
- package/components/header-1177/header-1177-base.d.ts +18 -0
- package/components/header-1177/header-1177-base.js +14 -0
- package/components/header-1177/header-1177-item-base.d.ts +9 -0
- package/components/header-1177/header-1177-item-base.js +13 -0
- package/components/header-1177/header-1177-item.d.ts +2 -7
- package/components/header-1177/header-1177-item.js +6 -29
- package/components/header-1177/header-1177-menu-mobile-base.d.ts +12 -0
- package/components/header-1177/header-1177-menu-mobile-base.js +18 -0
- package/components/header-1177/header-1177-menu-mobile.d.ts +4 -5
- package/components/header-1177/header-1177-menu-mobile.js +29 -28
- package/components/header-1177/header-1177-nav-base.d.ts +9 -0
- package/components/header-1177/header-1177-nav-base.js +12 -0
- package/components/header-1177/header-1177-nav-item-base.d.ts +18 -0
- package/components/header-1177/header-1177-nav-item-base.js +31 -0
- package/components/header-1177/header-1177-nav-item-mobile-base.d.ts +7 -0
- package/components/header-1177/header-1177-nav-item-mobile-base.js +10 -0
- package/components/header-1177/header-1177-nav-item-mobile.d.ts +4 -8
- package/components/header-1177/header-1177-nav-item-mobile.js +5 -16
- package/components/header-1177/header-1177-nav-item.d.ts +7 -7
- package/components/header-1177/header-1177-nav-item.js +44 -35
- package/components/header-1177/header-1177-nav.d.ts +2 -4
- package/components/header-1177/header-1177-nav.js +5 -9
- package/components/header-1177/header-1177-region-picker-base.d.ts +9 -0
- package/components/header-1177/header-1177-region-picker-base.js +21 -0
- package/components/header-1177/header-1177-region-picker-mobile-base.d.ts +9 -0
- package/components/header-1177/header-1177-region-picker-mobile-base.js +21 -0
- package/components/header-1177/header-1177-region-picker-mobile.d.ts +3 -6
- package/components/header-1177/header-1177-region-picker-mobile.js +13 -29
- package/components/header-1177/header-1177-region-picker.d.ts +3 -6
- package/components/header-1177/header-1177-region-picker.js +15 -29
- package/components/header-1177/header-1177.d.ts +3 -3
- package/components/header-1177/header-1177.js +5 -10
- package/components/header-1177-admin/header-1177-admin-avatar-base.d.ts +14 -0
- package/components/header-1177-admin/header-1177-admin-avatar-base.js +23 -0
- package/components/header-1177-admin/header-1177-admin-avatar-mobile-base.d.ts +13 -0
- package/components/header-1177-admin/header-1177-admin-avatar-mobile-base.js +23 -0
- package/components/header-1177-admin/header-1177-admin-avatar-mobile.d.ts +3 -5
- package/components/header-1177-admin/header-1177-admin-avatar-mobile.js +27 -23
- package/components/header-1177-admin/header-1177-admin-avatar.d.ts +3 -5
- package/components/header-1177-admin/header-1177-admin-avatar.js +26 -25
- package/components/header-1177-admin/header-1177-admin-base.d.ts +18 -0
- package/components/header-1177-admin/header-1177-admin-base.js +14 -0
- package/components/header-1177-admin/header-1177-admin-item-base.d.ts +8 -0
- package/components/header-1177-admin/header-1177-admin-item-base.js +12 -0
- package/components/header-1177-admin/header-1177-admin-item.d.ts +3 -8
- package/components/header-1177-admin/header-1177-admin-item.js +5 -27
- package/components/header-1177-admin/header-1177-admin-menu-mobile-base.d.ts +11 -0
- package/components/header-1177-admin/header-1177-admin-menu-mobile-base.js +18 -0
- package/components/header-1177-admin/header-1177-admin-menu-mobile.d.ts +4 -5
- package/components/header-1177-admin/header-1177-admin-menu-mobile.js +27 -25
- package/components/header-1177-admin/header-1177-admin-nav-base.d.ts +7 -0
- package/components/header-1177-admin/header-1177-admin-nav-base.js +10 -0
- package/components/header-1177-admin/header-1177-admin-nav-item-base.d.ts +18 -0
- package/components/header-1177-admin/header-1177-admin-nav-item-base.js +31 -0
- package/components/header-1177-admin/header-1177-admin-nav-item-mobile-base.d.ts +7 -0
- package/components/header-1177-admin/header-1177-admin-nav-item-mobile-base.js +10 -0
- package/components/header-1177-admin/header-1177-admin-nav-item-mobile.d.ts +7 -0
- package/components/header-1177-admin/header-1177-admin-nav-item-mobile.js +11 -0
- package/components/header-1177-admin/header-1177-admin-nav-item.d.ts +6 -6
- package/components/header-1177-admin/header-1177-admin-nav-item.js +44 -35
- package/components/header-1177-admin/header-1177-admin-nav.d.ts +2 -4
- package/components/header-1177-admin/header-1177-admin-nav.js +4 -6
- package/components/header-1177-admin/header-1177-admin.d.ts +2 -3
- package/components/header-1177-admin/header-1177-admin.js +5 -10
- package/components/header-1177-pro/header-1177-pro-avatar-base.d.ts +14 -0
- package/components/header-1177-pro/header-1177-pro-avatar-base.js +23 -0
- package/components/header-1177-pro/header-1177-pro-avatar-mobile-base.d.ts +13 -0
- package/components/header-1177-pro/header-1177-pro-avatar-mobile-base.js +24 -0
- package/components/header-1177-pro/header-1177-pro-avatar-mobile.d.ts +3 -6
- package/components/header-1177-pro/header-1177-pro-avatar-mobile.js +23 -20
- package/components/header-1177-pro/header-1177-pro-avatar.d.ts +4 -6
- package/components/header-1177-pro/header-1177-pro-avatar.js +32 -30
- package/components/header-1177-pro/header-1177-pro-base.d.ts +19 -0
- package/components/header-1177-pro/header-1177-pro-base.js +11 -0
- package/components/header-1177-pro/header-1177-pro-item-base.d.ts +8 -0
- package/components/header-1177-pro/header-1177-pro-item-base.js +12 -0
- package/components/header-1177-pro/header-1177-pro-item.d.ts +3 -8
- package/components/header-1177-pro/header-1177-pro-item.js +5 -27
- package/components/header-1177-pro/header-1177-pro-menu-mobile-base.d.ts +11 -0
- package/components/header-1177-pro/header-1177-pro-menu-mobile-base.js +18 -0
- package/components/header-1177-pro/header-1177-pro-menu-mobile.d.ts +5 -6
- package/components/header-1177-pro/header-1177-pro-menu-mobile.js +27 -25
- package/components/header-1177-pro/header-1177-pro-nav-base.d.ts +10 -0
- package/components/header-1177-pro/header-1177-pro-nav-base.js +10 -0
- package/components/header-1177-pro/header-1177-pro-nav-item-base.d.ts +18 -0
- package/components/header-1177-pro/header-1177-pro-nav-item-base.js +31 -0
- package/components/header-1177-pro/header-1177-pro-nav-item-mobile-base.d.ts +7 -0
- package/components/header-1177-pro/header-1177-pro-nav-item-mobile-base.js +10 -0
- package/components/header-1177-pro/header-1177-pro-nav-item-mobile.d.ts +7 -0
- package/components/header-1177-pro/header-1177-pro-nav-item-mobile.js +11 -0
- package/components/header-1177-pro/header-1177-pro-nav-item.d.ts +6 -6
- package/components/header-1177-pro/header-1177-pro-nav-item.js +44 -35
- package/components/header-1177-pro/header-1177-pro-nav.d.ts +4 -5
- package/components/header-1177-pro/header-1177-pro-nav.js +5 -7
- package/components/header-1177-pro/header-1177-pro-region-picker-base.d.ts +9 -0
- package/components/header-1177-pro/header-1177-pro-region-picker-base.js +19 -0
- package/components/header-1177-pro/header-1177-pro-region-picker-mobile-base.d.ts +9 -0
- package/components/header-1177-pro/header-1177-pro-region-picker-mobile-base.js +19 -0
- package/components/header-1177-pro/header-1177-pro-region-picker-mobile.d.ts +3 -5
- package/components/header-1177-pro/header-1177-pro-region-picker-mobile.js +13 -29
- package/components/header-1177-pro/header-1177-pro-region-picker.d.ts +3 -5
- package/components/header-1177-pro/header-1177-pro-region-picker.js +15 -29
- package/components/header-1177-pro/header-1177-pro.d.ts +4 -5
- package/components/header-1177-pro/header-1177-pro.js +5 -7
- package/components/header-inera/header-inera-base.d.ts +14 -0
- package/components/header-inera/header-inera-base.js +11 -0
- package/components/header-inera/header-inera-item-base.d.ts +8 -0
- package/components/header-inera/header-inera-item-base.js +12 -0
- package/components/header-inera/header-inera-item.d.ts +3 -8
- package/components/header-inera/header-inera-item.js +5 -36
- package/components/header-inera/header-inera-menu-mobile-base.d.ts +11 -0
- package/components/header-inera/header-inera-menu-mobile-base.js +18 -0
- package/components/header-inera/header-inera-menu-mobile.d.ts +5 -6
- package/components/header-inera/header-inera-menu-mobile.js +27 -26
- package/components/header-inera/header-inera-nav-base.d.ts +7 -0
- package/components/header-inera/header-inera-nav-base.js +10 -0
- package/components/header-inera/header-inera-nav-item-base.d.ts +17 -0
- package/components/header-inera/header-inera-nav-item-base.js +26 -0
- package/components/header-inera/header-inera-nav-item.d.ts +7 -7
- package/components/header-inera/header-inera-nav-item.js +44 -34
- package/components/header-inera/header-inera-nav.d.ts +4 -6
- package/components/header-inera/header-inera-nav.js +4 -7
- package/components/header-inera/header-inera.d.ts +1 -3
- package/components/header-inera/header-inera.js +5 -7
- package/components/header-inera-admin/header-inera-admin-avatar-base.d.ts +14 -0
- package/components/header-inera-admin/header-inera-admin-avatar-base.js +23 -0
- package/components/header-inera-admin/header-inera-admin-avatar-mobile-base.d.ts +13 -0
- package/components/header-inera-admin/header-inera-admin-avatar-mobile-base.js +23 -0
- package/components/header-inera-admin/header-inera-admin-avatar-mobile.d.ts +3 -6
- package/components/header-inera-admin/header-inera-admin-avatar-mobile.js +26 -21
- package/components/header-inera-admin/header-inera-admin-avatar.d.ts +4 -6
- package/components/header-inera-admin/header-inera-admin-avatar.js +35 -31
- package/components/header-inera-admin/header-inera-admin-base.d.ts +15 -0
- package/components/header-inera-admin/header-inera-admin-base.js +20 -0
- package/components/header-inera-admin/header-inera-admin-item-base.d.ts +8 -0
- package/components/header-inera-admin/header-inera-admin-item-base.js +13 -0
- package/components/header-inera-admin/header-inera-admin-item.d.ts +3 -8
- package/components/header-inera-admin/header-inera-admin-item.js +6 -26
- package/components/header-inera-admin/header-inera-admin-menu-mobile-base.d.ts +11 -0
- package/components/header-inera-admin/header-inera-admin-menu-mobile-base.js +18 -0
- package/components/header-inera-admin/header-inera-admin-menu-mobile.d.ts +4 -5
- package/components/header-inera-admin/header-inera-admin-menu-mobile.js +27 -25
- package/components/header-inera-admin/header-inera-admin-nav-base.d.ts +7 -0
- package/components/header-inera-admin/header-inera-admin-nav-base.js +10 -0
- package/components/header-inera-admin/header-inera-admin-nav-item-base.d.ts +18 -0
- package/components/header-inera-admin/header-inera-admin-nav-item-base.js +31 -0
- package/components/header-inera-admin/header-inera-admin-nav-item-mobile-base.d.ts +7 -0
- package/components/header-inera-admin/header-inera-admin-nav-item-mobile-base.js +10 -0
- package/components/header-inera-admin/header-inera-admin-nav-item-mobile.d.ts +7 -0
- package/components/header-inera-admin/header-inera-admin-nav-item-mobile.js +11 -0
- package/components/header-inera-admin/header-inera-admin-nav-item.d.ts +7 -6
- package/components/header-inera-admin/header-inera-admin-nav-item.js +44 -34
- package/components/header-inera-admin/header-inera-admin-nav.d.ts +4 -6
- package/components/header-inera-admin/header-inera-admin-nav.js +5 -8
- package/components/header-inera-admin/header-inera-admin.d.ts +3 -4
- package/components/header-inera-admin/header-inera-admin.js +5 -16
- package/components/header-patient/header-patient.d.ts +2 -4
- package/components/header-patient/header-patient.js +6 -10
- package/components/link/action-link.d.ts +6 -0
- package/components/link/action-link.js +9 -0
- package/components/link/box-link.d.ts +6 -0
- package/components/link/box-link.js +9 -0
- package/components/link/link.d.ts +2 -2
- package/components/link/link.js +3 -10
- package/components/list-pagination/list-pagination-links.d.ts +19 -0
- package/components/list-pagination/list-pagination-links.js +48 -0
- package/components/{pagination/list-pagination → list-pagination}/list-pagination.d.ts +3 -2
- package/components/{pagination/list-pagination → list-pagination}/list-pagination.js +4 -3
- package/components/mobile-menu/mobile-item-base.d.ts +14 -0
- package/components/mobile-menu/mobile-item-base.js +46 -0
- package/components/mobile-menu/mobile-item.d.ts +6 -0
- package/components/mobile-menu/mobile-item.js +26 -0
- package/components/mobile-menu/mobile-menu.d.ts +6 -0
- package/components/mobile-menu/mobile-menu.js +10 -0
- package/components/{navigation/content → navigation-content}/navigation-content.d.ts +1 -1
- package/components/{navigation/content → navigation-content}/navigation-content.js +2 -2
- package/components/{navigation/local → navigation-local}/navigation-local.d.ts +1 -1
- package/components/{navigation/local → navigation-local}/navigation-local.js +1 -1
- package/components/{notification/badge → notification-badge}/notification-badge.d.ts +1 -1
- package/components/notification-badge/notification-badge.js +9 -0
- package/components/popover/popover-base.d.ts +15 -0
- package/components/popover/popover-base.js +27 -0
- package/components/popover/popover-content.d.ts +19 -0
- package/components/popover/popover-content.js +20 -0
- package/components/popover/popover.d.ts +7 -8
- package/components/popover/popover.js +67 -161
- package/components/progressbar/progressbar.js +2 -2
- package/components/puff-list/{puff-list-item/puff-list-item-date.d.ts → puff-list-item-date.d.ts} +0 -1
- package/components/puff-list/{puff-list-item/puff-list-item-date.js → puff-list-item-date.js} +2 -3
- package/components/puff-list/{puff-list-item/puff-list-item-header.d.ts → puff-list-item-header.d.ts} +1 -1
- package/components/puff-list/puff-list-item-header.js +12 -0
- package/components/puff-list/{puff-list-item/puff-list-item-info.d.ts → puff-list-item-info.d.ts} +1 -2
- package/components/puff-list/puff-list-item-info.js +8 -0
- package/components/puff-list/{puff-list-item/puff-list-item.d.ts → puff-list-item.d.ts} +0 -2
- package/components/puff-list/{puff-list-item/puff-list-item.js → puff-list-item.js} +2 -3
- package/components/puff-list/puff-list.js +2 -3
- package/components/region-icon/region-icon.js +2 -2
- package/components/side-menu/side-menu-base.d.ts +22 -0
- package/components/side-menu/side-menu-base.js +42 -0
- package/components/side-menu/side-menu.d.ts +6 -9
- package/components/side-menu/side-menu.js +13 -43
- package/components/side-panel/side-panel-base.d.ts +24 -0
- package/components/side-panel/side-panel-base.js +33 -0
- package/components/side-panel/side-panel-provider.d.ts +7 -0
- package/components/side-panel/side-panel-provider.js +12 -0
- package/components/side-panel/side-panel.d.ts +14 -15
- package/components/side-panel/side-panel.js +49 -54
- package/components/stepper/step-base.d.ts +15 -0
- package/components/stepper/step-base.js +36 -0
- package/components/stepper/step.d.ts +5 -8
- package/components/stepper/step.js +17 -33
- package/components/stepper/stepper.d.ts +4 -6
- package/components/stepper/stepper.js +8 -13
- package/components/tabs/tab-link.d.ts +15 -0
- package/components/tabs/tab-link.js +10 -0
- package/components/tabs/tab-panel.d.ts +2 -4
- package/components/tabs/tab-panel.js +5 -12
- package/components/tabs/tab.d.ts +5 -5
- package/components/tabs/tab.js +5 -8
- package/components/tabs/tabs-base.d.ts +15 -0
- package/components/tabs/tabs-base.js +15 -0
- package/components/tabs/tabs.d.ts +5 -8
- package/components/tabs/tabs.js +38 -51
- package/components/tag/tag.d.ts +5 -15
- package/components/tag/tag.js +3 -8
- package/components/tooltip/tooltip-base.d.ts +14 -0
- package/components/tooltip/tooltip-base.js +18 -0
- package/components/tooltip/tooltip.d.ts +3 -10
- package/components/tooltip/tooltip.js +59 -43
- package/components/utils/contexts/HeaderContext.d.ts +1 -0
- package/components/utils/hooks/useFocusTrap.js +1 -1
- package/index.d.ts +91 -15
- package/index.js +91 -15
- package/package.json +2 -2
- package/components/box-link/box-link.d.ts +0 -9
- package/components/box-link/box-link.js +0 -11
- package/components/global-alert/global-alert.d.ts +0 -16
- package/components/global-alert/global-alert.js +0 -26
- package/components/mobile/menu/item/mobile-item.d.ts +0 -15
- package/components/mobile/menu/item/mobile-item.js +0 -61
- package/components/mobile/menu/mobile-menu.d.ts +0 -7
- package/components/mobile/menu/mobile-menu.js +0 -12
- package/components/notification/badge/notification-badge.js +0 -9
- package/components/pagination/data-pagination/data-pagination.js +0 -16
- package/components/puff-list/puff-list-item/puff-list-item-header.js +0 -11
- package/components/puff-list/puff-list-item/puff-list-item-info.js +0 -10
- package/components/utils/hooks/useElementId.d.ts +0 -5
- package/components/utils/hooks/useElementId.js +0 -12
- /package/components/{button-group → button}/button-group.d.ts +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { ReactNode,
|
|
1
|
+
import { ReactNode, InputHTMLAttributes } from "react";
|
|
2
2
|
export interface IDSRadioProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
-
name?: string;
|
|
4
3
|
id?: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
groupInvalid?: boolean;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
noValidation?: boolean;
|
|
4
|
+
key?: string;
|
|
5
|
+
name?: string;
|
|
10
6
|
light?: boolean;
|
|
11
7
|
compact?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
invalid?: boolean;
|
|
10
|
+
groupInvalid?: boolean;
|
|
12
11
|
focusAnchor?: boolean;
|
|
13
12
|
tooltip?: ReactNode;
|
|
14
|
-
children?: ReactNode;
|
|
15
|
-
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
16
13
|
dataTestId?: string;
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
noValidation?: boolean;
|
|
16
|
+
groupErrorMsgId?: string;
|
|
17
17
|
}
|
|
18
18
|
export declare const IDSRadio: import("react").ForwardRefExoticComponent<IDSRadioProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { forwardRef, useRef, useImperativeHandle } from 'react';
|
|
4
|
-
import { useElementId } from '../../utils/hooks/useElementId.js';
|
|
5
4
|
import { useInputValidity } from '../form-hooks/useInputValidity.js';
|
|
6
|
-
import {
|
|
7
|
-
import clsx from 'clsx';
|
|
5
|
+
import { IDSRadioBase } from './radio-base.js';
|
|
8
6
|
|
|
9
|
-
const IDSRadio = forwardRef(({
|
|
10
|
-
const fieldId = useElementId(id);
|
|
7
|
+
const IDSRadio = forwardRef(({ groupErrorMsgId, invalid = false, groupInvalid = false, noValidation = false, children, ...props }, ref) => {
|
|
11
8
|
const radioRef = useRef(null);
|
|
12
|
-
useImperativeHandle(ref, () => radioRef.current);
|
|
13
9
|
const hasValidValue = useInputValidity(radioRef);
|
|
14
|
-
const isInvalid =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}, className), "data-testid": dataTestId, children: [jsx("input", { id: fieldId, ref: radioRef, type: "radio", className: clsx("ids-radio__input", {
|
|
19
|
-
"ids-input--light": light,
|
|
20
|
-
"ids-focus-anchor": focusAnchor
|
|
21
|
-
}), disabled: disabled, "aria-disabled": disabled, "aria-invalid": isInvalid, name: name, onChange: onChange, ...props }), jsxs("div", { className: clsx("ids-label-tooltip-wrapper", {
|
|
22
|
-
"ids-label-tooltip-wrapper--inline": tooltip
|
|
23
|
-
}), children: [jsx("label", { htmlFor: fieldId, className: clsx("ids-radio__label ids-label", {
|
|
24
|
-
"ids-input--clickable": !disabled
|
|
25
|
-
}), children: children }), tooltip] })] }));
|
|
10
|
+
const isInvalid = invalid || groupInvalid || (!hasValidValue && !noValidation);
|
|
11
|
+
// Expose ref to user
|
|
12
|
+
useImperativeHandle(ref, () => radioRef.current);
|
|
13
|
+
return (jsx(IDSRadioBase, { ...props, inputRef: radioRef, errorMsgId: groupErrorMsgId, invalid: isInvalid, children: children }));
|
|
26
14
|
});
|
|
27
15
|
IDSRadio.displayName = "IDSRadio";
|
|
28
16
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode, InputHTMLAttributes } from "react";
|
|
2
|
+
export interface IDSRadioButtonGroupBaseProps extends InputHTMLAttributes<HTMLFieldSetElement> {
|
|
3
|
+
legend?: string;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
tooltip?: ReactNode;
|
|
6
|
+
groupRef?: React.Ref<HTMLFieldSetElement>;
|
|
7
|
+
}
|
|
8
|
+
export declare function IDSRadioButtonGroupBase({ legend, groupRef, tooltip, children, className, ...props }: IDSRadioButtonGroupBaseProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
|
|
4
|
+
function IDSRadioButtonGroupBase({ legend, groupRef, tooltip, children, className, ...props }) {
|
|
5
|
+
return (jsxs("fieldset", { ref: groupRef, className: clsx("ids-form-group__fieldset", className), ...props, children: [legend ? (jsx("div", { className: "ids-label-wrapper", children: jsxs("legend", { children: [legend, tooltip && jsx("span", { className: "ids-legend__tooltip", children: tooltip })] }) })) : null, children] }));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export { IDSRadioButtonGroupBase };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ReactNode, ChangeEvent, InputHTMLAttributes } from "react";
|
|
2
2
|
interface IDSRadioButtonGroupProps extends InputHTMLAttributes<HTMLFieldSetElement> {
|
|
3
3
|
name: string;
|
|
4
4
|
legend?: string;
|
|
5
|
+
tooltip?: ReactNode;
|
|
5
6
|
children?: ReactNode;
|
|
6
|
-
onRadioChange?: (e:
|
|
7
|
+
onRadioChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
7
8
|
}
|
|
8
|
-
export declare
|
|
9
|
+
export declare function IDSRadioButtonGroup({ name, legend, tooltip, children, onRadioChange, className, ...props }: IDSRadioButtonGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
9
10
|
export {};
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { IDSRadioButtonGroupBase } from './radio-button-group-base.js';
|
|
4
|
+
import { IDSRadioButton } from './radio-button.js';
|
|
5
|
+
import React from 'react';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
const groupRef = useRef(null);
|
|
7
|
+
function IDSRadioButtonGroup({ name, legend, tooltip, children, onRadioChange, className, ...props }) {
|
|
8
8
|
const clonedChildren = React.Children.map(children, child => {
|
|
9
|
-
if (React.isValidElement(child)
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
if (!React.isValidElement(child))
|
|
10
|
+
return child;
|
|
11
|
+
if (child.type === IDSRadioButton) {
|
|
12
|
+
const { id, icon, ...rest } = child.props;
|
|
13
|
+
const cloneProps = {
|
|
14
|
+
...rest,
|
|
15
|
+
icon,
|
|
13
16
|
name,
|
|
14
17
|
onChange: onRadioChange
|
|
15
|
-
}
|
|
18
|
+
};
|
|
19
|
+
if (id)
|
|
20
|
+
cloneProps.id = id;
|
|
21
|
+
return React.cloneElement(child, cloneProps);
|
|
16
22
|
}
|
|
17
23
|
return child;
|
|
18
24
|
});
|
|
19
|
-
return (
|
|
20
|
-
}
|
|
25
|
+
return (jsx(IDSRadioButtonGroupBase, { legend: legend, tooltip: tooltip, className: className, ...props, children: clonedChildren }));
|
|
26
|
+
}
|
|
21
27
|
|
|
22
28
|
export { IDSRadioButtonGroup };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InputHTMLAttributes } from "react";
|
|
2
2
|
export interface IDSRadioButtonProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
-
name?: string;
|
|
4
3
|
id?: string;
|
|
5
|
-
focusAnchor?: boolean;
|
|
6
4
|
icon: string;
|
|
7
|
-
|
|
5
|
+
name?: string;
|
|
8
6
|
dataTestId?: string;
|
|
9
|
-
|
|
7
|
+
focusAnchor?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
10
9
|
}
|
|
11
10
|
export declare const IDSRadioButton: import("react").ForwardRefExoticComponent<IDSRadioButtonProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
"use client";
|
|
2
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef,
|
|
4
|
-
import { useElementId } from '../../utils/hooks/useElementId.js';
|
|
2
|
+
import { forwardRef, useId } from 'react';
|
|
5
3
|
import clsx from 'clsx';
|
|
6
4
|
|
|
7
|
-
const IDSRadioButton = forwardRef(({
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
useImperativeHandle(ref, () => radioButtonRef.current);
|
|
11
|
-
return (jsxs("div", { className: clsx("ids-radio-button", className), "data-testid": dataTestId, children: [jsx("input", { id: fieldId, ref: radioButtonRef, type: "radio", className: clsx("ids-radio-button__input", {
|
|
5
|
+
const IDSRadioButton = forwardRef(function IDSRadioButton({ id, icon, name, dataTestId, disabled, focusAnchor, className, children, ...props }, ref) {
|
|
6
|
+
const inputId = !!id ? id : useId();
|
|
7
|
+
return (jsxs("div", { className: clsx("ids-radio-button", className), "data-testid": dataTestId, children: [jsx("input", { id: inputId, name: name, ref: ref, type: "radio", disabled: disabled, className: clsx("ids-radio-button__input", {
|
|
12
8
|
"ids-focus-anchor": focusAnchor
|
|
13
|
-
}),
|
|
9
|
+
}), ...props }), jsx("label", { htmlFor: inputId, className: `ids-radio-button__label ids-icon-${icon}`, children: children })] }));
|
|
14
10
|
});
|
|
15
|
-
IDSRadioButton.displayName = "IDSRadioButton";
|
|
16
11
|
|
|
17
12
|
export { IDSRadioButton };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { InputHTMLAttributes, ReactNode, Ref, CSSProperties } from "react";
|
|
2
|
+
export interface IDSRangeBaseProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
id?: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
showTicks?: boolean;
|
|
6
|
+
ticks?: number[];
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
focusAnchor?: boolean;
|
|
9
|
+
dataTestId?: string;
|
|
10
|
+
tooltip?: ReactNode;
|
|
11
|
+
valueNow: number;
|
|
12
|
+
min?: number;
|
|
13
|
+
max?: number;
|
|
14
|
+
step?: number;
|
|
15
|
+
inputRef?: Ref<HTMLInputElement>;
|
|
16
|
+
style?: CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
export declare function IDSRangeBase({ id, label, showTicks, ticks, disabled, focusAnchor, dataTestId, tooltip, valueNow, min, max, step, inputRef, style, className, ...props }: IDSRangeBaseProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
|
|
5
|
+
function IDSRangeBase({ id, label, showTicks, ticks = [], disabled, focusAnchor, dataTestId, tooltip, valueNow, min, max, step = 1, inputRef, style, className, ...props }) {
|
|
6
|
+
const inputId = !!id ? id : `range-${useId()}`;
|
|
7
|
+
return (jsxs("div", { className: clsx("ids-range", className), "data-testid": dataTestId, style: style, children: [label && (jsxs("div", { className: "ids-label-wrapper ids-label-wrapper--margin-bottom", children: [jsx("label", { htmlFor: inputId, className: clsx("ids-label", { "ids-label--disabled": disabled }), children: label }), tooltip && jsx("span", { className: "ids-label__tooltip", children: tooltip })] })), jsx("input", { id: inputId, ref: inputRef, type: "range", className: clsx("ids-range__input", {
|
|
8
|
+
"ids-focus-anchor": focusAnchor
|
|
9
|
+
}), min: min, "aria-valuemin": min, max: max, "aria-valuemax": max, "aria-valuenow": valueNow, "aria-disabled": disabled, disabled: disabled, step: step, style: {
|
|
10
|
+
backgroundSize: ((valueNow - min) * 100) / (max - min) + "% 100%"
|
|
11
|
+
}, ...props }), showTicks && (jsx("div", { className: clsx("ids-range-ticks", {
|
|
12
|
+
"ids-range-ticks--disabled": disabled
|
|
13
|
+
}), children: ticks.map(tick => (jsx("div", { className: "ids-range-tick", children: tick }, tick))) }))] }));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { IDSRangeBase };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
interface IDSRangeProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
1
|
+
import { ReactNode, InputHTMLAttributes } from "react";
|
|
2
|
+
export interface IDSRangeProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
4
3
|
label?: string;
|
|
5
4
|
value?: number;
|
|
6
5
|
showTicks?: boolean;
|
|
@@ -12,7 +11,5 @@ interface IDSRangeProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
|
12
11
|
focusAnchor?: boolean;
|
|
13
12
|
dataTestId?: string;
|
|
14
13
|
tooltip?: ReactNode;
|
|
15
|
-
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
16
14
|
}
|
|
17
|
-
export declare const IDSRange:
|
|
18
|
-
export {};
|
|
15
|
+
export declare const IDSRange: import("react").ForwardRefExoticComponent<IDSRangeProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { forwardRef, useState, useRef, useImperativeHandle, useEffect } from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import '@inera/ids-design/components/form/range/range.css';
|
|
6
|
-
import clsx from 'clsx';
|
|
4
|
+
import { IDSRangeBase } from './range-base.js';
|
|
7
5
|
|
|
8
|
-
const IDSRange = forwardRef(({ label
|
|
9
|
-
const [internalValue, setInternalValue] = useState(value);
|
|
6
|
+
const IDSRange = forwardRef(({ label, value = 0, showTicks = false, interval = 0, min = 0, max = 0, step = 0, onChange, style, ...props }, ref) => {
|
|
7
|
+
const [internalValue, setInternalValue] = useState(value ?? 0);
|
|
10
8
|
const [ticks, setTicks] = useState([]);
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
useImperativeHandle(ref, () => rangeRef.current);
|
|
9
|
+
const inputRef = useRef(null);
|
|
10
|
+
useImperativeHandle(ref, () => inputRef.current);
|
|
14
11
|
useEffect(() => {
|
|
15
|
-
if (step > 0) {
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
for (let i = min; i <= max; i +=
|
|
19
|
-
|
|
12
|
+
if (step > 0 && showTicks) {
|
|
13
|
+
const out = [];
|
|
14
|
+
const inc = interval > 0 ? interval : step;
|
|
15
|
+
for (let i = min; i <= max; i += inc) {
|
|
16
|
+
out.push(Math.floor(i));
|
|
20
17
|
}
|
|
21
|
-
setTicks(
|
|
18
|
+
setTicks(out);
|
|
22
19
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
setInternalValue(+ev.target.value);
|
|
26
|
-
if (onChange) {
|
|
27
|
-
onChange(ev);
|
|
20
|
+
else {
|
|
21
|
+
setTicks([]);
|
|
28
22
|
}
|
|
23
|
+
}, [min, max, step, interval, showTicks]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
setInternalValue(value);
|
|
26
|
+
}, [value]);
|
|
27
|
+
const handleChange = (e) => {
|
|
28
|
+
const newValue = Number(e.target.value);
|
|
29
|
+
setInternalValue(newValue);
|
|
30
|
+
onChange?.(e);
|
|
29
31
|
};
|
|
30
|
-
return (
|
|
31
|
-
"ids-focus-anchor": focusAnchor
|
|
32
|
-
}), min: min, "aria-valuemin": min, max: max, "aria-valuemax": max, step: step, value: internalValue, "aria-valuenow": internalValue, disabled: disabled, style: { backgroundSize: ((internalValue - min) * 100) / (max - min) + "% 100%" }, onChange: handleOnChange, ...props }), showTicks && (jsx("div", { className: clsx("ids-range-ticks", { "ids-range-ticks--disabled": disabled }), children: ticks.map(tick => (jsx("div", { className: "ids-range-tick", children: tick }, tick))) }))] }));
|
|
32
|
+
return (jsx(IDSRangeBase, { ...props, label: label, inputRef: inputRef, ticks: ticks, showTicks: showTicks, min: min, max: max, step: step, value: internalValue, valueNow: internalValue, onChange: handleChange, style: style }));
|
|
33
33
|
});
|
|
34
34
|
IDSRange.displayName = "IDSRange";
|
|
35
35
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode, SelectHTMLAttributes } from "react";
|
|
2
|
+
export interface IDSSelectBaseProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
3
|
+
id?: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
errorMsgId?: string;
|
|
6
|
+
errorMsg?: string;
|
|
7
|
+
invalid?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
light?: boolean;
|
|
11
|
+
focusAnchor?: boolean;
|
|
12
|
+
tooltip?: ReactNode;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
className?: string;
|
|
15
|
+
dataTestId?: string;
|
|
16
|
+
selectRef?: React.Ref<HTMLSelectElement>;
|
|
17
|
+
style?: CSSProperties;
|
|
18
|
+
}
|
|
19
|
+
export declare function IDSSelectBase({ id, label, errorMsgId, errorMsg, invalid, disabled, required, light, focusAnchor, tooltip, children, className, selectRef, dataTestId, style, ...props }: IDSSelectBaseProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { IDSErrorMessage } from '../error-message/error-message.js';
|
|
5
|
+
|
|
6
|
+
function IDSSelectBase({ id, label, errorMsgId, errorMsg, invalid, disabled, required, light, focusAnchor, tooltip, children, className, selectRef, dataTestId, style, ...props }) {
|
|
7
|
+
const reactId = useId();
|
|
8
|
+
const selectId = !!id ? id : `select-base-${reactId}`;
|
|
9
|
+
const baseErrorMsgId = !!errorMsgId ? errorMsgId : `select-base-error-${reactId}`;
|
|
10
|
+
const showErrorMsg = invalid && !!errorMsg;
|
|
11
|
+
const ariaHandler = showErrorMsg
|
|
12
|
+
? {
|
|
13
|
+
"aria-describedby": baseErrorMsgId
|
|
14
|
+
}
|
|
15
|
+
: {};
|
|
16
|
+
return (jsxs("div", { className: clsx("ids-select", className), "data-testid": dataTestId, style: style, children: [label && (jsxs("div", { className: "ids-label-wrapper ids-label-wrapper--margin-bottom", children: [jsx("label", { htmlFor: selectId, className: clsx("ids-label", {
|
|
17
|
+
"ids-label--disabled": disabled
|
|
18
|
+
}), children: label }), tooltip && jsx("span", { className: "ids-label__tooltip", children: tooltip })] })), jsx("div", { className: "ids-select__wrapper", children: jsx("select", { id: selectId, ref: selectRef, className: clsx("ids-select__select", {
|
|
19
|
+
"ids-input--light": light,
|
|
20
|
+
"ids-focus-anchor": focusAnchor
|
|
21
|
+
}), "aria-invalid": invalid, "aria-required": required, "aria-disabled": disabled, disabled: disabled, required: required, ...ariaHandler, ...props, children: children }) }), showErrorMsg && (jsx(IDSErrorMessage, { id: baseErrorMsgId, show: true, children: errorMsg }))] }));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { IDSSelectBase };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
interface IDSSelectProps extends
|
|
1
|
+
import { ReactNode, SelectHTMLAttributes } from "react";
|
|
2
|
+
export interface IDSSelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
3
|
+
id?: string;
|
|
3
4
|
label?: string;
|
|
4
5
|
errorMsg?: string;
|
|
6
|
+
invalid?: boolean;
|
|
5
7
|
disabled?: boolean;
|
|
6
8
|
required?: boolean;
|
|
7
|
-
invalid?: boolean;
|
|
8
9
|
light?: boolean;
|
|
9
10
|
focusAnchor?: boolean;
|
|
10
|
-
noValidation?: boolean;
|
|
11
11
|
tooltip?: ReactNode;
|
|
12
|
-
children?: ReactNode;
|
|
13
12
|
dataTestId?: string;
|
|
13
|
+
noValidation?: boolean;
|
|
14
|
+
validatesOnBlur?: boolean;
|
|
14
15
|
}
|
|
15
|
-
export declare const IDSSelect:
|
|
16
|
-
export {};
|
|
16
|
+
export declare const IDSSelect: import("react").ForwardRefExoticComponent<IDSSelectProps & import("react").RefAttributes<HTMLSelectElement>>;
|
|
@@ -1,26 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { forwardRef, useRef, useImperativeHandle } from 'react';
|
|
4
|
-
import { useElementId } from '../../utils/hooks/useElementId.js';
|
|
5
|
-
import { IDSErrorMessage } from '../error-message/error-message.js';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useId, useRef, useImperativeHandle } from 'react';
|
|
6
4
|
import { useInputValidity } from '../form-hooks/useInputValidity.js';
|
|
7
|
-
import {
|
|
8
|
-
import clsx from 'clsx';
|
|
5
|
+
import { IDSSelectBase } from './select-base.js';
|
|
9
6
|
|
|
10
|
-
const IDSSelect = forwardRef(({ label
|
|
11
|
-
const
|
|
12
|
-
const errorMsgId = useElementId();
|
|
7
|
+
const IDSSelect = forwardRef(({ id, label, errorMsg, disabled, required, light, focusAnchor, tooltip, dataTestId, invalid = false, noValidation = false, validatesOnBlur = false, children, style, ...props }, ref) => {
|
|
8
|
+
const errorMsgId = `select-error-${useId()}`;
|
|
13
9
|
const selectRef = useRef(null);
|
|
14
|
-
|
|
15
|
-
const hasValidValue = useInputValidity(selectRef);
|
|
10
|
+
const hasValidValue = useInputValidity(selectRef, validatesOnBlur);
|
|
16
11
|
const isInvalid = (invalid || !hasValidValue) && !noValidation;
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
"ids-label--disabled": disabled
|
|
20
|
-
}), children: label }), tooltip] }), jsx("div", { className: "ids-select__wrapper", children: jsx("select", { id: fieldId, ref: selectRef, className: clsx("ids-select__select", {
|
|
21
|
-
"ids-input--light": light,
|
|
22
|
-
"ids-focus-anchor": focusAnchor
|
|
23
|
-
}), "aria-invalid": isInvalid, "aria-disabled": disabled, required: required, disabled: disabled, ...props, children: children }) }), isInvalid && errorMsg && (jsx(IDSErrorMessage, { id: errorMsgId, show: true, children: errorMsg }))] }));
|
|
12
|
+
useImperativeHandle(ref, () => selectRef.current);
|
|
13
|
+
return (jsx(IDSSelectBase, { ...props, style: style, id: id, label: label, errorMsg: errorMsg, disabled: disabled, required: required, light: light, focusAnchor: focusAnchor, tooltip: tooltip, dataTestId: dataTestId, selectRef: selectRef, errorMsgId: errorMsgId, invalid: isInvalid, children: children }));
|
|
24
14
|
});
|
|
25
15
|
IDSSelect.displayName = "IDSSelect";
|
|
26
16
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from "react";
|
|
2
|
+
export interface IDSSelectMultipleBaseProps {
|
|
3
|
+
labelId?: string;
|
|
4
|
+
id?: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
expanded?: boolean;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
numbCheckedBoxes?: number;
|
|
9
|
+
selectedLabel?: string;
|
|
10
|
+
selectedLabelPlural?: string;
|
|
11
|
+
maxHeight?: string;
|
|
12
|
+
errorMsg?: string;
|
|
13
|
+
invalid?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
ariaDisabled?: boolean;
|
|
16
|
+
light?: boolean;
|
|
17
|
+
focusAnchor?: boolean;
|
|
18
|
+
tooltip?: ReactNode;
|
|
19
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
20
|
+
componentRef?: React.Ref<HTMLDivElement>;
|
|
21
|
+
children?: ReactNode;
|
|
22
|
+
className?: string;
|
|
23
|
+
onClick?: () => void;
|
|
24
|
+
client?: boolean;
|
|
25
|
+
style?: CSSProperties;
|
|
26
|
+
}
|
|
27
|
+
export declare function IDSSelectMultipleBase({ labelId, id, label, placeholder, numbCheckedBoxes, selectedLabel, selectedLabelPlural, expanded, maxHeight, tooltip, componentRef, inputRef, invalid, disabled, ariaDisabled, light, focusAnchor, className, children, style, onClick, client }: IDSSelectMultipleBaseProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
|
|
5
|
+
function IDSSelectMultipleBase({ labelId, id, label, placeholder, numbCheckedBoxes, selectedLabel = "vald", selectedLabelPlural = "valda", expanded, maxHeight = "8.125rem", tooltip, componentRef, inputRef, invalid, disabled, ariaDisabled, light, focusAnchor, className, children, style, onClick, client = false }) {
|
|
6
|
+
const reactId = useId();
|
|
7
|
+
const inputId = !!id ? id : `select-multiple-base-${reactId}`;
|
|
8
|
+
const inputLabelId = !!labelId ? labelId : `select-multiple-base-label-${reactId}`;
|
|
9
|
+
const displayedValue = numbCheckedBoxes === 0 || !numbCheckedBoxes
|
|
10
|
+
? placeholder
|
|
11
|
+
: numbCheckedBoxes === 1
|
|
12
|
+
? `${numbCheckedBoxes} ${selectedLabel}`
|
|
13
|
+
: `${numbCheckedBoxes} ${selectedLabelPlural}`;
|
|
14
|
+
const clickHandler = client && !!onClick
|
|
15
|
+
? {
|
|
16
|
+
onClick
|
|
17
|
+
}
|
|
18
|
+
: {};
|
|
19
|
+
return (jsxs("div", { className: clsx("ids-select-multiple", className), ref: componentRef, style: style, children: [label && (jsxs("div", { className: "ids-label-wrapper ids-label-wrapper--margin-bottom", children: [jsx("label", { id: inputLabelId, htmlFor: inputId, className: clsx("ids-label", { "ids-label--disabled": disabled || ariaDisabled }), children: label }), tooltip && jsx("span", { className: "ids-label__tooltip", children: tooltip })] })), jsx("div", { className: "ids-select-multiple__select-wrapper", children: jsx("input", { id: inputId, ref: inputRef, "aria-labelledby": inputLabelId, type: "button", className: clsx("ids-select-multiple__select", {
|
|
20
|
+
"ids-input--light": light,
|
|
21
|
+
"ids-focus-anchor": focusAnchor
|
|
22
|
+
}), "aria-expanded": expanded, disabled: disabled, "aria-disabled": ariaDisabled, "aria-invalid": invalid, placeholder: placeholder, defaultValue: displayedValue, ...clickHandler }) }), jsx("div", { className: "ids-select-multiple__dropdown-wrapper", children: jsx("div", { className: clsx("ids-select-multiple__dropdown", {
|
|
23
|
+
"ids-select-multiple__dropdown--expanded": expanded
|
|
24
|
+
}), children: jsx("div", { className: "ids-select-multiple__dropdown-scroll-area", style: { maxHeight }, children: children }) }) })] }));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { IDSSelectMultipleBase };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
interface IDSSelectMultipleProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
1
|
+
import React, { HTMLAttributes } from "react";
|
|
2
|
+
export interface IDSSelectMultipleProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
3
|
label?: string;
|
|
5
4
|
selectedLabel?: string;
|
|
6
5
|
selectedLabelPlural?: string;
|
|
7
6
|
placeholder?: string;
|
|
7
|
+
numbCheckedBoxes?: number;
|
|
8
8
|
maxHeight?: string;
|
|
9
9
|
expanded?: boolean;
|
|
10
10
|
errorMsg?: string;
|
|
@@ -14,9 +14,12 @@ interface IDSSelectMultipleProps extends React.InputHTMLAttributes<HTMLInputElem
|
|
|
14
14
|
light?: boolean;
|
|
15
15
|
focusAnchor?: boolean;
|
|
16
16
|
noValidation?: boolean;
|
|
17
|
-
tooltip?: ReactNode;
|
|
18
|
-
children?: ReactNode;
|
|
17
|
+
tooltip?: React.ReactNode;
|
|
18
|
+
children?: React.ReactNode;
|
|
19
19
|
dataTestId?: string;
|
|
20
|
+
id?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function IDSSelectMultiple({ invalid, noValidation, expanded, errorMsg, ariaDisabled, style, children, ...props }: IDSSelectMultipleProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare namespace IDSSelectMultiple {
|
|
24
|
+
var displayName: string;
|
|
20
25
|
}
|
|
21
|
-
export declare const IDSSelectMultiple: React.FC<IDSSelectMultipleProps>;
|
|
22
|
-
export {};
|
|
@@ -1,74 +1,49 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { useState, useRef, useEffect } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { IDSSelectMultipleBase } from './select-multiple-base.js';
|
|
5
5
|
import { IDSCheckboxGroup } from '../checkbox/checkbox-group.js';
|
|
6
|
-
import { useAriaDescribedBy } from '../form-hooks/useAriaDescribedBy.js';
|
|
7
|
-
import '@inera/ids-design/components/form/select-multiple/select-multiple.css';
|
|
8
|
-
import clsx from 'clsx';
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
const [checkboxListInvalid, setCheckboxListInvalid] = useState(false);
|
|
12
|
-
const [checkedBoxesCount, setCheckedBoxesCount] = useState(0);
|
|
13
|
-
const [value, setValue] = useState(placeholder);
|
|
7
|
+
function IDSSelectMultiple({ invalid = false, noValidation = false, expanded = false, errorMsg, ariaDisabled = false, style, children, ...props }) {
|
|
14
8
|
const [isExpanded, setIsExpanded] = useState(expanded);
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const selectMultipleRef = useRef(null);
|
|
19
|
-
useAriaDescribedBy(selectMultipleRef, errorMsgId, checkboxListInvalid, !!errorMsg);
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
let inputValue = placeholder;
|
|
22
|
-
if (checkedBoxesCount === 1) {
|
|
23
|
-
inputValue = `${checkedBoxesCount} ${selectedLabel}`;
|
|
24
|
-
}
|
|
25
|
-
if (checkedBoxesCount > 1) {
|
|
26
|
-
inputValue = `${checkedBoxesCount} ${selectedLabelPlural}`;
|
|
27
|
-
}
|
|
28
|
-
setValue(inputValue);
|
|
29
|
-
}, [checkedBoxesCount]);
|
|
9
|
+
const [checkboxListInvalid, setCheckboxListInvalid] = useState(false);
|
|
10
|
+
const inputRef = useRef(null);
|
|
11
|
+
const componentRef = useRef(null);
|
|
30
12
|
useEffect(() => {
|
|
31
|
-
if (checkboxListInvalid)
|
|
13
|
+
if (checkboxListInvalid)
|
|
32
14
|
setIsExpanded(true);
|
|
33
|
-
}
|
|
34
15
|
}, [checkboxListInvalid]);
|
|
35
16
|
useEffect(() => {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const root = selectMultipleRef.current.closest(".ids-select-multiple");
|
|
40
|
-
if (root && !root.contains(target)) {
|
|
41
|
-
setIsExpanded(false);
|
|
42
|
-
}
|
|
17
|
+
const handleClickOutside = (event) => {
|
|
18
|
+
if (componentRef.current && !componentRef.current.contains(event.target)) {
|
|
19
|
+
setIsExpanded(false);
|
|
43
20
|
}
|
|
44
21
|
};
|
|
45
22
|
const handleKeyDown = (event) => {
|
|
46
|
-
if (event.key === "Escape"
|
|
23
|
+
if (event.key === "Escape")
|
|
47
24
|
setIsExpanded(false);
|
|
48
|
-
}
|
|
49
25
|
};
|
|
50
|
-
document.addEventListener("click",
|
|
51
|
-
document.addEventListener("focusin",
|
|
26
|
+
document.addEventListener("click", handleClickOutside);
|
|
27
|
+
document.addEventListener("focusin", handleClickOutside);
|
|
52
28
|
document.addEventListener("keydown", handleKeyDown);
|
|
53
29
|
return () => {
|
|
54
|
-
document.removeEventListener("click",
|
|
55
|
-
document.removeEventListener("focusin",
|
|
30
|
+
document.removeEventListener("click", handleClickOutside);
|
|
31
|
+
document.removeEventListener("focusin", handleClickOutside);
|
|
56
32
|
document.removeEventListener("keydown", handleKeyDown);
|
|
57
33
|
};
|
|
58
|
-
}, [
|
|
59
|
-
return (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
};
|
|
34
|
+
}, []);
|
|
35
|
+
return (jsx(IDSSelectMultipleBase, { ...props, style: style, client: true, componentRef: componentRef, inputRef: inputRef, invalid: invalid || (!noValidation && checkboxListInvalid), expanded: isExpanded, ariaDisabled: ariaDisabled, onClick: () => {
|
|
36
|
+
setIsExpanded(!isExpanded);
|
|
37
|
+
}, children: jsx(IDSCheckboxGroup, { block: true, noValidation: noValidation, errorMsg: errorMsg, onValidityChange: (isValid) => {
|
|
38
|
+
if (!isValid) {
|
|
39
|
+
setIsExpanded(true);
|
|
40
|
+
setCheckboxListInvalid(!isValid);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
setCheckboxListInvalid(false);
|
|
44
|
+
}
|
|
45
|
+
}, children: children }) }));
|
|
46
|
+
}
|
|
47
|
+
IDSSelectMultiple.displayName = "IDSSelectMultiple";
|
|
73
48
|
|
|
74
49
|
export { IDSSelectMultiple };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
light?: boolean;
|
|
2
|
+
interface IDSSpinnerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
variant?: "1" | "2" | "3";
|
|
5
4
|
live?: "polite" | "assertive" | "off";
|
|
6
5
|
srText?: string;
|
|
7
6
|
}
|
|
8
|
-
export declare
|
|
7
|
+
export declare function IDSSpinner({ variant, live, srText, className, ...rest }: IDSSpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export {};
|