@helpwave/hightide 0.0.13 → 0.0.16
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/coloring/shading.d.mts +5 -0
- package/dist/coloring/shading.d.ts +5 -2
- package/dist/coloring/shading.js +80 -38
- package/dist/coloring/shading.js.map +1 -0
- package/dist/coloring/shading.mjs +47 -0
- package/dist/coloring/shading.mjs.map +1 -0
- package/dist/coloring/types.d.mts +13 -0
- package/dist/coloring/types.d.ts +8 -6
- package/dist/coloring/types.js +31 -1
- package/dist/coloring/types.js.map +1 -0
- package/dist/coloring/types.mjs +6 -0
- package/dist/coloring/types.mjs.map +1 -0
- package/dist/components/Avatar.d.mts +17 -0
- package/dist/components/Avatar.d.ts +9 -6
- package/dist/components/Avatar.js +79 -29
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Avatar.mjs +48 -0
- package/dist/components/Avatar.mjs.map +1 -0
- package/dist/components/AvatarGroup.d.mts +14 -0
- package/dist/components/AvatarGroup.d.ts +7 -3
- package/dist/components/AvatarGroup.js +117 -12
- package/dist/components/AvatarGroup.js.map +1 -0
- package/dist/components/AvatarGroup.mjs +81 -0
- package/dist/components/AvatarGroup.mjs.map +1 -0
- package/dist/components/BreadCrumb.d.mts +19 -0
- package/dist/components/BreadCrumb.d.ts +6 -3
- package/dist/components/BreadCrumb.js +49 -11
- package/dist/components/BreadCrumb.js.map +1 -0
- package/dist/components/BreadCrumb.mjs +15 -0
- package/dist/components/BreadCrumb.mjs.map +1 -0
- package/dist/components/Button.d.mts +44 -0
- package/dist/components/Button.d.ts +16 -13
- package/dist/components/Button.js +232 -80
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Button.mjs +198 -0
- package/dist/components/Button.mjs.map +1 -0
- package/dist/components/ChipList.d.mts +24 -0
- package/dist/components/ChipList.d.ts +10 -7
- package/dist/components/ChipList.js +103 -36
- package/dist/components/ChipList.js.map +1 -0
- package/dist/components/ChipList.mjs +69 -0
- package/dist/components/ChipList.mjs.map +1 -0
- package/dist/components/Circle.d.mts +10 -0
- package/dist/components/Circle.d.ts +7 -3
- package/dist/components/Circle.js +61 -9
- package/dist/components/Circle.js.map +1 -0
- package/dist/components/Circle.mjs +27 -0
- package/dist/components/Circle.mjs.map +1 -0
- package/dist/components/ErrorComponent.d.mts +18 -0
- package/dist/components/ErrorComponent.d.ts +9 -4
- package/dist/components/ErrorComponent.js +86 -17
- package/dist/components/ErrorComponent.js.map +1 -0
- package/dist/components/ErrorComponent.mjs +53 -0
- package/dist/components/ErrorComponent.mjs.map +1 -0
- package/dist/components/Expandable.d.mts +33 -0
- package/dist/components/Expandable.d.ts +8 -5
- package/dist/components/Expandable.js +79 -15
- package/dist/components/Expandable.js.map +1 -0
- package/dist/components/Expandable.mjs +45 -0
- package/dist/components/Expandable.mjs.map +1 -0
- package/dist/components/HelpwaveBadge.d.mts +14 -0
- package/dist/components/HelpwaveBadge.d.ts +6 -3
- package/dist/components/HelpwaveBadge.js +125 -13
- package/dist/components/HelpwaveBadge.js.map +1 -0
- package/dist/components/HelpwaveBadge.mjs +91 -0
- package/dist/components/HelpwaveBadge.mjs.map +1 -0
- package/dist/components/HideableContentSection.d.mts +14 -0
- package/dist/components/HideableContentSection.d.ts +7 -3
- package/dist/components/HideableContentSection.js +69 -14
- package/dist/components/HideableContentSection.js.map +1 -0
- package/dist/components/HideableContentSection.mjs +35 -0
- package/dist/components/HideableContentSection.mjs.map +1 -0
- package/dist/components/InputGroup.d.mts +17 -0
- package/dist/components/InputGroup.d.ts +7 -3
- package/dist/components/InputGroup.js +96 -32
- package/dist/components/InputGroup.js.map +1 -0
- package/dist/components/InputGroup.mjs +62 -0
- package/dist/components/InputGroup.mjs.map +1 -0
- package/dist/components/LoadingAndErrorComponent.d.mts +24 -0
- package/dist/components/LoadingAndErrorComponent.d.ts +12 -5
- package/dist/components/LoadingAndErrorComponent.js +178 -23
- package/dist/components/LoadingAndErrorComponent.js.map +1 -0
- package/dist/components/LoadingAndErrorComponent.mjs +145 -0
- package/dist/components/LoadingAndErrorComponent.mjs.map +1 -0
- package/dist/components/LoadingAnimation.d.mts +18 -0
- package/dist/components/LoadingAnimation.d.ts +9 -4
- package/dist/components/LoadingAnimation.js +124 -16
- package/dist/components/LoadingAnimation.js.map +1 -0
- package/dist/components/LoadingAnimation.mjs +90 -0
- package/dist/components/LoadingAnimation.mjs.map +1 -0
- package/dist/components/LoadingButton.d.mts +10 -0
- package/dist/components/LoadingButton.d.ts +7 -3
- package/dist/components/LoadingButton.js +169 -9
- package/dist/components/LoadingButton.js.map +1 -0
- package/dist/components/LoadingButton.mjs +135 -0
- package/dist/components/LoadingButton.mjs.map +1 -0
- package/dist/components/MarkdownInterpreter.d.mts +28 -0
- package/dist/components/MarkdownInterpreter.d.ts +8 -5
- package/dist/components/MarkdownInterpreter.js +246 -175
- package/dist/components/MarkdownInterpreter.js.map +1 -0
- package/dist/components/MarkdownInterpreter.mjs +235 -0
- package/dist/components/MarkdownInterpreter.mjs.map +1 -0
- package/dist/components/Pagination.d.mts +19 -0
- package/dist/components/Pagination.d.ts +9 -4
- package/dist/components/Pagination.js +100 -23
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Pagination.mjs +67 -0
- package/dist/components/Pagination.mjs.map +1 -0
- package/dist/components/Profile.d.mts +31 -0
- package/dist/components/Profile.d.ts +8 -5
- package/dist/components/Profile.js +194 -42
- package/dist/components/Profile.js.map +1 -0
- package/dist/components/Profile.mjs +162 -0
- package/dist/components/Profile.mjs.map +1 -0
- package/dist/components/ProgressIndicator.d.mts +24 -0
- package/dist/components/ProgressIndicator.d.ts +6 -3
- package/dist/components/ProgressIndicator.js +82 -22
- package/dist/components/ProgressIndicator.js.map +1 -0
- package/dist/components/ProgressIndicator.mjs +59 -0
- package/dist/components/ProgressIndicator.mjs.map +1 -0
- package/dist/components/Ring.d.mts +35 -0
- package/dist/components/Ring.d.ts +13 -9
- package/dist/components/Ring.js +331 -107
- package/dist/components/Ring.js.map +1 -0
- package/dist/components/Ring.mjs +299 -0
- package/dist/components/Ring.mjs.map +1 -0
- package/dist/components/SearchableList.d.mts +22 -0
- package/dist/components/SearchableList.d.ts +9 -5
- package/dist/components/SearchableList.js +268 -24
- package/dist/components/SearchableList.js.map +1 -0
- package/dist/components/SearchableList.mjs +241 -0
- package/dist/components/SearchableList.mjs.map +1 -0
- package/dist/components/SortButton.d.mts +15 -0
- package/dist/components/SortButton.d.ts +9 -4
- package/dist/components/SortButton.js +131 -8
- package/dist/components/SortButton.js.map +1 -0
- package/dist/components/SortButton.mjs +97 -0
- package/dist/components/SortButton.mjs.map +1 -0
- package/dist/components/StepperBar.d.mts +28 -0
- package/dist/components/StepperBar.d.ts +10 -5
- package/dist/components/StepperBar.js +248 -44
- package/dist/components/StepperBar.js.map +1 -0
- package/dist/components/StepperBar.mjs +216 -0
- package/dist/components/StepperBar.mjs.map +1 -0
- package/dist/components/Table.d.mts +90 -0
- package/dist/components/Table.d.ts +20 -17
- package/dist/components/Table.js +396 -170
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Table.mjs +370 -0
- package/dist/components/Table.mjs.map +1 -0
- package/dist/components/TechRadar.d.mts +39 -0
- package/dist/components/TechRadar.d.ts +5 -2
- package/dist/components/TechRadar.js +241 -189
- package/dist/components/TechRadar.js.map +1 -0
- package/dist/components/TechRadar.mjs +208 -0
- package/dist/components/TechRadar.mjs.map +1 -0
- package/dist/components/TextImage.d.mts +25 -0
- package/dist/components/TextImage.d.ts +9 -4
- package/dist/components/TextImage.js +121 -29
- package/dist/components/TextImage.js.map +1 -0
- package/dist/components/TextImage.mjs +86 -0
- package/dist/components/TextImage.mjs.map +1 -0
- package/dist/components/TimeDisplay.d.mts +35 -0
- package/dist/components/TimeDisplay.d.ts +8 -3
- package/dist/components/TimeDisplay.js +134 -81
- package/dist/components/TimeDisplay.js.map +1 -0
- package/dist/components/TimeDisplay.mjs +109 -0
- package/dist/components/TimeDisplay.mjs.map +1 -0
- package/dist/components/Tooltip.d.mts +37 -0
- package/dist/components/Tooltip.d.ts +7 -4
- package/dist/components/Tooltip.js +135 -37
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Tooltip.mjs +109 -0
- package/dist/components/Tooltip.mjs.map +1 -0
- package/dist/components/VerticalDivider.d.mts +15 -0
- package/dist/components/VerticalDivider.d.ts +6 -2
- package/dist/components/VerticalDivider.js +80 -6
- package/dist/components/VerticalDivider.js.map +1 -0
- package/dist/components/VerticalDivider.mjs +56 -0
- package/dist/components/VerticalDivider.mjs.map +1 -0
- package/dist/components/date/DatePicker.d.mts +32 -0
- package/dist/components/date/DatePicker.d.ts +13 -7
- package/dist/components/date/DatePicker.js +624 -55
- package/dist/components/date/DatePicker.js.map +1 -0
- package/dist/components/date/DatePicker.mjs +591 -0
- package/dist/components/date/DatePicker.mjs.map +1 -0
- package/dist/components/date/DayPicker.d.mts +20 -0
- package/dist/components/date/DayPicker.d.ts +8 -4
- package/dist/components/date/DayPicker.js +232 -36
- package/dist/components/date/DayPicker.js.map +1 -0
- package/dist/components/date/DayPicker.mjs +195 -0
- package/dist/components/date/DayPicker.mjs.map +1 -0
- package/dist/components/date/TimePicker.d.mts +15 -0
- package/dist/components/date/TimePicker.d.ts +7 -4
- package/dist/components/date/TimePicker.js +196 -75
- package/dist/components/date/TimePicker.js.map +1 -0
- package/dist/components/date/TimePicker.mjs +164 -0
- package/dist/components/date/TimePicker.mjs.map +1 -0
- package/dist/components/date/YearMonthPicker.d.mts +15 -0
- package/dist/components/date/YearMonthPicker.d.ts +7 -3
- package/dist/components/date/YearMonthPicker.js +281 -57
- package/dist/components/date/YearMonthPicker.js.map +1 -0
- package/dist/components/date/YearMonthPicker.mjs +247 -0
- package/dist/components/date/YearMonthPicker.mjs.map +1 -0
- package/dist/components/icons/Helpwave.d.mts +14 -0
- package/dist/components/icons/Helpwave.d.ts +7 -3
- package/dist/components/icons/Helpwave.js +66 -18
- package/dist/components/icons/Helpwave.js.map +1 -0
- package/dist/components/icons/Helpwave.mjs +43 -0
- package/dist/components/icons/Helpwave.mjs.map +1 -0
- package/dist/components/icons/Tag.d.mts +14 -0
- package/dist/components/icons/Tag.d.ts +7 -3
- package/dist/components/icons/Tag.js +59 -11
- package/dist/components/icons/Tag.js.map +1 -0
- package/dist/components/icons/Tag.mjs +25 -0
- package/dist/components/icons/Tag.mjs.map +1 -0
- package/dist/components/layout/Carousel.d.mts +25 -0
- package/dist/components/layout/Carousel.d.ts +6 -3
- package/dist/components/layout/Carousel.js +477 -226
- package/dist/components/layout/Carousel.js.map +1 -0
- package/dist/components/layout/Carousel.mjs +449 -0
- package/dist/components/layout/Carousel.mjs.map +1 -0
- package/dist/components/layout/DividerInserter.d.mts +15 -0
- package/dist/components/layout/DividerInserter.d.ts +7 -3
- package/dist/components/layout/DividerInserter.js +58 -18
- package/dist/components/layout/DividerInserter.js.map +1 -0
- package/dist/components/layout/DividerInserter.mjs +25 -0
- package/dist/components/layout/DividerInserter.mjs.map +1 -0
- package/dist/components/layout/FAQSection.d.mts +26 -0
- package/dist/components/layout/FAQSection.d.ts +9 -6
- package/dist/components/layout/FAQSection.js +336 -13
- package/dist/components/layout/FAQSection.js.map +1 -0
- package/dist/components/layout/FAQSection.mjs +302 -0
- package/dist/components/layout/FAQSection.mjs.map +1 -0
- package/dist/components/layout/Tile.d.mts +37 -0
- package/dist/components/layout/Tile.d.ts +9 -6
- package/dist/components/layout/Tile.js +76 -16
- package/dist/components/layout/Tile.js.map +1 -0
- package/dist/components/layout/Tile.mjs +42 -0
- package/dist/components/layout/Tile.mjs.map +1 -0
- package/dist/components/modals/ConfirmDialog.d.mts +38 -0
- package/dist/components/modals/ConfirmDialog.d.ts +13 -9
- package/dist/components/modals/ConfirmDialog.js +422 -28
- package/dist/components/modals/ConfirmDialog.js.map +1 -0
- package/dist/components/modals/ConfirmDialog.mjs +388 -0
- package/dist/components/modals/ConfirmDialog.mjs.map +1 -0
- package/dist/components/modals/DiscardChangesDialog.d.mts +23 -0
- package/dist/components/modals/DiscardChangesDialog.d.ts +9 -5
- package/dist/components/modals/DiscardChangesDialog.js +406 -23
- package/dist/components/modals/DiscardChangesDialog.js.map +1 -0
- package/dist/components/modals/DiscardChangesDialog.mjs +370 -0
- package/dist/components/modals/DiscardChangesDialog.mjs.map +1 -0
- package/dist/components/modals/InputModal.d.mts +19 -0
- package/dist/components/modals/InputModal.d.ts +14 -4
- package/dist/components/modals/InputModal.js +598 -8
- package/dist/components/modals/InputModal.js.map +1 -0
- package/dist/components/modals/InputModal.mjs +567 -0
- package/dist/components/modals/InputModal.mjs.map +1 -0
- package/dist/components/modals/LanguageModal.d.mts +21 -0
- package/dist/components/modals/LanguageModal.d.ts +9 -5
- package/dist/components/modals/LanguageModal.js +524 -33
- package/dist/components/modals/LanguageModal.js.map +1 -0
- package/dist/components/modals/LanguageModal.mjs +489 -0
- package/dist/components/modals/LanguageModal.mjs.map +1 -0
- package/dist/components/modals/Modal.d.mts +43 -0
- package/dist/components/modals/Modal.d.ts +13 -8
- package/dist/components/modals/Modal.js +280 -51
- package/dist/components/modals/Modal.js.map +1 -0
- package/dist/components/modals/Modal.mjs +249 -0
- package/dist/components/modals/Modal.mjs.map +1 -0
- package/dist/components/modals/ModalRegister.d.mts +16 -0
- package/dist/components/modals/ModalRegister.d.ts +9 -4
- package/dist/components/modals/ModalRegister.js +61 -26
- package/dist/components/modals/ModalRegister.js.map +1 -0
- package/dist/components/modals/ModalRegister.mjs +37 -0
- package/dist/components/modals/ModalRegister.mjs.map +1 -0
- package/dist/components/properties/CheckboxProperty.d.mts +20 -0
- package/dist/components/properties/CheckboxProperty.d.ts +10 -5
- package/dist/components/properties/CheckboxProperty.js +323 -24
- package/dist/components/properties/CheckboxProperty.js.map +1 -0
- package/dist/components/properties/CheckboxProperty.mjs +291 -0
- package/dist/components/properties/CheckboxProperty.mjs.map +1 -0
- package/dist/components/properties/DateProperty.d.mts +18 -0
- package/dist/components/properties/DateProperty.d.ts +10 -3
- package/dist/components/properties/DateProperty.js +422 -21
- package/dist/components/properties/DateProperty.js.map +1 -0
- package/dist/components/properties/DateProperty.mjs +393 -0
- package/dist/components/properties/DateProperty.mjs.map +1 -0
- package/dist/components/properties/MultiSelectProperty.d.mts +18 -0
- package/dist/components/properties/MultiSelectProperty.d.ts +12 -6
- package/dist/components/properties/MultiSelectProperty.js +815 -31
- package/dist/components/properties/MultiSelectProperty.js.map +1 -0
- package/dist/components/properties/MultiSelectProperty.mjs +787 -0
- package/dist/components/properties/MultiSelectProperty.mjs.map +1 -0
- package/dist/components/properties/NumberProperty.d.mts +21 -0
- package/dist/components/properties/NumberProperty.d.ts +10 -5
- package/dist/components/properties/NumberProperty.js +429 -39
- package/dist/components/properties/NumberProperty.js.map +1 -0
- package/dist/components/properties/NumberProperty.mjs +402 -0
- package/dist/components/properties/NumberProperty.mjs.map +1 -0
- package/dist/components/properties/PropertyBase.d.mts +27 -0
- package/dist/components/properties/PropertyBase.d.ts +9 -5
- package/dist/components/properties/PropertyBase.js +194 -24
- package/dist/components/properties/PropertyBase.js.map +1 -0
- package/dist/components/properties/PropertyBase.mjs +162 -0
- package/dist/components/properties/PropertyBase.mjs.map +1 -0
- package/dist/components/properties/SelectProperty.d.mts +19 -0
- package/dist/components/properties/SelectProperty.d.ts +13 -6
- package/dist/components/properties/SelectProperty.js +547 -19
- package/dist/components/properties/SelectProperty.js.map +1 -0
- package/dist/components/properties/SelectProperty.mjs +520 -0
- package/dist/components/properties/SelectProperty.mjs.map +1 -0
- package/dist/components/properties/TextProperty.d.mts +20 -0
- package/dist/components/properties/TextProperty.d.ts +10 -5
- package/dist/components/properties/TextProperty.js +378 -34
- package/dist/components/properties/TextProperty.js.map +1 -0
- package/dist/components/properties/TextProperty.mjs +346 -0
- package/dist/components/properties/TextProperty.mjs.map +1 -0
- package/dist/components/user-input/Checkbox.d.mts +41 -0
- package/dist/components/user-input/Checkbox.d.ts +9 -5
- package/dist/components/user-input/Checkbox.js +148 -63
- package/dist/components/user-input/Checkbox.js.map +1 -0
- package/dist/components/user-input/Checkbox.mjs +112 -0
- package/dist/components/user-input/Checkbox.mjs.map +1 -0
- package/dist/components/user-input/DateAndTimePicker.d.mts +47 -0
- package/dist/components/user-input/DateAndTimePicker.d.ts +15 -7
- package/dist/components/user-input/DateAndTimePicker.js +831 -60
- package/dist/components/user-input/DateAndTimePicker.js.map +1 -0
- package/dist/components/user-input/DateAndTimePicker.mjs +801 -0
- package/dist/components/user-input/DateAndTimePicker.mjs.map +1 -0
- package/dist/components/user-input/Input.d.mts +64 -0
- package/dist/components/user-input/Input.d.ts +12 -9
- package/dist/components/user-input/Input.js +219 -57
- package/dist/components/user-input/Input.js.map +1 -0
- package/dist/components/user-input/Input.mjs +191 -0
- package/dist/components/user-input/Input.mjs.map +1 -0
- package/dist/components/user-input/Label.d.mts +16 -0
- package/dist/components/user-input/Label.d.ts +8 -4
- package/dist/components/user-input/Label.js +43 -11
- package/dist/components/user-input/Label.js.map +1 -0
- package/dist/components/user-input/Label.mjs +19 -0
- package/dist/components/user-input/Label.mjs.map +1 -0
- package/dist/components/user-input/Menu.d.mts +24 -0
- package/dist/components/user-input/Menu.d.ts +8 -5
- package/dist/components/user-input/Menu.js +162 -25
- package/dist/components/user-input/Menu.js.map +1 -0
- package/dist/components/user-input/Menu.mjs +127 -0
- package/dist/components/user-input/Menu.mjs.map +1 -0
- package/dist/components/user-input/MultiSelect.d.mts +43 -0
- package/dist/components/user-input/MultiSelect.d.ts +12 -8
- package/dist/components/user-input/MultiSelect.js +545 -56
- package/dist/components/user-input/MultiSelect.js.map +1 -0
- package/dist/components/user-input/MultiSelect.mjs +516 -0
- package/dist/components/user-input/MultiSelect.mjs.map +1 -0
- package/dist/components/user-input/ScrollPicker.d.mts +15 -0
- package/dist/components/user-input/ScrollPicker.d.ts +6 -2
- package/dist/components/user-input/ScrollPicker.js +276 -145
- package/dist/components/user-input/ScrollPicker.js.map +1 -0
- package/dist/components/user-input/ScrollPicker.mjs +247 -0
- package/dist/components/user-input/ScrollPicker.mjs.map +1 -0
- package/dist/components/user-input/SearchableSelect.d.mts +14 -0
- package/dist/components/user-input/SearchableSelect.d.ts +9 -3
- package/dist/components/user-input/SearchableSelect.js +334 -13
- package/dist/components/user-input/SearchableSelect.js.map +1 -0
- package/dist/components/user-input/SearchableSelect.mjs +305 -0
- package/dist/components/user-input/SearchableSelect.mjs.map +1 -0
- package/dist/components/user-input/Select.d.mts +36 -0
- package/dist/components/user-input/Select.d.ts +9 -5
- package/dist/components/user-input/Select.js +152 -47
- package/dist/components/user-input/Select.js.map +1 -0
- package/dist/components/user-input/Select.mjs +118 -0
- package/dist/components/user-input/Select.mjs.map +1 -0
- package/dist/components/user-input/Textarea.d.mts +24 -0
- package/dist/components/user-input/Textarea.d.ts +8 -4
- package/dist/components/user-input/Textarea.js +153 -31
- package/dist/components/user-input/Textarea.js.map +1 -0
- package/dist/components/user-input/Textarea.mjs +120 -0
- package/dist/components/user-input/Textarea.mjs.map +1 -0
- package/dist/components/user-input/ToggleableInput.d.mts +35 -0
- package/dist/components/user-input/ToggleableInput.d.ts +6 -3
- package/dist/components/user-input/ToggleableInput.js +161 -38
- package/dist/components/user-input/ToggleableInput.js.map +1 -0
- package/dist/components/user-input/ToggleableInput.mjs +128 -0
- package/dist/components/user-input/ToggleableInput.mjs.map +1 -0
- package/dist/hooks/useHoverState.d.mts +42 -0
- package/dist/hooks/useHoverState.d.ts +5 -3
- package/dist/hooks/useHoverState.js +69 -43
- package/dist/hooks/useHoverState.js.map +1 -0
- package/dist/hooks/useHoverState.mjs +47 -0
- package/dist/hooks/useHoverState.mjs.map +1 -0
- package/dist/hooks/useLanguage.d.mts +21 -0
- package/dist/hooks/useLanguage.d.ts +15 -11
- package/dist/hooks/useLanguage.js +145 -50
- package/dist/hooks/useLanguage.js.map +1 -0
- package/dist/hooks/useLanguage.mjs +115 -0
- package/dist/hooks/useLanguage.mjs.map +1 -0
- package/dist/hooks/useLocalStorage.d.mts +6 -0
- package/dist/hooks/useLocalStorage.d.ts +4 -2
- package/dist/hooks/useLocalStorage.js +79 -23
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/useLocalStorage.mjs +59 -0
- package/dist/hooks/useLocalStorage.mjs.map +1 -0
- package/dist/hooks/useOutsideClick.d.mts +5 -0
- package/dist/hooks/useOutsideClick.d.ts +5 -2
- package/dist/hooks/useOutsideClick.js +47 -21
- package/dist/hooks/useOutsideClick.js.map +1 -0
- package/dist/hooks/useOutsideClick.mjs +23 -0
- package/dist/hooks/useOutsideClick.mjs.map +1 -0
- package/dist/hooks/useSaveDelay.d.mts +6 -0
- package/dist/hooks/useSaveDelay.d.ts +2 -1
- package/dist/hooks/useSaveDelay.js +62 -38
- package/dist/hooks/useSaveDelay.js.map +1 -0
- package/dist/hooks/useSaveDelay.mjs +44 -0
- package/dist/hooks/useSaveDelay.mjs.map +1 -0
- package/dist/hooks/useTheme.d.mts +21 -0
- package/dist/hooks/useTheme.d.ts +14 -9
- package/dist/hooks/useTheme.js +65 -29
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useTheme.mjs +40 -0
- package/dist/hooks/useTheme.mjs.map +1 -0
- package/dist/hooks/useTranslation.d.mts +28 -0
- package/dist/hooks/useTranslation.d.ts +9 -5
- package/dist/hooks/useTranslation.js +53 -10
- package/dist/hooks/useTranslation.js.map +1 -0
- package/dist/hooks/useTranslation.mjs +27 -0
- package/dist/hooks/useTranslation.mjs.map +1 -0
- package/dist/index.d.mts +86 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +5716 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +5542 -0
- package/dist/index.mjs.map +1 -0
- package/dist/util/array.d.mts +25 -0
- package/dist/util/array.d.ts +9 -7
- package/dist/util/array.js +119 -92
- package/dist/util/array.js.map +1 -0
- package/dist/util/array.mjs +99 -0
- package/dist/util/array.mjs.map +1 -0
- package/dist/util/builder.d.mts +8 -0
- package/dist/util/builder.d.ts +3 -1
- package/dist/util/builder.js +33 -8
- package/dist/util/builder.js.map +1 -0
- package/dist/util/builder.mjs +9 -0
- package/dist/util/builder.mjs.map +1 -0
- package/dist/util/date.d.mts +30 -0
- package/dist/util/date.d.ts +17 -15
- package/dist/util/date.js +184 -123
- package/dist/util/date.js.map +1 -0
- package/dist/util/date.mjs +156 -0
- package/dist/util/date.mjs.map +1 -0
- package/dist/util/easeFunctions.d.mts +11 -0
- package/dist/util/easeFunctions.d.ts +4 -2
- package/dist/util/easeFunctions.js +63 -30
- package/dist/util/easeFunctions.js.map +1 -0
- package/dist/util/easeFunctions.mjs +36 -0
- package/dist/util/easeFunctions.mjs.map +1 -0
- package/dist/util/emailValidation.d.mts +3 -0
- package/dist/util/emailValidation.d.ts +3 -1
- package/dist/util/emailValidation.js +32 -2
- package/dist/util/emailValidation.js.map +1 -0
- package/dist/util/emailValidation.mjs +8 -0
- package/dist/util/emailValidation.mjs.map +1 -0
- package/dist/util/loopingArray.d.mts +25 -0
- package/dist/util/loopingArray.d.ts +4 -2
- package/dist/util/loopingArray.js +89 -59
- package/dist/util/loopingArray.js.map +1 -0
- package/dist/util/loopingArray.mjs +72 -0
- package/dist/util/loopingArray.mjs.map +1 -0
- package/dist/util/math.d.mts +3 -0
- package/dist/util/math.d.ts +3 -1
- package/dist/util/math.js +32 -2
- package/dist/util/math.js.map +1 -0
- package/dist/util/math.mjs +8 -0
- package/dist/util/math.mjs.map +1 -0
- package/dist/util/news.d.mts +103 -0
- package/dist/util/news.d.ts +12 -7
- package/dist/util/news.js +73 -24
- package/dist/util/news.js.map +1 -0
- package/dist/util/news.mjs +48 -0
- package/dist/util/news.mjs.map +1 -0
- package/dist/util/noop.d.mts +3 -0
- package/dist/util/noop.d.ts +3 -1
- package/dist/util/noop.js +31 -1
- package/dist/util/noop.js.map +1 -0
- package/dist/util/noop.mjs +6 -0
- package/dist/util/noop.mjs.map +1 -0
- package/dist/util/simpleSearch.d.mts +50 -0
- package/dist/util/simpleSearch.d.ts +6 -4
- package/dist/util/simpleSearch.js +50 -58
- package/dist/util/simpleSearch.js.map +1 -0
- package/dist/util/simpleSearch.mjs +26 -0
- package/dist/util/simpleSearch.mjs.map +1 -0
- package/dist/util/storage.d.mts +16 -0
- package/dist/util/storage.d.ts +4 -3
- package/dist/util/storage.js +63 -31
- package/dist/util/storage.js.map +1 -0
- package/dist/util/storage.mjs +38 -0
- package/dist/util/storage.mjs.map +1 -0
- package/dist/util/types.d.mts +3 -0
- package/dist/util/types.d.ts +3 -1
- package/dist/util/types.js +19 -1
- package/dist/util/types.js.map +1 -0
- package/dist/util/types.mjs +1 -0
- package/dist/util/types.mjs.map +1 -0
- package/package.json +20 -9
- package/dist/components/Span.d.ts +0 -0
- package/dist/components/Span.js +0 -1
- package/dist/components/examples/InputGroupExample.d.ts +0 -6
- package/dist/components/examples/InputGroupExample.js +0 -21
- package/dist/components/examples/MultiSelectExample.d.ts +0 -7
- package/dist/components/examples/MultiSelectExample.js +0 -27
- package/dist/components/examples/SearchableSelectExample.d.ts +0 -6
- package/dist/components/examples/SearchableSelectExample.js +0 -17
- package/dist/components/examples/SelectExample.d.ts +0 -4
- package/dist/components/examples/SelectExample.js +0 -15
- package/dist/components/examples/StackingModals.d.ts +0 -4
- package/dist/components/examples/StackingModals.js +0 -15
- package/dist/components/examples/TableExample.d.ts +0 -9
- package/dist/components/examples/TableExample.js +0 -92
- package/dist/components/examples/TextareaExample.d.ts +0 -6
- package/dist/components/examples/TextareaExample.js +0 -10
- package/dist/components/examples/TileExample.d.ts +0 -9
- package/dist/components/examples/TileExample.js +0 -9
- package/dist/components/examples/Title.d.ts +0 -0
- package/dist/components/examples/Title.js +0 -1
- package/dist/components/examples/date/DateTimePickerExample.d.ts +0 -10
- package/dist/components/examples/date/DateTimePickerExample.js +0 -21
- package/dist/components/examples/properties/CheckboxPropertyExample.d.ts +0 -8
- package/dist/components/examples/properties/CheckboxPropertyExample.js +0 -13
- package/dist/components/examples/properties/DatePropertyExample.d.ts +0 -8
- package/dist/components/examples/properties/DatePropertyExample.js +0 -23
- package/dist/components/examples/properties/MultiSelectPropertyExample.d.ts +0 -8
- package/dist/components/examples/properties/MultiSelectPropertyExample.js +0 -16
- package/dist/components/examples/properties/NumberPropertyExample.d.ts +0 -6
- package/dist/components/examples/properties/NumberPropertyExample.js +0 -13
- package/dist/components/examples/properties/SelectPropertyExample.d.ts +0 -6
- package/dist/components/examples/properties/SelectPropertyExample.js +0 -18
- package/dist/components/examples/properties/TextPropertyExample.d.ts +0 -8
- package/dist/components/examples/properties/TextPropertyExample.js +0 -13
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
// src/components/user-input/ScrollPicker.tsx
|
|
2
|
+
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
|
|
5
|
+
// src/util/noop.ts
|
|
6
|
+
var noop = () => void 0;
|
|
7
|
+
|
|
8
|
+
// src/util/array.ts
|
|
9
|
+
var range = (start, end, allowEmptyRange = false) => {
|
|
10
|
+
if (end < start) {
|
|
11
|
+
if (!allowEmptyRange) {
|
|
12
|
+
console.warn(`range: end (${end}) < start (${start}) should be allowed explicitly, set allowEmptyRange to true`);
|
|
13
|
+
}
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return Array.from({ length: end - start + 1 }, (_, index) => index + start);
|
|
17
|
+
};
|
|
18
|
+
var getNeighbours = (list, item, neighbourDistance = 2) => {
|
|
19
|
+
const index = list.indexOf(item);
|
|
20
|
+
const totalItems = neighbourDistance * 2 + 1;
|
|
21
|
+
if (list.length < totalItems) {
|
|
22
|
+
console.warn("List is to short");
|
|
23
|
+
return list;
|
|
24
|
+
}
|
|
25
|
+
if (index === -1) {
|
|
26
|
+
console.error("item not found in list");
|
|
27
|
+
return list.splice(0, totalItems);
|
|
28
|
+
}
|
|
29
|
+
let start = index - neighbourDistance;
|
|
30
|
+
if (start < 0) {
|
|
31
|
+
start += list.length;
|
|
32
|
+
}
|
|
33
|
+
const end = (index + neighbourDistance + 1) % list.length;
|
|
34
|
+
const result = [];
|
|
35
|
+
let ignoreOnce = list.length === totalItems;
|
|
36
|
+
for (let i = start; i !== end || ignoreOnce; i = (i + 1) % list.length) {
|
|
37
|
+
result.push(list[i]);
|
|
38
|
+
if (end === i && ignoreOnce) {
|
|
39
|
+
ignoreOnce = false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// src/util/math.ts
|
|
46
|
+
var clamp = (value, min = 0, max = 1) => {
|
|
47
|
+
return Math.min(Math.max(value, min), max);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// src/components/user-input/ScrollPicker.tsx
|
|
51
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
52
|
+
var up = 1;
|
|
53
|
+
var down = -1;
|
|
54
|
+
var ScrollPicker = ({
|
|
55
|
+
options,
|
|
56
|
+
mapping,
|
|
57
|
+
selected,
|
|
58
|
+
onChange = noop,
|
|
59
|
+
disabled = false
|
|
60
|
+
}) => {
|
|
61
|
+
let selectedIndex = 0;
|
|
62
|
+
if (selected && options.indexOf(selected) !== -1) {
|
|
63
|
+
selectedIndex = options.indexOf(selected);
|
|
64
|
+
}
|
|
65
|
+
const [{
|
|
66
|
+
currentIndex,
|
|
67
|
+
transition,
|
|
68
|
+
items,
|
|
69
|
+
lastTimeStamp
|
|
70
|
+
}, setAnimation] = useState({
|
|
71
|
+
targetIndex: selectedIndex,
|
|
72
|
+
currentIndex: disabled ? selectedIndex : 0,
|
|
73
|
+
velocity: 0,
|
|
74
|
+
animationVelocity: Math.floor(options.length / 2),
|
|
75
|
+
transition: 0,
|
|
76
|
+
items: options
|
|
77
|
+
});
|
|
78
|
+
const itemsShownCount = 5;
|
|
79
|
+
const shownItems = getNeighbours(range(0, items.length - 1), currentIndex).map((index) => ({
|
|
80
|
+
name: mapping(items[index]),
|
|
81
|
+
index
|
|
82
|
+
}));
|
|
83
|
+
const itemHeight = 40;
|
|
84
|
+
const distance = 8;
|
|
85
|
+
const containerHeight = itemHeight * (itemsShownCount - 2) + distance * (itemsShownCount - 2 + 1);
|
|
86
|
+
const getDirection = useCallback((targetIndex, currentIndex2, transition2, length) => {
|
|
87
|
+
if (targetIndex === currentIndex2) {
|
|
88
|
+
return transition2 > 0 ? up : down;
|
|
89
|
+
}
|
|
90
|
+
let distanceForward = targetIndex - currentIndex2;
|
|
91
|
+
if (distanceForward < 0) {
|
|
92
|
+
distanceForward += length;
|
|
93
|
+
}
|
|
94
|
+
return distanceForward >= length / 2 ? down : up;
|
|
95
|
+
}, []);
|
|
96
|
+
const animate = useCallback((timestamp, startTime) => {
|
|
97
|
+
setAnimation((prevState) => {
|
|
98
|
+
const {
|
|
99
|
+
targetIndex,
|
|
100
|
+
currentIndex: currentIndex2,
|
|
101
|
+
transition: transition2,
|
|
102
|
+
animationVelocity,
|
|
103
|
+
velocity,
|
|
104
|
+
items: items2,
|
|
105
|
+
lastScrollTimeStamp
|
|
106
|
+
} = prevState;
|
|
107
|
+
if (disabled) {
|
|
108
|
+
return { ...prevState, currentIndex: targetIndex, velocity: 0, lastTimeStamp: timestamp };
|
|
109
|
+
}
|
|
110
|
+
if (targetIndex === currentIndex2 && velocity === 0 && transition2 === 0 || !startTime) {
|
|
111
|
+
return { ...prevState, lastTimeStamp: timestamp };
|
|
112
|
+
}
|
|
113
|
+
const progress = (timestamp - startTime) / 1e3;
|
|
114
|
+
const direction = getDirection(targetIndex, currentIndex2, transition2, items2.length);
|
|
115
|
+
let newVelocity = velocity;
|
|
116
|
+
let usedVelocity;
|
|
117
|
+
let newCurrentIndex = currentIndex2;
|
|
118
|
+
const isAutoScrolling = velocity === 0 && (!lastScrollTimeStamp || timestamp - lastScrollTimeStamp > 300);
|
|
119
|
+
const newLastScrollTimeStamp = velocity !== 0 ? timestamp : lastScrollTimeStamp;
|
|
120
|
+
if (isAutoScrolling) {
|
|
121
|
+
usedVelocity = direction * animationVelocity;
|
|
122
|
+
} else {
|
|
123
|
+
usedVelocity = velocity;
|
|
124
|
+
newVelocity = velocity * 0.5;
|
|
125
|
+
if (Math.abs(newVelocity) <= 0.05) {
|
|
126
|
+
newVelocity = 0;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
let newTransition = transition2 + usedVelocity * progress;
|
|
130
|
+
const changeThreshold = 0.5;
|
|
131
|
+
while (newTransition >= changeThreshold) {
|
|
132
|
+
if (newCurrentIndex === targetIndex && newTransition >= changeThreshold && isAutoScrolling) {
|
|
133
|
+
newTransition = 0;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
newCurrentIndex = (currentIndex2 + 1) % items2.length;
|
|
137
|
+
newTransition -= 1;
|
|
138
|
+
}
|
|
139
|
+
if (newTransition >= changeThreshold) {
|
|
140
|
+
newTransition = 0;
|
|
141
|
+
}
|
|
142
|
+
while (newTransition <= -changeThreshold) {
|
|
143
|
+
if (newCurrentIndex === targetIndex && newTransition <= -changeThreshold && isAutoScrolling) {
|
|
144
|
+
newTransition = 0;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
newCurrentIndex = currentIndex2 === 0 ? items2.length - 1 : currentIndex2 - 1;
|
|
148
|
+
newTransition += 1;
|
|
149
|
+
}
|
|
150
|
+
let newTargetIndex = targetIndex;
|
|
151
|
+
if (!isAutoScrolling) {
|
|
152
|
+
newTargetIndex = newCurrentIndex;
|
|
153
|
+
}
|
|
154
|
+
if ((currentIndex2 !== newTargetIndex || newTargetIndex !== targetIndex) && newTargetIndex === newCurrentIndex) {
|
|
155
|
+
onChange(items2[newCurrentIndex]);
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
targetIndex: newTargetIndex,
|
|
159
|
+
currentIndex: newCurrentIndex,
|
|
160
|
+
animationVelocity,
|
|
161
|
+
transition: newTransition,
|
|
162
|
+
velocity: newVelocity,
|
|
163
|
+
items: items2,
|
|
164
|
+
lastTimeStamp: timestamp,
|
|
165
|
+
lastScrollTimeStamp: newLastScrollTimeStamp
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
}, [disabled, getDirection, onChange]);
|
|
169
|
+
useEffect(() => {
|
|
170
|
+
requestAnimationFrame((timestamp) => animate(timestamp, lastTimeStamp));
|
|
171
|
+
});
|
|
172
|
+
const opacity = (transition2, index, itemsCount) => {
|
|
173
|
+
const max = 100;
|
|
174
|
+
const min = 0;
|
|
175
|
+
const distance2 = max - min;
|
|
176
|
+
let opacityValue = min;
|
|
177
|
+
const unitTransition = clamp(transition2 / 0.5);
|
|
178
|
+
if (index === 1 || index === itemsCount - 2) {
|
|
179
|
+
if (index === 1 && transition2 > 0) {
|
|
180
|
+
opacityValue += Math.floor(unitTransition * distance2);
|
|
181
|
+
}
|
|
182
|
+
if (index === itemsCount - 2 && transition2 < 0) {
|
|
183
|
+
opacityValue += Math.floor(unitTransition * distance2);
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
opacityValue = max;
|
|
187
|
+
}
|
|
188
|
+
return clamp(1 - opacityValue / max);
|
|
189
|
+
};
|
|
190
|
+
return /* @__PURE__ */ jsx(
|
|
191
|
+
"div",
|
|
192
|
+
{
|
|
193
|
+
className: "relative overflow-hidden",
|
|
194
|
+
style: { height: containerHeight },
|
|
195
|
+
onWheel: (event) => {
|
|
196
|
+
if (event.deltaY !== 0) {
|
|
197
|
+
setAnimation(({ velocity, ...animationData }) => ({ ...animationData, velocity: velocity + event.deltaY }));
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
children: /* @__PURE__ */ jsxs("div", { className: "absolute top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2", children: [
|
|
201
|
+
/* @__PURE__ */ jsx(
|
|
202
|
+
"div",
|
|
203
|
+
{
|
|
204
|
+
className: "absolute z-[1] top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2 w-full min-w-[40px] border border-y-2 border-x-0 border-[#00000033]",
|
|
205
|
+
style: { height: `${itemHeight}px` }
|
|
206
|
+
}
|
|
207
|
+
),
|
|
208
|
+
/* @__PURE__ */ jsx(
|
|
209
|
+
"div",
|
|
210
|
+
{
|
|
211
|
+
className: "col select-none",
|
|
212
|
+
style: {
|
|
213
|
+
transform: `translateY(${-transition * (distance + itemHeight)}px)`,
|
|
214
|
+
columnGap: `${distance}px`
|
|
215
|
+
},
|
|
216
|
+
children: shownItems.map(({ name, index }, arrayIndex) => /* @__PURE__ */ jsx(
|
|
217
|
+
"div",
|
|
218
|
+
{
|
|
219
|
+
className: clsx(
|
|
220
|
+
`col items-center justify-center rounded-md`,
|
|
221
|
+
{
|
|
222
|
+
"text-primary font-bold": currentIndex === index,
|
|
223
|
+
"text-on-background": currentIndex === index,
|
|
224
|
+
"cursor-pointer": !disabled,
|
|
225
|
+
"cursor-not-allowed": disabled
|
|
226
|
+
}
|
|
227
|
+
),
|
|
228
|
+
style: {
|
|
229
|
+
opacity: currentIndex !== index ? opacity(transition, arrayIndex, shownItems.length) : void 0,
|
|
230
|
+
height: `${itemHeight}px`,
|
|
231
|
+
maxHeight: `${itemHeight}px`
|
|
232
|
+
},
|
|
233
|
+
onClick: () => !disabled && setAnimation((prevState) => ({ ...prevState, targetIndex: index })),
|
|
234
|
+
children: name
|
|
235
|
+
},
|
|
236
|
+
index
|
|
237
|
+
))
|
|
238
|
+
}
|
|
239
|
+
)
|
|
240
|
+
] })
|
|
241
|
+
}
|
|
242
|
+
);
|
|
243
|
+
};
|
|
244
|
+
export {
|
|
245
|
+
ScrollPicker
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=ScrollPicker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/user-input/ScrollPicker.tsx","../../../src/util/noop.ts","../../../src/util/array.ts","../../../src/util/math.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport { noop } from '../../util/noop'\nimport { getNeighbours, range } from '../../util/array'\nimport { clamp } from '../../util/math'\n\nexport type ScrollPickerProps<T> = {\n options: T[],\n mapping: (value: T) => string,\n selected?: T,\n onChange?: (value: T) => void,\n disabled?: boolean,\n}\n\ntype AnimationData<T> = {\n /** The index we scroll to */\n targetIndex: number,\n /** The index we are currently showing centered */\n currentIndex: number,\n items: T[],\n /** From -0.5 to 0.5 */\n transition: number,\n velocity: number,\n animationVelocity: number,\n lastTimeStamp?: number,\n lastScrollTimeStamp?: number,\n}\n\nconst up = 1\nconst down = -1\ntype Direction = 1 | -1\n\n/**\n * A component for picking an option by scrolling\n */\nexport const ScrollPicker = <T, >({\n options,\n mapping,\n selected,\n onChange = noop,\n disabled = false,\n }: ScrollPickerProps<T>) => {\n let selectedIndex = 0\n if (selected && options.indexOf(selected) !== -1) {\n selectedIndex = options.indexOf(selected)\n }\n const [{\n currentIndex,\n transition,\n items,\n lastTimeStamp\n }, setAnimation] = useState<AnimationData<T>>({\n targetIndex: selectedIndex,\n currentIndex: disabled ? selectedIndex : 0,\n velocity: 0,\n animationVelocity: Math.floor(options.length / 2),\n transition: 0,\n items: options,\n })\n\n const itemsShownCount = 5\n const shownItems = getNeighbours(range(0, items.length - 1), currentIndex).map(index => ({\n name: mapping(items[index]!), index\n }))\n\n const itemHeight = 40\n const distance = 8\n\n const containerHeight = itemHeight * (itemsShownCount - 2) + distance * (itemsShownCount - 2 + 1)\n\n const getDirection = useCallback((targetIndex: number, currentIndex: number, transition: number, length: number): Direction => {\n if (targetIndex === currentIndex) {\n return transition > 0 ? up : down\n }\n let distanceForward = targetIndex - currentIndex\n if (distanceForward < 0) {\n distanceForward += length\n }\n return distanceForward >= length / 2 ? down : up\n }, [])\n\n const animate = useCallback((timestamp: number, startTime: number | undefined) => {\n setAnimation((prevState) => {\n const {\n targetIndex,\n currentIndex,\n transition,\n animationVelocity,\n velocity,\n items,\n lastScrollTimeStamp\n } = prevState\n if (disabled) {\n return { ...prevState, currentIndex: targetIndex, velocity: 0, lastTimeStamp: timestamp }\n }\n if ((targetIndex === currentIndex && velocity === 0 && transition === 0) || !startTime) {\n return { ...prevState, lastTimeStamp: timestamp }\n }\n const progress = (timestamp - startTime) / 1000 // to seconds\n const direction = getDirection(targetIndex, currentIndex, transition, items.length)\n\n let newVelocity = velocity\n let usedVelocity\n let newCurrentIndex = currentIndex\n const isAutoScrolling = velocity === 0 && (!lastScrollTimeStamp || timestamp - lastScrollTimeStamp > 300)\n\n const newLastScrollTimeStamp = velocity !== 0 ? timestamp : lastScrollTimeStamp\n\n // manual scrolling\n if (isAutoScrolling) {\n usedVelocity = direction * animationVelocity\n } else {\n usedVelocity = velocity\n newVelocity = velocity * 0.5 // drag loss\n if (Math.abs(newVelocity) <= 0.05) {\n newVelocity = 0\n }\n }\n\n let newTransition = transition + usedVelocity * progress\n const changeThreshold = 0.5\n\n while (newTransition >= changeThreshold) {\n if (newCurrentIndex === targetIndex && newTransition >= changeThreshold && isAutoScrolling) {\n newTransition = 0\n break\n }\n newCurrentIndex = (currentIndex + 1) % items.length\n newTransition -= 1\n }\n if (newTransition >= changeThreshold) {\n newTransition = 0\n }\n while (newTransition <= -changeThreshold) {\n if (newCurrentIndex === targetIndex && newTransition <= -changeThreshold && isAutoScrolling) {\n newTransition = 0\n break\n }\n newCurrentIndex = currentIndex === 0 ? items.length - 1 : currentIndex - 1\n newTransition += 1\n }\n let newTargetIndex = targetIndex\n if (!isAutoScrolling) {\n newTargetIndex = newCurrentIndex\n }\n\n if ((currentIndex !== newTargetIndex || newTargetIndex !== targetIndex) && newTargetIndex === newCurrentIndex) {\n onChange(items[newCurrentIndex]!)\n }\n return {\n targetIndex: newTargetIndex,\n currentIndex: newCurrentIndex,\n animationVelocity,\n transition: newTransition,\n velocity: newVelocity,\n items,\n lastTimeStamp: timestamp,\n lastScrollTimeStamp: newLastScrollTimeStamp\n }\n })\n }, [disabled, getDirection, onChange])\n\n useEffect(() => {\n // constant update\n requestAnimationFrame((timestamp) => animate(timestamp, lastTimeStamp))\n })\n\n const opacity = (transition: number, index: number, itemsCount: number) => {\n const max = 100\n const min = 0\n const distance = max - min\n\n let opacityValue = min\n const unitTransition = clamp((transition) / 0.5)\n if (index === 1 || index === itemsCount - 2) {\n if (index === 1 && transition > 0) {\n opacityValue += Math.floor(unitTransition * distance)\n }\n if (index === itemsCount - 2 && transition < 0) {\n opacityValue += Math.floor(unitTransition * distance)\n }\n } else {\n opacityValue = max\n }\n\n // TODO this is not the right value for the bottom entry\n return clamp(1- (opacityValue / max))\n }\n\n return (\n <div\n className=\"relative overflow-hidden\"\n style={{ height: containerHeight }}\n onWheel={event => {\n if (event.deltaY !== 0) {\n // TODO slower increase\n setAnimation(({ velocity, ...animationData }) =>\n ({ ...animationData, velocity: velocity + event.deltaY }))\n }\n }}\n >\n <div className=\"absolute top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2\">\n <div\n className=\"absolute z-[1] top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2 w-full min-w-[40px] border border-y-2 border-x-0 border-[#00000033]\"\n style={{ height: `${itemHeight}px` }}\n />\n <div\n className=\"col select-none\"\n style={{\n transform: `translateY(${-transition * (distance + itemHeight)}px)`,\n columnGap: `${distance}px`,\n }}\n >\n {shownItems.map(({ name, index }, arrayIndex) => (\n <div\n key={index}\n className={clsx(\n `col items-center justify-center rounded-md`,\n {\n 'text-primary font-bold': currentIndex === index,\n 'text-on-background': currentIndex === index,\n 'cursor-pointer': !disabled,\n 'cursor-not-allowed': disabled,\n }\n )}\n style={{\n opacity: currentIndex !== index ? opacity(transition, arrayIndex, shownItems.length) : undefined,\n height: `${itemHeight}px`,\n maxHeight: `${itemHeight}px`,\n }}\n onClick={() => !disabled && setAnimation(prevState => ({ ...prevState, targetIndex: index }))}\n >\n {name}\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n","export const noop = () => undefined\n","export const equalSizeGroups = <T >(array: T[], groupSize: number): T[][] => {\n if (groupSize <= 0) {\n console.warn(`group size should be greater than 0: groupSize = ${groupSize}`)\n return [[...array]]\n }\n\n const groups = []\n for (let i = 0; i < array.length; i += groupSize) {\n groups.push(array.slice(i, Math.min(i + groupSize, array.length)))\n }\n return groups\n}\n\n/**\n * @param start\n * @param end inclusive\n * @param allowEmptyRange Whether the range can be defined empty via end < start\n */\nexport const range = (start: number, end: number, allowEmptyRange: boolean = false): number[] => {\n if (end < start) {\n if (!allowEmptyRange) {\n console.warn(`range: end (${end}) < start (${start}) should be allowed explicitly, set allowEmptyRange to true`)\n }\n return []\n }\n return Array.from({ length: end - start + 1 }, (_, index) => index + start)\n}\n\n/** Finds the closest match\n * @param list The list of all possible matches\n * @param firstCloser Return whether item1 is closer than item2\n */\nexport const closestMatch = <T >(list: T[], firstCloser: (item1: T, item2: T) => boolean) => {\n return list.reduce((item1, item2) => {\n return firstCloser(item1, item2) ? item1 : item2\n })\n}\n\n/**\n * returns the item in middle of a list and its neighbours before and after\n * e.g. [1,2,3,4,5,6] for item = 1 would return [5,6,1,2,3]\n */\nexport const getNeighbours = <T >(list: T[], item: T, neighbourDistance: number = 2) => {\n const index = list.indexOf(item)\n const totalItems = neighbourDistance * 2 + 1\n if (list.length < totalItems) {\n console.warn('List is to short')\n return list\n }\n\n if (index === -1) {\n console.error('item not found in list')\n return list.splice(0, totalItems)\n }\n\n let start = index - neighbourDistance\n if (start < 0) {\n start += list.length\n }\n const end = (index + neighbourDistance + 1) % list.length\n\n const result: T[] = []\n let ignoreOnce = list.length === totalItems\n for (let i = start; i !== end || ignoreOnce; i = (i + 1) % list.length) {\n result.push(list[i]!)\n if (end === i && ignoreOnce) {\n ignoreOnce = false\n }\n }\n return result\n}\n\nexport const createLoopingListWithIndex = <T >(list: T[], startIndex: number = 0, length: number = 0, forwards: boolean = true) => {\n if (length < 0) {\n console.warn(`createLoopingList: length must be >= 0, given ${length}`)\n } else if (length === 0) {\n length = list.length\n }\n\n const returnList: [number, T][] = []\n\n if (forwards) {\n for (let i = startIndex; returnList.length < length; i = (i + 1) % list.length) {\n returnList.push([i, list[i]!])\n }\n } else {\n for (let i = startIndex; returnList.length < length; i = i === 0 ? i = list.length - 1 : i - 1) {\n returnList.push([i, list[i]!])\n }\n }\n\n return returnList\n}\n\nexport const createLoopingList = <T >(list: T[], startIndex: number = 0, length: number = 0, forwards: boolean = true) => {\n return createLoopingListWithIndex(list, startIndex, length, forwards).map(([_, item]) => item)\n}\n\nexport const ArrayUtil = {\n unique: <T>(list: T[]): T[] => {\n const seen = new Set<T>()\n return list.filter((item) => {\n if (seen.has(item)) {\n return false\n }\n seen.add(item)\n return true\n })\n },\n\n difference: <T>(list: T[], removeList: T[]): T[] => {\n const remove = new Set<T>(removeList)\n return list.filter((item) => !remove.has(item))\n }\n}\n","export const clamp = (value: number, min: number = 0, max: number = 1): number => {\n return Math.min(Math.max(value, min), max)\n}\n"],"mappings":"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","names":["currentIndex","transition","items","distance"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { SelectProps, SelectOption } from './Select.mjs';
|
|
3
|
+
import 'react';
|
|
4
|
+
import './Label.mjs';
|
|
5
|
+
|
|
6
|
+
type SearchableSelectProps<T> = SelectProps<T> & {
|
|
7
|
+
searchMapping: (value: SelectOption<T>) => string[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* A Select where items can be searched
|
|
11
|
+
*/
|
|
12
|
+
declare const SearchableSelect: <T>({ value, options, searchMapping, ...selectProps }: SearchableSelectProps<T>) => react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
export { SearchableSelect, type SearchableSelectProps };
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { SelectProps, SelectOption } from './Select.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import './Label.js';
|
|
5
|
+
|
|
6
|
+
type SearchableSelectProps<T> = SelectProps<T> & {
|
|
3
7
|
searchMapping: (value: SelectOption<T>) => string[];
|
|
4
8
|
};
|
|
5
9
|
/**
|
|
6
10
|
* A Select where items can be searched
|
|
7
11
|
*/
|
|
8
|
-
|
|
12
|
+
declare const SearchableSelect: <T>({ value, options, searchMapping, ...selectProps }: SearchableSelectProps<T>) => react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
export { SearchableSelect, type SearchableSelectProps };
|
|
@@ -1,14 +1,335 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const [search, setSearch] = useState('');
|
|
12
|
-
const filteredOptions = MultiSearchWithMapping(search, options, searchMapping);
|
|
13
|
-
return (_jsx(Select, { value: value, options: filteredOptions, additionalItems: [(_jsxs("div", { className: "row gap-x-2 items-center", children: [_jsx(Input, { autoFocus: true, value: search, onChange: setSearch }), _jsx(Search, {})] }, "selectSearch"))], ...selectProps }));
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
11
|
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/components/user-input/SearchableSelect.tsx
|
|
31
|
+
var SearchableSelect_exports = {};
|
|
32
|
+
__export(SearchableSelect_exports, {
|
|
33
|
+
SearchableSelect: () => SearchableSelect
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(SearchableSelect_exports);
|
|
36
|
+
var import_react4 = require("react");
|
|
37
|
+
var import_lucide_react2 = require("lucide-react");
|
|
38
|
+
|
|
39
|
+
// src/util/simpleSearch.ts
|
|
40
|
+
var MultiSearchWithMapping = (search, objects, mapping) => {
|
|
41
|
+
return objects.filter((object) => {
|
|
42
|
+
const mappedSearchKeywords = mapping(object).map((value) => value.toLowerCase().trim());
|
|
43
|
+
return !!mappedSearchKeywords.find((value) => value.includes(search.toLowerCase().trim()));
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/components/user-input/Select.tsx
|
|
48
|
+
var import_react = require("@headlessui/react");
|
|
49
|
+
var import_lucide_react = require("lucide-react");
|
|
50
|
+
var import_clsx = __toESM(require("clsx"));
|
|
51
|
+
|
|
52
|
+
// src/components/user-input/Label.tsx
|
|
53
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
54
|
+
var styleMapping = {
|
|
55
|
+
labelSmall: "textstyle-label-sm",
|
|
56
|
+
labelMedium: "textstyle-label-md",
|
|
57
|
+
labelBig: "textstyle-label-lg"
|
|
58
|
+
};
|
|
59
|
+
var Label = ({
|
|
60
|
+
children,
|
|
61
|
+
name,
|
|
62
|
+
labelType = "labelSmall",
|
|
63
|
+
...props
|
|
64
|
+
}) => {
|
|
65
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { ...props, children: children ? children : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: styleMapping[labelType], children: name }) });
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// src/components/user-input/Select.tsx
|
|
69
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
70
|
+
var Select = ({
|
|
71
|
+
value,
|
|
72
|
+
label,
|
|
73
|
+
options,
|
|
74
|
+
onChange,
|
|
75
|
+
isHidingCurrentValue = true,
|
|
76
|
+
hintText = "",
|
|
77
|
+
showDisabledOptions = true,
|
|
78
|
+
isDisabled,
|
|
79
|
+
className,
|
|
80
|
+
textColor = "text-menu-text",
|
|
81
|
+
hoverColor = "hover:brightness-90",
|
|
82
|
+
additionalItems,
|
|
83
|
+
selectedDisplayOverwrite
|
|
84
|
+
}) => {
|
|
85
|
+
let filteredOptions = isHidingCurrentValue ? options.filter((option) => option.value !== value) : options;
|
|
86
|
+
if (!showDisabledOptions) {
|
|
87
|
+
filteredOptions = filteredOptions.filter((value2) => !value2.disabled);
|
|
88
|
+
}
|
|
89
|
+
const selectedOption = options.find((option) => option.value === value);
|
|
90
|
+
if (value !== void 0 && selectedOption === void 0 && selectedDisplayOverwrite === void 0) {
|
|
91
|
+
console.warn("The selected value is not found in the options list. This might be an error on your part or default behavior if it is complex data type on which === does not work. In case of the latter use selectedDisplayOverwrite to set your selected text or component");
|
|
92
|
+
}
|
|
93
|
+
const borderColor = "border-menu-border";
|
|
94
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: (0, import_clsx.default)(className), children: [
|
|
95
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Label, { ...label, labelType: label.labelType ?? "labelBig", className: (0, import_clsx.default)("mb-1", label.className) }),
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react.Menu, { as: "div", className: "relative text-menu-text", children: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
|
97
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
98
|
+
import_react.Menu.Button,
|
|
99
|
+
{
|
|
100
|
+
className: (0, import_clsx.default)(
|
|
101
|
+
"inline-flex w-full justify-between items-center rounded-t-lg border-2 px-4 py-2 font-medium bg-menu-background text-menu-text",
|
|
102
|
+
textColor,
|
|
103
|
+
borderColor,
|
|
104
|
+
{
|
|
105
|
+
"rounded-b-lg": !open,
|
|
106
|
+
[hoverColor]: !isDisabled,
|
|
107
|
+
"bg-disabled-background cursor-not-allowed text-disabled": isDisabled
|
|
108
|
+
}
|
|
109
|
+
),
|
|
110
|
+
disabled: isDisabled,
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: selectedDisplayOverwrite ?? selectedOption?.label ?? hintText }),
|
|
113
|
+
open ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ChevronUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ChevronDown, {})
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
),
|
|
117
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
118
|
+
import_react.Menu.Items,
|
|
119
|
+
{
|
|
120
|
+
className: "absolute w-full z-10 rounded-b-lg bg-menu-background text-menu-text shadow-lg max-h-[500px] overflow-y-auto",
|
|
121
|
+
children: [
|
|
122
|
+
(additionalItems ?? []).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
123
|
+
"div",
|
|
124
|
+
{
|
|
125
|
+
className: (0, import_clsx.default)(borderColor, "px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0", {
|
|
126
|
+
"border-b-0 rounded-b-lg": filteredOptions.length === 0 && index === (additionalItems?.length ?? 1) - 1
|
|
127
|
+
}),
|
|
128
|
+
children: item
|
|
129
|
+
},
|
|
130
|
+
`additionalItems${index}`
|
|
131
|
+
)),
|
|
132
|
+
filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react.Menu.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
133
|
+
"div",
|
|
134
|
+
{
|
|
135
|
+
className: (0, import_clsx.default)(
|
|
136
|
+
"px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0 cursor-pointer",
|
|
137
|
+
option.className,
|
|
138
|
+
borderColor,
|
|
139
|
+
{
|
|
140
|
+
"brightness-90": option.value === value,
|
|
141
|
+
"brightness-95": index % 2 === 1,
|
|
142
|
+
"text-disabled bg-disabled-background cursor-not-allowed": !!option.disabled,
|
|
143
|
+
"bg-menu-background text-menu-text hover:brightness-90 cursor-pointer": !option.disabled,
|
|
144
|
+
"rounded-b-lg": index === filteredOptions.length - 1
|
|
145
|
+
}
|
|
146
|
+
),
|
|
147
|
+
onClick: () => {
|
|
148
|
+
if (!option.disabled) {
|
|
149
|
+
onChange(option.value);
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
children: option.label
|
|
153
|
+
}
|
|
154
|
+
) }, `item${index}`))
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
] }) })
|
|
159
|
+
] });
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// src/components/user-input/Input.tsx
|
|
163
|
+
var import_react3 = require("react");
|
|
164
|
+
var import_clsx2 = __toESM(require("clsx"));
|
|
165
|
+
|
|
166
|
+
// src/hooks/useSaveDelay.ts
|
|
167
|
+
var import_react2 = require("react");
|
|
168
|
+
function useSaveDelay(setNotificationStatus, delay) {
|
|
169
|
+
const [updateTimer, setUpdateTimer] = (0, import_react2.useState)(void 0);
|
|
170
|
+
const [notificationTimer, setNotificationTimer] = (0, import_react2.useState)(void 0);
|
|
171
|
+
const restartTimer = (onSave) => {
|
|
172
|
+
clearTimeout(updateTimer);
|
|
173
|
+
setUpdateTimer(setTimeout(() => {
|
|
174
|
+
onSave();
|
|
175
|
+
setNotificationStatus(true);
|
|
176
|
+
clearTimeout(notificationTimer);
|
|
177
|
+
setNotificationTimer(setTimeout(() => {
|
|
178
|
+
setNotificationStatus(false);
|
|
179
|
+
clearTimeout(notificationTimer);
|
|
180
|
+
}, delay));
|
|
181
|
+
clearTimeout(updateTimer);
|
|
182
|
+
}, delay));
|
|
183
|
+
};
|
|
184
|
+
const clearUpdateTimer = (hasSaved = true) => {
|
|
185
|
+
clearTimeout(updateTimer);
|
|
186
|
+
if (hasSaved) {
|
|
187
|
+
setNotificationStatus(true);
|
|
188
|
+
clearTimeout(notificationTimer);
|
|
189
|
+
setNotificationTimer(setTimeout(() => {
|
|
190
|
+
setNotificationStatus(false);
|
|
191
|
+
clearTimeout(notificationTimer);
|
|
192
|
+
}, delay));
|
|
193
|
+
} else {
|
|
194
|
+
setNotificationStatus(false);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
(0, import_react2.useEffect)(() => {
|
|
198
|
+
return () => {
|
|
199
|
+
clearTimeout(updateTimer);
|
|
200
|
+
clearTimeout(notificationTimer);
|
|
201
|
+
};
|
|
202
|
+
}, []);
|
|
203
|
+
return { restartTimer, clearUpdateTimer };
|
|
204
|
+
}
|
|
205
|
+
var useSaveDelay_default = useSaveDelay;
|
|
206
|
+
|
|
207
|
+
// src/util/noop.ts
|
|
208
|
+
var noop = () => void 0;
|
|
209
|
+
|
|
210
|
+
// src/components/user-input/Input.tsx
|
|
211
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
212
|
+
var ControlledInput = ({
|
|
213
|
+
id,
|
|
214
|
+
type = "text",
|
|
215
|
+
value,
|
|
216
|
+
label,
|
|
217
|
+
onChange = noop,
|
|
218
|
+
onChangeEvent = noop,
|
|
219
|
+
className = "",
|
|
220
|
+
onEditCompleted,
|
|
221
|
+
expanded = true,
|
|
222
|
+
onBlur,
|
|
223
|
+
containerClassName,
|
|
224
|
+
...restProps
|
|
225
|
+
}) => {
|
|
226
|
+
const {
|
|
227
|
+
restartTimer,
|
|
228
|
+
clearUpdateTimer
|
|
229
|
+
} = useSaveDelay_default(() => void 0, 3e3);
|
|
230
|
+
const ref = (0, import_react3.useRef)(null);
|
|
231
|
+
(0, import_react3.useEffect)(() => {
|
|
232
|
+
if (restProps.autoFocus) {
|
|
233
|
+
ref.current?.focus();
|
|
234
|
+
}
|
|
235
|
+
}, [restProps.autoFocus]);
|
|
236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx2.default)({ "w-full": expanded }, containerClassName), children: [
|
|
237
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Label, { ...label, htmlFor: id, className: (0, import_clsx2.default)("mb-1", label.className) }),
|
|
238
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
239
|
+
"input",
|
|
240
|
+
{
|
|
241
|
+
ref,
|
|
242
|
+
value,
|
|
243
|
+
id,
|
|
244
|
+
type,
|
|
245
|
+
className: (0, import_clsx2.default)("block bg-surface text-on-surface px-3 py-2 rounded-md w-full border-2 border-gray-200 hover:border-primary focus:outline-none focus:border-primary focus:ring-primary", className),
|
|
246
|
+
onBlur: (event) => {
|
|
247
|
+
if (onBlur) {
|
|
248
|
+
onBlur(event);
|
|
249
|
+
}
|
|
250
|
+
if (onEditCompleted) {
|
|
251
|
+
onEditCompleted(event.target.value, event);
|
|
252
|
+
clearUpdateTimer();
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
onChange: (e) => {
|
|
256
|
+
const value2 = e.target.value;
|
|
257
|
+
if (onEditCompleted) {
|
|
258
|
+
restartTimer(() => {
|
|
259
|
+
onEditCompleted(value2, e);
|
|
260
|
+
clearUpdateTimer();
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
onChange(value2, e);
|
|
264
|
+
onChangeEvent(e);
|
|
265
|
+
},
|
|
266
|
+
...restProps
|
|
267
|
+
}
|
|
268
|
+
)
|
|
269
|
+
] });
|
|
270
|
+
};
|
|
271
|
+
var FormInput = (0, import_react3.forwardRef)(function FormInput2({
|
|
272
|
+
id,
|
|
273
|
+
labelText,
|
|
274
|
+
errorText,
|
|
275
|
+
className,
|
|
276
|
+
labelClassName,
|
|
277
|
+
errorClassName,
|
|
278
|
+
containerClassName,
|
|
279
|
+
required,
|
|
280
|
+
...restProps
|
|
281
|
+
}, ref) {
|
|
282
|
+
const input = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
283
|
+
"input",
|
|
284
|
+
{
|
|
285
|
+
ref,
|
|
286
|
+
id,
|
|
287
|
+
...restProps,
|
|
288
|
+
className: (0, import_clsx2.default)(
|
|
289
|
+
"block bg-surface text-on-surface px-3 py-2 rounded-md w-full border-2 border-gray-200 hover:border-primary focus:outline-none focus:border-primary focus:ring-primary",
|
|
290
|
+
{
|
|
291
|
+
"focus:border-primary focus:ring-primary": !errorText,
|
|
292
|
+
"focus:border-negative focus:ring-negative text-negative": !!errorText
|
|
293
|
+
},
|
|
294
|
+
className
|
|
295
|
+
)
|
|
296
|
+
}
|
|
297
|
+
);
|
|
298
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx2.default)("flex flex-col gap-y-1", containerClassName), children: [
|
|
299
|
+
labelText && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("label", { htmlFor: id, className: (0, import_clsx2.default)("textstyle-label-md", labelClassName), children: [
|
|
300
|
+
labelText,
|
|
301
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-primary font-bold", children: "*" })
|
|
302
|
+
] }),
|
|
303
|
+
input,
|
|
304
|
+
errorText && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { htmlFor: id, className: (0, import_clsx2.default)("text-negative", errorClassName), children: errorText })
|
|
305
|
+
] });
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
// src/components/user-input/SearchableSelect.tsx
|
|
309
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
310
|
+
var SearchableSelect = ({
|
|
311
|
+
value,
|
|
312
|
+
options,
|
|
313
|
+
searchMapping,
|
|
314
|
+
...selectProps
|
|
315
|
+
}) => {
|
|
316
|
+
const [search, setSearch] = (0, import_react4.useState)("");
|
|
317
|
+
const filteredOptions = MultiSearchWithMapping(search, options, searchMapping);
|
|
318
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
319
|
+
Select,
|
|
320
|
+
{
|
|
321
|
+
value,
|
|
322
|
+
options: filteredOptions,
|
|
323
|
+
additionalItems: [/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "row gap-x-2 items-center", children: [
|
|
324
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ControlledInput, { autoFocus: true, value: search, onChange: setSearch }),
|
|
325
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.Search, {})
|
|
326
|
+
] }, "selectSearch")],
|
|
327
|
+
...selectProps
|
|
328
|
+
}
|
|
329
|
+
);
|
|
330
|
+
};
|
|
331
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
332
|
+
0 && (module.exports = {
|
|
333
|
+
SearchableSelect
|
|
334
|
+
});
|
|
335
|
+
//# sourceMappingURL=SearchableSelect.js.map
|