@dynamic-framework/ui-react 2.9.0 → 2.11.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/dist/DPortalStack-6zJm6JoD.js +14 -0
- package/dist/DPortalStack-6zJm6JoD.js.map +1 -0
- package/dist/DPortalStack-D1-GGU4C.js +12 -0
- package/dist/DPortalStack-D1-GGU4C.js.map +1 -0
- package/dist/api.json +7429 -0
- package/dist/css/dynamic-ui.css +95 -26
- package/dist/css/dynamic-ui.min.css +2 -2
- package/dist/esm/components/DAlert/DAlert.js +16 -0
- package/dist/esm/components/DAlert/DAlert.js.map +1 -0
- package/dist/esm/components/DAlert/index.js +6 -0
- package/dist/esm/components/DAlert/index.js.map +1 -0
- package/dist/esm/components/DAvatar/DAvatar.js +23 -0
- package/dist/esm/components/DAvatar/DAvatar.js.map +1 -0
- package/dist/esm/components/DAvatar/index.js +6 -0
- package/dist/esm/components/DAvatar/index.js.map +1 -0
- package/dist/esm/components/DBadge/DBadge.js +31 -0
- package/dist/esm/components/DBadge/DBadge.js.map +1 -0
- package/dist/esm/components/DBadge/index.js +6 -0
- package/dist/esm/components/DBadge/index.js.map +1 -0
- package/dist/esm/components/DBox/DBox.js +9 -0
- package/dist/esm/components/DBox/DBox.js.map +1 -0
- package/dist/esm/components/DBox/index.js +6 -0
- package/dist/esm/components/DBox/index.js.map +1 -0
- package/dist/esm/components/DBoxFile/DBoxFile.js +26 -0
- package/dist/esm/components/DBoxFile/DBoxFile.js.map +1 -0
- package/dist/esm/components/DBoxFile/index.js +6 -0
- package/dist/esm/components/DBoxFile/index.js.map +1 -0
- package/dist/esm/components/DBoxFile/useDBoxFile.js +236 -0
- package/dist/esm/components/DBoxFile/useDBoxFile.js.map +1 -0
- package/dist/esm/components/DBoxFile/utils.js +127 -0
- package/dist/esm/components/DBoxFile/utils.js.map +1 -0
- package/dist/esm/components/DButton/DButton.js +84 -0
- package/dist/esm/components/DButton/DButton.js.map +1 -0
- package/dist/esm/components/DButton/index.js +6 -0
- package/dist/esm/components/DButton/index.js.map +1 -0
- package/dist/esm/components/DButtonIcon/DButtonIcon.js +55 -0
- package/dist/esm/components/DButtonIcon/DButtonIcon.js.map +1 -0
- package/dist/esm/components/DButtonIcon/index.js +6 -0
- package/dist/esm/components/DButtonIcon/index.js.map +1 -0
- package/dist/esm/components/DButtonIcon/warnMissingAccessibleName.js +40 -0
- package/dist/esm/components/DButtonIcon/warnMissingAccessibleName.js.map +1 -0
- package/dist/esm/components/DCard/DCard.js +17 -0
- package/dist/esm/components/DCard/DCard.js.map +1 -0
- package/dist/esm/components/DCard/components/DCardBody.js +9 -0
- package/dist/esm/components/DCard/components/DCardBody.js.map +1 -0
- package/dist/esm/components/DCard/components/DCardFooter.js +9 -0
- package/dist/esm/components/DCard/components/DCardFooter.js.map +1 -0
- package/dist/esm/components/DCard/components/DCardHeader.js +9 -0
- package/dist/esm/components/DCard/components/DCardHeader.js.map +1 -0
- package/dist/esm/components/DCard/index.js +9 -0
- package/dist/esm/components/DCard/index.js.map +1 -0
- package/dist/esm/components/DCarousel/DCarousel.js +39 -0
- package/dist/esm/components/DCarousel/DCarousel.js.map +1 -0
- package/dist/esm/components/DCarousel/components/DCarouselSlide.js +12 -0
- package/dist/esm/components/DCarousel/components/DCarouselSlide.js.map +1 -0
- package/dist/esm/components/DCarousel/index.js +7 -0
- package/dist/esm/components/DCarousel/index.js.map +1 -0
- package/dist/esm/components/DChip/DChip.js +18 -0
- package/dist/esm/components/DChip/DChip.js.map +1 -0
- package/dist/esm/components/DChip/index.js +6 -0
- package/dist/esm/components/DChip/index.js.map +1 -0
- package/dist/esm/components/DCollapse/DCollapse.js +30 -0
- package/dist/esm/components/DCollapse/DCollapse.js.map +1 -0
- package/dist/esm/components/DCollapse/index.js +6 -0
- package/dist/esm/components/DCollapse/index.js.map +1 -0
- package/dist/esm/components/DConfirmModal/DConfirmModalContainer.js +59 -0
- package/dist/esm/components/DConfirmModal/DConfirmModalContainer.js.map +1 -0
- package/dist/esm/components/DConfirmModal/DConfirmModalUI.js +39 -0
- package/dist/esm/components/DConfirmModal/DConfirmModalUI.js.map +1 -0
- package/dist/esm/components/DConfirmModal/confirmModalStore.js +38 -0
- package/dist/esm/components/DConfirmModal/confirmModalStore.js.map +1 -0
- package/dist/esm/components/DCreditCard/DCreditCard.js +15 -0
- package/dist/esm/components/DCreditCard/DCreditCard.js.map +1 -0
- package/dist/esm/components/DCreditCard/index.js +6 -0
- package/dist/esm/components/DCreditCard/index.js.map +1 -0
- package/dist/esm/components/DCurrencyText/DCurrencyText.js +10 -0
- package/dist/esm/components/DCurrencyText/DCurrencyText.js.map +1 -0
- package/dist/esm/components/DCurrencyText/index.js +6 -0
- package/dist/esm/components/DCurrencyText/index.js.map +1 -0
- package/dist/esm/components/DDataStateWrapper/DDataStateWrapper.js +42 -0
- package/dist/esm/components/DDataStateWrapper/DDataStateWrapper.js.map +1 -0
- package/dist/esm/components/DDataStateWrapper/components/EmptyState.js +10 -0
- package/dist/esm/components/DDataStateWrapper/components/EmptyState.js.map +1 -0
- package/dist/esm/components/DDataStateWrapper/components/ErrorState.js +10 -0
- package/dist/esm/components/DDataStateWrapper/components/ErrorState.js.map +1 -0
- package/dist/esm/components/DDataStateWrapper/components/LoadingState.js +8 -0
- package/dist/esm/components/DDataStateWrapper/components/LoadingState.js.map +1 -0
- package/dist/esm/components/DDataStateWrapper/index.js +9 -0
- package/dist/esm/components/DDataStateWrapper/index.js.map +1 -0
- package/dist/esm/components/DDatePicker/DDatePicker.js +54 -0
- package/dist/esm/components/DDatePicker/DDatePicker.js.map +1 -0
- package/dist/esm/components/DDatePicker/components/DDatePickerHeaderSelector.js +50 -0
- package/dist/esm/components/DDatePicker/components/DDatePickerHeaderSelector.js.map +1 -0
- package/dist/esm/components/DDatePicker/components/DDatePickerInput.js +16 -0
- package/dist/esm/components/DDatePicker/components/DDatePickerInput.js.map +1 -0
- package/dist/esm/components/DDatePicker/components/DDatePickerTime.js +11 -0
- package/dist/esm/components/DDatePicker/components/DDatePickerTime.js.map +1 -0
- package/dist/esm/components/DDatePicker/index.js +6 -0
- package/dist/esm/components/DDatePicker/index.js.map +1 -0
- package/dist/esm/components/DDropdown/DDropdown.js +315 -0
- package/dist/esm/components/DDropdown/DDropdown.js.map +1 -0
- package/dist/esm/components/DDropdown/index.js +6 -0
- package/dist/esm/components/DDropdown/index.js.map +1 -0
- package/dist/esm/components/DErrorBoundary/DErrorBoundary.js +22 -0
- package/dist/esm/components/DErrorBoundary/DErrorBoundary.js.map +1 -0
- package/dist/esm/components/DErrorBoundary/components/DefaultErrorBoundary.js +10 -0
- package/dist/esm/components/DErrorBoundary/components/DefaultErrorBoundary.js.map +1 -0
- package/dist/esm/components/DErrorBoundary/index.js +7 -0
- package/dist/esm/components/DErrorBoundary/index.js.map +1 -0
- package/dist/esm/components/DIcon/DIcon.js +21 -0
- package/dist/esm/components/DIcon/DIcon.js.map +1 -0
- package/dist/esm/components/DIcon/index.js +6 -0
- package/dist/esm/components/DIcon/index.js.map +1 -0
- package/dist/esm/components/DIconBase/DIconBase.js +146 -0
- package/dist/esm/components/DIconBase/DIconBase.js.map +1 -0
- package/dist/esm/components/DIconBase/index.js +6 -0
- package/dist/esm/components/DIconBase/index.js.map +1 -0
- package/dist/esm/components/DIconBase/resolveIconFromRegistry.js +20 -0
- package/dist/esm/components/DIconBase/resolveIconFromRegistry.js.map +1 -0
- package/dist/esm/components/DIconBase/warnUnknownIcon.js +59 -0
- package/dist/esm/components/DIconBase/warnUnknownIcon.js.map +1 -0
- package/dist/esm/components/DInput/DInput.js +95 -0
- package/dist/esm/components/DInput/DInput.js.map +1 -0
- package/dist/esm/components/DInput/index.js +6 -0
- package/dist/esm/components/DInput/index.js.map +1 -0
- package/dist/esm/components/DInputCheck/DInputCheck.js +94 -0
- package/dist/esm/components/DInputCheck/DInputCheck.js.map +1 -0
- package/dist/esm/components/DInputCheck/index.js +6 -0
- package/dist/esm/components/DInputCheck/index.js.map +1 -0
- package/dist/esm/components/DInputCounter/DInputCounter.js +107 -0
- package/dist/esm/components/DInputCounter/DInputCounter.js.map +1 -0
- package/dist/esm/components/DInputCounter/index.js +6 -0
- package/dist/esm/components/DInputCounter/index.js.map +1 -0
- package/dist/esm/components/DInputCurrency/DInputCurrency.js +25 -0
- package/dist/esm/components/DInputCurrency/DInputCurrency.js.map +1 -0
- package/dist/esm/components/DInputCurrency/index.js +6 -0
- package/dist/esm/components/DInputCurrency/index.js.map +1 -0
- package/dist/esm/components/DInputMask/DInputMask.js +13 -0
- package/dist/esm/components/DInputMask/DInputMask.js.map +1 -0
- package/dist/esm/components/DInputMask/index.js +6 -0
- package/dist/esm/components/DInputMask/index.js.map +1 -0
- package/dist/esm/components/DInputPassword/DInputPassword.js +24 -0
- package/dist/esm/components/DInputPassword/DInputPassword.js.map +1 -0
- package/dist/esm/components/DInputPassword/index.js +6 -0
- package/dist/esm/components/DInputPassword/index.js.map +1 -0
- package/dist/esm/components/DInputPhone/DInputPhone.js +108 -0
- package/dist/esm/components/DInputPhone/DInputPhone.js.map +1 -0
- package/dist/esm/components/DInputPhone/index.js +6 -0
- package/dist/esm/components/DInputPhone/index.js.map +1 -0
- package/dist/esm/components/DInputPin/DInputPin.js +88 -0
- package/dist/esm/components/DInputPin/DInputPin.js.map +1 -0
- package/dist/esm/components/DInputPin/index.js +6 -0
- package/dist/esm/components/DInputPin/index.js.map +1 -0
- package/dist/esm/components/DInputRange/DInputRange.js +60 -0
- package/dist/esm/components/DInputRange/DInputRange.js.map +1 -0
- package/dist/esm/components/DInputRange/index.js +6 -0
- package/dist/esm/components/DInputRange/index.js.map +1 -0
- package/dist/esm/components/DInputSearch/DInputSearch.js +57 -0
- package/dist/esm/components/DInputSearch/DInputSearch.js.map +1 -0
- package/dist/esm/components/DInputSearch/index.js +6 -0
- package/dist/esm/components/DInputSearch/index.js.map +1 -0
- package/dist/esm/components/DInputSelect/DInputSelect.js +104 -0
- package/dist/esm/components/DInputSelect/DInputSelect.js.map +1 -0
- package/dist/esm/components/DInputSelect/index.js +6 -0
- package/dist/esm/components/DInputSelect/index.js.map +1 -0
- package/dist/esm/components/DInputSwitch/DInputSwitch.js +43 -0
- package/dist/esm/components/DInputSwitch/DInputSwitch.js.map +1 -0
- package/dist/esm/components/DInputSwitch/index.js +6 -0
- package/dist/esm/components/DInputSwitch/index.js.map +1 -0
- package/dist/esm/components/DLayout/DLayout.js +22 -0
- package/dist/esm/components/DLayout/DLayout.js.map +1 -0
- package/dist/esm/components/DLayout/components/DLayoutPane.js +16 -0
- package/dist/esm/components/DLayout/components/DLayoutPane.js.map +1 -0
- package/dist/esm/components/DLayout/index.js +7 -0
- package/dist/esm/components/DLayout/index.js.map +1 -0
- package/dist/esm/components/DListGroup/DListGroup.js +39 -0
- package/dist/esm/components/DListGroup/DListGroup.js.map +1 -0
- package/dist/esm/components/DListGroup/ListGroupContext.js +11 -0
- package/dist/esm/components/DListGroup/ListGroupContext.js.map +1 -0
- package/dist/esm/components/DListGroup/components/DListGroupItem.js +59 -0
- package/dist/esm/components/DListGroup/components/DListGroupItem.js.map +1 -0
- package/dist/esm/components/DListGroup/components/warnInvalidListMarkup.js +30 -0
- package/dist/esm/components/DListGroup/components/warnInvalidListMarkup.js.map +1 -0
- package/dist/esm/components/DListGroup/index.js +7 -0
- package/dist/esm/components/DListGroup/index.js.map +1 -0
- package/dist/esm/components/DModal/DModal.js +37 -0
- package/dist/esm/components/DModal/DModal.js.map +1 -0
- package/dist/esm/components/DModal/components/DModalBody.js +9 -0
- package/dist/esm/components/DModal/components/DModalBody.js.map +1 -0
- package/dist/esm/components/DModal/components/DModalFooter.js +14 -0
- package/dist/esm/components/DModal/components/DModalFooter.js.map +1 -0
- package/dist/esm/components/DModal/components/DModalHeader.js +15 -0
- package/dist/esm/components/DModal/components/DModalHeader.js.map +1 -0
- package/dist/esm/components/DModal/index.js +9 -0
- package/dist/esm/components/DModal/index.js.map +1 -0
- package/dist/esm/components/DOffcanvas/DOffcanvas.js +82 -0
- package/dist/esm/components/DOffcanvas/DOffcanvas.js.map +1 -0
- package/dist/esm/components/DOffcanvas/components/DOffcanvasBody.js +9 -0
- package/dist/esm/components/DOffcanvas/components/DOffcanvasBody.js.map +1 -0
- package/dist/esm/components/DOffcanvas/components/DOffcanvasFooter.js +14 -0
- package/dist/esm/components/DOffcanvas/components/DOffcanvasFooter.js.map +1 -0
- package/dist/esm/components/DOffcanvas/components/DOffcanvasHeader.js +15 -0
- package/dist/esm/components/DOffcanvas/components/DOffcanvasHeader.js.map +1 -0
- package/dist/esm/components/DOffcanvas/index.js +9 -0
- package/dist/esm/components/DOffcanvas/index.js.map +1 -0
- package/dist/esm/components/DOtp/DOtp.js +26 -0
- package/dist/esm/components/DOtp/DOtp.js.map +1 -0
- package/dist/esm/components/DOtp/components/OtpCountdown.js +12 -0
- package/dist/esm/components/DOtp/components/OtpCountdown.js.map +1 -0
- package/dist/esm/components/DOtp/index.js +6 -0
- package/dist/esm/components/DOtp/index.js.map +1 -0
- package/dist/esm/components/DPaginator/DPaginator.js +12 -0
- package/dist/esm/components/DPaginator/DPaginator.js.map +1 -0
- package/dist/esm/components/DPaginator/index.js +6 -0
- package/dist/esm/components/DPaginator/index.js.map +1 -0
- package/dist/esm/components/DPasswordStrengthMeter/DPasswordStrengthMeter.js +27 -0
- package/dist/esm/components/DPasswordStrengthMeter/DPasswordStrengthMeter.js.map +1 -0
- package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckItem.js +10 -0
- package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckItem.js.map +1 -0
- package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckList.js +41 -0
- package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckList.js.map +1 -0
- package/dist/esm/components/DPasswordStrengthMeter/PasswordStrength.js +23 -0
- package/dist/esm/components/DPasswordStrengthMeter/PasswordStrength.js.map +1 -0
- package/dist/esm/components/DPasswordStrengthMeter/index.js +6 -0
- package/dist/esm/components/DPasswordStrengthMeter/index.js.map +1 -0
- package/dist/esm/components/DPopover/DPopover.js +49 -0
- package/dist/esm/components/DPopover/DPopover.js.map +1 -0
- package/dist/esm/components/DPopover/index.js +6 -0
- package/dist/esm/components/DPopover/index.js.map +1 -0
- package/dist/esm/components/DProgress/DProgress.js +22 -0
- package/dist/esm/components/DProgress/DProgress.js.map +1 -0
- package/dist/esm/components/DProgress/index.js +6 -0
- package/dist/esm/components/DProgress/index.js.map +1 -0
- package/dist/esm/components/DSelect/DSelect.js +88 -0
- package/dist/esm/components/DSelect/DSelect.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectClearIndicator.js +12 -0
- package/dist/esm/components/DSelect/components/DSelectClearIndicator.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectDropdownIndicator.js +12 -0
- package/dist/esm/components/DSelect/components/DSelectDropdownIndicator.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectLoadingIndicator.js +12 -0
- package/dist/esm/components/DSelect/components/DSelectLoadingIndicator.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectMultiValueRemove.js +12 -0
- package/dist/esm/components/DSelect/components/DSelectMultiValueRemove.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectOptionCheck.js +14 -0
- package/dist/esm/components/DSelect/components/DSelectOptionCheck.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectOptionEmoji.js +14 -0
- package/dist/esm/components/DSelect/components/DSelectOptionEmoji.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectOptionIcon.js +15 -0
- package/dist/esm/components/DSelect/components/DSelectOptionIcon.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectPlaceholder.js +14 -0
- package/dist/esm/components/DSelect/components/DSelectPlaceholder.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectSingleValueEmoji.js +15 -0
- package/dist/esm/components/DSelect/components/DSelectSingleValueEmoji.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectSingleValueEmojiText.js +15 -0
- package/dist/esm/components/DSelect/components/DSelectSingleValueEmojiText.js.map +1 -0
- package/dist/esm/components/DSelect/components/DSelectSingleValueIconText.js +16 -0
- package/dist/esm/components/DSelect/components/DSelectSingleValueIconText.js.map +1 -0
- package/dist/esm/components/DSelect/createAriaGuidance.js +57 -0
- package/dist/esm/components/DSelect/createAriaGuidance.js.map +1 -0
- package/dist/esm/components/DSelect/index.js +6 -0
- package/dist/esm/components/DSelect/index.js.map +1 -0
- package/dist/esm/components/DStepper/DStepper.js +13 -0
- package/dist/esm/components/DStepper/DStepper.js.map +1 -0
- package/dist/esm/components/DStepper/index.js +6 -0
- package/dist/esm/components/DStepper/index.js.map +1 -0
- package/dist/esm/components/DStepperDesktop/DStepperDesktop.js +27 -0
- package/dist/esm/components/DStepperDesktop/DStepperDesktop.js.map +1 -0
- package/dist/esm/components/DStepperDesktop/index.js +6 -0
- package/dist/esm/components/DStepperDesktop/index.js.map +1 -0
- package/dist/esm/components/DStepperMobile/DStepperMobile.js +37 -0
- package/dist/esm/components/DStepperMobile/DStepperMobile.js.map +1 -0
- package/dist/esm/components/DStepperMobile/index.js +6 -0
- package/dist/esm/components/DStepperMobile/index.js.map +1 -0
- package/dist/esm/components/DTabs/DTabs.js +106 -0
- package/dist/esm/components/DTabs/DTabs.js.map +1 -0
- package/dist/esm/components/DTabs/TabContext.js +14 -0
- package/dist/esm/components/DTabs/TabContext.js.map +1 -0
- package/dist/esm/components/DTabs/components/DTabContent.js +14 -0
- package/dist/esm/components/DTabs/components/DTabContent.js.map +1 -0
- package/dist/esm/components/DTabs/components/DTabsProvider.js +22 -0
- package/dist/esm/components/DTabs/components/DTabsProvider.js.map +1 -0
- package/dist/esm/components/DTabs/index.js +9 -0
- package/dist/esm/components/DTabs/index.js.map +1 -0
- package/dist/esm/components/DTimeline/DTimeline.js +12 -0
- package/dist/esm/components/DTimeline/DTimeline.js.map +1 -0
- package/dist/esm/components/DTimeline/index.js +6 -0
- package/dist/esm/components/DTimeline/index.js.map +1 -0
- package/dist/esm/components/DToast/DToast.js +20 -0
- package/dist/esm/components/DToast/DToast.js.map +1 -0
- package/dist/esm/components/DToast/components/DToastBody.js +9 -0
- package/dist/esm/components/DToast/components/DToastBody.js.map +1 -0
- package/dist/esm/components/DToast/components/DToastHeader.js +9 -0
- package/dist/esm/components/DToast/components/DToastHeader.js.map +1 -0
- package/dist/esm/components/DToast/index.js +8 -0
- package/dist/esm/components/DToast/index.js.map +1 -0
- package/dist/esm/components/DToastContainer/DToastContainer.js +9 -0
- package/dist/esm/components/DToastContainer/DToastContainer.js.map +1 -0
- package/dist/esm/components/DToastContainer/index.js +7 -0
- package/dist/esm/components/DToastContainer/index.js.map +1 -0
- package/dist/esm/components/DToastContainer/useDToast.js +58 -0
- package/dist/esm/components/DToastContainer/useDToast.js.map +1 -0
- package/dist/esm/components/DTooltip/DTooltip.js +51 -0
- package/dist/esm/components/DTooltip/DTooltip.js.map +1 -0
- package/dist/esm/components/DTooltip/index.js +6 -0
- package/dist/esm/components/DTooltip/index.js.map +1 -0
- package/dist/esm/components/DVoucher/DVoucher.js +55 -0
- package/dist/esm/components/DVoucher/DVoucher.js.map +1 -0
- package/dist/esm/components/DVoucher/hooks/useScreenshot.js +30 -0
- package/dist/esm/components/DVoucher/hooks/useScreenshot.js.map +1 -0
- package/dist/esm/components/DVoucher/hooks/useScreenshotDownload.js +30 -0
- package/dist/esm/components/DVoucher/hooks/useScreenshotDownload.js.map +1 -0
- package/dist/esm/components/DVoucher/hooks/useScreenshotWebShare.js +27 -0
- package/dist/esm/components/DVoucher/hooks/useScreenshotWebShare.js.map +1 -0
- package/dist/esm/components/DVoucher/index.js +9 -0
- package/dist/esm/components/DVoucher/index.js.map +1 -0
- package/dist/esm/components/config.js +14 -0
- package/dist/esm/components/config.js.map +1 -0
- package/dist/esm/components/internal/DFormLabel.js +46 -0
- package/dist/esm/components/internal/DFormLabel.js.map +1 -0
- package/dist/esm/contexts/DContext.js +124 -0
- package/dist/esm/contexts/DContext.js.map +1 -0
- package/dist/esm/contexts/DPortalContext.js +163 -0
- package/dist/esm/contexts/DPortalContext.js.map +1 -0
- package/dist/esm/contexts/portal/DPortalStack.js +12 -0
- package/dist/esm/contexts/portal/DPortalStack.js.map +1 -0
- package/dist/esm/hooks/useConfirmModal.js +63 -0
- package/dist/esm/hooks/useConfirmModal.js.map +1 -0
- package/dist/esm/hooks/useControlledState.js +51 -0
- package/dist/esm/hooks/useControlledState.js.map +1 -0
- package/dist/esm/hooks/useCountdown.js +45 -0
- package/dist/esm/hooks/useCountdown.js.map +1 -0
- package/dist/esm/hooks/useDisableBodyScrollEffect.js +52 -0
- package/dist/esm/hooks/useDisableBodyScrollEffect.js.map +1 -0
- package/dist/esm/hooks/useDisableInputWheel.js +17 -0
- package/dist/esm/hooks/useDisableInputWheel.js.map +1 -0
- package/dist/esm/hooks/useFormatCurrency.js +16 -0
- package/dist/esm/hooks/useFormatCurrency.js.map +1 -0
- package/dist/esm/hooks/useInputCurrency.js +130 -0
- package/dist/esm/hooks/useInputCurrency.js.map +1 -0
- package/dist/esm/hooks/useItemSelection.js +35 -0
- package/dist/esm/hooks/useItemSelection.js.map +1 -0
- package/dist/esm/hooks/useMediaBreakpointUp.js +69 -0
- package/dist/esm/hooks/useMediaBreakpointUp.js.map +1 -0
- package/dist/esm/hooks/useMediaQuery.js +11 -0
- package/dist/esm/hooks/useMediaQuery.js.map +1 -0
- package/dist/esm/hooks/useOtp.js +107 -0
- package/dist/esm/hooks/useOtp.js.map +1 -0
- package/dist/esm/hooks/usePortal.js +26 -0
- package/dist/esm/hooks/usePortal.js.map +1 -0
- package/dist/esm/hooks/useProvidedRefOrCreate.js +24 -0
- package/dist/esm/hooks/useProvidedRefOrCreate.js.map +1 -0
- package/dist/esm/hooks/useResponsiveProp.js +61 -0
- package/dist/esm/hooks/useResponsiveProp.js.map +1 -0
- package/dist/esm/hooks/useStackState.js +40 -0
- package/dist/esm/hooks/useStackState.js.map +1 -0
- package/dist/esm/icons/coreIcons.js +55 -0
- package/dist/esm/icons/coreIcons.js.map +1 -0
- package/dist/esm/index.js +99 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/utils/attr-accept.js +38 -0
- package/dist/esm/utils/attr-accept.js.map +1 -0
- package/dist/esm/utils/buildUrl.js +57 -0
- package/dist/esm/utils/buildUrl.js.map +1 -0
- package/dist/esm/utils/changeQueryString.js +19 -0
- package/dist/esm/utils/changeQueryString.js.map +1 -0
- package/dist/esm/utils/configureI18n.js +20 -0
- package/dist/esm/utils/configureI18n.js.map +1 -0
- package/dist/esm/utils/formatCurrency.js +8 -0
- package/dist/esm/utils/formatCurrency.js.map +1 -0
- package/dist/esm/utils/getCssVariable.js +7 -0
- package/dist/esm/utils/getCssVariable.js.map +1 -0
- package/dist/esm/utils/getKeyboardFocusableElements.js +11 -0
- package/dist/esm/utils/getKeyboardFocusableElements.js.map +1 -0
- package/dist/esm/utils/getQueryString.js +8 -0
- package/dist/esm/utils/getQueryString.js.map +1 -0
- package/dist/esm/utils/hasLabelContent.js +48 -0
- package/dist/esm/utils/hasLabelContent.js.map +1 -0
- package/dist/esm/utils/isTextLabel.js +23 -0
- package/dist/esm/utils/isTextLabel.js.map +1 -0
- package/dist/esm/utils/labelClickGuard.js +61 -0
- package/dist/esm/utils/labelClickGuard.js.map +1 -0
- package/dist/esm/utils/mediaQuery.js +13 -0
- package/dist/esm/utils/mediaQuery.js.map +1 -0
- package/dist/esm/utils/sanitizeHref.js +67 -0
- package/dist/esm/utils/sanitizeHref.js.map +1 -0
- package/dist/esm/utils/validatePhoneNumber.js +14 -0
- package/dist/esm/utils/validatePhoneNumber.js.map +1 -0
- package/dist/esm/utils/warnLabelUsage.js +57 -0
- package/dist/esm/utils/warnLabelUsage.js.map +1 -0
- package/dist/icons-core.json +33 -0
- package/dist/index.esm.js +1151 -184
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1151 -182
- package/dist/index.js.map +1 -1
- package/dist/types/components/DAlert/DAlert.d.ts +16 -2
- package/dist/types/components/DButtonIcon/DButtonIcon.d.ts +9 -1
- package/dist/types/components/DButtonIcon/warnMissingAccessibleName.d.ts +18 -0
- package/dist/types/components/DDataStateWrapper/DDataStateWrapper.d.ts +29 -4
- package/dist/types/components/DDataStateWrapper/index.d.ts +1 -1
- package/dist/types/components/DErrorBoundary/DErrorBoundary.d.ts +6 -1
- package/dist/types/components/DErrorBoundary/components/DefaultErrorBoundary.d.ts +3 -1
- package/dist/types/components/DIcon/DIcon.d.ts +8 -0
- package/dist/types/components/DIconBase/DIconBase.d.ts +43 -1
- package/dist/types/components/DIconBase/resolveIconFromRegistry.d.ts +14 -0
- package/dist/types/components/DIconBase/warnUnknownIcon.d.ts +13 -0
- package/dist/types/components/DInput/DInput.d.ts +11 -2
- package/dist/types/components/DInputCheck/DInputCheck.d.ts +28 -3
- package/dist/types/components/DInputCounter/DInputCounter.d.ts +15 -3
- package/dist/types/components/DInputCurrency/DInputCurrency.d.ts +10 -3
- package/dist/types/components/DInputPhone/DInputPhone.d.ts +11 -2
- package/dist/types/components/DInputPin/DInputPin.d.ts +12 -2
- package/dist/types/components/DInputRange/DInputRange.d.ts +16 -3
- package/dist/types/components/DInputSelect/DInputSelect.d.ts +18 -3
- package/dist/types/components/DInputSwitch/DInputSwitch.d.ts +28 -3
- package/dist/types/components/DListGroup/DListGroup.d.ts +12 -1
- package/dist/types/components/DListGroup/ListGroupContext.d.ts +8 -0
- package/dist/types/components/DListGroup/components/DListGroupItem.d.ts +6 -1
- package/dist/types/components/DListGroup/components/warnInvalidListMarkup.d.ts +13 -0
- package/dist/types/components/DPasswordStrengthMeter/DPasswordStrengthMeter.d.ts +18 -3
- package/dist/types/components/DProgress/DProgress.d.ts +13 -1
- package/dist/types/components/DSelect/DSelect.d.ts +23 -3
- package/dist/types/components/DSelect/createAriaGuidance.d.ts +21 -0
- package/dist/types/components/DTabs/DTabs.d.ts +13 -2
- package/dist/types/components/DTabs/TabContext.d.ts +5 -0
- package/dist/types/components/DTabs/components/DTabsProvider.d.ts +11 -0
- package/dist/types/components/DTabs/index.d.ts +1 -0
- package/dist/types/components/DToast/DToast.d.ts +10 -3
- package/dist/types/components/DToastContainer/useDToast.d.ts +8 -1
- package/dist/types/components/config.d.ts +10 -0
- package/dist/types/components/index.d.ts +2 -2
- package/dist/types/components/interface.d.ts +7 -0
- package/dist/types/components/internal/DFormLabel.d.ts +30 -0
- package/dist/types/contexts/portal/DPortalStack.d.ts +13 -0
- package/dist/types/hooks/useControlledState.d.ts +17 -0
- package/dist/types/hooks/useInputCurrency.d.ts +26 -1
- package/dist/types/hooks/useMediaBreakpointUp.d.ts +10 -0
- package/dist/types/icons/coreIcons.d.ts +24 -0
- package/dist/types/icons/index.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/hasLabelContent.d.ts +30 -0
- package/dist/types/utils/isTextLabel.d.ts +17 -0
- package/dist/types/utils/labelClickGuard.d.ts +20 -0
- package/dist/types/utils/warnLabelUsage.d.ts +43 -0
- package/package.json +10 -5
- package/src/style/abstracts/variables/_body.scss +2 -2
- package/src/style/abstracts/variables/_chips.scss +2 -0
- package/src/style/abstracts/variables/_colors.scss +2 -2
- package/src/style/base/_buttons.scss +4 -1
- package/src/style/base/_input-group.scss +5 -2
- package/src/style/base/_list-group.scss +55 -0
- package/src/style/components/_d-chip.scss +7 -2
- package/src/style/components/_d-tabs.scss +3 -0
- package/src/style/helpers/_color-bg.scss +5 -0
- package/src/style/root/_root.scss +9 -0
- package/dist/types/components/DVoucher/hooks/useScreenshotDownload.spec.d.ts +0 -1
- package/dist/types/components/DVoucher/hooks/useScreenshotWebShare.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useCountdown.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useDisableBodyScrollEffect.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useDisableInputWheel.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useFormatCurrency.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useInputCurrency.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useItemSelection.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useMediaBreakpointUp.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useMediaQuery.spec.d.ts +0 -1
- package/dist/types/hooks/tests/usePortal.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useProvidedRefOrCreate.spec.d.ts +0 -1
- package/dist/types/hooks/tests/useStackState.spec.d.ts +0 -1
- package/dist/types/utils/tests/attr-accept.spec.d.ts +0 -1
- package/dist/types/utils/tests/buildUrl.spec.d.ts +0 -1
- package/dist/types/utils/tests/changeQueryString.spec.d.ts +0 -1
- package/dist/types/utils/tests/configureI18n.spec.d.ts +0 -1
- package/dist/types/utils/tests/formatCurrency.spec.d.ts +0 -1
- package/dist/types/utils/tests/getCssVariable.spec.d.ts +0 -1
- package/dist/types/utils/tests/getKeyboardFocusableElements.spec.d.ts +0 -1
- package/dist/types/utils/tests/getQueryString.spec.d.ts +0 -1
- package/dist/types/utils/tests/mediaQuery.spec.d.ts +0 -1
- package/dist/types/utils/tests/sanitizeHref.spec.d.ts +0 -1
- package/dist/types/utils/tests/validatePhoneNumber.spec.d.ts +0 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { useMemo, createElement } from 'react';
|
|
4
|
+
import * as LucideIcons from 'lucide-react';
|
|
5
|
+
import { isValidElementType } from 'react-is';
|
|
6
|
+
import { PREFIX_BS } from '../config.js';
|
|
7
|
+
import resolveIconFromRegistry from './resolveIconFromRegistry.js';
|
|
8
|
+
import warnUnknownIcon from './warnUnknownIcon.js';
|
|
9
|
+
import { useResponsiveProp } from '../../hooks/useResponsiveProp.js';
|
|
10
|
+
import { useDContext } from '../../contexts/DContext.js';
|
|
11
|
+
|
|
12
|
+
function isIconComponent(value) {
|
|
13
|
+
return typeof value !== 'string' && isValidElementType(value);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Renders an icon, resolving the `icon` prop in this order:
|
|
17
|
+
*
|
|
18
|
+
* 1. **Icon registry** — a string name found in `DContextProvider`'s
|
|
19
|
+
* `iconRegistry` renders the component registered under it. A component
|
|
20
|
+
* passed directly skips this step and renders as-is.
|
|
21
|
+
* 2. **lucide-react** — a PascalCase name exported by lucide-react renders that
|
|
22
|
+
* icon. When `materialStyle` is on, this step is skipped and the name is
|
|
23
|
+
* emitted as the text content of the icon-font element instead.
|
|
24
|
+
* 3. **Icon-font family** — anything left over renders as
|
|
25
|
+
* `<i class="{familyClass} {familyPrefix}{name}">`, the legacy path for
|
|
26
|
+
* Material Symbols and Bootstrap Icons. Outside production builds, a name
|
|
27
|
+
* that reaches this step while the family is still the package default logs
|
|
28
|
+
* a one-time warning.
|
|
29
|
+
*
|
|
30
|
+
* A name that resolves nowhere and has no family configured renders `?`.
|
|
31
|
+
*
|
|
32
|
+
* Every path is hidden from the accessibility tree by default (`aria-hidden`),
|
|
33
|
+
* since icons are overwhelmingly decorative. See `ariaHidden` / `ariaLabel` to
|
|
34
|
+
* override that for an icon that carries meaning on its own.
|
|
35
|
+
*/
|
|
36
|
+
function DIconBase({ icon: iconProp, color, style, className, size, useListenerSize = false, hasCircle = false, materialStyle = false, familyClass, familyPrefix, strokeWidth = 2, ariaHidden, ariaLabel, dataAttributes, }) {
|
|
37
|
+
const { iconRegistry } = useDContext();
|
|
38
|
+
// The registry wins over every other source, including Material icons.
|
|
39
|
+
const icon = resolveIconFromRegistry(iconProp, iconRegistry);
|
|
40
|
+
// If materialStyle is true, use Material Design icons (legacy)
|
|
41
|
+
const isStringIcon = typeof icon === 'string';
|
|
42
|
+
const useMaterialIcons = materialStyle && isStringIcon;
|
|
43
|
+
// Get Lucide icon component
|
|
44
|
+
const LucideIcon = useMemo(() => {
|
|
45
|
+
if (!isStringIcon || useMaterialIcons)
|
|
46
|
+
return null;
|
|
47
|
+
// Try to find the icon in Lucide (expects PascalCase)
|
|
48
|
+
const icons = LucideIcons;
|
|
49
|
+
return icons[icon] || null;
|
|
50
|
+
}, [icon, isStringIcon, useMaterialIcons]);
|
|
51
|
+
const { responsivePropValue } = useResponsiveProp(useListenerSize);
|
|
52
|
+
const resolvedSize = useMemo(() => {
|
|
53
|
+
if (!size)
|
|
54
|
+
return undefined;
|
|
55
|
+
if (typeof size === 'string')
|
|
56
|
+
return size;
|
|
57
|
+
return responsivePropValue(size);
|
|
58
|
+
}, [responsivePropValue, size]);
|
|
59
|
+
const generateStyleVariables = useMemo(() => (Object.assign(Object.assign(Object.assign({}, resolvedSize && { [`--${PREFIX_BS}icon-component-size`]: resolvedSize }), hasCircle && { [`--${PREFIX_BS}icon-component-padding`]: `calc(var(--${PREFIX_BS}icon-component-size, 24px) * 0.4)` }), style)), [resolvedSize, hasCircle, style]);
|
|
60
|
+
const generateClasses = useMemo(() => (Object.assign(Object.assign(Object.assign({ 'd-icon': true }, className && { [className]: true }), { 'd-icon-has-circle': hasCircle }), color && { [`d-icon-color-${color}`]: true })), [className, hasCircle, color]);
|
|
61
|
+
/**
|
|
62
|
+
* Decorative by default. `ariaHidden` and `ariaLabel` are not symmetric:
|
|
63
|
+
* hiding is absolute, so `ariaHidden` wins over a name, but `ariaHidden={false}`
|
|
64
|
+
* and `ariaLabel` agree — both expose the icon — and the name is honoured.
|
|
65
|
+
*/
|
|
66
|
+
const accessibilityProps = useMemo(() => {
|
|
67
|
+
// Hiding is absolute: it wins over a name.
|
|
68
|
+
if (ariaHidden === true)
|
|
69
|
+
return { 'aria-hidden': true };
|
|
70
|
+
// A name exposes the icon, which is also what `ariaHidden={false}` asks for.
|
|
71
|
+
if (ariaLabel)
|
|
72
|
+
return { role: 'img', 'aria-label': ariaLabel };
|
|
73
|
+
// Exposed with no name: an explicit opt-out of the default, warned about below.
|
|
74
|
+
if (ariaHidden === false)
|
|
75
|
+
return {};
|
|
76
|
+
return { 'aria-hidden': true };
|
|
77
|
+
}, [ariaHidden, ariaLabel]);
|
|
78
|
+
/**
|
|
79
|
+
* `dataAttributes` is typed to `data-*`, but casting through it was the only
|
|
80
|
+
* way to reach the DOM before `ariaHidden` existed, so it still wins over the
|
|
81
|
+
* computed values — and therefore decides the effective state below.
|
|
82
|
+
*/
|
|
83
|
+
const domAttributes = useMemo(() => (Object.assign(Object.assign({}, accessibilityProps), dataAttributes)), [accessibilityProps, dataAttributes]);
|
|
84
|
+
/**
|
|
85
|
+
* lucide-react hides its own `<svg>` unless it receives an a11y prop, and a
|
|
86
|
+
* registry component may do the same, which would keep the graphic out of the
|
|
87
|
+
* tree even when this wrapper is not hidden. Only matters when the icon is
|
|
88
|
+
* exposed without a name: under `role="img"` the wrapper is a leaf, so a
|
|
89
|
+
* hidden child changes nothing.
|
|
90
|
+
*
|
|
91
|
+
* A registry component that hardcodes `aria-hidden` on its own `<svg>` instead
|
|
92
|
+
* of spreading props still wins — nothing here can reach inside it.
|
|
93
|
+
*/
|
|
94
|
+
const isExposedWithoutName = useMemo(() => {
|
|
95
|
+
const attributes = domAttributes;
|
|
96
|
+
const hidden = attributes['aria-hidden'];
|
|
97
|
+
return hidden !== true && hidden !== 'true' && !attributes.role;
|
|
98
|
+
}, [domAttributes]);
|
|
99
|
+
/**
|
|
100
|
+
* Diagnostics read the effective state, so a `dataAttributes` override that
|
|
101
|
+
* hides the icon after all is not reported as exposing it. Memoised like the
|
|
102
|
+
* values above, so re-rendering with the same props does not repeat them.
|
|
103
|
+
*/
|
|
104
|
+
useMemo(() => {
|
|
105
|
+
if (process.env.NODE_ENV === 'production')
|
|
106
|
+
return;
|
|
107
|
+
if (ariaHidden === true && ariaLabel) {
|
|
108
|
+
// eslint-disable-next-line no-console
|
|
109
|
+
console.warn(`DIcon: ariaLabel "${ariaLabel}" is ignored because ariaHidden is true. Drop ariaHidden to expose the name.`);
|
|
110
|
+
}
|
|
111
|
+
if (ariaHidden === false && isExposedWithoutName) {
|
|
112
|
+
// eslint-disable-next-line no-console
|
|
113
|
+
console.warn('DIcon: ariaHidden={false} without an ariaLabel exposes an unnamed graphic to assistive technology. Pass ariaLabel to name it.');
|
|
114
|
+
}
|
|
115
|
+
}, [ariaHidden, ariaLabel, isExposedWithoutName]);
|
|
116
|
+
const iconSize = useMemo(() => {
|
|
117
|
+
if (resolvedSize) {
|
|
118
|
+
const numSize = parseInt(resolvedSize, 10);
|
|
119
|
+
return !Number.isNaN(numSize) ? numSize : resolvedSize;
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}, [resolvedSize]);
|
|
123
|
+
// Render Material Design icon (legacy support)
|
|
124
|
+
if (useMaterialIcons) {
|
|
125
|
+
return (jsx("i", Object.assign({ className: classNames(generateClasses, familyClass), style: generateStyleVariables }, domAttributes, { children: isStringIcon ? icon : null })));
|
|
126
|
+
}
|
|
127
|
+
if (isIconComponent(icon)) {
|
|
128
|
+
return (jsx("span", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, domAttributes, { children: createElement(icon, Object.assign({ width: resolvedSize || 24, height: resolvedSize || 24, strokeWidth }, isExposedWithoutName && { 'aria-hidden': false })) })));
|
|
129
|
+
}
|
|
130
|
+
// Render Lucide icon
|
|
131
|
+
if (!LucideIcon) {
|
|
132
|
+
if (typeof icon === 'string' && familyClass && familyPrefix) {
|
|
133
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
134
|
+
warnUnknownIcon(icon, familyClass, familyPrefix);
|
|
135
|
+
}
|
|
136
|
+
return (jsx("i", Object.assign({ className: classNames(generateClasses, familyClass, `${familyPrefix}${icon}`), style: generateStyleVariables }, domAttributes)));
|
|
137
|
+
}
|
|
138
|
+
// eslint-disable-next-line no-console
|
|
139
|
+
console.warn(`Icon "${String(icon)}" not found in Lucide. Make sure to use PascalCase names (e.g., "Home", "User", "Settings")`);
|
|
140
|
+
return (jsx("span", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, domAttributes, { children: "?" })));
|
|
141
|
+
}
|
|
142
|
+
return (jsx("span", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, domAttributes, { children: jsx(LucideIcon, Object.assign({ size: iconSize || 24, strokeWidth: strokeWidth }, isExposedWithoutName && { 'aria-hidden': false })) })));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export { DIconBase as default };
|
|
146
|
+
//# sourceMappingURL=DIconBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DIconBase.js","sources":["../../../../dist-transpiled/components/DIconBase/DIconBase.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\n/* eslint-disable max-len */\nimport classNames from 'classnames';\nimport { createElement, useMemo } from 'react';\nimport * as LucideIcons from 'lucide-react';\nimport { isValidElementType } from 'react-is';\nimport { PREFIX_BS } from '../config';\nimport { useDContext } from '../../contexts';\nimport resolveIconFromRegistry from './resolveIconFromRegistry';\nimport warnUnknownIcon from './warnUnknownIcon';\nimport { useResponsiveProp } from '../../hooks/useResponsiveProp';\nfunction isIconComponent(value) {\n return typeof value !== 'string' && isValidElementType(value);\n}\n/**\n * Renders an icon, resolving the `icon` prop in this order:\n *\n * 1. **Icon registry** — a string name found in `DContextProvider`'s\n * `iconRegistry` renders the component registered under it. A component\n * passed directly skips this step and renders as-is.\n * 2. **lucide-react** — a PascalCase name exported by lucide-react renders that\n * icon. When `materialStyle` is on, this step is skipped and the name is\n * emitted as the text content of the icon-font element instead.\n * 3. **Icon-font family** — anything left over renders as\n * `<i class=\"{familyClass} {familyPrefix}{name}\">`, the legacy path for\n * Material Symbols and Bootstrap Icons. Outside production builds, a name\n * that reaches this step while the family is still the package default logs\n * a one-time warning.\n *\n * A name that resolves nowhere and has no family configured renders `?`.\n *\n * Every path is hidden from the accessibility tree by default (`aria-hidden`),\n * since icons are overwhelmingly decorative. See `ariaHidden` / `ariaLabel` to\n * override that for an icon that carries meaning on its own.\n */\nexport default function DIconBase({ icon: iconProp, color, style, className, size, useListenerSize = false, hasCircle = false, materialStyle = false, familyClass, familyPrefix, strokeWidth = 2, ariaHidden, ariaLabel, dataAttributes, }) {\n const { iconRegistry } = useDContext();\n // The registry wins over every other source, including Material icons.\n const icon = resolveIconFromRegistry(iconProp, iconRegistry);\n // If materialStyle is true, use Material Design icons (legacy)\n const isStringIcon = typeof icon === 'string';\n const useMaterialIcons = materialStyle && isStringIcon;\n // Get Lucide icon component\n const LucideIcon = useMemo(() => {\n if (!isStringIcon || useMaterialIcons)\n return null;\n // Try to find the icon in Lucide (expects PascalCase)\n const icons = LucideIcons;\n return icons[icon] || null;\n }, [icon, isStringIcon, useMaterialIcons]);\n const { responsivePropValue } = useResponsiveProp(useListenerSize);\n const resolvedSize = useMemo(() => {\n if (!size)\n return undefined;\n if (typeof size === 'string')\n return size;\n return responsivePropValue(size);\n }, [responsivePropValue, size]);\n const generateStyleVariables = useMemo(() => (Object.assign(Object.assign(Object.assign({}, resolvedSize && { [`--${PREFIX_BS}icon-component-size`]: resolvedSize }), hasCircle && { [`--${PREFIX_BS}icon-component-padding`]: `calc(var(--${PREFIX_BS}icon-component-size, 24px) * 0.4)` }), style)), [resolvedSize, hasCircle, style]);\n const generateClasses = useMemo(() => (Object.assign(Object.assign(Object.assign({ 'd-icon': true }, className && { [className]: true }), { 'd-icon-has-circle': hasCircle }), color && { [`d-icon-color-${color}`]: true })), [className, hasCircle, color]);\n /**\n * Decorative by default. `ariaHidden` and `ariaLabel` are not symmetric:\n * hiding is absolute, so `ariaHidden` wins over a name, but `ariaHidden={false}`\n * and `ariaLabel` agree — both expose the icon — and the name is honoured.\n */\n const accessibilityProps = useMemo(() => {\n // Hiding is absolute: it wins over a name.\n if (ariaHidden === true)\n return { 'aria-hidden': true };\n // A name exposes the icon, which is also what `ariaHidden={false}` asks for.\n if (ariaLabel)\n return { role: 'img', 'aria-label': ariaLabel };\n // Exposed with no name: an explicit opt-out of the default, warned about below.\n if (ariaHidden === false)\n return {};\n return { 'aria-hidden': true };\n }, [ariaHidden, ariaLabel]);\n /**\n * `dataAttributes` is typed to `data-*`, but casting through it was the only\n * way to reach the DOM before `ariaHidden` existed, so it still wins over the\n * computed values — and therefore decides the effective state below.\n */\n const domAttributes = useMemo(() => (Object.assign(Object.assign({}, accessibilityProps), dataAttributes)), [accessibilityProps, dataAttributes]);\n /**\n * lucide-react hides its own `<svg>` unless it receives an a11y prop, and a\n * registry component may do the same, which would keep the graphic out of the\n * tree even when this wrapper is not hidden. Only matters when the icon is\n * exposed without a name: under `role=\"img\"` the wrapper is a leaf, so a\n * hidden child changes nothing.\n *\n * A registry component that hardcodes `aria-hidden` on its own `<svg>` instead\n * of spreading props still wins — nothing here can reach inside it.\n */\n const isExposedWithoutName = useMemo(() => {\n const attributes = domAttributes;\n const hidden = attributes['aria-hidden'];\n return hidden !== true && hidden !== 'true' && !attributes.role;\n }, [domAttributes]);\n /**\n * Diagnostics read the effective state, so a `dataAttributes` override that\n * hides the icon after all is not reported as exposing it. Memoised like the\n * values above, so re-rendering with the same props does not repeat them.\n */\n useMemo(() => {\n if (process.env.NODE_ENV === 'production')\n return;\n if (ariaHidden === true && ariaLabel) {\n // eslint-disable-next-line no-console\n console.warn(`DIcon: ariaLabel \"${ariaLabel}\" is ignored because ariaHidden is true. Drop ariaHidden to expose the name.`);\n }\n if (ariaHidden === false && isExposedWithoutName) {\n // eslint-disable-next-line no-console\n console.warn('DIcon: ariaHidden={false} without an ariaLabel exposes an unnamed graphic to assistive technology. Pass ariaLabel to name it.');\n }\n }, [ariaHidden, ariaLabel, isExposedWithoutName]);\n const iconSize = useMemo(() => {\n if (resolvedSize) {\n const numSize = parseInt(resolvedSize, 10);\n return !Number.isNaN(numSize) ? numSize : resolvedSize;\n }\n return undefined;\n }, [resolvedSize]);\n // Render Material Design icon (legacy support)\n if (useMaterialIcons) {\n return (_jsx(\"i\", Object.assign({ className: classNames(generateClasses, familyClass), style: generateStyleVariables }, domAttributes, { children: isStringIcon ? icon : null })));\n }\n if (isIconComponent(icon)) {\n return (_jsx(\"span\", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, domAttributes, { children: createElement(icon, Object.assign({ width: resolvedSize || 24, height: resolvedSize || 24, strokeWidth }, isExposedWithoutName && { 'aria-hidden': false })) })));\n }\n // Render Lucide icon\n if (!LucideIcon) {\n if (typeof icon === 'string' && familyClass && familyPrefix) {\n if (process.env.NODE_ENV !== 'production') {\n warnUnknownIcon(icon, familyClass, familyPrefix);\n }\n return (_jsx(\"i\", Object.assign({ className: classNames(generateClasses, familyClass, `${familyPrefix}${icon}`), style: generateStyleVariables }, domAttributes)));\n }\n // eslint-disable-next-line no-console\n console.warn(`Icon \"${String(icon)}\" not found in Lucide. Make sure to use PascalCase names (e.g., \"Home\", \"User\", \"Settings\")`);\n return (_jsx(\"span\", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, domAttributes, { children: \"?\" })));\n }\n return (_jsx(\"span\", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, domAttributes, { children: _jsx(LucideIcon, Object.assign({ size: iconSize || 24, strokeWidth: strokeWidth }, isExposedWithoutName && { 'aria-hidden': false })) })));\n}\n//# sourceMappingURL=DIconBase.js.map"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a string icon name against the registry supplied through
|
|
3
|
+
* `DContextProvider`'s `iconRegistry` prop.
|
|
4
|
+
*
|
|
5
|
+
* This is the single implementation shared by `DIcon` and `DIconBase`, so both
|
|
6
|
+
* public entry points — and every Dynamic UI component that renders an icon
|
|
7
|
+
* through them — resolve names identically.
|
|
8
|
+
*
|
|
9
|
+
* A non-string `icon` is returned untouched: a component passed directly needs
|
|
10
|
+
* no lookup. A name missing from the registry is also returned untouched, so
|
|
11
|
+
* the caller can fall through to lucide-react and then to the icon-font family.
|
|
12
|
+
*/
|
|
13
|
+
function resolveIconFromRegistry(icon, iconRegistry) {
|
|
14
|
+
if (typeof icon !== 'string')
|
|
15
|
+
return icon;
|
|
16
|
+
return (iconRegistry === null || iconRegistry === void 0 ? void 0 : iconRegistry[icon]) || icon;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { resolveIconFromRegistry as default };
|
|
20
|
+
//# sourceMappingURL=resolveIconFromRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveIconFromRegistry.js","sources":["../../../../dist-transpiled/components/DIconBase/resolveIconFromRegistry.js"],"sourcesContent":["/**\n * Resolves a string icon name against the registry supplied through\n * `DContextProvider`'s `iconRegistry` prop.\n *\n * This is the single implementation shared by `DIcon` and `DIconBase`, so both\n * public entry points — and every Dynamic UI component that renders an icon\n * through them — resolve names identically.\n *\n * A non-string `icon` is returned untouched: a component passed directly needs\n * no lookup. A name missing from the registry is also returned untouched, so\n * the caller can fall through to lucide-react and then to the icon-font family.\n */\nexport default function resolveIconFromRegistry(icon, iconRegistry) {\n if (typeof icon !== 'string')\n return icon;\n return (iconRegistry === null || iconRegistry === void 0 ? void 0 : iconRegistry[icon]) || icon;\n}\n//# sourceMappingURL=resolveIconFromRegistry.js.map"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE;AACpE,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI;AACnG;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { DEFAULT_ICON_FAMILY_CLASS, DEFAULT_ICON_FAMILY_PREFIX } from '../config.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Names already reported, so a name repeated across renders or across many
|
|
5
|
+
* instances only warns once per page load.
|
|
6
|
+
*/
|
|
7
|
+
const warnedIconNames = new Set();
|
|
8
|
+
/**
|
|
9
|
+
* True when the icon-font family is the one `DContextProvider` defaults to.
|
|
10
|
+
*
|
|
11
|
+
* The warning is limited to that case so a consumer who configured a different
|
|
12
|
+
* font — Material Symbols, for instance — is not told about names that font
|
|
13
|
+
* resolves perfectly well.
|
|
14
|
+
*
|
|
15
|
+
* It cannot tell "never configured a font" apart from "configured exactly the
|
|
16
|
+
* defaults", and those defaults are also the standard Bootstrap Icons setup, so
|
|
17
|
+
* a consumer who deliberately uses Bootstrap Icons is warned too. The message
|
|
18
|
+
* says so; silencing that case would need a new context flag, which is beyond
|
|
19
|
+
* what this helper should decide.
|
|
20
|
+
*/
|
|
21
|
+
function isDefaultIconFamily(familyClass, familyPrefix) {
|
|
22
|
+
return familyClass === DEFAULT_ICON_FAMILY_CLASS
|
|
23
|
+
&& familyPrefix === DEFAULT_ICON_FAMILY_PREFIX;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Warns, once per name and only outside production builds, that an icon name
|
|
27
|
+
* resolved to neither the registry nor lucide-react and is falling back to the
|
|
28
|
+
* default icon font, which this package no longer ships.
|
|
29
|
+
*
|
|
30
|
+
* Whether that fallback renders depends on the host app: if it loads the font
|
|
31
|
+
* itself the `<i>` shows the glyph, and if it does not, nothing appears. The
|
|
32
|
+
* message states both possibilities instead of assuming the second.
|
|
33
|
+
*
|
|
34
|
+
* The `process.env.NODE_ENV` guard is what bundlers constant-fold, so the whole
|
|
35
|
+
* call — and this module — drops out of a consumer's production bundle.
|
|
36
|
+
*/
|
|
37
|
+
function warnUnknownIcon(name, familyClass, familyPrefix) {
|
|
38
|
+
if (!isDefaultIconFamily(familyClass, familyPrefix))
|
|
39
|
+
return;
|
|
40
|
+
if (warnedIconNames.has(name))
|
|
41
|
+
return;
|
|
42
|
+
warnedIconNames.add(name);
|
|
43
|
+
const fallbackClass = `${DEFAULT_ICON_FAMILY_CLASS} ${DEFAULT_ICON_FAMILY_PREFIX}${name}`;
|
|
44
|
+
// eslint-disable-next-line no-console
|
|
45
|
+
console.warn(`[Dynamic UI] Icon "${name}" is not in the icon registry and is not a `
|
|
46
|
+
+ 'lucide-react export, so it falls back to the default icon font: '
|
|
47
|
+
+ `<i class="${fallbackClass}">. That renders only if your app loads that `
|
|
48
|
+
+ 'font, which this package stopped shipping in v2.0.0. '
|
|
49
|
+
+ 'If the icon is missing, pass a PascalCase lucide-react name such as '
|
|
50
|
+
+ '"Home", or register the component with '
|
|
51
|
+
+ '<DContextProvider iconRegistry={{ MyIcon }}>. '
|
|
52
|
+
+ `If you use the "${DEFAULT_ICON_FAMILY_CLASS}" font on purpose, this is a `
|
|
53
|
+
+ 'false positive: the warning fires whenever the configured family equals '
|
|
54
|
+
+ 'the package default, which is also the standard Bootstrap Icons setup. '
|
|
55
|
+
+ 'It never appears in production builds.');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { warnUnknownIcon as default };
|
|
59
|
+
//# sourceMappingURL=warnUnknownIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnUnknownIcon.js","sources":["../../../../dist-transpiled/components/DIconBase/warnUnknownIcon.js"],"sourcesContent":["import { DEFAULT_ICON_FAMILY_CLASS, DEFAULT_ICON_FAMILY_PREFIX } from '../config';\n/**\n * Names already reported, so a name repeated across renders or across many\n * instances only warns once per page load.\n */\nconst warnedIconNames = new Set();\n/**\n * True when the icon-font family is the one `DContextProvider` defaults to.\n *\n * The warning is limited to that case so a consumer who configured a different\n * font — Material Symbols, for instance — is not told about names that font\n * resolves perfectly well.\n *\n * It cannot tell \"never configured a font\" apart from \"configured exactly the\n * defaults\", and those defaults are also the standard Bootstrap Icons setup, so\n * a consumer who deliberately uses Bootstrap Icons is warned too. The message\n * says so; silencing that case would need a new context flag, which is beyond\n * what this helper should decide.\n */\nfunction isDefaultIconFamily(familyClass, familyPrefix) {\n return familyClass === DEFAULT_ICON_FAMILY_CLASS\n && familyPrefix === DEFAULT_ICON_FAMILY_PREFIX;\n}\n/**\n * Warns, once per name and only outside production builds, that an icon name\n * resolved to neither the registry nor lucide-react and is falling back to the\n * default icon font, which this package no longer ships.\n *\n * Whether that fallback renders depends on the host app: if it loads the font\n * itself the `<i>` shows the glyph, and if it does not, nothing appears. The\n * message states both possibilities instead of assuming the second.\n *\n * The `process.env.NODE_ENV` guard is what bundlers constant-fold, so the whole\n * call — and this module — drops out of a consumer's production bundle.\n */\nexport default function warnUnknownIcon(name, familyClass, familyPrefix) {\n if (!isDefaultIconFamily(familyClass, familyPrefix))\n return;\n if (warnedIconNames.has(name))\n return;\n warnedIconNames.add(name);\n const fallbackClass = `${DEFAULT_ICON_FAMILY_CLASS} ${DEFAULT_ICON_FAMILY_PREFIX}${name}`;\n // eslint-disable-next-line no-console\n console.warn(`[Dynamic UI] Icon \"${name}\" is not in the icon registry and is not a `\n + 'lucide-react export, so it falls back to the default icon font: '\n + `<i class=\"${fallbackClass}\">. That renders only if your app loads that `\n + 'font, which this package stopped shipping in v2.0.0. '\n + 'If the icon is missing, pass a PascalCase lucide-react name such as '\n + '\"Home\", or register the component with '\n + '<DContextProvider iconRegistry={{ MyIcon }}>. '\n + `If you use the \"${DEFAULT_ICON_FAMILY_CLASS}\" font on purpose, this is a `\n + 'false positive: the warning fires whenever the configured family equals '\n + 'the package default, which is also the standard Bootstrap Icons setup. '\n + 'It never appears in production builds.');\n}\n//# sourceMappingURL=warnUnknownIcon.js.map"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE;AACxD,IAAI,OAAO,WAAW,KAAK;AAC3B,WAAW,YAAY,KAAK,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;AACzE,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC;AACvD,QAAQ;AACR,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAQ;AACR,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,IAAI,MAAM,aAAa,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAE,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7F;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,2CAA2C;AACvF,UAAU;AACV,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,6CAA6C;AAClF,UAAU;AACV,UAAU;AACV,UAAU;AACV,UAAU;AACV,UAAU,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,6BAA6B;AACpF,UAAU;AACV,UAAU;AACV,UAAU,wCAAwC,CAAC;AACnD;;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useId, useMemo, useCallback } from 'react';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import DIcon from '../DIcon/DIcon.js';
|
|
6
|
+
import useProvidedRefOrCreate from '../../hooks/useProvidedRefOrCreate.js';
|
|
7
|
+
import DFormLabel from '../internal/DFormLabel.js';
|
|
8
|
+
import hasLabelContent from '../../utils/hasLabelContent.js';
|
|
9
|
+
import warnLabelUsage from '../../utils/warnLabelUsage.js';
|
|
10
|
+
import { useDContext } from '../../contexts/DContext.js';
|
|
11
|
+
|
|
12
|
+
function DInput(_a, ref) {
|
|
13
|
+
var { id: idProp, style, className, label = '', disabled = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconStart, iconStartDisabled, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconStartMaterialStyle, iconEnd, iconEndDisabled, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, iconEndMaterialStyle, hint, size, invalid = false, valid = false, floatingLabel = false, inputStart, inputEnd, value, placeholder = '', dataAttributes, readonly, onChange, onIconStartClick, onIconEndClick } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "disabled", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconMaterialStyle", "iconStart", "iconStartDisabled", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconStartMaterialStyle", "iconEnd", "iconEndDisabled", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "iconEndMaterialStyle", "hint", "size", "invalid", "valid", "floatingLabel", "inputStart", "inputEnd", "value", "placeholder", "dataAttributes", "readonly", "onChange", "onIconStartClick", "onIconEndClick"]);
|
|
14
|
+
const inputRef = useProvidedRefOrCreate(ref);
|
|
15
|
+
const innerId = useId();
|
|
16
|
+
const id = useMemo(() => idProp || innerId, [idProp, innerId]);
|
|
17
|
+
const { icon: { familyClass, familyPrefix, materialStyle, }, } = useDContext();
|
|
18
|
+
const handleOnChange = useCallback((event) => {
|
|
19
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event.currentTarget.value);
|
|
20
|
+
}, [onChange]);
|
|
21
|
+
const handleOnIconStartClick = useCallback(() => {
|
|
22
|
+
onIconStartClick === null || onIconStartClick === void 0 ? void 0 : onIconStartClick(value);
|
|
23
|
+
}, [onIconStartClick, value]);
|
|
24
|
+
const handleOnIconEndClick = useCallback(() => {
|
|
25
|
+
onIconEndClick === null || onIconEndClick === void 0 ? void 0 : onIconEndClick(value);
|
|
26
|
+
}, [onIconEndClick, value]);
|
|
27
|
+
const ariaDescribedby = useMemo(() => ([
|
|
28
|
+
!!inputStart && `${id}InputStart`,
|
|
29
|
+
!!iconStart && `${id}Start`,
|
|
30
|
+
(invalid || valid) && !iconEnd && !loading && `${id}State`,
|
|
31
|
+
(iconEnd && !loading) && `${id}End`,
|
|
32
|
+
loading && `${id}Loading`,
|
|
33
|
+
!!inputEnd && `${id}InputEnd`,
|
|
34
|
+
!!hint && `${id}Hint`,
|
|
35
|
+
]
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.join(' ')), [
|
|
38
|
+
id,
|
|
39
|
+
inputStart,
|
|
40
|
+
iconStart,
|
|
41
|
+
invalid,
|
|
42
|
+
valid,
|
|
43
|
+
iconEnd,
|
|
44
|
+
loading,
|
|
45
|
+
inputEnd,
|
|
46
|
+
hint,
|
|
47
|
+
]);
|
|
48
|
+
const inputComponent = useMemo(() => (jsx("input", Object.assign({ ref: inputRef, id: id, className: classNames('form-control', {
|
|
49
|
+
'is-invalid': invalid,
|
|
50
|
+
'is-valid': valid,
|
|
51
|
+
}), disabled: disabled || loading, readOnly: readonly, value: value, onChange: handleOnChange }, (floatingLabel || placeholder) && { placeholder: floatingLabel ? '' : placeholder }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, invalid && { 'aria-invalid': true }, inputProps))), [
|
|
52
|
+
ariaDescribedby,
|
|
53
|
+
disabled,
|
|
54
|
+
handleOnChange,
|
|
55
|
+
id,
|
|
56
|
+
inputProps,
|
|
57
|
+
inputRef,
|
|
58
|
+
invalid,
|
|
59
|
+
loading,
|
|
60
|
+
placeholder,
|
|
61
|
+
floatingLabel,
|
|
62
|
+
valid,
|
|
63
|
+
value,
|
|
64
|
+
readonly,
|
|
65
|
+
]);
|
|
66
|
+
const labelComponent = useMemo(() => (jsx(DFormLabel, { htmlFor: id, children: label })), [
|
|
67
|
+
id,
|
|
68
|
+
label,
|
|
69
|
+
]);
|
|
70
|
+
const dynamicComponent = useMemo(() => {
|
|
71
|
+
if (floatingLabel) {
|
|
72
|
+
return (jsxs("div", { className: "form-floating", children: [inputComponent, labelComponent] }));
|
|
73
|
+
}
|
|
74
|
+
return inputComponent;
|
|
75
|
+
}, [floatingLabel, inputComponent, labelComponent]);
|
|
76
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
77
|
+
warnLabelUsage({
|
|
78
|
+
component: 'DInput',
|
|
79
|
+
label,
|
|
80
|
+
hasAccessibleName: !!inputProps['aria-label'] || !!inputProps['aria-labelledby'],
|
|
81
|
+
accessibleNameProp: 'aria-label',
|
|
82
|
+
floatingLabel,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return (jsxs("div", Object.assign({ className: className, style: style }, dataAttributes, { children: [hasLabelContent(label) && !floatingLabel && labelComponent, jsxs("div", { className: classNames({
|
|
86
|
+
[`input-group-${size}`]: !!size,
|
|
87
|
+
'input-group': true,
|
|
88
|
+
'has-validation': invalid || valid,
|
|
89
|
+
}), children: [!!inputStart && (jsx("div", { className: "input-group-text", id: `${id}InputStart`, children: inputStart })), iconStart && (onIconStartClick ? (jsx("button", { type: "button", className: "input-group-text", id: `${id}Start`, onClick: handleOnIconStartClick, disabled: disabled || loading || iconStartDisabled, "aria-label": iconStartAriaLabel || (typeof iconStart === 'string' ? iconStart : 'start icon'), tabIndex: iconStartTabIndex, children: jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass !== null && iconStartFamilyClass !== void 0 ? iconStartFamilyClass : familyClass, familyPrefix: iconStartFamilyPrefix !== null && iconStartFamilyPrefix !== void 0 ? iconStartFamilyPrefix : familyPrefix, materialStyle: iconStartMaterialStyle !== null && iconStartMaterialStyle !== void 0 ? iconStartMaterialStyle : materialStyle }) })) : (jsx("div", { className: "input-group-text", id: `${id}Start`, tabIndex: -1, children: jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass !== null && iconStartFamilyClass !== void 0 ? iconStartFamilyClass : familyClass, familyPrefix: iconStartFamilyPrefix !== null && iconStartFamilyPrefix !== void 0 ? iconStartFamilyPrefix : familyPrefix, materialStyle: iconStartMaterialStyle !== null && iconStartMaterialStyle !== void 0 ? iconStartMaterialStyle : materialStyle }) }))), dynamicComponent, (iconEnd && !loading) && (onIconEndClick ? (jsx("button", { type: "button", className: "input-group-text", id: `${id}End`, onClick: handleOnIconEndClick, disabled: disabled || loading || iconEndDisabled, "aria-label": iconEndAriaLabel || (typeof iconEnd === 'string' ? iconEnd : 'end icon'), tabIndex: iconEndTabIndex, children: jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass !== null && iconEndFamilyClass !== void 0 ? iconEndFamilyClass : familyClass, familyPrefix: iconEndFamilyPrefix !== null && iconEndFamilyPrefix !== void 0 ? iconEndFamilyPrefix : familyPrefix, materialStyle: iconEndMaterialStyle !== null && iconEndMaterialStyle !== void 0 ? iconEndMaterialStyle : materialStyle }) })) : (jsx("div", { className: "input-group-text", id: `${id}End`, tabIndex: -1, children: jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass !== null && iconEndFamilyClass !== void 0 ? iconEndFamilyClass : familyClass, familyPrefix: iconEndFamilyPrefix !== null && iconEndFamilyPrefix !== void 0 ? iconEndFamilyPrefix : familyPrefix, materialStyle: iconEndMaterialStyle !== null && iconEndMaterialStyle !== void 0 ? iconEndMaterialStyle : materialStyle }) }))), loading && (jsx("div", { className: "input-group-text", id: `${id}Loading`, children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", "data-testid": "loading-spinner", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) })), !!inputEnd && (jsx("div", { className: "input-group-text", id: `${id}InputEnd`, children: inputEnd }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] })));
|
|
90
|
+
}
|
|
91
|
+
const ForwardedDInput = forwardRef(DInput);
|
|
92
|
+
ForwardedDInput.displayName = 'DInput';
|
|
93
|
+
|
|
94
|
+
export { ForwardedDInput as default };
|
|
95
|
+
//# sourceMappingURL=DInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DInput.js","sources":["../../../../dist-transpiled/components/DInput/DInput.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { forwardRef, useCallback, useMemo, useId, } from 'react';\nimport classNames from 'classnames';\nimport DIcon from '../DIcon';\nimport useProvidedRefOrCreate from '../../hooks/useProvidedRefOrCreate';\nimport DFormLabel from '../internal/DFormLabel';\nimport hasLabelContent from '../../utils/hasLabelContent';\nimport warnLabelUsage from '../../utils/warnLabelUsage';\nimport { useDContext } from '../../contexts';\nfunction DInput(_a, ref) {\n var { id: idProp, style, className, label = '', disabled = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconStart, iconStartDisabled, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconStartMaterialStyle, iconEnd, iconEndDisabled, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, iconEndMaterialStyle, hint, size, invalid = false, valid = false, floatingLabel = false, inputStart, inputEnd, value, placeholder = '', dataAttributes, readonly, onChange, onIconStartClick, onIconEndClick } = _a, inputProps = __rest(_a, [\"id\", \"style\", \"className\", \"label\", \"disabled\", \"loading\", \"iconFamilyClass\", \"iconFamilyPrefix\", \"iconMaterialStyle\", \"iconStart\", \"iconStartDisabled\", \"iconStartFamilyClass\", \"iconStartFamilyPrefix\", \"iconStartAriaLabel\", \"iconStartTabIndex\", \"iconStartMaterialStyle\", \"iconEnd\", \"iconEndDisabled\", \"iconEndFamilyClass\", \"iconEndFamilyPrefix\", \"iconEndAriaLabel\", \"iconEndTabIndex\", \"iconEndMaterialStyle\", \"hint\", \"size\", \"invalid\", \"valid\", \"floatingLabel\", \"inputStart\", \"inputEnd\", \"value\", \"placeholder\", \"dataAttributes\", \"readonly\", \"onChange\", \"onIconStartClick\", \"onIconEndClick\"]);\n const inputRef = useProvidedRefOrCreate(ref);\n const innerId = useId();\n const id = useMemo(() => idProp || innerId, [idProp, innerId]);\n const { icon: { familyClass, familyPrefix, materialStyle, }, } = useDContext();\n const handleOnChange = useCallback((event) => {\n onChange === null || onChange === void 0 ? void 0 : onChange(event.currentTarget.value);\n }, [onChange]);\n const handleOnIconStartClick = useCallback(() => {\n onIconStartClick === null || onIconStartClick === void 0 ? void 0 : onIconStartClick(value);\n }, [onIconStartClick, value]);\n const handleOnIconEndClick = useCallback(() => {\n onIconEndClick === null || onIconEndClick === void 0 ? void 0 : onIconEndClick(value);\n }, [onIconEndClick, value]);\n const ariaDescribedby = useMemo(() => ([\n !!inputStart && `${id}InputStart`,\n !!iconStart && `${id}Start`,\n (invalid || valid) && !iconEnd && !loading && `${id}State`,\n (iconEnd && !loading) && `${id}End`,\n loading && `${id}Loading`,\n !!inputEnd && `${id}InputEnd`,\n !!hint && `${id}Hint`,\n ]\n .filter(Boolean)\n .join(' ')), [\n id,\n inputStart,\n iconStart,\n invalid,\n valid,\n iconEnd,\n loading,\n inputEnd,\n hint,\n ]);\n const inputComponent = useMemo(() => (_jsx(\"input\", Object.assign({ ref: inputRef, id: id, className: classNames('form-control', {\n 'is-invalid': invalid,\n 'is-valid': valid,\n }), disabled: disabled || loading, readOnly: readonly, value: value, onChange: handleOnChange }, (floatingLabel || placeholder) && { placeholder: floatingLabel ? '' : placeholder }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, invalid && { 'aria-invalid': true }, inputProps))), [\n ariaDescribedby,\n disabled,\n handleOnChange,\n id,\n inputProps,\n inputRef,\n invalid,\n loading,\n placeholder,\n floatingLabel,\n valid,\n value,\n readonly,\n ]);\n const labelComponent = useMemo(() => (_jsx(DFormLabel, { htmlFor: id, children: label })), [\n id,\n label,\n ]);\n const dynamicComponent = useMemo(() => {\n if (floatingLabel) {\n return (_jsxs(\"div\", { className: \"form-floating\", children: [inputComponent, labelComponent] }));\n }\n return inputComponent;\n }, [floatingLabel, inputComponent, labelComponent]);\n if (process.env.NODE_ENV !== 'production') {\n warnLabelUsage({\n component: 'DInput',\n label,\n hasAccessibleName: !!inputProps['aria-label'] || !!inputProps['aria-labelledby'],\n accessibleNameProp: 'aria-label',\n floatingLabel,\n });\n }\n return (_jsxs(\"div\", Object.assign({ className: className, style: style }, dataAttributes, { children: [hasLabelContent(label) && !floatingLabel && labelComponent, _jsxs(\"div\", { className: classNames({\n [`input-group-${size}`]: !!size,\n 'input-group': true,\n 'has-validation': invalid || valid,\n }), children: [!!inputStart && (_jsx(\"div\", { className: \"input-group-text\", id: `${id}InputStart`, children: inputStart })), iconStart && (onIconStartClick ? (_jsx(\"button\", { type: \"button\", className: \"input-group-text\", id: `${id}Start`, onClick: handleOnIconStartClick, disabled: disabled || loading || iconStartDisabled, \"aria-label\": iconStartAriaLabel || (typeof iconStart === 'string' ? iconStart : 'start icon'), tabIndex: iconStartTabIndex, children: _jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass !== null && iconStartFamilyClass !== void 0 ? iconStartFamilyClass : familyClass, familyPrefix: iconStartFamilyPrefix !== null && iconStartFamilyPrefix !== void 0 ? iconStartFamilyPrefix : familyPrefix, materialStyle: iconStartMaterialStyle !== null && iconStartMaterialStyle !== void 0 ? iconStartMaterialStyle : materialStyle }) })) : (_jsx(\"div\", { className: \"input-group-text\", id: `${id}Start`, tabIndex: -1, children: _jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass !== null && iconStartFamilyClass !== void 0 ? iconStartFamilyClass : familyClass, familyPrefix: iconStartFamilyPrefix !== null && iconStartFamilyPrefix !== void 0 ? iconStartFamilyPrefix : familyPrefix, materialStyle: iconStartMaterialStyle !== null && iconStartMaterialStyle !== void 0 ? iconStartMaterialStyle : materialStyle }) }))), dynamicComponent, (iconEnd && !loading) && (onIconEndClick ? (_jsx(\"button\", { type: \"button\", className: \"input-group-text\", id: `${id}End`, onClick: handleOnIconEndClick, disabled: disabled || loading || iconEndDisabled, \"aria-label\": iconEndAriaLabel || (typeof iconEnd === 'string' ? iconEnd : 'end icon'), tabIndex: iconEndTabIndex, children: _jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass !== null && iconEndFamilyClass !== void 0 ? iconEndFamilyClass : familyClass, familyPrefix: iconEndFamilyPrefix !== null && iconEndFamilyPrefix !== void 0 ? iconEndFamilyPrefix : familyPrefix, materialStyle: iconEndMaterialStyle !== null && iconEndMaterialStyle !== void 0 ? iconEndMaterialStyle : materialStyle }) })) : (_jsx(\"div\", { className: \"input-group-text\", id: `${id}End`, tabIndex: -1, children: _jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass !== null && iconEndFamilyClass !== void 0 ? iconEndFamilyClass : familyClass, familyPrefix: iconEndFamilyPrefix !== null && iconEndFamilyPrefix !== void 0 ? iconEndFamilyPrefix : familyPrefix, materialStyle: iconEndMaterialStyle !== null && iconEndMaterialStyle !== void 0 ? iconEndMaterialStyle : materialStyle }) }))), loading && (_jsx(\"div\", { className: \"input-group-text\", id: `${id}Loading`, children: _jsx(\"span\", { className: \"spinner-border spinner-border-sm\", role: \"status\", \"aria-hidden\": \"true\", \"data-testid\": \"loading-spinner\", children: _jsx(\"span\", { className: \"visually-hidden\", children: \"Loading...\" }) }) })), !!inputEnd && (_jsx(\"div\", { className: \"input-group-text\", id: `${id}InputEnd`, children: inputEnd }))] }), hint && (_jsx(\"div\", { className: \"form-text\", id: `${id}Hint`, children: hint }))] })));\n}\nconst ForwardedDInput = forwardRef(DInput);\nForwardedDInput.displayName = 'DInput';\nexport default ForwardedDInput;\n//# sourceMappingURL=DInput.js.map"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { useRef, useId, useMemo, useCallback, useEffect } from 'react';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import DFormLabel from '../internal/DFormLabel.js';
|
|
6
|
+
import hasLabelContent from '../../utils/hasLabelContent.js';
|
|
7
|
+
import warnLabelUsage from '../../utils/warnLabelUsage.js';
|
|
8
|
+
|
|
9
|
+
function DInputCheck(_a) {
|
|
10
|
+
var { id: idProp, type, name, label, ariaLabel, checked, defaultChecked, disabled = false, invalid = false, valid = false, indeterminate, inputClassName, value, hint, onChange, className, style, dataAttributes } = _a, props = __rest(_a, ["id", "type", "name", "label", "ariaLabel", "checked", "defaultChecked", "disabled", "invalid", "valid", "indeterminate", "inputClassName", "value", "hint", "onChange", "className", "style", "dataAttributes"]);
|
|
11
|
+
const innerRef = useRef(null);
|
|
12
|
+
// See `useControlledState` for why `onChange` takes part in this decision.
|
|
13
|
+
const isControlled = checked !== undefined && onChange !== undefined;
|
|
14
|
+
const innerId = useId();
|
|
15
|
+
const id = useMemo(() => idProp || innerId, [idProp, innerId]);
|
|
16
|
+
const handleChange = useCallback((event) => {
|
|
17
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event);
|
|
18
|
+
// Controlled only. Activating a checkbox clears the DOM `indeterminate`
|
|
19
|
+
// flag, and it has no HTML attribute for React to restore the way it
|
|
20
|
+
// restores `checked` when the parent rejects the change, so the mixed state
|
|
21
|
+
// would be gone after the first click — the effect below only re-runs when
|
|
22
|
+
// the prop moves. Uncontrolled keeps the browser's behaviour, where the
|
|
23
|
+
// click owns the state and `indeterminate` was only the starting look.
|
|
24
|
+
// Reapplied after `onChange` so a handler reading
|
|
25
|
+
// `event.target.indeterminate` still sees what the browser left, and a
|
|
26
|
+
// parent that does move the prop wins through that effect.
|
|
27
|
+
if (isControlled && innerRef.current) {
|
|
28
|
+
innerRef.current.indeterminate = type === 'checkbox' && Boolean(indeterminate);
|
|
29
|
+
}
|
|
30
|
+
}, [onChange, isControlled, indeterminate, type]);
|
|
31
|
+
const ariaDescribedby = useMemo(() => ([
|
|
32
|
+
!!hint && `${id}Hint`,
|
|
33
|
+
]
|
|
34
|
+
.filter(Boolean)
|
|
35
|
+
.join(' ')), [
|
|
36
|
+
id,
|
|
37
|
+
hint,
|
|
38
|
+
]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (innerRef.current) {
|
|
41
|
+
innerRef.current.indeterminate = type === 'checkbox' && Boolean(indeterminate);
|
|
42
|
+
}
|
|
43
|
+
}, [indeterminate, type]);
|
|
44
|
+
// Legacy path only: a `checked` with no `onChange` behind it still lands on
|
|
45
|
+
// the element, but through the DOM, so the input stays uncontrolled and both
|
|
46
|
+
// clicking it and the native radio-group behaviour keep working.
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (isControlled || checked === undefined || !innerRef.current) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
innerRef.current.checked = checked;
|
|
52
|
+
}, [isControlled, checked]);
|
|
53
|
+
const inputComponent = useMemo(() => (jsx("input", Object.assign({ ref: innerRef }, isControlled
|
|
54
|
+
? { checked }
|
|
55
|
+
: defaultChecked !== undefined && { defaultChecked }, { onChange: handleChange, className: classNames('form-check-input', {
|
|
56
|
+
'is-invalid': invalid,
|
|
57
|
+
'is-valid': valid,
|
|
58
|
+
}, inputClassName), style: style, id: id, disabled: disabled, type: type, name: name, value: value, "aria-label": ariaLabel }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, props))), [
|
|
59
|
+
isControlled,
|
|
60
|
+
checked,
|
|
61
|
+
defaultChecked,
|
|
62
|
+
handleChange,
|
|
63
|
+
invalid,
|
|
64
|
+
valid,
|
|
65
|
+
inputClassName,
|
|
66
|
+
style,
|
|
67
|
+
id,
|
|
68
|
+
disabled,
|
|
69
|
+
type,
|
|
70
|
+
name,
|
|
71
|
+
value,
|
|
72
|
+
ariaLabel,
|
|
73
|
+
ariaDescribedby,
|
|
74
|
+
props,
|
|
75
|
+
]);
|
|
76
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
77
|
+
warnLabelUsage({
|
|
78
|
+
component: 'DInputCheck',
|
|
79
|
+
label,
|
|
80
|
+
// `{...props}` is spread after `aria-label={ariaLabel}`, so a native
|
|
81
|
+
// `aria-label` wins — including when it is explicitly undefined.
|
|
82
|
+
hasAccessibleName: !!('aria-label' in props ? props['aria-label'] : ariaLabel)
|
|
83
|
+
|| !!props['aria-labelledby'],
|
|
84
|
+
accessibleNameProp: 'ariaLabel',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
if (!hasLabelContent(label)) {
|
|
88
|
+
return inputComponent;
|
|
89
|
+
}
|
|
90
|
+
return (jsxs("div", Object.assign({ className: classNames('form-check', className) }, dataAttributes, { children: [inputComponent, jsx(DFormLabel, { className: "form-check-label", htmlFor: id, children: label }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] })));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export { DInputCheck as default };
|
|
94
|
+
//# sourceMappingURL=DInputCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DInputCheck.js","sources":["../../../../dist-transpiled/components/DInputCheck/DInputCheck.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useId, useMemo, useRef, } from 'react';\nimport classNames from 'classnames';\nimport DFormLabel from '../internal/DFormLabel';\nimport hasLabelContent from '../../utils/hasLabelContent';\nimport warnLabelUsage from '../../utils/warnLabelUsage';\nexport default function DInputCheck(_a) {\n var { id: idProp, type, name, label, ariaLabel, checked, defaultChecked, disabled = false, invalid = false, valid = false, indeterminate, inputClassName, value, hint, onChange, className, style, dataAttributes } = _a, props = __rest(_a, [\"id\", \"type\", \"name\", \"label\", \"ariaLabel\", \"checked\", \"defaultChecked\", \"disabled\", \"invalid\", \"valid\", \"indeterminate\", \"inputClassName\", \"value\", \"hint\", \"onChange\", \"className\", \"style\", \"dataAttributes\"]);\n const innerRef = useRef(null);\n // See `useControlledState` for why `onChange` takes part in this decision.\n const isControlled = checked !== undefined && onChange !== undefined;\n const innerId = useId();\n const id = useMemo(() => idProp || innerId, [idProp, innerId]);\n const handleChange = useCallback((event) => {\n onChange === null || onChange === void 0 ? void 0 : onChange(event);\n // Controlled only. Activating a checkbox clears the DOM `indeterminate`\n // flag, and it has no HTML attribute for React to restore the way it\n // restores `checked` when the parent rejects the change, so the mixed state\n // would be gone after the first click — the effect below only re-runs when\n // the prop moves. Uncontrolled keeps the browser's behaviour, where the\n // click owns the state and `indeterminate` was only the starting look.\n // Reapplied after `onChange` so a handler reading\n // `event.target.indeterminate` still sees what the browser left, and a\n // parent that does move the prop wins through that effect.\n if (isControlled && innerRef.current) {\n innerRef.current.indeterminate = type === 'checkbox' && Boolean(indeterminate);\n }\n }, [onChange, isControlled, indeterminate, type]);\n const ariaDescribedby = useMemo(() => ([\n !!hint && `${id}Hint`,\n ]\n .filter(Boolean)\n .join(' ')), [\n id,\n hint,\n ]);\n useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = type === 'checkbox' && Boolean(indeterminate);\n }\n }, [indeterminate, type]);\n // Legacy path only: a `checked` with no `onChange` behind it still lands on\n // the element, but through the DOM, so the input stays uncontrolled and both\n // clicking it and the native radio-group behaviour keep working.\n useEffect(() => {\n if (isControlled || checked === undefined || !innerRef.current) {\n return;\n }\n innerRef.current.checked = checked;\n }, [isControlled, checked]);\n const inputComponent = useMemo(() => (_jsx(\"input\", Object.assign({ ref: innerRef }, isControlled\n ? { checked }\n : defaultChecked !== undefined && { defaultChecked }, { onChange: handleChange, className: classNames('form-check-input', {\n 'is-invalid': invalid,\n 'is-valid': valid,\n }, inputClassName), style: style, id: id, disabled: disabled, type: type, name: name, value: value, \"aria-label\": ariaLabel }, ariaDescribedby && { 'aria-describedby': ariaDescribedby }, props))), [\n isControlled,\n checked,\n defaultChecked,\n handleChange,\n invalid,\n valid,\n inputClassName,\n style,\n id,\n disabled,\n type,\n name,\n value,\n ariaLabel,\n ariaDescribedby,\n props,\n ]);\n if (process.env.NODE_ENV !== 'production') {\n warnLabelUsage({\n component: 'DInputCheck',\n label,\n // `{...props}` is spread after `aria-label={ariaLabel}`, so a native\n // `aria-label` wins — including when it is explicitly undefined.\n hasAccessibleName: !!('aria-label' in props ? props['aria-label'] : ariaLabel)\n || !!props['aria-labelledby'],\n accessibleNameProp: 'ariaLabel',\n });\n }\n if (!hasLabelContent(label)) {\n return inputComponent;\n }\n return (_jsxs(\"div\", Object.assign({ className: classNames('form-check', className) }, dataAttributes, { children: [inputComponent, _jsx(DFormLabel, { className: \"form-check-label\", htmlFor: id, children: label }), hint && (_jsx(\"div\", { className: \"form-text\", id: `${id}Hint`, children: hint }))] })));\n}\n//# sourceMappingURL=DInputCheck.js.map"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|