@ahrowe/ui 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/common/accordion/accordion.mjs +2 -0
- package/dist/esm/common/accordion/accordion.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.module.mjs +2 -0
- package/dist/esm/common/accordion/accordion.module.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.plain.module.mjs +2 -0
- package/dist/esm/common/accordion/accordion.plain.module.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.primary.module.mjs +2 -0
- package/dist/esm/common/accordion/accordion.primary.module.mjs.map +1 -0
- package/dist/esm/common/accordion/accordion.types.mjs +2 -0
- package/dist/esm/common/accordion/accordion.types.mjs.map +1 -0
- package/dist/esm/common/actionButtons/actionButtons.mjs +2 -0
- package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -0
- package/dist/esm/common/actionButtons/actionButtons.module.mjs +2 -0
- package/dist/esm/common/actionButtons/actionButtons.module.mjs.map +1 -0
- package/dist/esm/common/actionIcon/actionIcon.mjs +2 -0
- package/dist/esm/common/actionIcon/actionIcon.mjs.map +1 -0
- package/dist/esm/common/actionIcon/actionIcon.module.mjs +2 -0
- package/dist/esm/common/actionIcon/actionIcon.module.mjs.map +1 -0
- package/dist/esm/common/avatar/avatar.mjs +2 -0
- package/dist/esm/common/avatar/avatar.mjs.map +1 -0
- package/dist/esm/common/avatar/avatar.module.mjs +2 -0
- package/dist/esm/common/avatar/avatar.module.mjs.map +1 -0
- package/dist/esm/common/avatar/avatarGroup.mjs +2 -0
- package/dist/esm/common/avatar/avatarGroup.mjs.map +1 -0
- package/dist/esm/common/badge/badge.mjs +2 -0
- package/dist/esm/common/badge/badge.mjs.map +1 -0
- package/dist/esm/common/badge/badge.module.mjs +2 -0
- package/dist/esm/common/badge/badge.module.mjs.map +1 -0
- package/dist/esm/common/badge/badge.types.mjs +2 -0
- package/dist/esm/common/badge/badge.types.mjs.map +1 -0
- package/dist/esm/common/bodyEnd/bodyEnd.mjs +2 -0
- package/dist/esm/common/bodyEnd/bodyEnd.mjs.map +1 -0
- package/dist/esm/common/button/button.mjs +2 -0
- package/dist/esm/common/button/button.mjs.map +1 -0
- package/dist/esm/common/button/button.module.mjs +2 -0
- package/dist/esm/common/button/button.module.mjs.map +1 -0
- package/dist/esm/common/button/button.types.mjs +2 -0
- package/dist/esm/common/button/button.types.mjs.map +1 -0
- package/dist/esm/common/card/Card.mjs +2 -0
- package/dist/esm/common/card/Card.mjs.map +1 -0
- package/dist/esm/common/card/CardActions.mjs +2 -0
- package/dist/esm/common/card/CardActions.mjs.map +1 -0
- package/dist/esm/common/card/CardContent.mjs +2 -0
- package/dist/esm/common/card/CardContent.mjs.map +1 -0
- package/dist/esm/common/card/CardHeader.mjs +2 -0
- package/dist/esm/common/card/CardHeader.mjs.map +1 -0
- package/dist/esm/common/card/CardMedia.mjs +2 -0
- package/dist/esm/common/card/CardMedia.mjs.map +1 -0
- package/dist/esm/common/card/card.module.mjs +2 -0
- package/dist/esm/common/card/card.module.mjs.map +1 -0
- package/dist/esm/common/card/card.types.mjs +2 -0
- package/dist/esm/common/card/card.types.mjs.map +1 -0
- package/dist/esm/common/checkbox/checkbox.mjs +2 -0
- package/dist/esm/common/checkbox/checkbox.mjs.map +1 -0
- package/dist/esm/common/checkbox/checkbox.module.mjs +2 -0
- package/dist/esm/common/checkbox/checkbox.module.mjs.map +1 -0
- package/dist/esm/common/chip/chip.mjs +2 -0
- package/dist/esm/common/chip/chip.mjs.map +1 -0
- package/dist/esm/common/chip/chip.module.mjs +2 -0
- package/dist/esm/common/chip/chip.module.mjs.map +1 -0
- package/dist/esm/common/chip/chip.types.mjs +2 -0
- package/dist/esm/common/chip/chip.types.mjs.map +1 -0
- package/dist/esm/common/chip/chipContainer.mjs +2 -0
- package/dist/esm/common/chip/chipContainer.mjs.map +1 -0
- package/dist/esm/common/colorPicker/colorPicker.mjs +2 -0
- package/dist/esm/common/colorPicker/colorPicker.mjs.map +1 -0
- package/dist/esm/common/colorPicker/colorPicker.module.mjs +2 -0
- package/dist/esm/common/colorPicker/colorPicker.module.mjs.map +1 -0
- package/dist/esm/common/confirmModal/confirmModal.mjs +2 -0
- package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs +2 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs.map +1 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs +2 -0
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs.map +1 -0
- package/dist/esm/common/datePicker/dateFunctions.mjs +2 -0
- package/dist/esm/common/datePicker/dateFunctions.mjs.map +1 -0
- package/dist/esm/common/datePicker/datePicker.mjs +2 -0
- package/dist/esm/common/datePicker/datePicker.mjs.map +1 -0
- package/dist/esm/common/datePicker/datePicker.module.mjs +2 -0
- package/dist/esm/common/datePicker/datePicker.module.mjs.map +1 -0
- package/dist/esm/common/drawer/drawer.mjs +2 -0
- package/dist/esm/common/drawer/drawer.mjs.map +1 -0
- package/dist/esm/common/drawer/drawer.module.mjs +2 -0
- package/dist/esm/common/drawer/drawer.module.mjs.map +1 -0
- package/dist/esm/common/dropZone/dropZone.mjs +2 -0
- package/dist/esm/common/dropZone/dropZone.mjs.map +1 -0
- package/dist/esm/common/dropZone/dropZone.module.mjs +2 -0
- package/dist/esm/common/dropZone/dropZone.module.mjs.map +1 -0
- package/dist/esm/common/dropZone/dropZone.types.mjs +2 -0
- package/dist/esm/common/dropZone/dropZone.types.mjs.map +1 -0
- package/dist/esm/common/dropdown/dropdown.mjs +2 -0
- package/dist/esm/common/dropdown/dropdown.mjs.map +1 -0
- package/dist/esm/common/dropdown/dropdown.module.mjs +2 -0
- package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -0
- package/dist/esm/common/emptyState/emptyState.mjs +2 -0
- package/dist/esm/common/emptyState/emptyState.mjs.map +1 -0
- package/dist/esm/common/emptyState/emptyState.module.mjs +2 -0
- package/dist/esm/common/emptyState/emptyState.module.mjs.map +1 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.mjs +2 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.mjs.map +1 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs +2 -0
- package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs.map +1 -0
- package/dist/esm/common/fab/fab.mjs +2 -0
- package/dist/esm/common/fab/fab.mjs.map +1 -0
- package/dist/esm/common/fab/fab.module.mjs +2 -0
- package/dist/esm/common/fab/fab.module.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/floatingMenu.mjs +2 -0
- package/dist/esm/common/floatingMenu/floatingMenu.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/floatingMenu.module.mjs +2 -0
- package/dist/esm/common/floatingMenu/floatingMenu.module.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/floatingMenu.types.mjs +2 -0
- package/dist/esm/common/floatingMenu/floatingMenu.types.mjs.map +1 -0
- package/dist/esm/common/floatingMenu/useFloatingPosition.mjs +2 -0
- package/dist/esm/common/floatingMenu/useFloatingPosition.mjs.map +1 -0
- package/dist/esm/common/iconPicker/iconPicker.mjs +2 -0
- package/dist/esm/common/iconPicker/iconPicker.mjs.map +1 -0
- package/dist/esm/common/iconPicker/iconPicker.module.mjs +2 -0
- package/dist/esm/common/iconPicker/iconPicker.module.mjs.map +1 -0
- package/dist/esm/common/idleManager/idleManager.mjs +2 -0
- package/dist/esm/common/idleManager/idleManager.mjs.map +1 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs +2 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +1 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +2 -0
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs.map +1 -0
- package/dist/esm/common/input/input.mjs +2 -0
- package/dist/esm/common/input/input.mjs.map +1 -0
- package/dist/esm/common/input/input.module.mjs +2 -0
- package/dist/esm/common/input/input.module.mjs.map +1 -0
- package/dist/esm/common/input/input.types.mjs +2 -0
- package/dist/esm/common/input/input.types.mjs.map +1 -0
- package/dist/esm/common/inputDropdown/inputDropdown.mjs +2 -0
- package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -0
- package/dist/esm/common/inputDropdown/inputDropdown.module.mjs +2 -0
- package/dist/esm/common/inputDropdown/inputDropdown.module.mjs.map +1 -0
- package/dist/esm/common/interactableDiv/index.mjs +2 -0
- package/dist/esm/common/interactableDiv/index.mjs.map +1 -0
- package/dist/esm/common/interactableDiv/interactableDiv.mjs +2 -0
- package/dist/esm/common/interactableDiv/interactableDiv.mjs.map +1 -0
- package/dist/esm/common/interactableDiv/interactableDiv.module.mjs +2 -0
- package/dist/esm/common/interactableDiv/interactableDiv.module.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/KanbanBoard.mjs +2 -0
- package/dist/esm/common/kanbanBoard/KanbanBoard.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/KanbanColumn.mjs +2 -0
- package/dist/esm/common/kanbanBoard/KanbanColumn.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/KanbanItem.mjs +2 -0
- package/dist/esm/common/kanbanBoard/KanbanItem.mjs.map +1 -0
- package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs +2 -0
- package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs +2 -0
- package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/klipyPicker.mjs +2 -0
- package/dist/esm/common/klipyPicker/klipyPicker.mjs.map +1 -0
- package/dist/esm/common/klipyPicker/klipyPicker.module.mjs +2 -0
- package/dist/esm/common/klipyPicker/klipyPicker.module.mjs.map +1 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.mjs +2 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.mjs.map +1 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs +2 -0
- package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs.map +1 -0
- package/dist/esm/common/loading/iconLoading/index.mjs +2 -0
- package/dist/esm/common/loading/iconLoading/index.mjs.map +1 -0
- package/dist/esm/common/loading/spinnerLoading/index.mjs +2 -0
- package/dist/esm/common/loading/spinnerLoading/index.mjs.map +1 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs +2 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs.map +1 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs +2 -0
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs.map +1 -0
- package/dist/esm/common/modal/modal.mjs +2 -0
- package/dist/esm/common/modal/modal.mjs.map +1 -0
- package/dist/esm/common/modal/modal.module.mjs +2 -0
- package/dist/esm/common/modal/modal.module.mjs.map +1 -0
- package/dist/esm/common/numberInput/index.mjs +2 -0
- package/dist/esm/common/numberInput/index.mjs.map +1 -0
- package/dist/esm/common/numberInput/numberInput.mjs +2 -0
- package/dist/esm/common/numberInput/numberInput.mjs.map +1 -0
- package/dist/esm/common/numberInput/numberInput.module.mjs +2 -0
- package/dist/esm/common/numberInput/numberInput.module.mjs.map +1 -0
- package/dist/esm/common/optionPicker/optionPicker.mjs +2 -0
- package/dist/esm/common/optionPicker/optionPicker.mjs.map +1 -0
- package/dist/esm/common/optionPicker/optionPicker.module.mjs +2 -0
- package/dist/esm/common/optionPicker/optionPicker.module.mjs.map +1 -0
- package/dist/esm/common/overscroll/overscroll.mjs +2 -0
- package/dist/esm/common/overscroll/overscroll.mjs.map +1 -0
- package/dist/esm/common/overscroll/overscroll.module.mjs +2 -0
- package/dist/esm/common/overscroll/overscroll.module.mjs.map +1 -0
- package/dist/esm/common/progressBar/progressBar.mjs +2 -0
- package/dist/esm/common/progressBar/progressBar.mjs.map +1 -0
- package/dist/esm/common/progressBar/progressBar.module.mjs +2 -0
- package/dist/esm/common/progressBar/progressBar.module.mjs.map +1 -0
- package/dist/esm/common/ripple/ripple.mjs +2 -0
- package/dist/esm/common/ripple/ripple.mjs.map +1 -0
- package/dist/esm/common/ripple/ripple.module.mjs +2 -0
- package/dist/esm/common/ripple/ripple.module.mjs.map +1 -0
- package/dist/esm/common/roomDrawer/roomDrawer.mjs +2 -0
- package/dist/esm/common/roomDrawer/roomDrawer.mjs.map +1 -0
- package/dist/esm/common/roomDrawer/roomDrawer.module.mjs +2 -0
- package/dist/esm/common/roomDrawer/roomDrawer.module.mjs.map +1 -0
- package/dist/esm/common/roomDrawer/roomDrawer.utils.mjs +6 -0
- package/dist/esm/common/roomDrawer/roomDrawer.utils.mjs.map +1 -0
- package/dist/esm/common/roomViewer/roomViewer.mjs +2 -0
- package/dist/esm/common/roomViewer/roomViewer.mjs.map +1 -0
- package/dist/esm/common/roomViewer/roomViewer.module.mjs +2 -0
- package/dist/esm/common/roomViewer/roomViewer.module.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/index.mjs +2 -0
- package/dist/esm/common/scrollbarProvider/index.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs +2 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs +2 -0
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs.map +1 -0
- package/dist/esm/common/searchInput/searchInput.mjs +2 -0
- package/dist/esm/common/searchInput/searchInput.mjs.map +1 -0
- package/dist/esm/common/searchInput/searchInput.module.mjs +2 -0
- package/dist/esm/common/searchInput/searchInput.module.mjs.map +1 -0
- package/dist/esm/common/skeleton/skeleton.mjs +2 -0
- package/dist/esm/common/skeleton/skeleton.mjs.map +1 -0
- package/dist/esm/common/skeleton/skeleton.module.mjs +2 -0
- package/dist/esm/common/skeleton/skeleton.module.mjs.map +1 -0
- package/dist/esm/common/skeleton/skeleton.types.mjs +2 -0
- package/dist/esm/common/skeleton/skeleton.types.mjs.map +1 -0
- package/dist/esm/common/stepper/stepper.mjs +2 -0
- package/dist/esm/common/stepper/stepper.mjs.map +1 -0
- package/dist/esm/common/stepper/stepper.module.mjs +2 -0
- package/dist/esm/common/stepper/stepper.module.mjs.map +1 -0
- package/dist/esm/common/sticky/sticky.mjs +2 -0
- package/dist/esm/common/sticky/sticky.mjs.map +1 -0
- package/dist/esm/common/sticky/sticky.module.mjs +2 -0
- package/dist/esm/common/sticky/sticky.module.mjs.map +1 -0
- package/dist/esm/common/switch/switch.mjs +2 -0
- package/dist/esm/common/switch/switch.mjs.map +1 -0
- package/dist/esm/common/switch/switch.module.mjs +2 -0
- package/dist/esm/common/switch/switch.module.mjs.map +1 -0
- package/dist/esm/common/tabHeader/tabHeader.mjs +2 -0
- package/dist/esm/common/tabHeader/tabHeader.mjs.map +1 -0
- package/dist/esm/common/tabHeader/tabHeader.module.mjs +2 -0
- package/dist/esm/common/tabHeader/tabHeader.module.mjs.map +1 -0
- package/dist/esm/common/textarea/textarea.mjs +2 -0
- package/dist/esm/common/textarea/textarea.mjs.map +1 -0
- package/dist/esm/common/themeProvider/defaultTheme.mjs +2 -0
- package/dist/esm/common/themeProvider/defaultTheme.mjs.map +1 -0
- package/dist/esm/common/themeProvider/theme.module.mjs +2 -0
- package/dist/esm/common/themeProvider/theme.module.mjs.map +1 -0
- package/dist/esm/common/themeProvider/themeProvider.mjs +2 -0
- package/dist/esm/common/themeProvider/themeProvider.mjs.map +1 -0
- package/dist/esm/common/themeProvider/useTheme.mjs +2 -0
- package/dist/esm/common/themeProvider/useTheme.mjs.map +1 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs +2 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs.map +1 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs +2 -0
- package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs.map +1 -0
- package/dist/esm/common/timeInput/timeFunctions.mjs +2 -0
- package/dist/esm/common/timeInput/timeFunctions.mjs.map +1 -0
- package/dist/esm/common/timeInput/timeInput.mjs +2 -0
- package/dist/esm/common/timeInput/timeInput.mjs.map +1 -0
- package/dist/esm/common/timeInput/timeInput.module.mjs +2 -0
- package/dist/esm/common/timeInput/timeInput.module.mjs.map +1 -0
- package/dist/esm/common/toast/toast.mjs +2 -0
- package/dist/esm/common/toast/toast.mjs.map +1 -0
- package/dist/esm/common/toast/toast.module.mjs +2 -0
- package/dist/esm/common/toast/toast.module.mjs.map +1 -0
- package/dist/esm/common/toast/toastProvider.mjs +2 -0
- package/dist/esm/common/toast/toastProvider.mjs.map +1 -0
- package/dist/esm/common/toast/toastService.mjs +2 -0
- package/dist/esm/common/toast/toastService.mjs.map +1 -0
- package/dist/esm/common/tooltip/tooltip.mjs +2 -0
- package/dist/esm/common/tooltip/tooltip.mjs.map +1 -0
- package/dist/esm/common/tooltip/tooltip.module.mjs +2 -0
- package/dist/esm/common/tooltip/tooltip.module.mjs.map +1 -0
- package/dist/esm/common/virtualList/useColumns.mjs +2 -0
- package/dist/esm/common/virtualList/useColumns.mjs.map +1 -0
- package/dist/esm/common/virtualList/useRowDrag.mjs +2 -0
- package/dist/esm/common/virtualList/useRowDrag.mjs.map +1 -0
- package/dist/esm/common/virtualList/useSelection.mjs +2 -0
- package/dist/esm/common/virtualList/useSelection.mjs.map +1 -0
- package/dist/esm/common/virtualList/useVirtualWindow.mjs +2 -0
- package/dist/esm/common/virtualList/useVirtualWindow.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualList.mjs +2 -0
- package/dist/esm/common/virtualList/virtualList.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualList.module.mjs +2 -0
- package/dist/esm/common/virtualList/virtualList.module.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualList.utils.mjs +2 -0
- package/dist/esm/common/virtualList/virtualList.utils.mjs.map +1 -0
- package/dist/esm/common/virtualList/virtualRow.mjs +2 -0
- package/dist/esm/common/virtualList/virtualRow.mjs.map +1 -0
- package/dist/esm/common/wizard/wizard.mjs +2 -0
- package/dist/esm/common/wizard/wizard.mjs.map +1 -0
- package/dist/esm/common/wizard/wizard.module.mjs +2 -0
- package/dist/esm/common/wizard/wizard.module.mjs.map +1 -0
- package/dist/esm/hooks/useWindowSize.mjs +2 -0
- package/dist/esm/hooks/useWindowSize.mjs.map +1 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/services/formValidation/FormValidatorGroupForm.mjs +2 -0
- package/dist/esm/services/formValidation/FormValidatorGroupForm.mjs.map +1 -0
- package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs +2 -0
- package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs.map +1 -0
- package/dist/esm/services/formValidation/formValidator.mjs +2 -0
- package/dist/esm/services/formValidation/formValidator.mjs.map +1 -0
- package/dist/esm/services/formValidation/formValidatorGroup.mjs +2 -0
- package/dist/esm/services/formValidation/formValidatorGroup.mjs.map +1 -0
- package/dist/esm/services/formValidation/useFormValidator.mjs +2 -0
- package/dist/esm/services/formValidation/useFormValidator.mjs.map +1 -0
- package/dist/esm/services/formValidation/useFormValidatorGroup.mjs +2 -0
- package/dist/esm/services/formValidation/useFormValidatorGroup.mjs.map +1 -0
- package/dist/esm/services/formValidation/validatableComponent.mjs +2 -0
- package/dist/esm/services/formValidation/validatableComponent.mjs.map +1 -0
- package/dist/esm/services/formValidation/validators.mjs +2 -0
- package/dist/esm/services/formValidation/validators.mjs.map +1 -0
- package/dist/esm/services/klipy.mjs +2 -0
- package/dist/esm/services/klipy.mjs.map +1 -0
- package/dist/esm/services/localization.mjs +2 -0
- package/dist/esm/services/localization.mjs.map +1 -0
- package/dist/esm/services/regexp.mjs +2 -0
- package/dist/esm/services/regexp.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/package.json +4 -3
- package/dist/index.mjs +0 -6894
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={"datePickerMonth-item":`datePickerMonth-item_30WWy`,datePickerMonthItem:`datePickerMonth-item_30WWy`,"datePickerMonth-content":`datePickerMonth-content_9bbSs`,datePickerMonthContent:`datePickerMonth-content_9bbSs`,"datePickerMonth-day":`datePickerMonth-day_SaASA`,datePickerMonthDay:`datePickerMonth-day_SaASA`,"datePickerMonth-day-today":`datePickerMonth-day-today_RXOIr`,datePickerMonthDayToday:`datePickerMonth-day-today_RXOIr`,"datePickerMonth-day-selected":`datePickerMonth-day-selected_yMF-v`,datePickerMonthDaySelected:`datePickerMonth-day-selected_yMF-v`,"datePickerMonth-day-selected-start":`datePickerMonth-day-selected-start_ftVeI`,datePickerMonthDaySelectedStart:`datePickerMonth-day-selected-start_ftVeI`,"datePickerMonth-day-selected-end":`datePickerMonth-day-selected-end_MZ2qy`,datePickerMonthDaySelectedEnd:`datePickerMonth-day-selected-end_MZ2qy`,"datePickerMonth-day-disabled":`datePickerMonth-day-disabled_4t0Ci`,datePickerMonthDayDisabled:`datePickerMonth-day-disabled_4t0Ci`,"datePickerMonth-placeholder":`datePickerMonth-placeholder_gy1Yx`,datePickerMonthPlaceholder:`datePickerMonth-placeholder_gy1Yx`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=datePickerMonth.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datePickerMonth.module.mjs","names":[],"sources":["../../../../../../package/common/datePicker/components/datePickerMonth/datePickerMonth.module.pcss"],"sourcesContent":["\n.datePickerMonth {\n &-item {\n aspect-ratio: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 1px 0;\n }\n\n &-content {\n display: grid;\n text-align: center;\n grid-template-columns: repeat(7, minmax(0, 1fr));\n gap: 0px;\n }\n\n &-day {\n cursor: pointer;\n\n &:hover {\n /* background-color: var(--primary-color);\n border-radius: 800px; */\n }\n\n &-today {\n background-color: var(--background-accent-light);\n border-radius: var(--default-border-radius);\n }\n\n &-selected {\n background-color: var(--primary-color);\n color: var(--text-on-primary);\n border-radius: 0;\n\n &-start {\n border-top-left-radius: var(--default-border-radius);\n border-bottom-left-radius: var(--default-border-radius);\n }\n\n &-end {\n border-top-right-radius: var(--default-border-radius);\n border-bottom-right-radius: var(--default-border-radius);\n }\n }\n\n &-disabled {\n filter: brightness(0.5);\n cursor: not-allowed;\n }\n }\n\n &-placeholder {\n user-select: none;\n pointer-events: none;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{getLocale as e}from"../../services/localization.mjs";function t(e,t){return new Date(t,e,0).getDate()}function n(e,t,n){return new Date(Date.UTC(n,t-1,e))}function r(e,t,n,r,i=!1){return new Date(Date.UTC(t,n-1,r)).toLocaleDateString(e,{month:i?`short`:`long`})}function i(t=e(`-`)){return Array.from(Array(12).keys()).map(e=>r(t,2023,e+1,1))}function a(e,t=!0){let n=new Date(Date.UTC(2023,3,10)),r=[];for(let i=0;i<7;i++)r.push(n.toLocaleDateString(e,{weekday:t?`short`:`long`})),n.setDate(n.getDate()+1);return r}function o(e,t){return new Date(Date.UTC(t,e-1,1)).getDay()||7}function s(e){return{day:e.getDate(),month:e.getMonth()+1,year:e.getFullYear()}}function c(e){let t=e.getDate(),n=e.getMonth()+1,r=e.getFullYear();return`${t<10?`0${t}`:t}.${n<10?`0${n}`:n}.${r}`}function l(e,t,n){let r=e,i=n;return r[0]!==`_`&&(r[0]>`3`?(r=`0${r[0]}${t.substring(2)}`,i={start:3,end:3}):r[0]===`3`&&r[1]!==`_`&&r[1]>`1`&&(r=`0${r[1]}${t.substring(2)}`,i={start:3,end:3})),r[3]!==`_`&&r[3]>`1`&&(r=`${r.substring(0,3)}0${r[3]}${t.substring(5)}`,i={start:6,end:6}),r[3]===`1`&&r[4]!==`_`&&r[4]>`2`&&(r=`${r.substring(0,3)}${r[3]}2${t.substring(5)}`),{value:r,selection:i}}export{l as correctDateMaskValue,n as getDateFromDayMonthAndYear,c as getDateString,s as getDayMonthAndYearOfDate,t as getDaysInMonth,r as getMonthName,i as getMonthNames,o as getStartWeekDayOfMonth,a as getWeekDays};
|
|
2
|
+
//# sourceMappingURL=dateFunctions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateFunctions.mjs","names":[],"sources":["../../../../package/common/datePicker/dateFunctions.ts"],"sourcesContent":["import { getLocale } from 'services/localization';\n\nexport function getDaysInMonth(month: number, year: number): number {\n return new Date(year, month, 0).getDate();\n}\n\nexport function getDateFromDayMonthAndYear(day: number, month: number, year: number): Date {\n return new Date(Date.UTC(year, month - 1, day));\n}\n\nexport function getMonthName(locale: string, year: number, month: number, day: number, short = false): string {\n const currDate = new Date(Date.UTC(year, month - 1, day));\n return currDate.toLocaleDateString(locale, { month: short ? 'short' : 'long' });\n}\n\nexport function getMonthNames(locale = getLocale('-')): string[] {\n return Array.from(Array(12).keys()).map((index) => getMonthName(locale, 2023, index + 1, 1));\n}\n\nexport function getWeekDays(locale: string, short = true): string[] {\n const currDate = new Date(Date.UTC(2023, 3, 10)); // Random Monday - 10.4.2023\n const weekDays: string[] = [];\n for (let i = 0; i < 7; i++) {\n weekDays.push(currDate.toLocaleDateString(locale, { weekday: short ? 'short' : 'long' }));\n currDate.setDate(currDate.getDate() + 1);\n }\n return weekDays;\n}\n\nexport function getStartWeekDayOfMonth(month: number, year: number): number {\n const start = new Date(Date.UTC(year, month - 1, 1)).getDay();\n return start || 7;\n}\n\nexport function getDayMonthAndYearOfDate(date: Date): { day: number; month: number; year: number } {\n return {\n day: date.getDate(),\n month: date.getMonth() + 1,\n year: date.getFullYear(),\n };\n}\n\nexport function getDateString(date: Date): string {\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n\n return `${day < 10 ? `0${day}` : day}.${month < 10 ? `0${month}` : month}.${year}`;\n}\n\nexport interface DateMaskSelection {\n start: number;\n end: number;\n}\n\nexport interface DateMaskState {\n value: string;\n selection: DateMaskSelection | null;\n}\n\n/**\n * Auto-corrects a partially typed `dd.mm.yyyy` mask value so a single out-of-range\n * digit doesn't force the user to backtrack:\n * - a day \"tens\" digit > 3 (e.g. typing `4`) becomes `04` and the caret jumps to the month\n * - a day of `3x` where x > 1 (e.g. `35`) becomes `0x`\n * - a month \"tens\" digit > 1 (e.g. `2`) becomes `02` and the caret jumps to the year\n * - a month `1x` where x > 2 (e.g. `13`) is clamped to `12`\n *\n * `previousValue` supplies the digits to retain for the part of the field that isn't\n * being rewritten. The returned `selection` is the adjusted caret position, or the\n * passed-in `selection` when no correction applies.\n */\nexport function correctDateMaskValue(\n nextValue: string,\n previousValue: string,\n selection: DateMaskSelection | null,\n): DateMaskState {\n let value = nextValue;\n let nextSelection = selection;\n\n if (value[0] !== '_') {\n if (value[0] > '3') {\n value = `0${value[0]}${previousValue.substring(2)}`;\n nextSelection = { start: 3, end: 3 };\n } else if (value[0] === '3') {\n if (value[1] !== '_' && value[1] > '1') {\n value = `0${value[1]}${previousValue.substring(2)}`;\n nextSelection = { start: 3, end: 3 };\n }\n }\n }\n if (value[3] !== '_' && value[3] > '1') {\n value = `${value.substring(0, 3)}0${value[3]}${previousValue.substring(5)}`;\n nextSelection = { start: 6, end: 6 };\n }\n if (value[3] === '1' && value[4] !== '_' && value[4] > '2') {\n value = `${value.substring(0, 3)}${value[3]}2${previousValue.substring(5)}`;\n }\n\n return { value, selection: nextSelection };\n}\n"],"mappings":"4DAEA,SAAgB,EAAe,EAAe,EAAsB,CAClE,OAAO,IAAI,KAAK,EAAM,EAAO,CAAC,EAAE,QAAQ,CAC1C,CAEA,SAAgB,EAA2B,EAAa,EAAe,EAAoB,CACzF,OAAO,IAAI,KAAK,KAAK,IAAI,EAAM,EAAQ,EAAG,CAAG,CAAC,CAChD,CAEA,SAAgB,EAAa,EAAgB,EAAc,EAAe,EAAa,EAAQ,GAAe,CAE5G,OAAO,IADc,KAAK,KAAK,IAAI,EAAM,EAAQ,EAAG,CAAG,CAChD,EAAS,mBAAmB,EAAQ,CAAE,MAAO,EAAQ,QAAU,MAAO,CAAC,CAChF,CAEA,SAAgB,EAAc,EAAS,EAAU,GAAG,EAAa,CAC/D,OAAO,MAAM,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,IAAK,GAAU,EAAa,EAAQ,KAAM,EAAQ,EAAG,CAAC,CAAC,CAC7F,CAEA,SAAgB,EAAY,EAAgB,EAAQ,GAAgB,CAClE,IAAM,EAAW,IAAI,KAAK,KAAK,IAAI,KAAM,EAAG,EAAE,CAAC,EACzC,EAAqB,CAAC,EAC5B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACrB,EAAS,KAAK,EAAS,mBAAmB,EAAQ,CAAE,QAAS,EAAQ,QAAU,MAAO,CAAC,CAAC,EACxF,EAAS,QAAQ,EAAS,QAAQ,EAAI,CAAC,EAEzC,OAAO,CACT,CAEA,SAAgB,EAAuB,EAAe,EAAsB,CAE1E,OADc,IAAI,KAAK,KAAK,IAAI,EAAM,EAAQ,EAAG,CAAC,CAAC,EAAE,OAC9C,GAAS,CAClB,CAEA,SAAgB,EAAyB,EAA0D,CACjG,MAAO,CACL,IAAK,EAAK,QAAQ,EAClB,MAAO,EAAK,SAAS,EAAI,EACzB,KAAM,EAAK,YAAY,CACzB,CACF,CAEA,SAAgB,EAAc,EAAoB,CAChD,IAAM,EAAM,EAAK,QAAQ,EACnB,EAAQ,EAAK,SAAS,EAAI,EAC1B,EAAO,EAAK,YAAY,EAE9B,MAAO,GAAG,EAAM,GAAK,IAAI,IAAQ,EAAI,GAAG,EAAQ,GAAK,IAAI,IAAU,EAAM,GAAG,GAC9E,CAwBA,SAAgB,EACd,EACA,EACA,EACe,CACf,IAAI,EAAQ,EACR,EAAgB,EAqBpB,OAnBI,EAAM,KAAO,MACX,EAAM,GAAK,KACb,EAAQ,IAAI,EAAM,KAAK,EAAc,UAAU,CAAC,IAChD,EAAgB,CAAE,MAAO,EAAG,IAAK,CAAE,GAC1B,EAAM,KAAO,KAClB,EAAM,KAAO,KAAO,EAAM,GAAK,MACjC,EAAQ,IAAI,EAAM,KAAK,EAAc,UAAU,CAAC,IAChD,EAAgB,CAAE,MAAO,EAAG,IAAK,CAAE,IAIrC,EAAM,KAAO,KAAO,EAAM,GAAK,MACjC,EAAQ,GAAG,EAAM,UAAU,EAAG,CAAC,EAAE,GAAG,EAAM,KAAK,EAAc,UAAU,CAAC,IACxE,EAAgB,CAAE,MAAO,EAAG,IAAK,CAAE,GAEjC,EAAM,KAAO,KAAO,EAAM,KAAO,KAAO,EAAM,GAAK,MACrD,EAAQ,GAAG,EAAM,UAAU,EAAG,CAAC,IAAI,EAAM,GAAG,GAAG,EAAc,UAAU,CAAC,KAGnE,CAAE,QAAO,UAAW,CAAc,CAC3C"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../button/button.mjs";import t from"../actionIcon/actionIcon.mjs";import{Align as n}from"../floatingMenu/floatingMenu.types.mjs";import r from"../floatingMenu/floatingMenu.mjs";import i from"../tooltip/tooltip.mjs";import a from"../input/input.mjs";import ee from"../modal/modal.mjs";import{getLocale as te}from"../../services/localization.mjs";import{correctDateMaskValue as ne,getDateFromDayMonthAndYear as o,getDateString as s,getMonthName as c,getMonthNames as l}from"./dateFunctions.mjs";import re from"./components/datePickerMonth/datePickerMonth.mjs";import u from"../dropdown/dropdown.mjs";import d from"./datePicker.module.mjs";import{useEffect as ie,useRef as ae,useState as f}from"react";import p from"classnames";import{faChevronLeft as m,faChevronRight as h}from"@fortawesome/free-solid-svg-icons";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import y from"@mona-health/react-input-mask";function b({className:b=``,selected:x,onSelect:S=()=>null,formValidator:C=null,noInput:oe=!1,noHeader:se=!1,isModal:w=!1,isInline:T=!1,onChange:ce=()=>null,minDate:E=null,maxDate:D=null,children:le=null,showClearButton:ue=!1,label:de=``,isValid:fe=!0,errorMessage:O=``,isRequired:k=!1,startDate:A,endDate:j}){let M=()=>C?C.value:x,N=M()??new Date,[P,F]=f(N.getMonth()+1),[I,L]=f(N.getFullYear()),[R,z]=f(!1),[B,V]=f(()=>M()?s(N):``),[pe,H]=f(!1),[me,U]=f(!1),[,he]=f(0),[ge,_e]=f(x),W=ae(C);if(ge!==x){_e(x);let e=x??new Date;F(e.getMonth()+1),L(e.getFullYear()),V(x?s(x):``)}ie(()=>{if(W.current=C,!C)return;let e=()=>{let e=C.value;e?(F(e.getMonth()+1),L(e.getFullYear()),V(s(e))):V(``),he(e=>e+1)};return C.registerOnUpdateListener(e),()=>C.removeOnUpdateListener(e)},[C]);let ve=()=>C?C.touched&&C.hasError():!fe||!!O,ye=()=>!!(k||C?.validators.find(e=>e.validatorId===`required`)),G=e=>{V(e?s(e):``),C&&C.set(e),ce(e)},K=e=>{G(e),S(e),z(!1)},q=e=>{F(t=>{let n=t+e;return n<1?(n=12,L(e=>e-1)):n>12&&(n=1,L(e=>e+1)),n})},J=e=>{if(e.match(/\d{2}\.\d{2}\.\d{4}/gi)){let[t,n,r]=e.split(`.`),i=o(Number(t),Number(n),Number(r));if(i&&i.toString()!==`Invalid Date`&&(!D||i<=D)&&(!E||i>=E))return i}return null},be=({previousState:e,nextState:t})=>{if(!e||t.value===e.value)return t;let n=ne(t.value,e.value,t.selection??null),r=J(n.value);return r&&G(r),n},Y=()=>{let e=400,t=new Date().getFullYear()-200;return E&&(t=E.getFullYear()),D&&(e=D.getFullYear()-t+1),Array.from(Array(e).keys()).map(e=>({key:e+t,label:e+t}))},X=M(),Z=ve(),Q=v(g,{children:[se?null:v(`div`,{className:d.datePickerHeader,children:[_(t,{icon:m,onClick:()=>q(-1)}),_(`div`,{className:d.datePickerHeaderMonthAndYearContainer,children:v(`div`,{className:d.datePickerHeaderMonthAndYear,children:[_(u,{plainStyle:!0,scrollToSelected:!0,onChange:e=>F(e),className:d.datePickerHeaderMonth,value:c(te(`-`),I,P,1),items:l().map((e,t)=>({key:t+1,label:e}))}),_(u,{plainStyle:!0,scrollToSelected:!0,useMatLabelStyle:!1,className:d.datePickerHeaderYear,onChange:e=>L(e),value:I,items:Y()})]})}),_(t,{icon:h,onClick:()=>q(1)})]}),_(re,{className:d.datePickerMonth,month:P,year:I,onSelect:K,selectionStart:A??X,selectionEnd:j??X,minDate:E,maxDate:D}),ue&&_(e,{onClick:()=>K(null),children:`Clear`}),le]}),$=oe?null:_(a,{readOnly:w,label:`${de}${ye()?` *`:``}`,value:B,onChange:e=>V(e),onClick:()=>z(!0),customInput:_(y,{mask:`99.99.9999`,maskPlaceholder:`_`,beforeMaskedStateChange:be}),onBlur:()=>{W.current&&(W.current.touched=!0),H(!1),G(J(B))},onFocus:()=>H(!0),onMouseEnter:()=>U(!0),onMouseLeave:()=>U(!1),isValid:!Z}),xe=T?Q:w?_(ee,{hideHeader:!0,isOpen:R,onClose:()=>z(!1),children:Q}):_(r,{isOpen:R,onOpenChange:e=>z(e),content:Q,align:n.Left,dontCloseOnChildClick:!0,children:$});return v(`div`,{className:p(d.datePicker,b),children:[(w||T)&&$,xe,_(i,{variant:`error`,message:C?C.getCurrentErrorMessage():O||``,isVisible:Z&&(pe||me)})]})}export{b as default};
|
|
2
|
+
//# sourceMappingURL=datePicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datePicker.mjs","names":[],"sources":["../../../../package/common/datePicker/datePicker.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport cx from 'classnames';\nimport Input from '../input';\nimport DatePickerMonth from './components/datePickerMonth';\nimport { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons';\nimport { getLocale } from 'services/localization';\nimport ActionIcon from '../actionIcon';\nimport Modal from '../modal';\nimport FloatingMenu from '../floatingMenu';\nimport Dropdown from '../dropdown';\nimport { Align } from '../floatingMenu/floatingMenu.types';\nimport InputMask, { InputState, BeforeMaskedStateChangeStates } from '@mona-health/react-input-mask';\nimport { getDateFromDayMonthAndYear, getMonthName, getMonthNames, getDateString, correctDateMaskValue } from './dateFunctions';\nimport Button from '../button';\nimport Tooltip from '../tooltip';\nimport type FormValidator from 'services/formValidation/formValidator';\n\nimport styles from './datePicker.module.pcss';\n\ninterface DatePickerProps {\n className?: string;\n selected?: Date;\n onSelect?: (date: Date | null) => void;\n formValidator?: FormValidator | null;\n noInput?: boolean;\n noHeader?: boolean;\n isModal?: boolean;\n isInline?: boolean;\n onChange?: (date: Date | null) => void;\n minDate?: Date | null;\n maxDate?: Date | null;\n children?: React.ReactNode;\n showClearButton?: boolean;\n label?: string;\n isValid?: boolean;\n errorMessage?: string;\n isRequired?: boolean;\n startDate?: Date;\n endDate?: Date;\n}\n\nexport default function DatePicker({\n className = '',\n selected,\n onSelect = () => null,\n formValidator = null,\n noInput = false,\n noHeader = false,\n isModal = false,\n isInline = false,\n onChange = () => null,\n minDate = null,\n maxDate = null,\n children = null,\n showClearButton = false,\n label = '',\n isValid = true,\n errorMessage = '',\n isRequired = false,\n startDate,\n endDate,\n}: DatePickerProps) {\n const getCurrValue = (): Date | undefined =>\n formValidator ? (formValidator.value as Date) : selected;\n\n const initialDate = getCurrValue() ?? new Date();\n\n const [currentMonth, setCurrentMonth] = useState(initialDate.getMonth() + 1);\n const [currentYear, setCurrentYear] = useState(initialDate.getFullYear());\n const [isPickerOpen, setIsPickerOpen] = useState(false);\n const [currentDateString, setCurrentDateString] = useState(() =>\n getCurrValue() ? getDateString(initialDate) : ''\n );\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [, forceUpdate] = useState(0);\n const [prevSelected, setPrevSelected] = useState(selected);\n\n const fvRef = useRef(formValidator);\n\n // Sync navigation view when `selected` prop changes externally\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n const d = selected ?? new Date();\n setCurrentMonth(d.getMonth() + 1);\n setCurrentYear(d.getFullYear());\n setCurrentDateString(selected ? getDateString(selected) : '');\n }\n\n // Subscribe to formValidator updates (external system → setState in callback)\n useEffect(() => {\n fvRef.current = formValidator;\n if (!formValidator) return;\n const listener = () => {\n const val = formValidator.value as Date | undefined;\n if (val) {\n setCurrentMonth(val.getMonth() + 1);\n setCurrentYear(val.getFullYear());\n setCurrentDateString(getDateString(val));\n } else {\n setCurrentDateString('');\n }\n forceUpdate((n: number) => n + 1);\n };\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n const hasError = (): boolean => {\n return formValidator\n ? (formValidator.touched && formValidator.hasError())\n : (!isValid || !!errorMessage);\n };\n\n const computedIsRequired = (): boolean => {\n return !!(isRequired || formValidator?.validators.find(\n (v) => (v as { validatorId?: string }).validatorId === 'required'\n ));\n };\n\n const handleChange = (date: Date | null) => {\n setCurrentDateString(date ? getDateString(date) : '');\n if (formValidator) formValidator.set(date);\n onChange(date);\n };\n\n const handleSelect = (date: Date | null) => {\n handleChange(date);\n onSelect(date);\n setIsPickerOpen(false);\n };\n\n const changeMonth = (delta: number) => {\n setCurrentMonth((prev) => {\n let next = prev + delta;\n if (next < 1) { next = 12; setCurrentYear((y) => y - 1); }\n else if (next > 12) { next = 1; setCurrentYear((y) => y + 1); }\n return next;\n });\n };\n\n const tryParseDateString = (dateString: string): Date | null => {\n if (dateString.match(/\\d{2}\\.\\d{2}\\.\\d{4}/gi)) {\n const [day, month, year] = dateString.split('.');\n const parsedDate = getDateFromDayMonthAndYear(Number(day), Number(month), Number(year));\n if (parsedDate && parsedDate.toString() !== 'Invalid Date') {\n const isSmallerThanMaxDate = !maxDate || parsedDate <= maxDate;\n const isBiggerThanMinDate = !minDate || parsedDate >= minDate;\n if (isSmallerThanMaxDate && isBiggerThanMinDate) return parsedDate;\n }\n }\n return null;\n };\n\n const beforeMaskedStateChange = ({ previousState, nextState }: BeforeMaskedStateChangeStates): InputState => {\n // previousState is only supplied on user-driven change events; on mount/focus/blur\n // there is nothing to auto-correct, so the next state passes through unchanged.\n if (!previousState || nextState.value === previousState.value) return nextState;\n\n const corrected = correctDateMaskValue(nextState.value, previousState.value, nextState.selection ?? null);\n\n const parsedDate = tryParseDateString(corrected.value);\n if (parsedDate) handleChange(parsedDate);\n\n return corrected;\n };\n\n const getYearDropdownOptions = () => {\n let length = 400;\n let zeroOffset = new Date().getFullYear() - 200;\n if (minDate) zeroOffset = minDate.getFullYear();\n if (maxDate) length = maxDate.getFullYear() - zeroOffset + 1;\n return Array.from(Array(length).keys()).map((i) => ({ key: i + zeroOffset, label: i + zeroOffset }));\n };\n\n const currValue = getCurrValue();\n const hasErr = hasError();\n\n const header = noHeader ? null : (\n <div className={styles.datePickerHeader}>\n <ActionIcon icon={faChevronLeft} onClick={() => changeMonth(-1)} />\n <div className={styles.datePickerHeaderMonthAndYearContainer}>\n <div className={styles.datePickerHeaderMonthAndYear}>\n <Dropdown\n plainStyle\n scrollToSelected\n onChange={(v) => setCurrentMonth(v as number)}\n className={styles.datePickerHeaderMonth}\n value={getMonthName(getLocale('-'), currentYear, currentMonth, 1)}\n items={getMonthNames().map((month, index) => ({ key: index + 1, label: month }))}\n />\n <Dropdown\n plainStyle\n scrollToSelected\n useMatLabelStyle={false}\n className={styles.datePickerHeaderYear}\n onChange={(v) => setCurrentYear(v as number)}\n value={currentYear}\n items={getYearDropdownOptions()}\n />\n </div>\n </div>\n <ActionIcon icon={faChevronRight} onClick={() => changeMonth(1)} />\n </div>\n );\n\n const pickerContent = (\n <>\n {header}\n <DatePickerMonth\n className={styles.datePickerMonth}\n month={currentMonth}\n year={currentYear}\n onSelect={handleSelect}\n selectionStart={startDate ?? currValue}\n selectionEnd={endDate ?? currValue}\n minDate={minDate}\n maxDate={maxDate}\n />\n {showClearButton && <Button onClick={() => handleSelect(null)}>Clear</Button>}\n {children}\n </>\n );\n\n const input = noInput ? null : (\n <Input\n readOnly={isModal}\n label={`${label}${computedIsRequired() ? ' *' : ''}`}\n value={currentDateString}\n onChange={(v) => setCurrentDateString(v as string)}\n onClick={() => setIsPickerOpen(true)}\n customInput={\n <InputMask mask=\"99.99.9999\" maskPlaceholder=\"_\" beforeMaskedStateChange={beforeMaskedStateChange} />\n }\n onBlur={() => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n handleChange(tryParseDateString(currentDateString));\n }}\n onFocus={() => setIsFocused(true)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n isValid={!hasErr}\n />\n );\n\n const picker = (() => {\n if (isInline) return pickerContent;\n if (isModal) {\n return (\n <Modal hideHeader isOpen={isPickerOpen} onClose={() => setIsPickerOpen(false)}>\n {pickerContent}\n </Modal>\n );\n }\n return (\n <FloatingMenu\n isOpen={isPickerOpen}\n onOpenChange={(open: boolean) => setIsPickerOpen(open)}\n content={pickerContent}\n align={Align.Left}\n dontCloseOnChildClick\n >\n {input}\n </FloatingMenu>\n );\n })();\n\n return (\n <div className={cx(styles.datePicker, className)}>\n {(isModal || isInline) && input}\n {picker}\n <Tooltip\n variant=\"error\"\n message={formValidator ? formValidator.getCurrentErrorMessage() : (errorMessage || '')}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={datePicker:`datePicker_ZohTp`,"datePicker-header":`datePicker-header_YmSWE`,datePickerHeader:`datePicker-header_YmSWE`,"datePicker-header-monthAndYear":`datePicker-header-monthAndYear_b5ntO`,datePickerHeaderMonthAndYear:`datePicker-header-monthAndYear_b5ntO`,"datePicker-header-monthAndYear-container":`datePicker-header-monthAndYear-container_Hcgks`,datePickerHeaderMonthAndYearContainer:`datePicker-header-monthAndYear-container_Hcgks`,"datePicker-header-month":`datePicker-header-month_jqFHl`,datePickerHeaderMonth:`datePicker-header-month_jqFHl`,"datePicker-header-year":`datePicker-header-year_4egHF`,datePickerHeaderYear:`datePicker-header-year_4egHF`,"datePicker-month":`datePicker-month_7iosT`,datePickerMonth:`datePicker-month_7iosT`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=datePicker.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datePicker.module.mjs","names":[],"sources":["../../../../package/common/datePicker/datePicker.module.pcss"],"sourcesContent":[".datePicker {\n position: relative;\n width: 100%;\n flex: 1;\n min-width: 105px;\n\n &-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 8px 0;\n\n &-monthAndYear {\n display: flex;\n\n &-container {\n display: flex;\n gap: 16px;\n position: relative;\n }\n }\n\n &-month {\n width: 120px;\n }\n\n &-year {\n width: 75px;\n }\n }\n\n &-month {\n min-width: 185px;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./drawer.module.mjs";import{useEffect as t,useRef as n}from"react";import r from"classnames";import{jsx as i}from"react/jsx-runtime";function a({className:a,isOpen:o=!1,closedWidth:s,openedWidth:c,children:l}){let u=n(null),d=n(null);return t(()=>{let e=new ResizeObserver(()=>{u.current&&d.current&&u.current.style.setProperty(`--drawer-content-width`,`${d.current.scrollWidth}px`)});return d.current&&e.observe(d.current),()=>e.disconnect()},[]),i(`div`,{ref:u,className:r(e.drawer,o&&e.drawerOpen,a),style:{...s!==void 0&&{"--drawer-closed-width":s},...c!==void 0&&{"--drawer-opened-width":c}},children:i(`div`,{ref:d,className:e.drawerContent,children:i(`div`,{className:e.drawerContentInner,children:l})})})}export{a as default};
|
|
2
|
+
//# sourceMappingURL=drawer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.mjs","names":[],"sources":["../../../../package/common/drawer/drawer.tsx"],"sourcesContent":["import type { ReactElement, CSSProperties } from 'react';\nimport { useRef, useEffect } from 'react';\nimport { DrawerProps } from './drawer.types';\nimport cx from 'classnames';\n\nimport styles from './drawer.module.pcss';\n\n\nfunction Drawer({\n className,\n isOpen = false,\n closedWidth,\n openedWidth,\n children,\n}: DrawerProps): ReactElement {\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const observer = new ResizeObserver(() => {\n if (containerRef.current && contentRef.current) {\n containerRef.current.style.setProperty(\n '--drawer-content-width',\n `${contentRef.current.scrollWidth}px`\n );\n }\n });\n if (contentRef.current) observer.observe(contentRef.current);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={cx(styles.drawer, isOpen && styles.drawerOpen, className)}\n style={{\n ...(closedWidth !== undefined && { '--drawer-closed-width': closedWidth }),\n ...(openedWidth !== undefined && { '--drawer-opened-width': openedWidth }),\n } as CSSProperties}\n >\n <div ref={contentRef} className={styles.drawerContent}>\n <div className={styles.drawerContentInner}>\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Drawer;\n"],"mappings":"mJAQA,SAAS,EAAO,CACd,YACA,SAAS,GACT,cACA,cACA,YAC4B,CAC5B,IAAM,EAAe,EAAuB,IAAI,EAC1C,EAAa,EAAuB,IAAI,EAe9C,OAbA,MAAgB,CACd,IAAM,EAAW,IAAI,mBAAqB,CACpC,EAAa,SAAW,EAAW,SACrC,EAAa,QAAQ,MAAM,YACzB,yBACA,GAAG,EAAW,QAAQ,YAAY,GACpC,CAEJ,CAAC,EAED,OADI,EAAW,SAAS,EAAS,QAAQ,EAAW,OAAO,MAC9C,EAAS,WAAW,CACnC,EAAG,CAAC,CAAC,EAGH,EAAC,MAAD,CACE,IAAK,EACL,UAAW,EAAG,EAAO,OAAQ,GAAU,EAAO,WAAY,CAAS,EACnE,MAAO,CACL,GAAI,IAAgB,IAAA,IAAa,CAAE,wBAAyB,CAAY,EACxE,GAAI,IAAgB,IAAA,IAAa,CAAE,wBAAyB,CAAY,CAC1E,WAEA,EAAC,MAAD,CAAK,IAAK,EAAY,UAAW,EAAO,uBACtC,EAAC,MAAD,CAAK,UAAW,EAAO,mBACpB,UACE,CAAA,CACF,CAAA,CACF,CAAA,CAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={drawer:`drawer_5SRoc`,"drawer-open":`drawer-open_-YQ8n`,drawerOpen:`drawer-open_-YQ8n`,"drawer-content":`drawer-content_sHIAP`,drawerContent:`drawer-content_sHIAP`,"drawer-content-inner":`drawer-content-inner_f-IDz`,drawerContentInner:`drawer-content-inner_f-IDz`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=drawer.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.module.mjs","names":[],"sources":["../../../../package/common/drawer/drawer.module.pcss"],"sourcesContent":[".drawer {\n height: 100%;\n overflow-x: hidden;\n width: var(--drawer-closed-width, 0px);\n transition: width 0.3s ease;\n background: var(--background-accent);\n\n &-open {\n width: var(--drawer-opened-width, var(--drawer-content-width, max-content));\n }\n\n &-content {\n width: max-content;\n height: 100%;\n pointer-events: all;\n\n &-inner {\n height: 100%;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{DropZoneReturnType as e,DropZoneStatus as t}from"./dropZone.types.mjs";import n from"./dropZone.module.mjs";import{useCallback as r,useEffect as i,useId as a,useRef as o,useState as s}from"react";import c from"classnames";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d(e,t){if(!t.length)return!0;let n=e.name.toLowerCase(),r=e.type.toLowerCase();return t.some(e=>{let t=e.trim().toLowerCase();return t?t.startsWith(`.`)?n.endsWith(t):t.endsWith(`/*`)?r.startsWith(t.slice(0,-1)):r===t:!1})}function f(t,n){return n===e.File?Promise.resolve({ok:!0,value:t}):new Promise(r=>{let i=new FileReader;i.onload=e=>{let n=e.target?.result;if(typeof n!=`string`){r({ok:!1});return}r({ok:!0,value:{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified,data:n}})},i.onerror=()=>r({ok:!1}),n===e.Base64?i.readAsDataURL(t):i.readAsText(t)})}function p(e){return new Promise(t=>{if(e.isFile)e.file(e=>t([e]),()=>t([]));else if(e.isDirectory){let n=e.createReader(),r=[],i=()=>{n.readEntries(e=>{e.length?(r.push(...e),i()):Promise.all(r.map(p)).then(e=>t(e.flat()))},()=>t([]))};i()}else t([])})}function m(e,t){let n=e.items;if(n&&n.length){if(t&&typeof n[0].webkitGetAsEntry==`function`){let e=[];for(let t=0;t<n.length;t+=1)if(n[t].kind===`file`){let r=n[t].webkitGetAsEntry();r&&e.push(r)}if(e.length)return Promise.all(e.map(p)).then(e=>e.flat())}let e=[];for(let t=0;t<n.length;t+=1)if(n[t].kind===`file`){let r=n[t].getAsFile();r&&e.push(r)}return Promise.resolve(e)}return Promise.resolve(Array.from(e.files||[]))}function h({children:p,acceptedTypes:h=[],returnType:g=e.File,openPickerOnClick:_=!1,multiple:v=!0,maxFiles:y,maxSize:b,enablePaste:x=!1,allowDirectories:S=!0,capture:C,disabled:w=!1,unstyled:T=!1,showFileNames:E=!1,files:D,onFilesChanged:O,onReject:k,onStatusChanged:A,className:j,style:M,classNames:N,styles:P,...F}){let[I,L]=s(t.Idle),R=o(null),z=a(),B=o(I),V=o(0),H=o(0),U=o({acceptedTypes:h,returnType:g,multiple:v,maxFiles:y,maxSize:b,allowDirectories:S,disabled:w,onFilesChanged:O,onReject:k,onStatusChanged:A});U.current={acceptedTypes:h,returnType:g,multiple:v,maxFiles:y,maxSize:b,allowDirectories:S,disabled:w,onFilesChanged:O,onReject:k,onStatusChanged:A};let W=r(e=>{B.current!==e&&(B.current=e,L(e),U.current.onStatusChanged?.(e))},[]),G=r(async e=>{let n=U.current,r=[],i=[];for(let t of e)d(t,n.acceptedTypes)?n.maxSize!=null&&t.size>n.maxSize?r.push({file:t,reason:`tooLarge`}):i.push(t):r.push({file:t,reason:`unacceptedType`});n.multiple||(i=i.slice(0,1)),n.maxFiles!=null&&i.length>n.maxFiles&&(i.slice(n.maxFiles).forEach(e=>r.push({file:e,reason:`tooMany`})),i=i.slice(0,n.maxFiles));let a=await Promise.all(i.map(e=>f(e,n.returnType))),o=[];a.forEach((e,t)=>{e.ok?o.push(e.value):r.push({file:i[t],reason:`readError`})}),r.length&&n.onReject?.(r),W(r.length&&!o.length?t.Error:t.Idle),o.length&&n.onFilesChanged?.(o)},[W]);i(()=>{let e=e=>!e||Array.from(e.types||[]).includes(`Files`),n=n=>{U.current.disabled||!e(n.dataTransfer)||(V.current+=1,(B.current===t.Idle||B.current===t.Error)&&W(t.Dragging))},r=()=>{V.current=Math.max(0,V.current-1),V.current===0&&B.current===t.Dragging&&W(t.Idle)},i=()=>{V.current=0,H.current=0,B.current===t.Dragging&&W(t.Idle)};return window.addEventListener(`dragenter`,n),window.addEventListener(`dragleave`,r),window.addEventListener(`drop`,i),()=>{window.removeEventListener(`dragenter`,n),window.removeEventListener(`dragleave`,r),window.removeEventListener(`drop`,i)}},[W]);let K=r(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect=w?`none`:`copy`)},[w]),q=r(e=>{e.preventDefault(),e.stopPropagation(),!w&&(H.current+=1,W(t.Active))},[w,W]),J=r(e=>{e.preventDefault(),e.stopPropagation(),H.current=Math.max(0,H.current-1),H.current===0&&W(V.current>0?t.Dragging:t.Idle)},[W]),Y=r(e=>{if(e.preventDefault(),e.stopPropagation(),H.current=0,V.current=0,w||!e.dataTransfer){W(t.Idle);return}W(t.Idle),m(e.dataTransfer,U.current.allowDirectories).then(e=>{e.length&&G(e)})},[w,W,G]),X=r(()=>{w||!_||R.current?.click()},[w,_]),Z=r(e=>{let t=Array.from(e.target.files||[]);e.target.value=``,t.length&&G(t)},[G]),Q=r(e=>{if(!x||w)return;let t=Array.from(e.clipboardData?.files||[]);t.length&&(e.preventDefault(),G(t))},[x,w,G]),ee=r(e=>{!_||w||(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),X())},[_,w,X]),$=I===t.Dragging||I===t.Active,te={status:I,isDragging:$,isActive:I===t.Active,disabled:w},ne=h.length?h.join(`,`):void 0;return u(`div`,{...F,className:c(n.dropZone,_&&n.dropZoneClickable,w&&n.dropZoneDisabled,!T&&n.dropZoneDefault,!T&&I===t.Dragging&&n.dropZoneDragging,!T&&I===t.Active&&n.dropZoneActive,!T&&I===t.Error&&n.dropZoneError,N?.root,j),style:{...P?.root,...M},onDragEnter:q,onDragLeave:J,onDragOver:K,onDrop:Y,onClick:X,onKeyDown:ee,onPaste:x?Q:void 0,role:_?`button`:void 0,tabIndex:_&&!w?0:void 0,"aria-disabled":w||void 0,children:[l(`div`,{className:c(n.dropZoneContent,$&&n.dropZoneContentDragging,N?.content),style:P?.content,children:typeof p==`function`?p(te):p}),E&&D&&D.length>0&&l(`div`,{className:c(n.dropZoneFileList,N?.fileList),style:P?.fileList,children:D.map((e,t)=>l(`div`,{className:c(n.dropZoneFileItem,N?.fileItem),style:P?.fileItem,children:e.name},`${e.name}-${t}`))}),l(`input`,{ref:R,id:z,type:`file`,className:c(n.dropZoneInput,N?.input),style:P?.input,accept:ne,multiple:v,capture:C,disabled:w,onChange:Z,tabIndex:-1,"aria-hidden":`true`})]})}export{h as default};
|
|
2
|
+
//# sourceMappingURL=dropZone.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropZone.mjs","names":[],"sources":["../../../../package/common/dropZone/dropZone.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useId, useRef, useState } from 'react';\nimport cx from 'classnames';\n\nimport {\n DropZoneProps,\n DropZoneReturnType,\n DropZoneStatus,\n DropZoneRejection,\n DropZoneRenderState,\n LoadedFile,\n} from './dropZone.types';\n\nimport styles from './dropZone.module.pcss';\n\n// ── Pure helpers ──────────────────────────────────────────────────────────────\n\n/** True when a file matches one of the accepted tokens (extension, mime, or wildcard). */\nfunction matchesAccepted(file: File, acceptedTypes: string[]): boolean {\n if (!acceptedTypes.length) return true;\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return acceptedTypes.some((raw) => {\n const accept = raw.trim().toLowerCase();\n if (!accept) return false;\n if (accept.startsWith('.')) return name.endsWith(accept); // extension\n if (accept.endsWith('/*')) return type.startsWith(accept.slice(0, -1)); // wildcard e.g. image/\n return type === accept; // exact mime type\n });\n}\n\ntype ReadResult = { ok: true; value: File | LoadedFile } | { ok: false };\n\n/** Read a single file into the requested return shape. Never rejects — failures resolve to `{ ok: false }`. */\nfunction readFile(file: File, returnType: DropZoneReturnType): Promise<ReadResult> {\n if (returnType === DropZoneReturnType.File) {\n return Promise.resolve({ ok: true, value: file });\n }\n return new Promise<ReadResult>((resolve) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n const data = event.target?.result;\n if (typeof data !== 'string') {\n resolve({ ok: false });\n return;\n }\n resolve({\n ok: true,\n value: { name: file.name, size: file.size, type: file.type, lastModified: file.lastModified, data },\n });\n };\n reader.onerror = () => resolve({ ok: false });\n if (returnType === DropZoneReturnType.Base64) reader.readAsDataURL(file);\n else reader.readAsText(file);\n });\n}\n\n/** Recursively flatten a dropped file-system entry into a list of Files. */\nfunction readEntry(entry: FileSystemEntry): Promise<File[]> {\n return new Promise((resolve) => {\n if (entry.isFile) {\n (entry as FileSystemFileEntry).file(\n (file) => resolve([file]),\n () => resolve([])\n );\n } else if (entry.isDirectory) {\n const reader = (entry as FileSystemDirectoryEntry).createReader();\n const collected: FileSystemEntry[] = [];\n const readBatch = () => {\n // readEntries yields entries in chunks — keep calling until it returns empty.\n reader.readEntries((batch) => {\n if (!batch.length) {\n Promise.all(collected.map(readEntry)).then((nested) => resolve(nested.flat()));\n } else {\n collected.push(...batch);\n readBatch();\n }\n }, () => resolve([]));\n };\n readBatch();\n } else {\n resolve([]);\n }\n });\n}\n\n/**\n * Extract Files from a drop's DataTransfer. `webkitGetAsEntry()` must be called\n * synchronously within the drop handler, so all entries are captured before any await.\n */\nfunction gatherFiles(dataTransfer: DataTransfer, allowDirectories: boolean): Promise<File[]> {\n const items = dataTransfer.items;\n if (items && items.length) {\n if (allowDirectories && typeof items[0].webkitGetAsEntry === 'function') {\n const entries: FileSystemEntry[] = [];\n for (let i = 0; i < items.length; i += 1) {\n if (items[i].kind === 'file') {\n const entry = items[i].webkitGetAsEntry();\n if (entry) entries.push(entry);\n }\n }\n if (entries.length) {\n return Promise.all(entries.map(readEntry)).then((nested) => nested.flat());\n }\n }\n const files: File[] = [];\n for (let i = 0; i < items.length; i += 1) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n if (file) files.push(file);\n }\n }\n return Promise.resolve(files);\n }\n return Promise.resolve(Array.from(dataTransfer.files || []));\n}\n\n// ── Component ───────────────────────────────────────────────────────────────\n\nfunction DropZone({\n children,\n acceptedTypes = [],\n returnType = DropZoneReturnType.File,\n openPickerOnClick = false,\n multiple = true,\n maxFiles,\n maxSize,\n enablePaste = false,\n allowDirectories = true,\n capture,\n disabled = false,\n unstyled = false,\n showFileNames = false,\n files,\n onFilesChanged,\n onReject,\n onStatusChanged,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: DropZoneProps) {\n const [status, setStatus] = useState<DropZoneStatus>(DropZoneStatus.Idle);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputId = useId();\n const statusRef = useRef(status);\n const windowDragDepth = useRef(0);\n const zoneDragDepth = useRef(0);\n\n // Latest props/callbacks, so the once-mounted window listeners never read stale values.\n const cfg = useRef({\n acceptedTypes, returnType, multiple, maxFiles, maxSize, allowDirectories,\n disabled, onFilesChanged, onReject, onStatusChanged,\n });\n cfg.current = {\n acceptedTypes, returnType, multiple, maxFiles, maxSize, allowDirectories,\n disabled, onFilesChanged, onReject, onStatusChanged,\n };\n\n const changeStatus = useCallback((next: DropZoneStatus) => {\n if (statusRef.current === next) return;\n statusRef.current = next;\n setStatus(next);\n cfg.current.onStatusChanged?.(next);\n }, []);\n\n const processFiles = useCallback(async (incoming: File[]) => {\n const c = cfg.current;\n const rejections: DropZoneRejection[] = [];\n let accepted: File[] = [];\n\n for (const file of incoming) {\n if (!matchesAccepted(file, c.acceptedTypes)) {\n rejections.push({ file, reason: 'unacceptedType' });\n } else if (c.maxSize != null && file.size > c.maxSize) {\n rejections.push({ file, reason: 'tooLarge' });\n } else {\n accepted.push(file);\n }\n }\n\n if (!c.multiple) accepted = accepted.slice(0, 1);\n if (c.maxFiles != null && accepted.length > c.maxFiles) {\n accepted.slice(c.maxFiles).forEach((file) => rejections.push({ file, reason: 'tooMany' }));\n accepted = accepted.slice(0, c.maxFiles);\n }\n\n // Read in input order — Promise.all preserves index regardless of completion order.\n const results = await Promise.all(accepted.map((file) => readFile(file, c.returnType)));\n const loaded: (File | LoadedFile)[] = [];\n results.forEach((result, index) => {\n if (result.ok) loaded.push(result.value);\n else rejections.push({ file: accepted[index], reason: 'readError' });\n });\n\n if (rejections.length) c.onReject?.(rejections);\n changeStatus(rejections.length && !loaded.length ? DropZoneStatus.Error : DropZoneStatus.Idle);\n if (loaded.length) c.onFilesChanged?.(loaded);\n }, [changeStatus]);\n\n // Window-level drag tracking via an enter/leave depth counter (robust against bubbling).\n useEffect(() => {\n const hasFiles = (dt: DataTransfer | null) =>\n !dt || Array.from(dt.types || []).includes('Files');\n\n const onWindowDragEnter = (e: DragEvent) => {\n if (cfg.current.disabled || !hasFiles(e.dataTransfer)) return;\n windowDragDepth.current += 1;\n if (statusRef.current === DropZoneStatus.Idle || statusRef.current === DropZoneStatus.Error) {\n changeStatus(DropZoneStatus.Dragging);\n }\n };\n const onWindowDragLeave = () => {\n windowDragDepth.current = Math.max(0, windowDragDepth.current - 1);\n if (windowDragDepth.current === 0 && statusRef.current === DropZoneStatus.Dragging) {\n changeStatus(DropZoneStatus.Idle);\n }\n };\n const onWindowDrop = () => {\n windowDragDepth.current = 0;\n zoneDragDepth.current = 0;\n if (statusRef.current === DropZoneStatus.Dragging) changeStatus(DropZoneStatus.Idle);\n };\n\n window.addEventListener('dragenter', onWindowDragEnter);\n window.addEventListener('dragleave', onWindowDragLeave);\n window.addEventListener('drop', onWindowDrop);\n return () => {\n window.removeEventListener('dragenter', onWindowDragEnter);\n window.removeEventListener('dragleave', onWindowDragLeave);\n window.removeEventListener('drop', onWindowDrop);\n };\n }, [changeStatus]);\n\n const onDragOver = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (e.dataTransfer) e.dataTransfer.dropEffect = disabled ? 'none' : 'copy';\n }, [disabled]);\n\n const onDragEnter = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n zoneDragDepth.current += 1;\n changeStatus(DropZoneStatus.Active);\n }, [disabled, changeStatus]);\n\n const onDragLeave = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n zoneDragDepth.current = Math.max(0, zoneDragDepth.current - 1);\n if (zoneDragDepth.current === 0) {\n // Left the zone, but a drag may still be active elsewhere in the window.\n changeStatus(windowDragDepth.current > 0 ? DropZoneStatus.Dragging : DropZoneStatus.Idle);\n }\n }, [changeStatus]);\n\n const onDrop = useCallback((e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n zoneDragDepth.current = 0;\n windowDragDepth.current = 0;\n if (disabled || !e.dataTransfer) {\n changeStatus(DropZoneStatus.Idle);\n return;\n }\n changeStatus(DropZoneStatus.Idle);\n // gatherFiles captures any directory entries synchronously before awaiting.\n gatherFiles(e.dataTransfer, cfg.current.allowDirectories).then((collected) => {\n if (collected.length) processFiles(collected);\n });\n }, [disabled, changeStatus, processFiles]);\n\n const openPicker = useCallback(() => {\n if (disabled || !openPickerOnClick) return;\n inputRef.current?.click();\n }, [disabled, openPickerOnClick]);\n\n const onInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const selected = Array.from(e.target.files || []);\n // Reset so picking the same file again still fires onChange.\n e.target.value = '';\n if (selected.length) processFiles(selected);\n }, [processFiles]);\n\n const onPaste = useCallback((e: React.ClipboardEvent<HTMLDivElement>) => {\n if (!enablePaste || disabled) return;\n const pasted = Array.from(e.clipboardData?.files || []);\n if (pasted.length) {\n e.preventDefault();\n processFiles(pasted);\n }\n }, [enablePaste, disabled, processFiles]);\n\n const onKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!openPickerOnClick || disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openPicker();\n }\n }, [openPickerOnClick, disabled, openPicker]);\n\n const isDragging = status === DropZoneStatus.Dragging || status === DropZoneStatus.Active;\n const renderState: DropZoneRenderState = {\n status,\n isDragging,\n isActive: status === DropZoneStatus.Active,\n disabled,\n };\n\n const acceptAttr = acceptedTypes.length ? acceptedTypes.join(',') : undefined;\n\n return (\n <div\n {...rest}\n className={cx(\n styles.dropZone,\n openPickerOnClick && styles.dropZoneClickable,\n disabled && styles.dropZoneDisabled,\n !unstyled && styles.dropZoneDefault,\n !unstyled && status === DropZoneStatus.Dragging && styles.dropZoneDragging,\n !unstyled && status === DropZoneStatus.Active && styles.dropZoneActive,\n !unstyled && status === DropZoneStatus.Error && styles.dropZoneError,\n classNames?.root,\n className\n )}\n style={{ ...slotStyles?.root, ...style }}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n onDragOver={onDragOver}\n onDrop={onDrop}\n onClick={openPicker}\n onKeyDown={onKeyDown}\n onPaste={enablePaste ? onPaste : undefined}\n role={openPickerOnClick ? 'button' : undefined}\n tabIndex={openPickerOnClick && !disabled ? 0 : undefined}\n aria-disabled={disabled || undefined}\n >\n <div\n className={cx(styles.dropZoneContent, isDragging && styles.dropZoneContentDragging, classNames?.content)}\n style={slotStyles?.content}\n >\n {typeof children === 'function' ? children(renderState) : children}\n </div>\n\n {showFileNames && files && files.length > 0 && (\n <div className={cx(styles.dropZoneFileList, classNames?.fileList)} style={slotStyles?.fileList}>\n {files.map((file, index) => (\n <div\n key={`${file.name}-${index}`}\n className={cx(styles.dropZoneFileItem, classNames?.fileItem)}\n style={slotStyles?.fileItem}\n >\n {file.name}\n </div>\n ))}\n </div>\n )}\n\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n className={cx(styles.dropZoneInput, classNames?.input)}\n style={slotStyles?.input}\n accept={acceptAttr}\n multiple={multiple}\n capture={capture}\n disabled={disabled}\n onChange={onInputChange}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n\nexport default DropZone;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={dropZone:`dropZone_9iJZy`,"dropZone-clickable":`dropZone-clickable_pcRhf`,dropZoneClickable:`dropZone-clickable_pcRhf`,"dropZone-disabled":`dropZone-disabled_YWcMp`,dropZoneDisabled:`dropZone-disabled_YWcMp`,"dropZone-default":`dropZone-default_5dSsT`,dropZoneDefault:`dropZone-default_5dSsT`,"dropZone-dragging":`dropZone-dragging_nGSL3`,dropZoneDragging:`dropZone-dragging_nGSL3`,"dropZone-active":`dropZone-active_Rov1w`,dropZoneActive:`dropZone-active_Rov1w`,"dropZone-error":`dropZone-error_hlnmB`,dropZoneError:`dropZone-error_hlnmB`,"dropZone-content":`dropZone-content_1QDk7`,dropZoneContent:`dropZone-content_1QDk7`,"dropZone-content-dragging":`dropZone-content-dragging_ettwl`,dropZoneContentDragging:`dropZone-content-dragging_ettwl`,"dropZone-fileList":`dropZone-fileList_si3X1`,dropZoneFileList:`dropZone-fileList_si3X1`,"dropZone-fileItem":`dropZone-fileItem_fES6y`,dropZoneFileItem:`dropZone-fileItem_fES6y`,"dropZone-input":`dropZone-input_4DGty`,dropZoneInput:`dropZone-input_4DGty`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=dropZone.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropZone.module.mjs","names":[],"sources":["../../../../package/common/dropZone/dropZone.module.pcss"],"sourcesContent":[".dropZone {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n outline: none;\n\n &-clickable {\n cursor: pointer;\n }\n\n &-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n &-default {\n padding: var(--spacing-l, 24px);\n border: 1px dashed var(--primary-lighter);\n border-radius: var(--default-border-radius);\n background: transparent;\n color: var(--text-dark);\n transition: border-color 0.2s, background 0.2s, color 0.2s;\n\n &:hover {\n border-color: var(--primary-color);\n background: var(--background-accent-light);\n }\n }\n\n /* A drag is somewhere in the window — the zone is armed. */\n &-dragging {\n border-color: var(--primary-color);\n }\n\n /* A drag is hovering directly over this zone. */\n &-active {\n border-width: 2px;\n border-color: var(--primary-color);\n background: var(--background-accent-light);\n color: var(--text-color);\n }\n\n &-error {\n border-color: var(--error-color);\n color: var(--error-color);\n\n &:hover {\n border-color: var(--error-color);\n background: var(--error-lighter);\n }\n }\n\n &-content {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n /* While dragging, let drop events fall through to the root instead of child elements. */\n &-dragging {\n pointer-events: none;\n }\n }\n\n &-fileList {\n width: 100%;\n margin-top: var(--spacing-s, 8px);\n pointer-events: none;\n }\n\n &-fileItem {\n font-size: var(--text-small-font-size);\n color: var(--text-dark);\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n &-input {\n display: none;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropZone.types.mjs","names":[],"sources":["../../../../package/common/dropZone/dropZone.types.ts"],"sourcesContent":["import type React from 'react';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum DropZoneStatus {\n /** Nothing is happening. */\n Idle = 'idle',\n /** A file drag is somewhere in the window — the zone is \"armed\". */\n Dragging = 'dragging',\n /** A file drag is hovering directly over this zone. */\n Active = 'active',\n /** The last drop / selection was rejected. */\n Error = 'error',\n}\n\nexport enum DropZoneReturnType {\n /** Emit the raw `File` objects (default). */\n File = 'file',\n /** Read each file as a base64 data URL and emit `LoadedFile`. */\n Base64 = 'base64',\n /** Read each file as UTF-8 text and emit `LoadedFile`. */\n Text = 'text',\n}\n\nexport interface LoadedFile {\n name: string;\n size: number;\n type: string;\n lastModified: number;\n /** The FileReader result — a base64 data URL or text, depending on `returnType`. */\n data: string;\n}\n\nexport type DropZoneRejectionReason =\n /** File extension / mime type not in `acceptedTypes`. */\n | 'unacceptedType'\n /** File exceeds `maxSize`. */\n | 'tooLarge'\n /** More files than `maxFiles` were provided. */\n | 'tooMany'\n /** Reading the file (base64 / text) failed. */\n | 'readError';\n\nexport interface DropZoneRejection {\n file: File;\n reason: DropZoneRejectionReason;\n}\n\nexport interface DropZoneRenderState {\n status: DropZoneStatus;\n /** A drag is anywhere in the window (zone armed) or directly over it. */\n isDragging: boolean;\n /** A drag is directly over this zone. */\n isActive: boolean;\n disabled: boolean;\n}\n\nexport type DropZoneSlots = 'root' | 'content' | 'fileList' | 'fileItem' | 'input';\n\nexport interface DropZoneProps extends HtmlProps {\n /** Static content, or a render function that receives the live drop state. */\n children?: React.ReactNode | ((state: DropZoneRenderState) => React.ReactNode);\n\n /**\n * Accepted file types: extensions (`'.png'`), mime types (`'image/png'`),\n * or wildcards (`'image/*'`). Empty / omitted means accept everything.\n * Also drives the native picker's `accept` attribute.\n */\n acceptedTypes?: string[];\n /** Output shape for each accepted file. Default: `File`. */\n returnType?: DropZoneReturnType;\n\n /** Open the native file picker when the zone is clicked. */\n openPickerOnClick?: boolean;\n /** Allow more than one file. Default: `true`. */\n multiple?: boolean;\n /** Reject files beyond this count (extras reported via `onReject`). */\n maxFiles?: number;\n /** Reject files larger than this many bytes. */\n maxSize?: number;\n /** Accept files pasted from the clipboard while the zone is focused. */\n enablePaste?: boolean;\n /** Recurse into dropped directories. Default: `true`. */\n allowDirectories?: boolean;\n\n /** Native `capture` attribute (mobile camera / mic). */\n capture?: boolean | 'user' | 'environment';\n disabled?: boolean;\n\n /** Drop the built-in border / background styling; keep only base layout. */\n unstyled?: boolean;\n /** Render the names of `files` beneath the content. */\n showFileNames?: boolean;\n /** Files whose names are listed when `showFileNames` is set. */\n files?: (File | LoadedFile)[];\n\n onFilesChanged?: (files: (File | LoadedFile)[]) => void;\n onReject?: (rejections: DropZoneRejection[]) => void;\n onStatusChanged?: (status: DropZoneStatus) => void;\n\n className?: string;\n style?: React.CSSProperties;\n classNames?: SlotClassNames<DropZoneSlots>;\n styles?: SlotStyles<DropZoneSlots>;\n}\n"],"mappings":"AAGA,IAAY,EAAL,SAAA,EAAA,OAEL,GAAA,KAAA,OAEA,EAAA,SAAA,WAEA,EAAA,OAAA,SAEA,EAAA,MAAA,SACF,EAAA,CAAA,CAAA,EAEY,EAAL,SAAA,EAAA,OAEL,GAAA,KAAA,OAEA,EAAA,OAAA,SAEA,EAAA,KAAA,QACF,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../bodyEnd/bodyEnd.mjs";import{useFloatingPosition as t}from"../floatingMenu/useFloatingPosition.mjs";import n from"../tooltip/tooltip.mjs";import r from"../infiniteBlock/infiniteBlock.mjs";import i from"./dropdown.module.mjs";import{useEffect as a,useRef as o,useState as s}from"react";import c from"classnames";import{FontAwesomeIcon as ee}from"@fortawesome/react-fontawesome";import{faChevronDown as l}from"@fortawesome/free-solid-svg-icons";import{jsx as u,jsxs as d}from"react/jsx-runtime";import f from"downshift";function p({errorMessage:p=``,className:te=``,label:m=``,value:h=``,isValid:g=!0,tabIndex:ne=0,isRequired:_=!1,customProps:v={},isRow:re=!1,disabled:y=!1,onScroll:ie=()=>Promise.resolve(),onClick:b,onChange:x,onFocus:ae=null,onBlur:S=null,onMouseEnter:C=null,onMouseLeave:w=null,dropdownLabel:T,isDropdownListWider:E=!1,inputClassName:D=``,dropDownIconClassName:O=``,dropDownClassName:oe=``,formValidator:k=null,labelClassName:A=``,dropDownInputClassName:j=``,items:M=[],useMatLabelStyle:N=!0,placeholder:P=``,plainStyle:F=!1,scrollToSelected:I=!1,reactRef:L,...R}){let[z,B]=s(!1),[V,H]=s(!1),[,U]=s(0),W=o(k),G=o(null),K=o(null),[q,se]=s(!1),[ce,le]=s(10);a(()=>{if(q){let e=G.current?.getBoundingClientRect();le(e?.width??10)}},[q]),t({isOpen:q,triggerRef:G,anchorRef:K,panelRef:K,flipClassName:i.dropdownInputListAnimFlip}),a(()=>{if(W.current=k,!W.current)return;W.current.label=m??``,W.current.validate();let e=()=>U(e=>e+1);return W.current.registerOnUpdateListener(e),()=>W.current?.removeOnUpdateListener(e)},[k,m]);let ue=e=>{H(!0),C?.(e)},de=e=>{H(!1),w?.(e)},fe=e=>{B(!0),ae?.(e)},pe=e=>{W.current&&(W.current.touched=!0),B(!1),S?.(e)},J=()=>k?k.touched&&k.hasError():!g||!!p,me=()=>!!(_||k?.validators.find(e=>e.validatorId===`required`)),he=e=>{k?(k.set(e),x?.(k.value,v)):x?.(e,v)},Y=T,X=k?k.value:h,Z=J();M.forEach(e=>{e.key===X&&(Y=e.label)});let Q=Y||X,$=Q==null||typeof Q==`string`&&Q.trim()===``;return d(`div`,{...R,className:c(te,i.dropdownLabel,i.dropdown,{[i.dropdownLabelColumn]:!re}),onMouseEnter:ue,onMouseLeave:de,children:[u(f,{onChange:e=>he((e||{key:``}).key),itemToString:e=>e?String(e.key):``,selectedItem:M.find(e=>e.key===X)??null,onStateChange:e=>{typeof e.isOpen==`boolean`&&se(e.isOpen)},stateReducer:(e,t)=>I&&Object.prototype.hasOwnProperty.call(t,`isOpen`)?{...t,highlightedIndex:t.isOpen?M.indexOf(e.selectedItem):null}:t,children:({getItemProps:t,getToggleButtonProps:n,isOpen:a,selectedItem:o,highlightedIndex:s,setHighlightedIndex:f})=>u(`div`,{children:d(`div`,{ref:G,onFocus:fe,onBlur:pe,className:c(i.dropdownInput,{[i.dropdownInputPlain]:F},j),children:[u(`button`,{tabIndex:ne,type:`button`,disabled:y,style:E?{padding:`6px`,border:`none`}:{},className:c(i.dropdownInputButton,{[i.dropdownInputButtonDisabled]:y},D),...n(),onClick:e=>{n().onClick?.(e),b?.(e)},ref:L,children:$?`\xA0`:Q}),u(`button`,{type:`button`,tabIndex:-1,disabled:y,className:c(i.dropdownInputButtonIcon,O),...n(),onClick:e=>{n().onClick?.(e),b?.(e)},children:!y&&u(ee,{icon:l,className:c(i.dropdownInputButtonIconArrow,{[i.dropdownInputButtonIconArrowOpen]:a})})}),!y&&a?u(e,{children:u(`div`,{ref:K,className:c(i.dropdownInputListAnim,{[i.dropdownInputListAnimWider]:E}),style:{width:`${ce}px`},children:u(r,{onScroll:ie,className:i.dropdownInputList,setHighlightedIndex:f,children:M.map((e,n)=>u(`div`,{...t({index:n,item:e,disabled:!!e.disabled}),className:c(i.dropdownInputListItem,oe,{[i.dropdownInputListItemActive]:s===n,[i.dropdownInputListItemSelected]:o===e,[i.dropdownInputListItemDisabled]:!!e.disabled}),children:e.label},e.key))})})}):null,u(`fieldset`,{className:c(i.dropdownFieldset,{[i.dropdownBorderPlain]:F,[i.dropdownBorderFocused]:z,[i.dropdownBorderInvalid]:Z,[i.dropdownBorderError]:Z}),children:u(`legend`,{className:c(i.dropdownFieldsetLegend,{[i.dropdownFieldsetLegendActive]:N&&(z||!$)}),children:u(`span`,{children:m})})}),N&&m&&u(`div`,{className:c(i.dropdownMatLabel,{[i.dropdownMatLabelFloating]:z||!$}),children:m}),N&&P&&u(`div`,{className:c(i.dropdownPlaceholder,z&&!Y&&i.dropdownPlaceholderShown),children:P})]})})}),m&&!N&&d(`div`,{className:c(i.dropdownLabelText,A),children:[m,me()?u(`div`,{className:i.requiredMark,children:`*`}):null]}),u(n,{variant:`error`,message:k?k.getCurrentErrorMessage():p||``,isVisible:Z&&(z||V)})]})}export{p as default};
|
|
2
|
+
//# sourceMappingURL=dropdown.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.mjs","names":[],"sources":["../../../../package/common/dropdown/dropdown.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport cx from 'classnames';\nimport InfiniteBlock from 'components/common/infiniteBlock';\nimport BodyEnd from 'components/common/bodyEnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronDown as dropdownIcon } from '@fortawesome/free-solid-svg-icons';\nimport Downshift, { StateChangeOptions, DownshiftState } from 'downshift';\nimport Tooltip from 'components/common/tooltip';\n\nimport { useFloatingPosition } from '../floatingMenu/useFloatingPosition';\nimport styles from './dropdown.module.pcss';\nimport type { DropdownProps, DropdownItem } from './dropdown.types';\n\nfunction Dropdown({\n errorMessage = '',\n className = '',\n label = '',\n value = '',\n isValid = true,\n tabIndex = 0,\n isRequired = false,\n customProps = {},\n isRow = false,\n disabled = false,\n onScroll = () => Promise.resolve(),\n onClick,\n onChange,\n onFocus: onFocusProp = null,\n onBlur: onBlurProp = null,\n onMouseEnter: onMouseEnterProp = null,\n onMouseLeave: onMouseLeaveProp = null,\n dropdownLabel: dropdownLabelProp,\n isDropdownListWider = false,\n inputClassName = '',\n dropDownIconClassName = '',\n dropDownClassName = '',\n formValidator = null,\n labelClassName = '',\n dropDownInputClassName = '',\n items = [],\n useMatLabelStyle = true,\n placeholder = '',\n plainStyle = false,\n scrollToSelected = false,\n reactRef,\n ...rest\n}: DropdownProps) {\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [, forceUpdate] = useState(0);\n const fvRef = useRef(formValidator);\n const triggerRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const [menuIsOpen, setMenuIsOpen] = useState(false);\n const [triggerWidth, setTriggerWidth] = useState(10);\n\n useEffect(() => {\n if (menuIsOpen) {\n const rect = triggerRef.current?.getBoundingClientRect();\n setTriggerWidth(rect?.width ?? 10);\n }\n }, [menuIsOpen]);\n\n useFloatingPosition({\n isOpen: menuIsOpen,\n triggerRef,\n anchorRef,\n panelRef: anchorRef,\n flipClassName: styles.dropdownInputListAnimFlip,\n });\n\n useEffect(() => {\n fvRef.current = formValidator;\n if (!fvRef.current) return;\n fvRef.current.label = label ?? '';\n fvRef.current.validate();\n const listener = () => forceUpdate(n => n + 1);\n fvRef.current.registerOnUpdateListener(listener);\n return () => fvRef.current?.removeOnUpdateListener(listener);\n }, [formValidator, label]);\n\n const onMouseEnterHandler = (event: React.MouseEvent) => {\n setIsHovered(true);\n onMouseEnterProp?.(event);\n };\n\n const onMouseLeaveHandler = (event: React.MouseEvent) => {\n setIsHovered(false);\n onMouseLeaveProp?.(event);\n };\n\n const onFocusHandler = (event: React.FocusEvent) => {\n setIsFocused(true);\n onFocusProp?.(event);\n };\n\n const onBlurHandler = (event: React.FocusEvent) => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n onBlurProp?.(event);\n };\n\n const hasError = (): boolean => {\n return formValidator\n ? (formValidator.touched && formValidator.hasError())\n : (!isValid || !!errorMessage);\n };\n\n const computedIsRequired = (): boolean => {\n return !!(isRequired || formValidator?.validators.find(\n (v) => (v as { validatorId?: string }).validatorId === 'required'\n ));\n };\n\n const onChangeHandler = (val: string | number): void => {\n if (formValidator) {\n formValidator.set(val);\n onChange?.(formValidator.value, customProps);\n } else {\n onChange?.(val, customProps);\n }\n };\n\n let dropdownLabel = dropdownLabelProp;\n const currentValue = formValidator ? formValidator.value as string | number : value;\n const hasErr = hasError();\n\n items.forEach((item: DropdownItem) => {\n if (item.key === currentValue) {\n dropdownLabel = item.label as string;\n }\n });\n\n const displayValue = dropdownLabel || currentValue;\n const isDisplayBlank =\n displayValue == null ||\n (typeof displayValue === 'string' && displayValue.trim() === '');\n\n return (\n <div\n {...rest}\n className={cx(className, styles.dropdownLabel, styles.dropdown, {\n [styles.dropdownLabelColumn]: !isRow,\n })}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n >\n <Downshift\n onChange={(selection: DropdownItem | null) => onChangeHandler((selection || { key: '' }).key)}\n itemToString={(item: DropdownItem | null) => (item ? String(item.key) : '')}\n selectedItem={items.find((el) => el.key === currentValue) ?? null}\n onStateChange={(changes: StateChangeOptions<DropdownItem>) => {\n if (typeof changes.isOpen === 'boolean') setMenuIsOpen(changes.isOpen);\n }}\n stateReducer={(state: DownshiftState<DropdownItem>, changes: StateChangeOptions<DropdownItem>) => {\n if (scrollToSelected && Object.prototype.hasOwnProperty.call(changes, 'isOpen')) {\n return {\n ...changes,\n highlightedIndex: changes.isOpen ? items.indexOf(state.selectedItem as DropdownItem) : null,\n };\n }\n return changes;\n }}\n >\n {({\n getItemProps,\n getToggleButtonProps,\n isOpen,\n selectedItem,\n highlightedIndex,\n setHighlightedIndex,\n }) => (\n <div>\n <div\n ref={triggerRef}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n className={cx(\n styles.dropdownInput,\n { [styles.dropdownInputPlain]: plainStyle },\n dropDownInputClassName\n )}\n >\n <button\n tabIndex={tabIndex}\n type=\"button\"\n disabled={disabled}\n style={isDropdownListWider ? { padding: '6px', border: 'none' } : {}}\n className={cx(\n styles.dropdownInputButton,\n { [styles.dropdownInputButtonDisabled]: disabled },\n inputClassName\n )}\n {...getToggleButtonProps()}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n getToggleButtonProps().onClick?.(e);\n onClick?.(e);\n }}\n ref={reactRef}\n >\n {/* Non-breaking space when blank (same text-node layout as a\n real value) so the button keeps a full line of height. */}\n {isDisplayBlank ? '\\u00A0' : displayValue}\n </button>\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={disabled}\n className={cx(styles.dropdownInputButtonIcon, dropDownIconClassName)}\n {...getToggleButtonProps()}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n getToggleButtonProps().onClick?.(e);\n onClick?.(e);\n }}\n >\n {!disabled && (\n <FontAwesomeIcon\n icon={dropdownIcon}\n className={cx(styles.dropdownInputButtonIconArrow, {\n [styles.dropdownInputButtonIconArrowOpen]: isOpen,\n })}\n />\n )}\n </button>\n {!disabled && isOpen ? (\n <BodyEnd>\n <div\n ref={anchorRef}\n className={cx(styles.dropdownInputListAnim, {\n [styles.dropdownInputListAnimWider]: isDropdownListWider,\n })}\n style={{ width: `${triggerWidth}px` }}\n >\n <InfiniteBlock\n onScroll={onScroll}\n className={styles.dropdownInputList}\n setHighlightedIndex={setHighlightedIndex}\n >\n {items.map((item: DropdownItem, index: number) => (\n <div\n key={item.key}\n {...getItemProps({ index, item, disabled: !!item.disabled })}\n className={cx(styles.dropdownInputListItem, dropDownClassName, {\n [styles.dropdownInputListItemActive]: highlightedIndex === index,\n [styles.dropdownInputListItemSelected]: selectedItem === item,\n [styles.dropdownInputListItemDisabled]: !!item.disabled,\n })}\n >\n {item.label}\n </div>\n ))}\n </InfiniteBlock>\n </div>\n </BodyEnd>\n ) : null}\n <fieldset\n className={cx(styles.dropdownFieldset, {\n [styles.dropdownBorderPlain]: plainStyle,\n [styles.dropdownBorderFocused]: isFocused,\n [styles.dropdownBorderInvalid]: hasErr,\n [styles.dropdownBorderError]: hasErr,\n })}\n >\n <legend\n className={cx(styles.dropdownFieldsetLegend, {\n [styles.dropdownFieldsetLegendActive]:\n useMatLabelStyle && (isFocused || !isDisplayBlank),\n })}\n >\n <span>{label}</span>\n </legend>\n </fieldset>\n {useMatLabelStyle && label && (\n <div\n className={cx(styles.dropdownMatLabel, {\n [styles.dropdownMatLabelFloating]: isFocused || !isDisplayBlank,\n })}\n >\n {label}\n </div>\n )}\n {useMatLabelStyle && placeholder && (\n <div\n className={cx(\n styles.dropdownPlaceholder,\n isFocused && !dropdownLabel && styles.dropdownPlaceholderShown\n )}\n >\n {placeholder}\n </div>\n )}\n </div>\n </div>\n )}\n </Downshift>\n {label && !useMatLabelStyle && (\n <div className={cx(styles.dropdownLabelText, labelClassName)}>\n {label}\n {computedIsRequired() ? <div className={styles.requiredMark}>*</div> : null}\n </div>\n )}\n <Tooltip\n variant=\"error\"\n message={formValidator ? formValidator.getCurrentErrorMessage() : (errorMessage || '')}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </div>\n );\n}\n\nexport default Dropdown;\n"],"mappings":"shBAaA,SAAS,EAAS,CAChB,eAAe,GACf,aAAY,GACZ,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,YAAW,EACX,aAAa,GACb,cAAc,CAAC,EACf,SAAQ,GACR,WAAW,GACX,gBAAiB,QAAQ,QAAQ,EACjC,UACA,WACA,QAAS,GAAc,KACvB,OAAQ,EAAa,KACrB,aAAc,EAAmB,KACjC,aAAc,EAAmB,KACjC,cAAe,EACf,sBAAsB,GACtB,iBAAiB,GACjB,wBAAwB,GACxB,qBAAoB,GACpB,gBAAgB,KAChB,iBAAiB,GACjB,yBAAyB,GACzB,QAAQ,CAAC,EACT,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,WACA,GAAG,GACa,CAChB,GAAM,CAAC,EAAW,GAAgB,EAAS,EAAK,EAC1C,CAAC,EAAW,GAAgB,EAAS,EAAK,EAC1C,EAAG,GAAe,EAAS,CAAC,EAC5B,EAAQ,EAAO,CAAa,EAC5B,EAAa,EAAuB,IAAI,EACxC,EAAY,EAAuB,IAAI,EACvC,CAAC,EAAY,IAAiB,EAAS,EAAK,EAC5C,CAAC,GAAc,IAAmB,EAAS,EAAE,EAEnD,MAAgB,CACd,GAAI,EAAY,CACd,IAAM,EAAO,EAAW,SAAS,sBAAsB,EACvD,GAAgB,GAAM,OAAS,EAAE,CACnC,CACF,EAAG,CAAC,CAAU,CAAC,EAEf,EAAoB,CAClB,OAAQ,EACR,aACA,YACA,SAAU,EACV,cAAe,EAAO,yBACxB,CAAC,EAED,MAAgB,CAEd,GADA,EAAM,QAAU,EACZ,CAAC,EAAM,QAAS,OACpB,EAAM,QAAQ,MAAQ,GAAS,GAC/B,EAAM,QAAQ,SAAS,EACvB,IAAM,MAAiB,EAAY,GAAK,EAAI,CAAC,EAE7C,OADA,EAAM,QAAQ,yBAAyB,CAAQ,MAClC,EAAM,SAAS,uBAAuB,CAAQ,CAC7D,EAAG,CAAC,EAAe,CAAK,CAAC,EAEzB,IAAM,GAAuB,GAA4B,CACvD,EAAa,EAAI,EACjB,IAAmB,CAAK,CAC1B,EAEM,GAAuB,GAA4B,CACvD,EAAa,EAAK,EAClB,IAAmB,CAAK,CAC1B,EAEM,GAAkB,GAA4B,CAClD,EAAa,EAAI,EACjB,KAAc,CAAK,CACrB,EAEM,GAAiB,GAA4B,CAC7C,EAAM,UAAS,EAAM,QAAQ,QAAU,IAC3C,EAAa,EAAK,EAClB,IAAa,CAAK,CACpB,EAEM,MACG,EACF,EAAc,SAAW,EAAc,SAAS,EAChD,CAAC,GAAW,CAAC,CAAC,EAGf,OACG,CAAC,EAAE,GAAc,GAAe,WAAW,KAC/C,GAAO,EAA+B,cAAgB,UACzD,GAGI,GAAmB,GAA+B,CAClD,GACF,EAAc,IAAI,CAAG,EACrB,IAAW,EAAc,MAAO,CAAW,GAE3C,IAAW,EAAK,CAAW,CAE/B,EAEI,EAAgB,EACd,EAAe,EAAgB,EAAc,MAA2B,EACxE,EAAS,EAAS,EAExB,EAAM,QAAS,GAAuB,CAChC,EAAK,MAAQ,IACf,EAAgB,EAAK,MAEzB,CAAC,EAED,IAAM,EAAe,GAAiB,EAChC,EACJ,GAAgB,MACf,OAAO,GAAiB,UAAY,EAAa,KAAK,IAAM,GAE/D,OACE,EAAC,MAAD,CACE,GAAI,EACJ,UAAW,EAAG,GAAW,EAAO,cAAe,EAAO,SAAU,EAC7D,EAAO,qBAAsB,CAAC,EACjC,CAAC,EACD,aAAc,GACd,aAAc,YANhB,CAQE,EAAC,EAAD,CACE,SAAW,GAAmC,IAAiB,GAAa,CAAE,IAAK,EAAG,GAAG,GAAG,EAC5F,aAAe,GAA+B,EAAO,OAAO,EAAK,GAAG,EAAI,GACxE,aAAc,EAAM,KAAM,GAAO,EAAG,MAAQ,CAAY,GAAK,KAC7D,cAAgB,GAA8C,CACxD,OAAO,EAAQ,QAAW,WAAW,GAAc,EAAQ,MAAM,CACvE,EACA,cAAe,EAAqC,IAC9C,GAAoB,OAAO,UAAU,eAAe,KAAK,EAAS,QAAQ,EACrE,CACL,GAAG,EACH,iBAAkB,EAAQ,OAAS,EAAM,QAAQ,EAAM,YAA4B,EAAI,IACzF,EAEK,YAGP,CACA,eACA,uBACA,SACA,eACA,mBACA,yBAEA,EAAC,MAAD,CAAA,SACE,EAAC,MAAD,CACE,IAAK,EACL,QAAS,GACT,OAAQ,GACR,UAAW,EACT,EAAO,cACP,EAAG,EAAO,oBAAqB,CAAW,EAC1C,CACF,WARF,CAUE,EAAC,SAAD,CACY,YACV,KAAK,SACK,WACV,MAAO,EAAsB,CAAE,QAAS,MAAO,OAAQ,MAAO,EAAI,CAAC,EACnE,UAAW,EACT,EAAO,oBACP,EAAG,EAAO,6BAA8B,CAAS,EACjD,CACF,EACA,GAAI,EAAqB,EACzB,QAAU,GAA2C,CACnD,EAAqB,EAAE,UAAU,CAAC,EAClC,IAAU,CAAC,CACb,EACA,IAAK,WAIJ,EAAiB,OAAW,CACvB,CAAA,EACR,EAAC,SAAD,CACE,KAAK,SACL,SAAU,GACA,WACV,UAAW,EAAG,EAAO,wBAAyB,CAAqB,EACnE,GAAI,EAAqB,EACzB,QAAU,GAA2C,CACnD,EAAqB,EAAE,UAAU,CAAC,EAClC,IAAU,CAAC,CACb,WAEC,CAAC,GACA,EAAC,GAAD,CACE,KAAM,EACN,UAAW,EAAG,EAAO,6BAA8B,EAChD,EAAO,kCAAmC,CAC7C,CAAC,CACF,CAAA,CAEG,CAAA,EACP,CAAC,GAAY,EACZ,EAAC,EAAD,CAAA,SACE,EAAC,MAAD,CACE,IAAK,EACL,UAAW,EAAG,EAAO,sBAAuB,EACzC,EAAO,4BAA6B,CACvC,CAAC,EACD,MAAO,CAAE,MAAO,GAAG,GAAa,GAAI,WAEpC,EAAC,EAAD,CACY,YACV,UAAW,EAAO,kBACG,+BAEpB,EAAM,KAAK,EAAoB,IAC9B,EAAC,MAAD,CAEE,GAAI,EAAa,CAAE,QAAO,OAAM,SAAU,CAAC,CAAC,EAAK,QAAS,CAAC,EAC3D,UAAW,EAAG,EAAO,sBAAuB,GAAmB,EAC5D,EAAO,6BAA8B,IAAqB,GAC1D,EAAO,+BAAgC,IAAiB,GACxD,EAAO,+BAAgC,CAAC,CAAC,EAAK,QACjD,CAAC,WAEA,EAAK,KACH,EATE,EAAK,GASP,CACN,CACY,CAAA,CACZ,CAAA,CACE,CAAA,EACP,KACJ,EAAC,WAAD,CACE,UAAW,EAAG,EAAO,iBAAkB,EACpC,EAAO,qBAAsB,GAC7B,EAAO,uBAAwB,GAC/B,EAAO,uBAAwB,GAC/B,EAAO,qBAAsB,CAChC,CAAC,WAED,EAAC,SAAD,CACE,UAAW,EAAG,EAAO,uBAAwB,EAC1C,EAAO,8BACN,IAAqB,GAAa,CAAC,EACvC,CAAC,WAED,EAAC,OAAD,CAAA,SAAO,CAAY,CAAA,CACb,CAAA,CACA,CAAA,EACT,GAAoB,GACnB,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,iBAAkB,EACpC,EAAO,0BAA2B,GAAa,CAAC,CACnD,CAAC,WAEA,CACE,CAAA,EAEN,GAAoB,GACnB,EAAC,MAAD,CACE,UAAW,EACT,EAAO,oBACP,GAAa,CAAC,GAAiB,EAAO,wBACxC,WAEC,CACE,CAAA,CAEJ,GACF,CAAA,CAEE,CAAA,EACV,GAAS,CAAC,GACT,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,CAAc,WAA3D,CACG,EACA,GAAmB,EAAI,EAAC,MAAD,CAAK,UAAW,EAAO,sBAAc,GAAM,CAAA,EAAI,IACpE,IAEP,EAAC,EAAD,CACE,QAAQ,QACR,QAAS,EAAgB,EAAc,uBAAuB,EAAK,GAAgB,GACnF,UAAW,IAAW,GAAa,EACpC,CAAA,CACE,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={"required-mark":`required-mark_fy7Fm`,requiredMark:`required-mark_fy7Fm`,dropdown:`dropdown_XTshY`,"dropdown-label":`dropdown-label_TIpeK`,dropdownLabel:`dropdown-label_TIpeK`,"dropdown-label-column":`dropdown-label-column_cMCBc`,dropdownLabelColumn:`dropdown-label-column_cMCBc`,"dropdown-label-text":`dropdown-label-text_u-UKq`,dropdownLabelText:`dropdown-label-text_u-UKq`,"dropdown-input":`dropdown-input_WiPcb`,dropdownInput:`dropdown-input_WiPcb`,"dropdown-input-plain":`dropdown-input-plain_Ap12N`,dropdownInputPlain:`dropdown-input-plain_Ap12N`,"dropdown-input-button":`dropdown-input-button_ziKKi`,dropdownInputButton:`dropdown-input-button_ziKKi`,"dropdown-input-button-disabled":`dropdown-input-button-disabled_JEaO-`,dropdownInputButtonDisabled:`dropdown-input-button-disabled_JEaO-`,"dropdown-input-button-icon":`dropdown-input-button-icon_jl7EY`,dropdownInputButtonIcon:`dropdown-input-button-icon_jl7EY`,"dropdown-input-button-icon-arrow":`dropdown-input-button-icon-arrow_SFJbx`,dropdownInputButtonIconArrow:`dropdown-input-button-icon-arrow_SFJbx`,"dropdown-input-button-icon-arrow-open":`dropdown-input-button-icon-arrow-open_8yQbZ`,dropdownInputButtonIconArrowOpen:`dropdown-input-button-icon-arrow-open_8yQbZ`,"dropdown-input-list-anim":`dropdown-input-list-anim_knSMT`,dropdownInputListAnim:`dropdown-input-list-anim_knSMT`,"dropdown-input-list-anim-flip":`dropdown-input-list-anim-flip_O6wWY`,dropdownInputListAnimFlip:`dropdown-input-list-anim-flip_O6wWY`,"dropdown-input-list-anim-wider":`dropdown-input-list-anim-wider_-YyLJ`,dropdownInputListAnimWider:`dropdown-input-list-anim-wider_-YyLJ`,"dropdown-input-list":`dropdown-input-list_JnMbA`,dropdownInputList:`dropdown-input-list_JnMbA`,"dropdown-input-list-item":`dropdown-input-list-item_EAy5L`,dropdownInputListItem:`dropdown-input-list-item_EAy5L`,"dropdown-input-list-item-active":`dropdown-input-list-item-active_0dhia`,dropdownInputListItemActive:`dropdown-input-list-item-active_0dhia`,"dropdown-input-list-item-selected":`dropdown-input-list-item-selected_hShJf`,dropdownInputListItemSelected:`dropdown-input-list-item-selected_hShJf`,"dropdown-input-list-item-disabled":`dropdown-input-list-item-disabled_3r-Yn`,dropdownInputListItemDisabled:`dropdown-input-list-item-disabled_3r-Yn`,"dropdown-input-list-hidden":`dropdown-input-list-hidden_huNc5`,dropdownInputListHidden:`dropdown-input-list-hidden_huNc5`,"dropdown-fieldset":`dropdown-fieldset_wQwTf`,dropdownFieldset:`dropdown-fieldset_wQwTf`,"dropdown-fieldset-legend":`dropdown-fieldset-legend_a1M4L`,dropdownFieldsetLegend:`dropdown-fieldset-legend_a1M4L`,"dropdown-fieldset-legend-active":`dropdown-fieldset-legend-active_bnR5F`,dropdownFieldsetLegendActive:`dropdown-fieldset-legend-active_bnR5F`,"dropdown-placeholder":`dropdown-placeholder_QYMPZ`,dropdownPlaceholder:`dropdown-placeholder_QYMPZ`,"dropdown-placeholder-shown":`dropdown-placeholder-shown_-IkNH`,dropdownPlaceholderShown:`dropdown-placeholder-shown_-IkNH`,fadeIn:`fadeIn_oMJZj`,"dropdown-matLabel":`dropdown-matLabel_iHQnt`,dropdownMatLabel:`dropdown-matLabel_iHQnt`,"dropdown-matLabel-floating":`dropdown-matLabel-floating_zY51S`,dropdownMatLabelFloating:`dropdown-matLabel-floating_zY51S`,"dropdown-border":`dropdown-border_9Oaex`,dropdownBorder:`dropdown-border_9Oaex`,"dropdown-border-focused":`dropdown-border-focused_Te-ER`,dropdownBorderFocused:`dropdown-border-focused_Te-ER`,"dropdown-border-searchFocused":`dropdown-border-searchFocused_AH67N`,dropdownBorderSearchFocused:`dropdown-border-searchFocused_AH67N`,"dropdown-border-plain":`dropdown-border-plain_Bbh-3`,dropdownBorderPlain:`dropdown-border-plain_Bbh-3`,"dropdown-border-invalid":`dropdown-border-invalid_ySVaS`,dropdownBorderInvalid:`dropdown-border-invalid_ySVaS`,"dropdown-border-error":`dropdown-border-error_-JB33`,dropdownBorderError:`dropdown-border-error_-JB33`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=dropdown.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.module.mjs","names":[],"sources":["../../../../package/common/dropdown/dropdown.module.pcss"],"sourcesContent":["\n.required-mark {\n padding: 0px 0px 0px 4px;\n color: var(--error-font-color);\n}\n\n.dropdown {\n position: relative;\n\n &-label {\n display: flex;\n\n &-column {\n flex-direction: column;\n }\n\n &-text {\n white-space: nowrap;\n margin-right: 5px;\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n color: var(--text-color);\n font-size: 12px;\n position: absolute;\n top: -15px;\n }\n }\n\n &-input {\n position: relative;\n cursor: pointer;\n background-color: var(--input-background);\n border-radius: var(--default-border-radius);\n\n &-plain {\n background: transparent;\n }\n\n &:focus-within {\n outline: none;\n }\n\n &-button {\n padding: 7px 20% 7px 7.5px !important;\n background-color: transparent;\n border: none;\n font-family: inherit;\n font-size: inherit;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n text-align: left;\n width: 100%;\n line-height: 1.25;\n color: var(--text-color);\n\n &-disabled {\n background-color: var(--disabled-input-color);\n color: var(--disabled-font-color);\n border-radius: var(--default-border-radius);\n }\n\n &:focus {\n outline: none;\n }\n\n &-icon {\n float: right;\n background-color: transparent;\n border: none;\n position: absolute;\n outline: none;\n right: var(--spacing-s);\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-color);\n cursor: pointer;\n\n &-arrow {\n transition: transform 0.25s;\n pointer-events: none;\n\n &-open {\n transform: rotate(180deg);\n }\n }\n }\n }\n\n &-list-anim {\n position: fixed;\n z-index: 1;\n color: var(--text-color);\n background: var(--background-modal);\n box-shadow: var(--card-shadow);\n border-radius: var(--default-border-radius);\n overflow: hidden;\n transform: scaleY(1);\n transition: transform 0.25s;\n transform-origin: right top;\n\n &-flip {\n transform-origin: right bottom;\n }\n\n &-wider {\n width: max-content !important;\n }\n }\n\n &-list {\n width: 100%;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n max-height: 160px;\n list-style-type: none;\n\n &-item {\n border: none;\n cursor: pointer;\n background-color: var(--background-modal);\n padding: 8px;\n text-align: left;\n border-radius: 0;\n transition: all 0.3s;\n\n &-active {\n background-color: var(--background-accent);\n }\n\n &-selected {\n font-weight: 500;\n }\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n background-color: var(--background-accent);\n }\n\n &-disabled {\n background-color: var(--disabled-input-color);\n color: var(--disabled-font-color);\n cursor: not-allowed;\n\n &:hover {\n background-color: var(--disabled-input-color);\n }\n }\n }\n\n &-hidden {\n transform: scaleY(0);\n }\n }\n }\n\n &-fieldset {\n position: absolute;\n width: 100%;\n margin: 0;\n box-sizing: border-box;\n border-radius: var(--default-border-radius);\n inset: -10px 0 0 0;\n padding-left: 8px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--border-color);\n pointer-events: none;\n user-select: none;\n\n &-legend {\n display: block;\n max-width: 0;\n transition: max-width 0.2s;\n white-space: nowrap;\n padding: 0;\n\n &-active {\n max-width: 300px;\n }\n\n span {\n font-size: 13px;\n padding: 5px;\n opacity: 0;\n }\n\n /* With an empty label the span would still reserve its padding, leaving a gap in\n the fieldset's top border. Collapse it so the notch closes when there's no label. */\n span:empty {\n padding: 0.000001px;\n }\n }\n }\n\n &-placeholder {\n position: absolute;\n top: 8px;\n left: 7px;\n transition: all 0.2s;\n opacity: 0;\n\n &-shown {\n animation: 0.2s fadeIn 0.3s forwards;\n }\n }\n\n &-matLabel {\n position: absolute;\n transition: all 0.3s;\n inset: 9px 0 0 7px;\n font-size: 16px;\n pointer-events: none;\n user-select: none;\n\n &-floating {\n inset: -9px 0 0 14px;\n font-size: 13px;\n }\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 0.5;\n }\n }\n\n &-border {\n outline: 1px solid var(--border-color);\n transition: border-color;\n background-color: var(--input-background);\n outline: none;\n\n &-focused {\n outline-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n\n &-searchFocused {\n outline-color: var(--search-input-color);\n outline-width: 2px;\n border-color: var(--search-input-color);\n }\n\n &-plain {\n border-color: transparent;\n outline-color: transparent;\n }\n\n &-invalid {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-invalid:hover {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n\n &-error {\n outline-color: var(--error-border-color);\n border-color: var(--error-border-color);\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./emptyState.module.mjs";import t from"classnames";import{FontAwesomeIcon as n}from"@fortawesome/react-fontawesome";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({className:a,icon:o,children:s,...c}){return i(`div`,{...c,className:t(e.emptyState,a),children:[o&&r(n,{icon:o}),r(`div`,{children:s??`No entries available`})]})}export{a as default};
|
|
2
|
+
//# sourceMappingURL=emptyState.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emptyState.mjs","names":[],"sources":["../../../../package/common/emptyState/emptyState.tsx"],"sourcesContent":["import cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { ReactElement } from 'react';\nimport type { EmptyStateProps } from './emptyState.types';\nimport styles from './emptyState.module.pcss';\n\nexport default function EmptyState({ className, icon, children, ...rest }: EmptyStateProps): ReactElement {\n return (\n <div {...rest} className={cx(styles.emptyState, className)}>\n {icon && <FontAwesomeIcon icon={icon} />}\n <div>{children ?? 'No entries available'}</div>\n </div>\n );\n}\n"],"mappings":"oLAMA,SAAwB,EAAW,CAAE,YAAW,OAAM,WAAU,GAAG,GAAuC,CACxG,OACE,EAAC,MAAD,CAAK,GAAI,EAAM,UAAW,EAAG,EAAO,WAAY,CAAS,WAAzD,CACG,GAAQ,EAAC,EAAD,CAAuB,MAAO,CAAA,EACvC,EAAC,MAAD,CAAA,SAAM,GAAY,sBAA4B,CAAA,CAC3C,GAET"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emptyState.module.mjs","names":[],"sources":["../../../../package/common/emptyState/emptyState.module.pcss"],"sourcesContent":[".emptyState {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-flow: column;\n gap: var(--spacing-m);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ButtonStyleType as e}from"../../../button/button.types.mjs";import t from"../../../button/button.mjs";import n from"./fabBase.module.mjs";import r from"classnames";import{jsx as i}from"react/jsx-runtime";var a={default:null,mini:n.fabSizeMini};function o({children:o=null,size:s=`default`,className:c=``,styleType:l=e.Primary,onClick:u=()=>{}}){return i(t,{styleType:l,className:r(n.fab,a[s],c),onClick:u,children:i(`div`,{className:n.fabContentContainer,children:i(`div`,{className:n.fabContent,children:o})})})}export{o as default};
|
|
2
|
+
//# sourceMappingURL=fabBase.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fabBase.mjs","names":[],"sources":["../../../../../../package/common/fab/components/fabBase/fabBase.tsx"],"sourcesContent":["import cx from 'classnames';\n\nimport Button from 'components/common/button';\nimport { ButtonStyleType } from 'components/common/button/button.types';\nimport type { FabBaseProps, FabBaseSize } from './fabBase.types';\n\nimport styles from './fabBase.module.pcss';\n\nconst sizeClass: Record<FabBaseSize, string | null> = {\n default: null,\n mini: styles.fabSizeMini,\n};\n\nfunction FabBase({\n children = null,\n size = 'default',\n className = '',\n styleType = ButtonStyleType.Primary,\n onClick = () => {},\n}: FabBaseProps) {\n return (\n <Button\n styleType={styleType}\n className={cx(styles.fab, sizeClass[size], className)}\n onClick={onClick}\n >\n <div className={styles.fabContentContainer}>\n <div className={styles.fabContent}>{children}</div>\n </div>\n </Button>\n );\n}\n\nexport default FabBase;\n"],"mappings":"mNAQA,IAAM,EAAgD,CACpD,QAAS,KACT,KAAM,EAAO,WACf,EAEA,SAAS,EAAQ,CACf,WAAW,KACX,OAAO,UACP,YAAY,GACZ,YAAY,EAAgB,QAC5B,cAAgB,CAAC,GACF,CACf,OACE,EAAC,EAAD,CACa,YACX,UAAW,EAAG,EAAO,IAAK,EAAU,GAAO,CAAS,EAC3C,mBAET,EAAC,MAAD,CAAK,UAAW,EAAO,6BACrB,EAAC,MAAD,CAAK,UAAW,EAAO,WAAa,UAAc,CAAA,CAC/C,CAAA,CACC,CAAA,CAEZ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={fab:`fab_hyAAa`,"fab-content":`fab-content_IBiXm`,fabContent:`fab-content_IBiXm`,"fab-content-container":`fab-content-container_FQD1x`,fabContentContainer:`fab-content-container_FQD1x`,"fab-size-mini":`fab-size-mini_KP9BD`,fabSizeMini:`fab-size-mini_KP9BD`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=fabBase.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fabBase.module.mjs","names":[],"sources":["../../../../../../package/common/fab/components/fabBase/fabBase.module.pcss"],"sourcesContent":[".fab {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n display: flex;\n align-items: stretch;\n padding: 0;\n\n --icon-size: 18px;\n\n /* Make the Ripple wrapper fill the full circular button */\n & > div {\n width: 100%;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n &-content {\n font-size: var(--icon-size);\n width: var(--icon-size);\n height: var(--icon-size);\n\n svg {\n width: var(--icon-size);\n height: var(--icon-size);\n }\n\n &-container {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n &-size {\n &-mini {\n width: 40px;\n height: 40px;\n background: var(--background-accent-light);\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"./components/fabBase/fabBase.mjs";import t from"./fab.module.mjs";import{useState as n}from"react";import r from"classnames";import{FontAwesomeIcon as i}from"@fortawesome/react-fontawesome";import{faPlus as a}from"@fortawesome/free-solid-svg-icons";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c({children:c=null,size:l=`default`,menuEntries:u=[],onMenuEntryClicked:d=()=>{},onClick:f=()=>{},closeMenuOnEntryClicked:p=!0,...m}){let[h,g]=n(!1);function _(){u.length>0&&g(e=>!e),f()}function v(e,t){e.stopPropagation(),p&&g(!1),d(t)}return s(`div`,{...m,className:t.fabContainer,children:[o(`div`,{className:r(t.fabMenuBackdrop,h&&t.fabMenuBackdropOpen),onClick:e=>{e.stopPropagation(),g(!1)}}),o(`div`,{onClick:e=>e.stopPropagation(),children:o(e,{className:t.fab,size:l,onClick:_,children:s(`div`,{className:r(t.fabIcon,h&&t.fabIconMenuOpen),children:[o(`div`,{className:r(t.fabIconContent,!h&&t.fabIconContentShown),children:c}),o(`div`,{className:r(t.fabIconContent,h&&t.fabIconContentShown),children:o(i,{icon:a})})]})})}),o(`div`,{className:t.fabMenu,children:u.map(({id:n,label:a,icon:c})=>s(`div`,{className:r(t.fabMenuEntry,h&&t.fabMenuEntryShown),onClick:e=>v(e,n),children:[a&&o(`div`,{className:t.fabMenuEntryLabelContainer,children:o(`div`,{className:t.fabMenuEntryLabel,children:a})}),o(e,{size:`mini`,children:o(i,{icon:c})})]},n))})]})}export{c as default};
|
|
2
|
+
//# sourceMappingURL=fab.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab.mjs","names":[],"sources":["../../../../package/common/fab/fab.tsx"],"sourcesContent":["import { useState } from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlus as addIcon } from '@fortawesome/free-solid-svg-icons';\n\nimport FabBase from './components/fabBase';\nimport type { FabProps } from './fab.types';\n\nimport styles from './fab.module.pcss';\n\nfunction Fab({\n children = null,\n size = 'default',\n menuEntries = [],\n onMenuEntryClicked = () => {},\n onClick = () => {},\n closeMenuOnEntryClicked = true,\n ...rest\n}: FabProps) {\n const [menuOpen, setMenuOpen] = useState(false);\n\n function handleFabClick() {\n if (menuEntries.length > 0) setMenuOpen((prev) => !prev);\n onClick();\n }\n\n function handleEntryClick(e: React.MouseEvent, id: string) {\n e.stopPropagation();\n if (closeMenuOnEntryClicked) setMenuOpen(false);\n onMenuEntryClicked(id);\n }\n\n return (\n <div {...rest} className={styles.fabContainer}>\n <div\n className={cx(styles.fabMenuBackdrop, menuOpen && styles.fabMenuBackdropOpen)}\n onClick={(e) => { e.stopPropagation(); setMenuOpen(false); }}\n />\n <div onClick={(e) => e.stopPropagation()}>\n <FabBase className={styles.fab} size={size} onClick={handleFabClick}>\n <div className={cx(styles.fabIcon, menuOpen && styles.fabIconMenuOpen)}>\n <div className={cx(styles.fabIconContent, !menuOpen && styles.fabIconContentShown)}>\n {children}\n </div>\n <div className={cx(styles.fabIconContent, menuOpen && styles.fabIconContentShown)}>\n <FontAwesomeIcon icon={addIcon} />\n </div>\n </div>\n </FabBase>\n </div>\n <div className={styles.fabMenu}>\n {menuEntries.map(({ id, label, icon }) => (\n <div\n key={id}\n className={cx(styles.fabMenuEntry, menuOpen && styles.fabMenuEntryShown)}\n onClick={(e) => handleEntryClick(e, id)}\n >\n {label && (\n <div className={styles.fabMenuEntryLabelContainer}>\n <div className={styles.fabMenuEntryLabel}>{label}</div>\n </div>\n )}\n <FabBase size=\"mini\">\n <FontAwesomeIcon icon={icon} />\n </FabBase>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport default Fab;\n"],"mappings":"yTAUA,SAAS,EAAI,CACX,WAAW,KACX,OAAO,UACP,cAAc,CAAC,EACf,yBAA2B,CAAC,EAC5B,cAAgB,CAAC,EACjB,0BAA0B,GAC1B,GAAG,GACQ,CACX,GAAM,CAAC,EAAU,GAAe,EAAS,EAAK,EAE9C,SAAS,GAAiB,CACpB,EAAY,OAAS,GAAG,EAAa,GAAS,CAAC,CAAI,EACvD,EAAQ,CACV,CAEA,SAAS,EAAiB,EAAqB,EAAY,CACzD,EAAE,gBAAgB,EACd,GAAyB,EAAY,EAAK,EAC9C,EAAmB,CAAE,CACvB,CAEA,OACE,EAAC,MAAD,CAAK,GAAI,EAAM,UAAW,EAAO,sBAAjC,CACE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,gBAAiB,GAAY,EAAO,mBAAmB,EAC5E,QAAU,GAAM,CAAE,EAAE,gBAAgB,EAAG,EAAY,EAAK,CAAG,CAC5D,CAAA,EACD,EAAC,MAAD,CAAK,QAAU,GAAM,EAAE,gBAAgB,WACrC,EAAC,EAAD,CAAS,UAAW,EAAO,IAAW,OAAM,QAAS,WACnD,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,QAAS,GAAY,EAAO,eAAe,WAArE,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,eAAgB,CAAC,GAAY,EAAO,mBAAmB,EAC9E,UACE,CAAA,EACL,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,eAAgB,GAAY,EAAO,mBAAmB,WAC9E,EAAC,EAAD,CAAiB,KAAM,CAAU,CAAA,CAC9B,CAAA,CACF,GACE,CAAA,CACN,CAAA,EACL,EAAC,MAAD,CAAK,UAAW,EAAO,iBACpB,EAAY,KAAK,CAAE,KAAI,QAAO,UAC7B,EAAC,MAAD,CAEE,UAAW,EAAG,EAAO,aAAc,GAAY,EAAO,iBAAiB,EACvE,QAAU,GAAM,EAAiB,EAAG,CAAE,WAHxC,CAKG,GACC,EAAC,MAAD,CAAK,UAAW,EAAO,oCACrB,EAAC,MAAD,CAAK,UAAW,EAAO,2BAAoB,CAAW,CAAA,CACnD,CAAA,EAEP,EAAC,EAAD,CAAS,KAAK,gBACZ,EAAC,EAAD,CAAuB,MAAO,CAAA,CACvB,CAAA,CACN,GAZE,CAYF,CACN,CACE,CAAA,CACF,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={fab:`fab_YI34X`,appear:`appear_DL0wm`,"fab-container":`fab-container_8uoYo`,fabContainer:`fab-container_8uoYo`,"fab-menu":`fab-menu_O1WO9`,fabMenu:`fab-menu_O1WO9`,"fab-menu-backdrop":`fab-menu-backdrop_m9T6a`,fabMenuBackdrop:`fab-menu-backdrop_m9T6a`,"fab-menu-backdrop-open":`fab-menu-backdrop-open_35mlH`,fabMenuBackdropOpen:`fab-menu-backdrop-open_35mlH`,"fab-menu-entry":`fab-menu-entry_rIgXr`,fabMenuEntry:`fab-menu-entry_rIgXr`,"fab-menu-entry-shown":`fab-menu-entry-shown_066HC`,fabMenuEntryShown:`fab-menu-entry-shown_066HC`,"fab-menu-entry-label":`fab-menu-entry-label_pXdDf`,fabMenuEntryLabel:`fab-menu-entry-label_pXdDf`,"fab-menu-entry-label-container":`fab-menu-entry-label-container_oeKI5`,fabMenuEntryLabelContainer:`fab-menu-entry-label-container_oeKI5`,"fab-icon":`fab-icon_5Fp-6`,fabIcon:`fab-icon_5Fp-6`,"fab-icon-menuOpen":`fab-icon-menuOpen_Jp8Qb`,fabIconMenuOpen:`fab-icon-menuOpen_Jp8Qb`,"fab-icon-content":`fab-icon-content_o0VDx`,fabIconContent:`fab-icon-content_o0VDx`,"fab-icon-content-shown":`fab-icon-content-shown_oY19H`,fabIconContentShown:`fab-icon-content-shown_oY19H`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=fab.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fab.module.mjs","names":[],"sources":["../../../../package/common/fab/fab.module.pcss"],"sourcesContent":["\n.fab {\n animation: appear 0.3s forwards;\n opacity: 0;\n transform: scale(0);\n box-shadow:\n 0px 3px 5px -1px rgb(0 0 0 / 20%),\n 0px 6px 10px 0px rgb(0 0 0 / 14%),\n 0px 1px 18px 0px rgb(0 0 0 / 12%);\n border-radius: 50%;\n\n &-container {\n position: fixed;\n bottom: 16px;\n right: 16px;\n\n @media (--breakpoint-tablet) {\n z-index: 2;\n }\n }\n\n &-menu {\n position: absolute;\n top: 0;\n transform: translateY(calc(-100% - 16px));\n width: 100%;\n display: flex;\n flex-flow: column-reverse;\n gap: 16px;\n align-items: center;\n pointer-events: none;\n user-select: none;\n\n &-backdrop {\n width: 0%;\n height: 0%;\n position: fixed;\n top: 0;\n left: 0;\n background: black;\n opacity: 0;\n transition: opacity 0.4s;\n\n &-open {\n width: 100%;\n height: 100%;\n opacity: 0.5;\n }\n }\n\n &-entry {\n position: relative;\n cursor: pointer;\n opacity: 0;\n transform: scale(0);\n transition: all 0.2s;\n pointer-events: all;\n\n &:nth-child(2) {\n transition-delay: 0.05s;\n }\n\n &:nth-child(3) {\n transition-delay: 0.1s;\n }\n\n &:nth-child(4) {\n transition-delay: 0.15s;\n }\n\n &:nth-child(5) {\n transition-delay: 0.2s;\n }\n\n &:nth-child(6) {\n transition-delay: 0.25s;\n }\n\n &:nth-child(7) {\n transition-delay: 0.3s;\n }\n\n &-shown {\n opacity: 1;\n transform: scale(1);\n }\n\n &-label {\n background: var(--background-accent-light);\n border-radius: var(--default-border-radius);\n padding: 4px 8px;\n\n &-container {\n position: absolute;\n width: max-content;\n transform: translateX(-100%);\n height: 100%;\n margin-left: -8px;\n align-items: center;\n display: flex;\n }\n }\n }\n }\n\n &-icon {\n transition: all 0.4s;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 100%;\n\n &-menuOpen {\n transform: rotate(225deg);\n }\n\n &-content {\n position: absolute;\n width: 18px;\n height: 18px;\n opacity: 0;\n transition: opacity 0.3s;\n\n &-shown {\n opacity: 1;\n }\n }\n }\n\n @keyframes appear {\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../bodyEnd/bodyEnd.mjs";import t from"./floatingMenu.module.mjs";import{useFloatingPosition as n}from"./useFloatingPosition.mjs";import{Align as r}from"./floatingMenu.types.mjs";import{useEffect as i,useRef as a,useState as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";function u(e){return e.charAt(0).toUpperCase()+e.slice(1)}function d({align:d=r.Left,children:f=null,content:p=null,isOpen:m=!1,onOpenChange:h=()=>{},dontCloseOnChildClick:g=!1,className:_,style:v,classNames:y,styles:b,...x}){let S=a(null),C=a(null),w=a(null),T=a(h),[E,D]=o(10);i(()=>{T.current=h});function O(){if(!m){let e=w.current?.getBoundingClientRect();D(e?.width??10),h(!0)}}return n({isOpen:m,triggerRef:w,anchorRef:C,panelRef:S,flipClassName:t.floatingMenuAnimFlip}),i(()=>{if(!m)return;function e(e){let t=S.current,n=w.current;if(!t||!n)return;let r=t===e.target||t.contains(e.target),i=g&&(n===e.target||n.contains(e.target));!r&&!i&&T.current(!1)}return window.addEventListener(`mouseup`,e),()=>window.removeEventListener(`mouseup`,e)},[m,g]),l(`div`,{...x,className:s(t.floatingMenu,_,y?.root),style:{...v,...b?.root},children:[c(`div`,{className:s(t.floatingMenuContent,y?.trigger),style:b?.trigger,ref:w,onClick:O,children:f}),m&&c(e,{children:l(`div`,{ref:C,className:s(t.floatingMenuAnim,y?.menu),style:{width:`${E}px`,...b?.menu},children:[c(`div`,{className:s(t.floatingMenuContainerFlag,t[`floatingMenuContainerFlagAlign${u(d)}`])}),c(`div`,{ref:S,className:s(t.floatingMenuContainer,t[`floatingMenuContainerAlign${u(d)}`],y?.menuContainer),style:b?.menuContainer,children:p})]})})]})}export{d as default};
|
|
2
|
+
//# sourceMappingURL=floatingMenu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floatingMenu.mjs","names":[],"sources":["../../../../package/common/floatingMenu/floatingMenu.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\nimport cx from 'classnames';\nimport BodyEnd from 'components/common/bodyEnd';\n\nimport styles from './floatingMenu.module.pcss';\nimport { useFloatingPosition } from './useFloatingPosition';\nimport { Align, FloatingMenuProps } from './floatingMenu.types';\n\nfunction capitalize(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nfunction FloatingMenu({\n align = Align.Left,\n children = null,\n content = null,\n isOpen = false,\n onOpenChange = () => {},\n dontCloseOnChildClick = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: FloatingMenuProps) {\n const menuContainerRef = useRef<HTMLDivElement>(null);\n const menuAnimRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const onOpenChangeRef = useRef(onOpenChange);\n const [triggerWidth, setTriggerWidth] = useState(10);\n\n useEffect(() => { onOpenChangeRef.current = onOpenChange; });\n\n function handleTriggerClick() {\n if (!isOpen) {\n const rect = triggerRef.current?.getBoundingClientRect();\n setTriggerWidth(rect?.width ?? 10);\n onOpenChange(true);\n }\n }\n\n useFloatingPosition({\n isOpen,\n triggerRef,\n anchorRef: menuAnimRef,\n panelRef: menuContainerRef,\n flipClassName: styles.floatingMenuAnimFlip,\n });\n\n useEffect(() => {\n if (!isOpen) return;\n\n function onMouseUp(event: MouseEvent) {\n const menuElem = menuContainerRef.current;\n const triggerElem = triggerRef.current;\n if (!menuElem || !triggerElem) return;\n\n const menuClicked = menuElem === event.target || menuElem.contains(event.target as Node);\n const triggerClicked = dontCloseOnChildClick &&\n (triggerElem === event.target || triggerElem.contains(event.target as Node));\n\n if (!menuClicked && !triggerClicked) {\n onOpenChangeRef.current(false);\n }\n }\n\n window.addEventListener('mouseup', onMouseUp);\n return () => window.removeEventListener('mouseup', onMouseUp);\n }, [isOpen, dontCloseOnChildClick]);\n\n return (\n <div {...rest} className={cx(styles.floatingMenu, className, classNames?.root)} style={{ ...style, ...slotStyles?.root }}>\n <div\n className={cx(styles.floatingMenuContent, classNames?.trigger)}\n style={slotStyles?.trigger}\n ref={triggerRef}\n onClick={handleTriggerClick}\n >\n {children}\n </div>\n {isOpen && (\n <BodyEnd>\n <div\n ref={menuAnimRef}\n className={cx(styles.floatingMenuAnim, classNames?.menu)}\n style={{\n width: `${triggerWidth}px`,\n ...slotStyles?.menu,\n }}\n >\n <div className={cx(\n styles.floatingMenuContainerFlag,\n styles[`floatingMenuContainerFlagAlign${capitalize(align)}`],\n )} />\n <div\n ref={menuContainerRef}\n className={cx(\n styles.floatingMenuContainer,\n styles[`floatingMenuContainerAlign${capitalize(align)}`],\n classNames?.menuContainer,\n )}\n style={slotStyles?.menuContainer}\n >\n {content}\n </div>\n </div>\n </BodyEnd>\n )}\n </div>\n );\n}\n\nexport default FloatingMenu;\n"],"mappings":"wUAQA,SAAS,EAAW,EAAW,CAC7B,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,EAAI,EAAE,MAAM,CAAC,CAC9C,CAEA,SAAS,EAAa,CACpB,QAAQ,EAAM,KACd,WAAW,KACX,UAAU,KACV,SAAS,GACT,mBAAqB,CAAC,EACtB,wBAAwB,GACxB,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACiB,CACpB,IAAM,EAAmB,EAAuB,IAAI,EAC9C,EAAc,EAAuB,IAAI,EACzC,EAAa,EAAuB,IAAI,EACxC,EAAkB,EAAO,CAAY,EACrC,CAAC,EAAc,GAAmB,EAAS,EAAE,EAEnD,MAAgB,CAAE,EAAgB,QAAU,CAAc,CAAC,EAE3D,SAAS,GAAqB,CAC5B,GAAI,CAAC,EAAQ,CACX,IAAM,EAAO,EAAW,SAAS,sBAAsB,EACvD,EAAgB,GAAM,OAAS,EAAE,EACjC,EAAa,EAAI,CACnB,CACF,CA+BA,OA7BA,EAAoB,CAClB,SACA,aACA,UAAW,EACX,SAAU,EACV,cAAe,EAAO,oBACxB,CAAC,EAED,MAAgB,CACd,GAAI,CAAC,EAAQ,OAEb,SAAS,EAAU,EAAmB,CACpC,IAAM,EAAW,EAAiB,QAC5B,EAAc,EAAW,QAC/B,GAAI,CAAC,GAAY,CAAC,EAAa,OAE/B,IAAM,EAAc,IAAa,EAAM,QAAU,EAAS,SAAS,EAAM,MAAc,EACjF,EAAiB,IACpB,IAAgB,EAAM,QAAU,EAAY,SAAS,EAAM,MAAc,GAExE,CAAC,GAAe,CAAC,GACnB,EAAgB,QAAQ,EAAK,CAEjC,CAGA,OADA,OAAO,iBAAiB,UAAW,CAAS,MAC/B,OAAO,oBAAoB,UAAW,CAAS,CAC9D,EAAG,CAAC,EAAQ,CAAqB,CAAC,EAGhC,EAAC,MAAD,CAAK,GAAI,EAAM,UAAW,EAAG,EAAO,aAAc,EAAW,GAAY,IAAI,EAAG,MAAO,CAAE,GAAG,EAAO,GAAG,GAAY,IAAK,WAAvH,CACE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,oBAAqB,GAAY,OAAO,EAC7D,MAAO,GAAY,QACnB,IAAK,EACL,QAAS,EAER,UACE,CAAA,EACJ,GACC,EAAC,EAAD,CAAA,SACE,EAAC,MAAD,CACE,IAAK,EACL,UAAW,EAAG,EAAO,iBAAkB,GAAY,IAAI,EACvD,MAAO,CACL,MAAO,GAAG,EAAa,IACvB,GAAG,GAAY,IACjB,WANF,CAQE,EAAC,MAAD,CAAK,UAAW,EACd,EAAO,0BACP,EAAO,iCAAiC,EAAW,CAAK,IAC1D,CAAI,CAAA,EACJ,EAAC,MAAD,CACE,IAAK,EACL,UAAW,EACT,EAAO,sBACP,EAAO,6BAA6B,EAAW,CAAK,KACpD,GAAY,aACd,EACA,MAAO,GAAY,uBAElB,CACE,CAAA,CACF,GACE,CAAA,CAER,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={floatingMenu:`floatingMenu_E1XCy`,"floatingMenu-content":`floatingMenu-content_AmxkA`,floatingMenuContent:`floatingMenu-content_AmxkA`,"floatingMenu-container":`floatingMenu-container_w7k-Y`,floatingMenuContainer:`floatingMenu-container_w7k-Y`,"floatingMenu-anim-flip":`floatingMenu-anim-flip_a4-Ri`,floatingMenuAnimFlip:`floatingMenu-anim-flip_a4-Ri`,"floatingMenu-container-align-left":`floatingMenu-container-align-left_InKnZ`,floatingMenuContainerAlignLeft:`floatingMenu-container-align-left_InKnZ`,"floatingMenu-container-align-right":`floatingMenu-container-align-right_a9OoS`,floatingMenuContainerAlignRight:`floatingMenu-container-align-right_a9OoS`,"floatingMenu-container-align-center":`floatingMenu-container-align-center_-8bGT`,floatingMenuContainerAlignCenter:`floatingMenu-container-align-center_-8bGT`,"floatingMenu-container-flag":`floatingMenu-container-flag_VdKHr`,floatingMenuContainerFlag:`floatingMenu-container-flag_VdKHr`,"floatingMenu-container-flag-align-right":`floatingMenu-container-flag-align-right_vxrRN`,floatingMenuContainerFlagAlignRight:`floatingMenu-container-flag-align-right_vxrRN`,"floatingMenu-container-flag-align-left":`floatingMenu-container-flag-align-left_a2Vv-`,floatingMenuContainerFlagAlignLeft:`floatingMenu-container-flag-align-left_a2Vv-`,"floatingMenu-container-flag-align-center":`floatingMenu-container-flag-align-center_SmaaY`,floatingMenuContainerFlagAlignCenter:`floatingMenu-container-flag-align-center_SmaaY`,"floatingMenu-anim":`floatingMenu-anim_5KB-f`,floatingMenuAnim:`floatingMenu-anim_5KB-f`,showMenu:`showMenu_AprCh`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=floatingMenu.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floatingMenu.module.mjs","names":[],"sources":["../../../../package/common/floatingMenu/floatingMenu.module.pcss"],"sourcesContent":[".floatingMenu {\n position: relative;\n\n &-content {\n cursor: pointer;\n }\n\n &-container {\n color: var(--text-color);\n box-shadow: var(--card-shadow);\n position: absolute;\n margin-top: 10px;\n background: var(--background-modal);\n padding: 8px;\n border-radius: calc(var(--default-border-radius) + 4px);\n\n .floatingMenu-anim-flip & {\n top: auto;\n bottom: 0;\n margin-top: 0;\n margin-bottom: 10px;\n }\n\n &-align {\n &-left {\n left: 0px;\n }\n\n &-right {\n right: 0px;\n }\n\n &-center {\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &-flag {\n box-shadow: var(--card-shadow);\n background: var(--background-modal);\n height: 10px;\n width: 10px;\n position: absolute;\n margin-top: 5px;\n transform: rotate(45deg);\n\n .floatingMenu-anim-flip & {\n top: auto;\n bottom: 0;\n margin-top: 0;\n margin-bottom: 5px;\n }\n\n &-align-right {\n right: 8px;\n }\n\n &-align-left {\n left: 8px;\n }\n\n &-align-center {\n left: 50%;\n transform: translateX(-50%) rotate(45deg);\n }\n }\n }\n\n &-anim {\n transform: scale(0.7);\n opacity: 0.7;\n animation: showMenu 0.1s forwards;\n position: fixed;\n z-index: 1;\n }\n\n @keyframes showMenu {\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floatingMenu.types.mjs","names":[],"sources":["../../../../package/common/floatingMenu/floatingMenu.types.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from \"react\";\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum Align {\n Left = 'left',\n Right = 'right',\n Center = 'center',\n}\n\nexport type FloatingMenuSlots = 'root' | 'trigger' | 'menu' | 'menuContainer';\n\nexport interface FloatingMenuProps extends HtmlProps {\n align?: Align;\n children?: ReactNode;\n content?: ReactNode;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n dontCloseOnChildClick?: boolean;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<FloatingMenuSlots>;\n styles?: SlotStyles<FloatingMenuSlots>;\n}"],"mappings":"AAGA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,OAAA,UACF,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useLayoutEffect as e}from"react";function t(e){let t=[],n=e.parentElement;for(;n&&n!==document.body&&n!==document.documentElement;){let e=getComputedStyle(n);(e.overflowX!==`visible`||e.overflowY!==`visible`)&&t.push(n),n=n.parentElement}return t}function n(e,t){return t.some(t=>{let n=t.getBoundingClientRect();return e.bottom<=n.top||e.top>=n.bottom||e.right<=n.left||e.left>=n.right})}function r({isOpen:r,triggerRef:i,anchorRef:a,panelRef:o,flipClassName:s,placement:c=`bottom`}){e(()=>{if(!r)return;let e,l;function u(){let r=i.current,d=a.current;if(!r||!d){e=requestAnimationFrame(u);return}let f=t(r);function p(){let e=r.getBoundingClientRect(),t=o.current?.offsetHeight??0,i=window.innerHeight-e.bottom,a=e.top,l=c===`top`?a:i,u=l<t&&(c===`top`?i:a)>l,p=c===`top`?!u:u;d.classList.toggle(s,u),d.style.top=`${p?e.top-d.offsetHeight:e.bottom}px`,d.style.left=`${e.left}px`,d.style.visibility=n(e,f)?`hidden`:``}p();let m=[window,...f];m.forEach(e=>e.addEventListener(`scroll`,p,{passive:!0})),window.addEventListener(`resize`,p),l=()=>{m.forEach(e=>e.removeEventListener(`scroll`,p)),window.removeEventListener(`resize`,p)}}return u(),()=>{e!==void 0&&cancelAnimationFrame(e),l?.()}},[r,i,a,o,s,c])}export{r as useFloatingPosition};
|
|
2
|
+
//# sourceMappingURL=useFloatingPosition.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFloatingPosition.mjs","names":[],"sources":["../../../../package/common/floatingMenu/useFloatingPosition.ts"],"sourcesContent":["import { useLayoutEffect, type RefObject } from 'react';\n\n// Scrollable ancestors up to (not including) <body> — computed once per open, not on\n// every scroll tick, since walking the tree and reading computed style forces layout\n// and is too expensive to repeat at scroll frequency (this is what Floating UI's\n// autoUpdate does too: it resolves the ancestor list once via getOverflowAncestors).\n// Plain page/viewport scroll deliberately isn't included: a trigger that scrolls off\n// the top of the page already renders its fixed-position anchor off-screen for free.\nfunction getScrollableAncestors(el: HTMLElement): HTMLElement[] {\n const ancestors: HTMLElement[] = [];\n let node = el.parentElement;\n while (node && node !== document.body && node !== document.documentElement) {\n const style = getComputedStyle(node);\n if (style.overflowX !== 'visible' || style.overflowY !== 'visible') ancestors.push(node);\n node = node.parentElement;\n }\n return ancestors;\n}\n\nfunction isHiddenByAnyAncestor(rect: DOMRect, ancestors: HTMLElement[]) {\n return ancestors.some((ancestor) => {\n const a = ancestor.getBoundingClientRect();\n return rect.bottom <= a.top || rect.top >= a.bottom || rect.right <= a.left || rect.left >= a.right;\n });\n}\n\nexport interface UseFloatingPositionArgs {\n isOpen: boolean;\n /** The element the popup is anchored to. */\n triggerRef: RefObject<HTMLElement | null>;\n /** The `position: fixed` element that gets `top`/`left`/`visibility` written to it directly. */\n anchorRef: RefObject<HTMLElement | null>;\n /** The visible panel whose height decides whether there's room to render on the preferred side. */\n panelRef: RefObject<HTMLElement | null>;\n /** Class toggled on `anchorRef` when flipped to the non-preferred side. */\n flipClassName: string;\n /** Preferred side relative to the trigger (default `'bottom'`) — flips to the other side when there's no room. */\n placement?: 'top' | 'bottom';\n}\n\n/**\n * Keeps a portaled, `position: fixed` popup anchored to a trigger element: tracks the\n * trigger across scroll/resize on every real scrolling ancestor, flips above the trigger\n * when there's no room below, and hides (not closes) the popup when the trigger itself\n * scrolls behind a clipping ancestor — matching Floating UI's autoUpdate + hide middleware.\n *\n * Position/visibility are written straight to the DOM via refs, not through React state:\n * going through setState -> re-render -> commit adds a round-trip that lags behind the\n * browser's own scroll painting by at least a frame.\n */\nexport function useFloatingPosition({ isOpen, triggerRef, anchorRef, panelRef, flipClassName, placement = 'bottom' }: UseFloatingPositionArgs) {\n useLayoutEffect(() => {\n if (!isOpen) return;\n\n let rafId: number | undefined;\n let teardown: (() => void) | undefined;\n\n // The anchor/trigger may not be mounted yet on the very first invocation of this\n // effect: a portal target (e.g. BodyEnd's `#bodyEnd` div) can still be missing on\n // the initial render, in which case the portaled content — and this ref — commits\n // one render later. Since refs never change identity, that later commit doesn't\n // re-trigger this effect on its own, so retry on the next frame until it's there.\n function trySetup() {\n const trigger = triggerRef.current;\n const anchor = anchorRef.current;\n if (!trigger || !anchor) {\n rafId = requestAnimationFrame(trySetup);\n return;\n }\n const ancestors = getScrollableAncestors(trigger);\n\n function updatePos() {\n const rect = trigger!.getBoundingClientRect();\n const panelHeight = panelRef.current?.offsetHeight ?? 0;\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const preferredSpace = placement === 'top' ? spaceAbove : spaceBelow;\n const alternateSpace = placement === 'top' ? spaceBelow : spaceAbove;\n const flip = preferredSpace < panelHeight && alternateSpace > preferredSpace;\n const renderAbove = placement === 'top' ? !flip : flip;\n anchor!.classList.toggle(flipClassName, flip);\n // Shift up by the anchor's own height when rendering above, so this works whether\n // the anchor is a zero-height decorative wrapper (FloatingMenu, whose real panel\n // hangs off it via absolute-positioned CSS) or the visible panel itself\n // (Dropdown) — for the former the shift is a no-op (height 0).\n anchor!.style.top = `${renderAbove ? rect.top - anchor!.offsetHeight : rect.bottom}px`;\n anchor!.style.left = `${rect.left}px`;\n anchor!.style.visibility = isHiddenByAnyAncestor(rect, ancestors) ? 'hidden' : '';\n }\n\n updatePos();\n\n const scrollTargets: (Window | HTMLElement)[] = [window, ...ancestors];\n scrollTargets.forEach((t) => t.addEventListener('scroll', updatePos, { passive: true }));\n window.addEventListener('resize', updatePos);\n teardown = () => {\n scrollTargets.forEach((t) => t.removeEventListener('scroll', updatePos));\n window.removeEventListener('resize', updatePos);\n };\n }\n\n trySetup();\n\n return () => {\n if (rafId !== undefined) cancelAnimationFrame(rafId);\n teardown?.();\n };\n }, [isOpen, triggerRef, anchorRef, panelRef, flipClassName, placement]);\n}"],"mappings":"wCAQA,SAAS,EAAuB,EAAgC,CAC9D,IAAM,EAA2B,CAAC,EAC9B,EAAO,EAAG,cACd,KAAO,GAAQ,IAAS,SAAS,MAAQ,IAAS,SAAS,iBAAiB,CAC1E,IAAM,EAAQ,iBAAiB,CAAI,GAC/B,EAAM,YAAc,WAAa,EAAM,YAAc,YAAW,EAAU,KAAK,CAAI,EACvF,EAAO,EAAK,aACd,CACA,OAAO,CACT,CAEA,SAAS,EAAsB,EAAe,EAA0B,CACtE,OAAO,EAAU,KAAM,GAAa,CAClC,IAAM,EAAI,EAAS,sBAAsB,EACzC,OAAO,EAAK,QAAU,EAAE,KAAO,EAAK,KAAO,EAAE,QAAU,EAAK,OAAS,EAAE,MAAQ,EAAK,MAAQ,EAAE,KAChG,CAAC,CACH,CA0BA,SAAgB,EAAoB,CAAE,SAAQ,aAAY,YAAW,WAAU,gBAAe,YAAY,UAAqC,CAC7I,MAAsB,CACpB,GAAI,CAAC,EAAQ,OAEb,IAAI,EACA,EAOJ,SAAS,GAAW,CAClB,IAAM,EAAU,EAAW,QACrB,EAAS,EAAU,QACzB,GAAI,CAAC,GAAW,CAAC,EAAQ,CACvB,EAAQ,sBAAsB,CAAQ,EACtC,MACF,CACA,IAAM,EAAY,EAAuB,CAAO,EAEhD,SAAS,GAAY,CACnB,IAAM,EAAO,EAAS,sBAAsB,EACtC,EAAc,EAAS,SAAS,cAAgB,EAChD,EAAa,OAAO,YAAc,EAAK,OACvC,EAAa,EAAK,IAClB,EAAiB,IAAc,MAAQ,EAAa,EAEpD,EAAO,EAAiB,IADP,IAAc,MAAQ,EAAa,GACI,EACxD,EAAc,IAAc,MAAQ,CAAC,EAAO,EAClD,EAAQ,UAAU,OAAO,EAAe,CAAI,EAK5C,EAAQ,MAAM,IAAM,GAAG,EAAc,EAAK,IAAM,EAAQ,aAAe,EAAK,OAAO,IACnF,EAAQ,MAAM,KAAO,GAAG,EAAK,KAAK,IAClC,EAAQ,MAAM,WAAa,EAAsB,EAAM,CAAS,EAAI,SAAW,EACjF,CAEA,EAAU,EAEV,IAAM,EAA0C,CAAC,OAAQ,GAAG,CAAS,EACrE,EAAc,QAAS,GAAM,EAAE,iBAAiB,SAAU,EAAW,CAAE,QAAS,EAAK,CAAC,CAAC,EACvF,OAAO,iBAAiB,SAAU,CAAS,EAC3C,MAAiB,CACf,EAAc,QAAS,GAAM,EAAE,oBAAoB,SAAU,CAAS,CAAC,EACvE,OAAO,oBAAoB,SAAU,CAAS,CAChD,CACF,CAIA,OAFA,EAAS,MAEI,CACP,IAAU,IAAA,IAAW,qBAAqB,CAAK,EACnD,IAAW,CACb,CACF,EAAG,CAAC,EAAQ,EAAY,EAAW,EAAU,EAAe,CAAS,CAAC,CACxE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../ripple/ripple.mjs";import t from"./iconPicker.module.mjs";import"react";import n from"classnames";import{FontAwesomeIcon as r}from"@fortawesome/react-fontawesome";import{jsx as i,jsxs as a}from"react/jsx-runtime";function o(e){let{formValidator:t}=e;return t?t.touched&&t.hasError():!1}function s(e){let{isRequired:t,formValidator:n}=e;return!!(t||n?.validators.find(e=>e.validatorId===`required`))}function c({data:c=[],selectedId:l=null,label:u=``,onChange:d,formValidator:f=null,isRequired:p,className:m,style:h,classNames:g,styles:_,...v}){let y=f?f.value??null:l,b=o({formValidator:f,isRequired:p}),x=s({formValidator:f,isRequired:p});function S(e){f&&f.set(e),d?.(e)}return a(`div`,{...v,className:n(t.iconPicker,{[t.iconPickerError]:b},g?.root,m),style:{..._?.root,...h},children:[u&&a(`div`,{className:n(t.iconPickerLabel,g?.label),style:_?.label,children:[u,x&&` *`]}),i(`div`,{className:n(t.iconPickerItemContainer,g?.itemContainer),style:_?.itemContainer,children:c.map(({id:o,label:s,icon:c,customIcon:l})=>a(`div`,{className:n(t.iconPickerItem,{[t.iconPickerItemSelected]:y===o},g?.item),style:_?.item,title:s,tabIndex:0,role:`button`,onClick:()=>S(o),onKeyDown:({key:e})=>{e===`Enter`&&S(o)},children:[c&&i(r,{icon:c}),l??null,i(e,{})]},o))})]})}export{c as default};
|
|
2
|
+
//# sourceMappingURL=iconPicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconPicker.mjs","names":[],"sources":["../../../../package/common/iconPicker/iconPicker.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport styles from './iconPicker.module.pcss';\nimport Ripple from '../ripple';\nimport type { IconPickerItem, IconPickerProps } from './iconPicker.types';\n\nfunction hasError(props: IconPickerProps): boolean {\n const { formValidator } = props;\n return formValidator ? (formValidator.touched && formValidator.hasError()) : false;\n}\n\nfunction isRequired(props: IconPickerProps): boolean {\n const { isRequired: reqProp, formValidator } = props;\n return !!(reqProp || formValidator?.validators.find(\n (v) => (v as { validatorId?: string }).validatorId === 'required'\n ));\n}\n\nexport default function IconPicker({\n data = [],\n selectedId = null,\n label = '',\n onChange,\n formValidator = null,\n isRequired: _isRequired,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: IconPickerProps) {\n const currentValue = formValidator ? (formValidator.value as string) ?? null : selectedId;\n const showError = hasError({ formValidator, isRequired: _isRequired });\n const required = isRequired({ formValidator, isRequired: _isRequired });\n\n function handleSelect(id: string) {\n if (formValidator) formValidator.set(id);\n onChange?.(id);\n }\n\n return (\n <div\n {...rest}\n className={cx(styles.iconPicker, { [styles.iconPickerError]: showError }, classNames?.root, className)}\n style={{ ...slotStyles?.root, ...style }}\n >\n {label && (\n <div className={cx(styles.iconPickerLabel, classNames?.label)} style={slotStyles?.label}>\n {label}\n {required && ' *'}\n </div>\n )}\n <div\n className={cx(styles.iconPickerItemContainer, classNames?.itemContainer)}\n style={slotStyles?.itemContainer}\n >\n {data.map(({ id, label: itemLabel, icon, customIcon }: IconPickerItem) => (\n <div\n key={id}\n className={cx(\n styles.iconPickerItem,\n { [styles.iconPickerItemSelected]: currentValue === id },\n classNames?.item\n )}\n style={slotStyles?.item}\n title={itemLabel}\n tabIndex={0}\n role=\"button\"\n onClick={() => handleSelect(id)}\n onKeyDown={({ key }) => { if (key === 'Enter') handleSelect(id); }}\n >\n {icon && <FontAwesomeIcon icon={icon} />}\n {customIcon ?? null}\n <Ripple />\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"sOAOA,SAAS,EAAS,EAAiC,CACjD,GAAM,CAAE,iBAAkB,EAC1B,OAAO,EAAiB,EAAc,SAAW,EAAc,SAAS,EAAK,EAC/E,CAEA,SAAS,EAAW,EAAiC,CACnD,GAAM,CAAE,WAAY,EAAS,iBAAkB,EAC/C,MAAO,CAAC,EAAE,GAAW,GAAe,WAAW,KAC5C,GAAO,EAA+B,cAAgB,UACzD,EACF,CAEA,SAAwB,EAAW,CACjC,OAAO,CAAC,EACR,aAAa,KACb,QAAQ,GACR,WACA,gBAAgB,KAChB,WAAY,EACZ,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACe,CAClB,IAAM,EAAe,EAAiB,EAAc,OAAoB,KAAO,EACzE,EAAY,EAAS,CAAE,gBAAe,WAAY,CAAY,CAAC,EAC/D,EAAW,EAAW,CAAE,gBAAe,WAAY,CAAY,CAAC,EAEtE,SAAS,EAAa,EAAY,CAC5B,GAAe,EAAc,IAAI,CAAE,EACvC,IAAW,CAAE,CACf,CAEA,OACE,EAAC,MAAD,CACE,GAAI,EACJ,UAAW,EAAG,EAAO,WAAY,EAAG,EAAO,iBAAkB,CAAU,EAAG,GAAY,KAAM,CAAS,EACrG,MAAO,CAAE,GAAG,GAAY,KAAM,GAAG,CAAM,WAHzC,CAKG,GACC,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,gBAAiB,GAAY,KAAK,EAAG,MAAO,GAAY,eAAlF,CACG,EACA,GAAY,IACV,IAEP,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,wBAAyB,GAAY,aAAa,EACvE,MAAO,GAAY,uBAElB,EAAK,KAAK,CAAE,KAAI,MAAO,EAAW,OAAM,gBACvC,EAAC,MAAD,CAEE,UAAW,EACT,EAAO,eACP,EAAG,EAAO,wBAAyB,IAAiB,CAAG,EACvD,GAAY,IACd,EACA,MAAO,GAAY,KACnB,MAAO,EACP,SAAU,EACV,KAAK,SACL,YAAe,EAAa,CAAE,EAC9B,WAAY,CAAE,SAAU,CAAM,IAAQ,SAAS,EAAa,CAAE,CAAG,WAZnE,CAcG,GAAQ,EAAC,EAAD,CAAuB,MAAO,CAAA,EACtC,GAAc,KACf,EAAC,EAAD,CAAS,CAAA,CACN,GAhBE,CAgBF,CACN,CACE,CAAA,CACF,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={iconPicker:`iconPicker_xJJmG`,"iconPicker-label":`iconPicker-label_VEB2X`,iconPickerLabel:`iconPicker-label_VEB2X`,"iconPicker-item":`iconPicker-item_iJWDN`,iconPickerItem:`iconPicker-item_iJWDN`,"iconPicker-item-container":`iconPicker-item-container_-1WT5`,iconPickerItemContainer:`iconPicker-item-container_-1WT5`,"iconPicker-item-selected":`iconPicker-item-selected_GQ-I1`,iconPickerItemSelected:`iconPicker-item-selected_GQ-I1`,"iconPicker-error":`iconPicker-error_23m9v`,iconPickerError:`iconPicker-error_23m9v`};export{e as default};
|
|
2
|
+
//# sourceMappingURL=iconPicker.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconPicker.module.mjs","names":[],"sources":["../../../../package/common/iconPicker/iconPicker.module.pcss"],"sourcesContent":[".iconPicker {\n border-width: 1px;\n border-radius: var(--default-border-radius);\n border-color: transparent;\n border-style: solid;\n\n &-label {\n font-size: var(--text-small-font-size);\n margin-bottom: 8px;\n }\n\n &-item {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 8px;\n width: 24px;\n height: 24px;\n background: var(--background-accent);\n border-radius: 200px;\n cursor: pointer;\n stroke: var(--text-color);\n position: relative;\n\n &:focus-visible {\n outline: 1px solid var(--primary-color);\n }\n\n &-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n gap: 8px 14px;\n }\n\n &-selected {\n background: var(--primary-color);\n }\n }\n\n &-error {\n border-color: red;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as e,useEffect as t,useRef as n,useState as r}from"react";import{Fragment as i,jsx as a}from"react/jsx-runtime";var o=[`click`,`mousemove`,`keydown`,`scroll`,`touchstart`];function s({children:s=null,idleAfterSeconds:c=600,renderCondition:l=!0}){let[u,d]=r(!1),f=n(null),p=e(()=>{f.current!==null&&clearTimeout(f.current),d(!1),f.current=setTimeout(()=>{d(!0)},c*1e3)},[c]);return t(()=>{p()},[p]),t(()=>{for(let e of o)document.addEventListener(e,p);return()=>{for(let e of o)document.removeEventListener(e,p);f.current!==null&&clearTimeout(f.current)}},[p]),a(i,{children:l&&u&&s})}export{s as default};
|
|
2
|
+
//# sourceMappingURL=idleManager.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idleManager.mjs","names":[],"sources":["../../../../package/common/idleManager/idleManager.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\nimport type { IdleManagerProps } from './idleManager.types';\n\nconst ACTIVITY_EVENTS = ['click', 'mousemove', 'keydown', 'scroll', 'touchstart'] as const;\n\nfunction IdleManager({\n children = null,\n idleAfterSeconds = 600,\n renderCondition = true,\n}: IdleManagerProps) {\n const [isIdleContentShown, setIsIdleContentShown] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const resetIdleTimeout = useCallback(() => {\n if (timeoutRef.current !== null) clearTimeout(timeoutRef.current);\n setIsIdleContentShown(false);\n timeoutRef.current = setTimeout(() => {\n setIsIdleContentShown(true);\n }, idleAfterSeconds * 1000);\n }, [idleAfterSeconds]);\n\n // Re-run whenever idleAfterSeconds changes (or on first mount)\n useEffect(() => {\n resetIdleTimeout();\n }, [resetIdleTimeout]);\n\n // Register / unregister activity listeners\n useEffect(() => {\n for (const event of ACTIVITY_EVENTS) {\n document.addEventListener(event, resetIdleTimeout);\n }\n return () => {\n for (const event of ACTIVITY_EVENTS) {\n document.removeEventListener(event, resetIdleTimeout);\n }\n // Clear any pending timeout on unmount so it never fires after we're gone\n if (timeoutRef.current !== null) clearTimeout(timeoutRef.current);\n };\n }, [resetIdleTimeout]);\n\n return <>{renderCondition && isIdleContentShown && children}</>;\n}\n\nexport default IdleManager;\n"],"mappings":"mIAGA,IAAM,EAAkB,CAAC,QAAS,YAAa,UAAW,SAAU,YAAY,EAEhF,SAAS,EAAY,CACnB,WAAW,KACX,mBAAmB,IACnB,kBAAkB,IACC,CACnB,GAAM,CAAC,EAAoB,GAAyB,EAAS,EAAK,EAC5D,EAAa,EAA6C,IAAI,EAE9D,EAAmB,MAAkB,CACrC,EAAW,UAAY,MAAM,aAAa,EAAW,OAAO,EAChE,EAAsB,EAAK,EAC3B,EAAW,QAAU,eAAiB,CACpC,EAAsB,EAAI,CAC5B,EAAG,EAAmB,GAAI,CAC5B,EAAG,CAAC,CAAgB,CAAC,EAqBrB,OAlBA,MAAgB,CACd,EAAiB,CACnB,EAAG,CAAC,CAAgB,CAAC,EAGrB,MAAgB,CACd,IAAK,IAAM,KAAS,EAClB,SAAS,iBAAiB,EAAO,CAAgB,EAEnD,UAAa,CACX,IAAK,IAAM,KAAS,EAClB,SAAS,oBAAoB,EAAO,CAAgB,EAGlD,EAAW,UAAY,MAAM,aAAa,EAAW,OAAO,CAClE,CACF,EAAG,CAAC,CAAgB,CAAC,EAEd,EAAA,EAAA,CAAA,SAAG,GAAmB,GAAsB,CAAW,CAAA,CAChE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../loading/spinnerLoading/index.mjs";import t from"./infiniteBlock.module.mjs";import n,{useCallback as r,useRef as i,useState as a}from"react";import o from"classnames";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l(e,t){let n=e;for(;n.props.children!==null&&typeof n.props.children==`object`&&!Array.isArray(n.props.children);)n=n.props.children;let r=n.props.children;if(Array.isArray(r)){let e=r;if(!e[0]?.props?.children){for(let n of e)if(typeof n==`string`&&n.trim().length>0)return n.toLowerCase().startsWith(t)}return String(e[0].props.children).toLowerCase().startsWith(t)}return String(r).toLowerCase().startsWith(t)}function u(e,t,n){let r=e+t;return r===n?0:r<-1?n-1:r}function d({children:d,onScroll:f,className:p=``,isDataLoading:m=!1,setHighlightedIndex:h=()=>null}){let g=i(null),_=i(!1),[v,y]=a(!1),b=i(-1),x=i(null),S=r(()=>{let e=g.current;if(!e)return;let{scrollTop:t,offsetHeight:n,scrollHeight:r}=e;Math.abs(t+n-r)>5||_.current||(_.current=!0,y(!0),f().then(()=>{_.current=!1,y(!1)}))},[f]),C=r(e=>{let t=g.current;if(!t)return;let r=n.Children.toArray(d),i=b.current;switch(e.key){case`ArrowDown`:i=u(i,1,r.length);break;case`ArrowUp`:i=u(i,-1,r.length);break;default:for(let t=0;t<r.length;t++)if(l(r[t],e.key)){if(i>=t&&x.current===e.key)continue;i=t;break}}if(b.current=i,x.current=e.key,i>=0){let e=t.children[i];if(e){let n=e.offsetTop,r=n+e.offsetHeight;n<t.scrollTop?t.scrollTop=n:r>t.scrollTop+t.clientHeight&&(t.scrollTop=r-t.clientHeight)}h(i)}},[d,h]);return c(`div`,{className:o(t.infiniteBlock,p),onScroll:S,onKeyDown:C,tabIndex:0,ref:g,children:[m?s(`div`,{className:t.spinnerWrapper,children:s(e,{className:t.spinner})}):d,v&&s(`div`,{className:t.spinnerWrapper,children:s(e,{className:t.spinner})})]})}export{d as default};
|
|
2
|
+
//# sourceMappingURL=infiniteBlock.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infiniteBlock.mjs","names":[],"sources":["../../../../package/common/infiniteBlock/infiniteBlock.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from 'react';\nimport cx from 'classnames';\n\nimport styles from './infiniteBlock.module.pcss';\nimport SpinnerLoading from '../loading/spinnerLoading';\nimport type { InfiniteBlockProps } from './infiniteBlock.types';\n\n// Walk down a React element tree until we reach a string leaf or an array of children.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction childStartsWithKey(child: React.ReactElement<any>, key: string): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let node: React.ReactElement<any> = child;\n\n while (\n node.props.children !== null &&\n typeof node.props.children === 'object' &&\n !Array.isArray(node.props.children)\n ) {\n node = node.props.children as typeof node;\n }\n\n const content: unknown = node.props.children;\n\n if (Array.isArray(content)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const arr = content as any[];\n // If the first element has no children of its own, scan for a raw string\n if (!arr[0]?.props?.children) {\n for (const item of arr) {\n if (typeof item === 'string' && item.trim().length > 0) {\n return item.toLowerCase().startsWith(key);\n }\n }\n }\n return String(arr[0].props.children).toLowerCase().startsWith(key);\n }\n\n return String(content).toLowerCase().startsWith(key);\n}\n\nfunction clampIndex(index: number, change: number, length: number): number {\n const next = index + change;\n if (next === length) return 0;\n if (next < -1) return length - 1;\n return next;\n}\n\nfunction InfiniteBlock({\n children,\n onScroll,\n className = '',\n isDataLoading = false,\n setHighlightedIndex = () => null,\n}: InfiniteBlockProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Use a ref (not state) for the scroll-guard so reads are always synchronous,\n // avoiding the React-batching race where two scroll events fire before the\n // first setState call has been committed.\n const isScrollLoadingRef = useRef(false);\n const [showScrollSpinner, setShowScrollSpinner] = useState(false);\n\n // Keyboard nav state lives in refs — it doesn't affect rendering.\n const indexRef = useRef(-1);\n const lastKeyRef = useRef<string | null>(null);\n\n const handleScroll = useCallback(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const { scrollTop, offsetHeight, scrollHeight } = el;\n\n // Browsers calculate scrollTop with a small floating-point error under zoom,\n // so we allow up to 5px of slack before deciding we are at the bottom.\n if (Math.abs(scrollTop + offsetHeight - scrollHeight) > 5) return;\n if (isScrollLoadingRef.current) return;\n\n isScrollLoadingRef.current = true;\n setShowScrollSpinner(true);\n onScroll().then(() => {\n isScrollLoadingRef.current = false;\n setShowScrollSpinner(false);\n });\n }, [onScroll]);\n\n const respondToUserInput = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const el = containerRef.current;\n if (!el) return;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const childArray = React.Children.toArray(children) as React.ReactElement<any>[];\n let index = indexRef.current;\n\n switch (event.key) {\n case 'ArrowDown':\n index = clampIndex(index, 1, childArray.length);\n break;\n case 'ArrowUp':\n index = clampIndex(index, -1, childArray.length);\n break;\n default:\n for (let i = 0; i < childArray.length; i++) {\n if (childStartsWithKey(childArray[i], event.key)) {\n if (index >= i && lastKeyRef.current === event.key) {\n continue;\n }\n index = i;\n break;\n }\n }\n }\n\n indexRef.current = index;\n lastKeyRef.current = event.key;\n\n if (index >= 0) {\n const child = el.children[index] as HTMLElement | undefined;\n if (child) {\n const childTop = child.offsetTop;\n const childBottom = childTop + child.offsetHeight;\n if (childTop < el.scrollTop) {\n el.scrollTop = childTop;\n } else if (childBottom > el.scrollTop + el.clientHeight) {\n el.scrollTop = childBottom - el.clientHeight;\n }\n }\n setHighlightedIndex(index);\n }\n },\n [children, setHighlightedIndex]\n );\n\n return (\n <div\n className={cx(styles.infiniteBlock, className)}\n onScroll={handleScroll}\n onKeyDown={respondToUserInput}\n tabIndex={0}\n ref={containerRef}\n >\n {isDataLoading ? (\n <div className={styles.spinnerWrapper}>\n <SpinnerLoading className={styles.spinner} />\n </div>\n ) : children}\n {showScrollSpinner && (\n <div className={styles.spinnerWrapper}>\n <SpinnerLoading className={styles.spinner} />\n </div>\n )}\n </div>\n );\n}\n\nexport default InfiniteBlock;\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infiniteBlock.module.mjs","names":[],"sources":["../../../../package/common/infiniteBlock/infiniteBlock.module.pcss"],"sourcesContent":[".infiniteBlock {\n max-height: none;\n}\n\n.spinner-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4px 0;\n}\n\n.spinner {\n width: 32px;\n height: 32px;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"../tooltip/tooltip.mjs";import t from"./input.module.mjs";import{InputType as n}from"./input.types.mjs";import r,{useCallback as ee,useEffect as i,useId as te,useRef as a,useState as o}from"react";import s from"classnames";import{FontAwesomeIcon as c}from"@fortawesome/react-fontawesome";import{faEnvelope as ne,faEye as re,faEyeSlash as ie,faPen as ae,faPhone as oe,faSearch as se,faXmark as ce}from"@fortawesome/free-solid-svg-icons";import{jsx as l,jsxs as u}from"react/jsx-runtime";function d({name:d=``,id:le,label:f=``,errorMessage:p=``,isValid:ue=!0,className:de=``,style:fe,value:m=``,icon:h=null,onChange:g=()=>{},onFocus:_=null,onBlur:v=null,onMouseEnter:y=null,onMouseLeave:b=null,isUppercase:pe=!1,isRequired:me=!1,tabIndex:he=0,type:x=void 0,isRow:ge=!1,onIconClick:S=null,parse:C=null,formValidator:w=null,autoFocus:T=!1,suffix:E=null,upperRightLabel:D=null,labelInBorder:_e=!1,showCancel:ve=!1,onClearClicked:ye,min:be=null,max:xe=null,placeholder:O=``,useMatLabelStyle:k=!0,autoComplete:Se=null,onClick:Ce=()=>null,readOnly:we=!1,customInput:A,alwaysShowCancel:Te=!1,multiline:j=!1,rows:M,autoResize:N=!1,classNames:P,styles:F,disabled:Ee=!1,...De}){let[I,L]=o(!1),[R,z]=o(!1),[B,Oe]=o(!1),[,ke]=o(0),V=a(null),H=a(w),Ae=te(),U=le||d||Ae,W=ee(()=>{let e=V.current;!e||!N||(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[N]);i(()=>{W()},[]),i(()=>{T&&V.current&&setTimeout(()=>{V.current?.focus()},1)},[T]),i(()=>{H.current=w;let e=H.current;if(!e)return;e.label=f??``,e.validate();let t=()=>ke(e=>e+1);return e.registerOnUpdateListener(t),()=>{e.removeOnUpdateListener(t)}},[w,f]);let je=()=>w?w.touched&&w.hasError():!ue||!!p,G=()=>!!(me||w&&w.validators.find(e=>e.validatorId===`required`)),Me=e=>{z(!0),y&&y(e)},Ne=e=>{z(!1),b&&b(e)},Pe=e=>{L(!0),_&&_(e)},Fe=e=>{H.current&&(H.current.touched=!0),L(!1),v&&v(e)},Ie=e=>{let t,n;typeof e==`string`?n=e:(t=e,n=e.target.value),C&&(n=C(n)),w&&w.set(n),g&&g(n,t),W()},Le=()=>{if(x!==`email`)return x===`password`&&B?`text`:x},K=x&&x!==n.Date&&x!==n.Iban&&x!==n.HasNoIcon,q=K&&!k&&(x===n.Email||x===n.Phone||x===n.Search),J={className:s(t.inputFieldIcon,{[t.inputFieldIconNotClickable]:!S,[t.inputFieldIconLeft]:q}),onClick:S??void 0},Y=h,Re=Y?r.cloneElement(Y,{className:s(t.inputFieldIcon,{[t.inputFieldIconNotClickable]:!S&&!Y.props.onClick},Y.props.className),onClick:S??Y.props.onClick}):null,ze=!!h,Be={className:s(t.inputFieldIcon,t.inputFieldIconPassword),onClick:()=>Oe(!B)},X=je(),Z=f;Z&&G()&&(Z=`${Z} *`);let Q=w?w.value:m,$=k&&(I||Q||x===n.Date);return u(`div`,{className:s(t.input,de),style:fe,children:[u(`label`,{htmlFor:U,className:s(t.inputLabel,P?.label,{[t.inputLabelColumn]:!ge,[t.inputLabelInBorder]:_e}),style:F?.label,children:[Z&&!k?u(`span`,{className:t.inputLabelText,children:[`${Z} `,G()?l(`span`,{className:s(t.isRequired),children:`\xA0 *`}):null]}):null,D&&l(`div`,{className:s(t.inputUpperRightLabel,P?.upperRightLabel),style:F?.upperRightLabel,children:D}),u(`div`,{className:s(t.inputContainer,{[t.inputContainerMultiline]:j},P?.container),style:F?.container,onMouseEnter:Me,onMouseLeave:Ne,children:[Re,r.cloneElement(A||l(j?`textarea`:`input`,{}),{...De,className:s(t.inputField,{[t.inputFieldUppercase]:pe,[t.inputFieldDate]:x===n.Date,[t.inputFieldDefault]:x!==n.Date,[t.inputFieldWithIcon]:K||ze,[t.inputFieldWithIconLeft]:q,[t.inputFieldMultiline]:j,[t.inputFieldMultilineAutoResize]:j&&N},P?.input),name:d,id:U,value:w?w.value:m,tabIndex:he,ref:A?void 0:V,onChange:Ie,onFocus:Pe,onBlur:Fe,placeholder:k?``:O,autoComplete:Se,onClick:Ce,readOnly:we,disabled:Ee,...!j&&{type:Le(),min:be,max:xe},...j&&M!==void 0&&{rows:M}}),E&&l(`div`,{className:s(t.inputFieldSuffix,P?.suffix),style:F?.suffix,children:E})]}),l(`fieldset`,{className:s(t.inputFieldset,P?.fieldset,{[t.inputContainerBorderFocused]:I,[t.inputContainerBorderSearchFocused]:x===n.Search&&(I||m),[t.inputContainerBorderInvalid]:X,[t.inputContainerBorderError]:X}),style:F?.fieldset,children:l(`legend`,{className:s(t.inputFieldsetLegend,{[t.inputFieldsetLegendActive]:$}),children:l(`span`,{children:Z})})}),k&&f&&l(`div`,{className:s(t.inputMatLabel,{[t.inputMatLabelFloating]:$,[t.inputMatLabelMultiline]:j&&!$}),children:Z}),k&&O&&l(`div`,{className:s(t.inputPlaceholder,I&&!Q&&t.inputPlaceholderShown,j&&t.inputPlaceholderMultiline),children:O}),l(e,{variant:`error`,message:w?w.getCurrentErrorMessage():p||``,isVisible:X&&(I||R)})]}),x===n.Phone&&l(c,{icon:oe,...J}),x===n.Email&&l(c,{icon:ne,...J}),x===n.Edit&&l(c,{icon:ae,...J}),x===n.Search&&l(c,{icon:se,...J}),x===n.Password&&l(c,{icon:B?ie:re,...Be}),(ve&&m&&(I||R)||Te)&&l(c,{icon:ce,className:t.inputFieldIcon,onClick:ye??void 0,onMouseEnter:()=>z(!0),onMouseLeave:()=>z(!1)})]})}export{d as default};
|
|
2
|
+
//# sourceMappingURL=input.mjs.map
|