@festo-ui/react 9.0.0-dev.711 → 9.0.0-dev.713

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.
Files changed (525) hide show
  1. package/index.css +1 -0
  2. package/index.d.ts +65 -0
  3. package/index.js +60 -0
  4. package/lib/components/accordion/Accordion.d.ts +11 -0
  5. package/lib/components/accordion/Accordion.js +43 -0
  6. package/{dist → lib}/components/accordion/AccordionContext.d.ts +2 -2
  7. package/lib/components/accordion/AccordionContext.js +3 -0
  8. package/lib/components/accordion/accordion-header/AccordionHeader.d.ts +3 -0
  9. package/lib/components/accordion/accordion-header/AccordionHeader.js +17 -0
  10. package/lib/components/accordion/accordion-item/AccordionItem.d.ts +9 -0
  11. package/lib/components/accordion/accordion-item/AccordionItem.js +65 -0
  12. package/{dist → lib}/components/accordion/accordion-item/AccordionItemContext.d.ts +2 -2
  13. package/lib/components/accordion/accordion-item/AccordionItemContext.js +3 -0
  14. package/lib/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.d.ts +3 -0
  15. package/lib/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.js +70 -0
  16. package/lib/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.d.ts +3 -0
  17. package/lib/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.js +41 -0
  18. package/lib/components/bottom-sheet/BottomSheet.d.ts +11 -0
  19. package/lib/components/bottom-sheet/BottomSheet.js +93 -0
  20. package/lib/components/bottom-sheet/BottomSheet.stories.d.ts +9 -0
  21. package/lib/components/bottom-sheet/BottomSheet.stories.js +49 -0
  22. package/{dist → lib}/components/breadcrumb/Breadcrumb.d.ts +4 -3
  23. package/lib/components/breadcrumb/Breadcrumb.js +40 -0
  24. package/lib/components/buttons/button/Button.d.ts +12 -0
  25. package/lib/components/buttons/button/Button.js +49 -0
  26. package/lib/components/buttons/button/Button.stories.d.ts +13 -0
  27. package/lib/components/buttons/button/Button.stories.js +86 -0
  28. package/lib/components/card/Card.d.ts +3 -0
  29. package/lib/components/card/Card.js +13 -0
  30. package/lib/components/card/CardBody.d.ts +6 -0
  31. package/lib/components/card/CardBody.js +17 -0
  32. package/lib/components/card/CardHeader.d.ts +9 -0
  33. package/lib/components/card/CardHeader.js +29 -0
  34. package/lib/components/card/CardHeader.stories.helper.d.ts +3 -0
  35. package/lib/components/card/CardHeader.stories.helper.js +9 -0
  36. package/lib/components/card/CardNotification.d.ts +7 -0
  37. package/lib/components/card/CardNotification.js +25 -0
  38. package/lib/components/chips/chip/Chip.d.ts +17 -0
  39. package/lib/components/chips/chip/Chip.js +47 -0
  40. package/lib/components/chips/chip-container/ChipContainer.d.ts +6 -0
  41. package/lib/components/chips/chip-container/ChipContainer.js +17 -0
  42. package/{dist → lib}/components/icon-wrapper/IconWrapper.d.ts +1 -1
  43. package/lib/components/icon-wrapper/IconWrapper.js +17 -0
  44. package/lib/components/link-button/LinkButton.d.ts +9 -0
  45. package/lib/components/link-button/LinkButton.js +32 -0
  46. package/lib/components/loading-indicator/LoadingIndicator.d.ts +7 -0
  47. package/lib/components/loading-indicator/LoadingIndicator.js +39 -0
  48. package/lib/components/mobile-flyout/MobileFlyout.d.ts +12 -0
  49. package/lib/components/mobile-flyout/MobileFlyout.js +82 -0
  50. package/{dist → lib}/components/mobile-flyout/MobileFlyoutContext.d.ts +2 -2
  51. package/lib/components/mobile-flyout/MobileFlyoutContext.js +2 -0
  52. package/lib/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.d.ts +17 -0
  53. package/lib/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.js +53 -0
  54. package/lib/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.d.ts +8 -0
  55. package/lib/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.js +46 -0
  56. package/lib/components/modals/AlertModal.d.ts +13 -0
  57. package/lib/components/modals/AlertModal.js +60 -0
  58. package/lib/components/modals/ConfirmModal.d.ts +12 -0
  59. package/lib/components/modals/ConfirmModal.js +52 -0
  60. package/lib/components/modals/CustomModal.d.ts +9 -0
  61. package/lib/components/modals/CustomModal.js +41 -0
  62. package/lib/components/modals/Modal.d.ts +9 -0
  63. package/lib/components/modals/Modal.js +34 -0
  64. package/lib/components/modals/ModalBase.d.ts +10 -0
  65. package/lib/components/modals/ModalBase.js +142 -0
  66. package/lib/components/modals/ModalFooter.d.ts +3 -0
  67. package/lib/components/modals/ModalFooter.js +18 -0
  68. package/{dist → lib}/components/modals/Prompt.d.ts +5 -4
  69. package/lib/components/modals/Prompt.js +64 -0
  70. package/{dist → lib}/components/modals/image-gallery/ImageGallery.d.ts +7 -6
  71. package/lib/components/modals/image-gallery/ImageGallery.helper.d.ts +3 -0
  72. package/lib/components/modals/image-gallery/ImageGallery.helper.js +11 -0
  73. package/lib/components/modals/image-gallery/ImageGallery.js +81 -0
  74. package/lib/components/modals/image-gallery/ImageGallery.stories.helper.d.ts +3 -0
  75. package/lib/components/modals/image-gallery/ImageGallery.stories.helper.js +97 -0
  76. package/{dist → lib}/components/modals/image-gallery/ImageGalleryContent.d.ts +1 -1
  77. package/lib/components/modals/image-gallery/ImageGalleryContent.js +14 -0
  78. package/{dist → lib}/components/modals/image-gallery/ImageGalleryContext.d.ts +3 -3
  79. package/lib/components/modals/image-gallery/ImageGalleryContext.js +4 -0
  80. package/lib/components/modals/image-gallery/ImageGallerySwiper.d.ts +8 -0
  81. package/lib/components/modals/image-gallery/ImageGallerySwiper.js +32 -0
  82. package/lib/components/modals/image-gallery/ImageGalleryThumbsSwiper.d.ts +5 -0
  83. package/lib/components/modals/image-gallery/ImageGalleryThumbsSwiper.js +25 -0
  84. package/lib/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.d.ts +11 -0
  85. package/lib/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.js +28 -0
  86. package/lib/components/modals/image-gallery/internal/BaseGallery.d.ts +17 -0
  87. package/lib/components/modals/image-gallery/internal/BaseGallery.js +65 -0
  88. package/{dist → lib}/components/modals/image-gallery/internal/CloseButton.d.ts +1 -1
  89. package/lib/components/modals/image-gallery/internal/CloseButton.js +17 -0
  90. package/lib/components/modals/image-gallery/internal/ImageGalleryContainer.d.ts +6 -0
  91. package/lib/components/modals/image-gallery/internal/ImageGalleryContainer.js +13 -0
  92. package/{dist → lib}/components/modals/image-gallery/internal/ImageGalleryPagination.d.ts +3 -2
  93. package/lib/components/modals/image-gallery/internal/ImageGalleryPagination.js +27 -0
  94. package/lib/components/modals/image-gallery/internal/ScaleButton.d.ts +5 -0
  95. package/lib/components/modals/image-gallery/internal/ScaleButton.js +19 -0
  96. package/lib/components/pagination/Pagination.d.ts +16 -0
  97. package/lib/components/pagination/Pagination.js +105 -0
  98. package/lib/components/popovers/legend/Legend.d.ts +11 -0
  99. package/lib/components/popovers/legend/Legend.js +24 -0
  100. package/{dist → lib}/components/popovers/popover/Popover.d.ts +6 -5
  101. package/lib/components/popovers/popover/Popover.js +123 -0
  102. package/lib/components/popovers/popover-menu/PopoverMenu.d.ts +9 -0
  103. package/lib/components/popovers/popover-menu/PopoverMenu.js +46 -0
  104. package/lib/components/popovers/popover-menu/PopoverMenuContext.d.ts +4 -0
  105. package/lib/components/popovers/popover-menu/PopoverMenuContext.js +5 -0
  106. package/{dist → lib}/components/popovers/popover-menu-item/PopoverMenuItem.d.ts +3 -2
  107. package/lib/components/popovers/popover-menu-item/PopoverMenuItem.js +41 -0
  108. package/lib/components/popovers/tooltip/Tooltip.d.ts +6 -0
  109. package/lib/components/popovers/tooltip/Tooltip.js +16 -0
  110. package/lib/components/progress/Progress.d.ts +8 -0
  111. package/lib/components/progress/Progress.js +32 -0
  112. package/lib/components/scroll-area/ScrollArea.d.ts +5 -0
  113. package/lib/components/scroll-area/ScrollArea.js +14 -0
  114. package/lib/components/search-input/ClearButton.d.ts +2 -0
  115. package/lib/components/search-input/ClearButton.js +10 -0
  116. package/lib/components/search-input/SearchInput.d.ts +15 -0
  117. package/lib/components/search-input/SearchInput.js +77 -0
  118. package/{dist → lib}/components/search-input/SearchSuggestion.d.ts +1 -1
  119. package/lib/components/search-input/SearchSuggestion.js +32 -0
  120. package/{dist → lib}/components/search-input/useSearchInput.d.ts +3 -3
  121. package/lib/components/search-input/useSearchInput.js +94 -0
  122. package/{dist → lib}/components/snackbar/Snackbar.d.ts +6 -5
  123. package/lib/components/snackbar/Snackbar.js +78 -0
  124. package/{dist → lib}/components/snackbar/SnackbarContext.d.ts +4 -3
  125. package/lib/components/snackbar/SnackbarContext.js +2 -0
  126. package/lib/components/snackbar/SnackbarProvider.d.ts +8 -0
  127. package/lib/components/snackbar/SnackbarProvider.js +65 -0
  128. package/lib/components/snackbar/useSnackbar.d.ts +3 -0
  129. package/lib/components/snackbar/useSnackbar.js +3 -0
  130. package/lib/components/stepper-horizontal/StepperHorizontal.d.ts +7 -0
  131. package/lib/components/stepper-horizontal/StepperHorizontal.js +60 -0
  132. package/lib/components/stepper-horizontal/step-horizontal/StepHorizontal.d.ts +7 -0
  133. package/lib/components/stepper-horizontal/step-horizontal/StepHorizontal.js +23 -0
  134. package/lib/components/stepper-vertical/StepperVertical.d.ts +7 -0
  135. package/lib/components/stepper-vertical/StepperVertical.js +37 -0
  136. package/lib/components/stepper-vertical/step-vertical/StepVertical.d.ts +12 -0
  137. package/lib/components/stepper-vertical/step-vertical/StepVertical.js +76 -0
  138. package/lib/components/tab/Tabs.d.ts +23 -0
  139. package/lib/components/tab/Tabs.js +229 -0
  140. package/lib/components/tab/interfaces.js +1 -0
  141. package/lib/components/tab/tab-pane/TabPane.d.ts +10 -0
  142. package/lib/components/tab/tab-pane/TabPane.js +23 -0
  143. package/{dist → lib}/components/tab/useTabScroll.d.ts +3 -4
  144. package/lib/components/tab/useTabScroll.js +233 -0
  145. package/lib/components/table-header-cell/TableHeaderCell.d.ts +6 -0
  146. package/lib/components/table-header-cell/TableHeaderCell.js +29 -0
  147. package/lib/forms/checkbox/Checkbox.d.ts +17 -0
  148. package/lib/forms/checkbox/Checkbox.js +86 -0
  149. package/{dist → lib}/forms/radio/RadioButton.d.ts +4 -3
  150. package/lib/forms/radio/RadioButton.js +85 -0
  151. package/lib/forms/radio/RadioGroup.d.ts +13 -0
  152. package/lib/forms/radio/RadioGroup.js +51 -0
  153. package/{dist → lib}/forms/radio/RadioGroupContext.d.ts +3 -3
  154. package/lib/forms/radio/RadioGroupContext.js +3 -0
  155. package/lib/forms/segment/Segment.d.ts +14 -0
  156. package/lib/forms/segment/Segment.js +76 -0
  157. package/{dist → lib}/forms/segment/segment-control/SegmentControl.d.ts +4 -3
  158. package/lib/forms/segment/segment-control/SegmentControl.js +59 -0
  159. package/{dist → lib}/forms/select/Select.d.ts +8 -8
  160. package/lib/forms/select/Select.js +108 -0
  161. package/lib/forms/select/internal/HiddenInput.d.ts +8 -0
  162. package/lib/forms/select/internal/HiddenInput.js +26 -0
  163. package/{dist → lib}/forms/select/internal/ListItem.d.ts +6 -6
  164. package/lib/forms/select/internal/ListItem.js +84 -0
  165. package/{dist → lib}/forms/select/internal/SelectButton.d.ts +2 -2
  166. package/lib/forms/select/internal/SelectButton.js +57 -0
  167. package/{dist → lib}/forms/select/internal/SelectButtonContent.d.ts +1 -1
  168. package/lib/forms/select/internal/SelectButtonContent.js +38 -0
  169. package/lib/forms/select/internal/SelectCheckbox.d.ts +4 -0
  170. package/lib/forms/select/internal/SelectCheckbox.js +19 -0
  171. package/{dist → lib}/forms/select/internal/SelectLabel.d.ts +1 -1
  172. package/lib/forms/select/internal/SelectLabel.js +16 -0
  173. package/{dist → lib}/forms/select/internal/SelectOptionsContainer.d.ts +6 -6
  174. package/lib/forms/select/internal/SelectOptionsContainer.js +102 -0
  175. package/{dist → lib}/forms/select/internal/SelectScrollContainer.d.ts +2 -2
  176. package/lib/forms/select/internal/SelectScrollContainer.js +21 -0
  177. package/lib/forms/select/internal/SelectWrapper.d.ts +6 -0
  178. package/lib/forms/select/internal/SelectWrapper.js +20 -0
  179. package/lib/forms/select/internal/index.d.ts +6 -0
  180. package/lib/forms/select/internal/index.js +6 -0
  181. package/{dist → lib}/forms/select/internal/utils.d.ts +3 -3
  182. package/lib/forms/select/internal/utils.js +36 -0
  183. package/{dist → lib}/forms/select/select-option/SelectOption.d.ts +5 -5
  184. package/lib/forms/select/select-option/SelectOption.js +17 -0
  185. package/lib/forms/select/utils.d.ts +2 -0
  186. package/lib/forms/select/utils.js +17 -0
  187. package/lib/forms/slider/Slider.d.ts +18 -0
  188. package/lib/forms/slider/Slider.js +100 -0
  189. package/lib/forms/switch/Switch.d.ts +13 -0
  190. package/lib/forms/switch/Switch.js +51 -0
  191. package/{dist → lib}/forms/text-area/TextArea.d.ts +5 -4
  192. package/lib/forms/text-area/TextArea.js +109 -0
  193. package/{dist → lib}/forms/text-input/TextInput.d.ts +3 -2
  194. package/lib/forms/text-input/TextInput.js +91 -0
  195. package/{dist → lib}/forms/time-picker/TimePicker.d.ts +6 -6
  196. package/lib/forms/time-picker/TimePicker.js +159 -0
  197. package/lib/forms/time-picker/time-picker-dropdown/TimePickerDropdown.d.ts +19 -0
  198. package/lib/forms/time-picker/time-picker-dropdown/TimePickerDropdown.js +212 -0
  199. package/lib/forms/time-picker/time-picker-dropdown/TimePickerInput.d.ts +9 -0
  200. package/lib/forms/time-picker/time-picker-dropdown/TimePickerInput.js +23 -0
  201. package/{dist/utils → lib/helper}/index.d.ts +1 -0
  202. package/lib/helper/index.js +7 -0
  203. package/lib/helper/setRef.d.ts +1 -0
  204. package/lib/helper/setRef.js +7 -0
  205. package/{dist/utils → lib/helper}/types.d.ts +4 -4
  206. package/lib/helper/types.js +1 -0
  207. package/{dist/utils → lib/helper}/useControlled.d.ts +2 -2
  208. package/lib/helper/useControlled.js +22 -0
  209. package/lib/helper/useForkRef.d.ts +2 -0
  210. package/lib/helper/useForkRef.js +18 -0
  211. package/lib/helper/useId.d.ts +1 -0
  212. package/lib/helper/useId.js +22 -0
  213. package/lib/helper/useOnClickOutside.d.ts +2 -0
  214. package/lib/helper/useOnClickOutside.js +18 -0
  215. package/node/index.js +439 -0
  216. package/node/lib/components/accordion/Accordion.js +50 -0
  217. package/node/lib/components/accordion/AccordionContext.js +9 -0
  218. package/node/lib/components/accordion/accordion-header/AccordionHeader.js +24 -0
  219. package/node/lib/components/accordion/accordion-item/AccordionItem.js +72 -0
  220. package/node/lib/components/accordion/accordion-item/AccordionItemContext.js +9 -0
  221. package/node/lib/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.js +77 -0
  222. package/node/lib/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.js +48 -0
  223. package/node/lib/components/bottom-sheet/BottomSheet.js +101 -0
  224. package/node/lib/components/bottom-sheet/BottomSheet.stories.js +56 -0
  225. package/node/lib/components/breadcrumb/Breadcrumb.js +47 -0
  226. package/node/lib/components/buttons/button/Button.js +56 -0
  227. package/node/lib/components/buttons/button/Button.stories.js +93 -0
  228. package/node/lib/components/card/Card.js +20 -0
  229. package/node/lib/components/card/CardBody.js +24 -0
  230. package/node/lib/components/card/CardHeader.js +36 -0
  231. package/node/lib/components/card/CardHeader.stories.helper.js +17 -0
  232. package/node/lib/components/card/CardNotification.js +32 -0
  233. package/node/lib/components/chips/chip/Chip.js +54 -0
  234. package/node/lib/components/chips/chip-container/ChipContainer.js +24 -0
  235. package/node/lib/components/icon-wrapper/IconWrapper.js +23 -0
  236. package/node/lib/components/link-button/LinkButton.js +39 -0
  237. package/node/lib/components/loading-indicator/LoadingIndicator.js +46 -0
  238. package/node/lib/components/mobile-flyout/MobileFlyout.js +89 -0
  239. package/node/lib/components/mobile-flyout/MobileFlyoutContext.js +8 -0
  240. package/node/lib/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.js +61 -0
  241. package/node/lib/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.js +53 -0
  242. package/node/lib/components/modals/AlertModal.js +67 -0
  243. package/node/lib/components/modals/ConfirmModal.js +59 -0
  244. package/node/lib/components/modals/CustomModal.js +48 -0
  245. package/node/lib/components/modals/Modal.js +43 -0
  246. package/node/lib/components/modals/ModalBase.js +149 -0
  247. package/node/lib/components/modals/ModalFooter.js +25 -0
  248. package/node/lib/components/modals/Prompt.js +73 -0
  249. package/node/lib/components/modals/image-gallery/ImageGallery.helper.js +18 -0
  250. package/node/lib/components/modals/image-gallery/ImageGallery.js +88 -0
  251. package/node/lib/components/modals/image-gallery/ImageGallery.stories.helper.js +123 -0
  252. package/node/lib/components/modals/image-gallery/ImageGalleryContent.js +20 -0
  253. package/node/lib/components/modals/image-gallery/ImageGalleryContext.js +10 -0
  254. package/node/lib/components/modals/image-gallery/ImageGallerySwiper.js +39 -0
  255. package/node/lib/components/modals/image-gallery/ImageGalleryThumbsSwiper.js +33 -0
  256. package/node/lib/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.js +35 -0
  257. package/node/lib/components/modals/image-gallery/internal/BaseGallery.js +72 -0
  258. package/node/lib/components/modals/image-gallery/internal/CloseButton.js +24 -0
  259. package/node/lib/components/modals/image-gallery/internal/ImageGalleryContainer.js +19 -0
  260. package/node/lib/components/modals/image-gallery/internal/ImageGalleryPagination.js +33 -0
  261. package/node/lib/components/modals/image-gallery/internal/ScaleButton.js +25 -0
  262. package/node/lib/components/pagination/Pagination.js +114 -0
  263. package/node/lib/components/popovers/legend/Legend.js +31 -0
  264. package/node/lib/components/popovers/popover/Popover.js +132 -0
  265. package/node/lib/components/popovers/popover-menu/PopoverMenu.js +53 -0
  266. package/node/lib/components/popovers/popover-menu/PopoverMenuContext.js +11 -0
  267. package/node/lib/components/popovers/popover-menu-item/PopoverMenuItem.js +48 -0
  268. package/node/lib/components/popovers/tooltip/Tooltip.js +23 -0
  269. package/node/lib/components/progress/Progress.js +39 -0
  270. package/node/lib/components/scroll-area/ScrollArea.js +21 -0
  271. package/node/lib/components/search-input/ClearButton.js +16 -0
  272. package/node/lib/components/search-input/SearchInput.js +84 -0
  273. package/node/lib/components/search-input/SearchSuggestion.js +39 -0
  274. package/node/lib/components/search-input/useSearchInput.js +101 -0
  275. package/node/lib/components/snackbar/Snackbar.js +85 -0
  276. package/node/lib/components/snackbar/SnackbarContext.js +9 -0
  277. package/node/lib/components/snackbar/SnackbarProvider.js +73 -0
  278. package/node/lib/components/snackbar/useSnackbar.js +11 -0
  279. package/node/lib/components/stepper-horizontal/StepperHorizontal.js +69 -0
  280. package/node/lib/components/stepper-horizontal/step-horizontal/StepHorizontal.js +30 -0
  281. package/node/lib/components/stepper-vertical/StepperVertical.js +46 -0
  282. package/node/lib/components/stepper-vertical/step-vertical/StepVertical.js +83 -0
  283. package/node/lib/components/tab/Tabs.js +240 -0
  284. package/node/lib/components/tab/interfaces.js +5 -0
  285. package/node/lib/components/tab/tab-pane/TabPane.js +30 -0
  286. package/node/lib/components/tab/useTabScroll.js +238 -0
  287. package/node/lib/components/table-header-cell/TableHeaderCell.js +36 -0
  288. package/node/lib/forms/checkbox/Checkbox.js +93 -0
  289. package/node/lib/forms/radio/RadioButton.js +92 -0
  290. package/node/lib/forms/radio/RadioGroup.js +58 -0
  291. package/node/lib/forms/radio/RadioGroupContext.js +9 -0
  292. package/node/lib/forms/segment/Segment.js +83 -0
  293. package/node/lib/forms/segment/segment-control/SegmentControl.js +68 -0
  294. package/node/lib/forms/select/Select.js +115 -0
  295. package/node/lib/forms/select/internal/HiddenInput.js +32 -0
  296. package/node/lib/forms/select/internal/ListItem.js +93 -0
  297. package/node/lib/forms/select/internal/SelectButton.js +64 -0
  298. package/node/lib/forms/select/internal/SelectButtonContent.js +44 -0
  299. package/node/lib/forms/select/internal/SelectCheckbox.js +26 -0
  300. package/node/lib/forms/select/internal/SelectLabel.js +23 -0
  301. package/node/lib/forms/select/internal/SelectOptionsContainer.js +109 -0
  302. package/node/lib/forms/select/internal/SelectScrollContainer.js +28 -0
  303. package/node/lib/forms/select/internal/SelectWrapper.js +27 -0
  304. package/node/lib/forms/select/internal/index.js +48 -0
  305. package/node/lib/forms/select/internal/utils.js +43 -0
  306. package/node/lib/forms/select/select-option/SelectOption.js +23 -0
  307. package/node/lib/forms/select/utils.js +23 -0
  308. package/node/lib/forms/slider/Slider.js +109 -0
  309. package/node/lib/forms/switch/Switch.js +58 -0
  310. package/node/lib/forms/text-area/TextArea.js +118 -0
  311. package/node/lib/forms/text-input/TextInput.js +98 -0
  312. package/node/lib/forms/time-picker/TimePicker.js +166 -0
  313. package/node/lib/forms/time-picker/time-picker-dropdown/TimePickerDropdown.js +219 -0
  314. package/node/lib/forms/time-picker/time-picker-dropdown/TimePickerInput.js +29 -0
  315. package/node/lib/helper/index.js +14 -0
  316. package/node/lib/helper/setRef.js +13 -0
  317. package/node/lib/helper/types.js +5 -0
  318. package/node/lib/helper/useControlled.js +28 -0
  319. package/node/lib/helper/useForkRef.js +26 -0
  320. package/node/lib/helper/useId.js +28 -0
  321. package/node/lib/helper/useOnClickOutside.js +24 -0
  322. package/package.json +21 -64
  323. package/simplebar.min.css +1 -0
  324. package/README.md +0 -23
  325. package/dist/components/accordion/Accordion.css +0 -4
  326. package/dist/components/accordion/Accordion.d.ts +0 -10
  327. package/dist/components/accordion/Accordion.js +0 -41
  328. package/dist/components/accordion/AccordionContext.js +0 -3
  329. package/dist/components/accordion/accordion-header/AccordionHeader.css +0 -11
  330. package/dist/components/accordion/accordion-header/AccordionHeader.d.ts +0 -2
  331. package/dist/components/accordion/accordion-header/AccordionHeader.js +0 -11
  332. package/dist/components/accordion/accordion-item/AccordionItem.css +0 -64
  333. package/dist/components/accordion/accordion-item/AccordionItem.d.ts +0 -8
  334. package/dist/components/accordion/accordion-item/AccordionItem.js +0 -60
  335. package/dist/components/accordion/accordion-item/AccordionItemContext.js +0 -3
  336. package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.css +0 -76
  337. package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.d.ts +0 -2
  338. package/dist/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.js +0 -61
  339. package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.css +0 -11
  340. package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.d.ts +0 -2
  341. package/dist/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.js +0 -20
  342. package/dist/components/bottom-sheet/BottomSheet.css +0 -18
  343. package/dist/components/bottom-sheet/BottomSheet.d.ts +0 -12
  344. package/dist/components/bottom-sheet/BottomSheet.js +0 -101
  345. package/dist/components/breadcrumb/Breadcrumb.js +0 -32
  346. package/dist/components/button/Button.d.ts +0 -11
  347. package/dist/components/button/Button.js +0 -36
  348. package/dist/components/card/Card.d.ts +0 -4
  349. package/dist/components/card/Card.js +0 -9
  350. package/dist/components/card/CardBody.d.ts +0 -5
  351. package/dist/components/card/CardBody.js +0 -15
  352. package/dist/components/card/CardHeader.d.ts +0 -8
  353. package/dist/components/card/CardHeader.js +0 -31
  354. package/dist/components/card/CardHeader.stories.helper.js +0 -7
  355. package/dist/components/card/CardNotification.d.ts +0 -6
  356. package/dist/components/card/CardNotification.js +0 -26
  357. package/dist/components/chips/chip/Chip.d.ts +0 -17
  358. package/dist/components/chips/chip/Chip.js +0 -38
  359. package/dist/components/chips/chip-container/ChipContainer.d.ts +0 -5
  360. package/dist/components/chips/chip-container/ChipContainer.js +0 -12
  361. package/dist/components/icon-wrapper/IconWrapper.js +0 -13
  362. package/dist/components/link-button/LinkButton.d.ts +0 -8
  363. package/dist/components/link-button/LinkButton.js +0 -26
  364. package/dist/components/loading-indicator/LoadingIndicator.d.ts +0 -5
  365. package/dist/components/loading-indicator/LoadingIndicator.js +0 -41
  366. package/dist/components/mobile-flyout/MobileFlyout.d.ts +0 -11
  367. package/dist/components/mobile-flyout/MobileFlyout.js +0 -88
  368. package/dist/components/mobile-flyout/MobileFlyoutContext.js +0 -3
  369. package/dist/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.d.ts +0 -17
  370. package/dist/components/mobile-flyout/mobile-flyout-item/MobileFlyoutItem.js +0 -36
  371. package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.css +0 -5
  372. package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.d.ts +0 -8
  373. package/dist/components/mobile-flyout/mobile-flyout-page/MobileFlyoutPage.js +0 -35
  374. package/dist/components/modals/AlertModal.d.ts +0 -12
  375. package/dist/components/modals/AlertModal.js +0 -53
  376. package/dist/components/modals/ConfirmModal.d.ts +0 -11
  377. package/dist/components/modals/ConfirmModal.js +0 -46
  378. package/dist/components/modals/CustomModal.d.ts +0 -8
  379. package/dist/components/modals/CustomModal.js +0 -38
  380. package/dist/components/modals/Modal.css +0 -39
  381. package/dist/components/modals/Modal.d.ts +0 -8
  382. package/dist/components/modals/Modal.js +0 -31
  383. package/dist/components/modals/ModalBase.d.ts +0 -9
  384. package/dist/components/modals/ModalBase.js +0 -124
  385. package/dist/components/modals/ModalFooter.d.ts +0 -2
  386. package/dist/components/modals/ModalFooter.js +0 -12
  387. package/dist/components/modals/Prompt.js +0 -58
  388. package/dist/components/modals/image-gallery/ImageGallery.css +0 -790
  389. package/dist/components/modals/image-gallery/ImageGallery.helper.d.ts +0 -2
  390. package/dist/components/modals/image-gallery/ImageGallery.helper.js +0 -13
  391. package/dist/components/modals/image-gallery/ImageGallery.js +0 -75
  392. package/dist/components/modals/image-gallery/ImageGallery.stories.helper.js +0 -112
  393. package/dist/components/modals/image-gallery/ImageGalleryContent.js +0 -15
  394. package/dist/components/modals/image-gallery/ImageGalleryContext.js +0 -4
  395. package/dist/components/modals/image-gallery/ImageGallerySwiper.d.ts +0 -8
  396. package/dist/components/modals/image-gallery/ImageGallerySwiper.js +0 -29
  397. package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.d.ts +0 -5
  398. package/dist/components/modals/image-gallery/ImageGalleryThumbsSwiper.js +0 -23
  399. package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.css +0 -10
  400. package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.d.ts +0 -11
  401. package/dist/components/modals/image-gallery/image-gallery-item/ImageGalleryItem.js +0 -24
  402. package/dist/components/modals/image-gallery/internal/BaseGallery.d.ts +0 -17
  403. package/dist/components/modals/image-gallery/internal/BaseGallery.js +0 -50
  404. package/dist/components/modals/image-gallery/internal/CloseButton.js +0 -14
  405. package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.d.ts +0 -5
  406. package/dist/components/modals/image-gallery/internal/ImageGalleryContainer.js +0 -8
  407. package/dist/components/modals/image-gallery/internal/ImageGalleryPagination.js +0 -29
  408. package/dist/components/modals/image-gallery/internal/ScaleButton.d.ts +0 -4
  409. package/dist/components/modals/image-gallery/internal/ScaleButton.js +0 -17
  410. package/dist/components/pagination/Pagination.css +0 -10
  411. package/dist/components/pagination/Pagination.d.ts +0 -15
  412. package/dist/components/pagination/Pagination.js +0 -100
  413. package/dist/components/popovers/legend/Legend.css +0 -21
  414. package/dist/components/popovers/legend/Legend.d.ts +0 -11
  415. package/dist/components/popovers/legend/Legend.js +0 -24
  416. package/dist/components/popovers/popover/Popover.css +0 -56
  417. package/dist/components/popovers/popover/Popover.js +0 -107
  418. package/dist/components/popovers/popover-menu/PopoverMenu.css +0 -20
  419. package/dist/components/popovers/popover-menu/PopoverMenu.d.ts +0 -8
  420. package/dist/components/popovers/popover-menu/PopoverMenu.js +0 -37
  421. package/dist/components/popovers/popover-menu/PopoverMenuContext.d.ts +0 -3
  422. package/dist/components/popovers/popover-menu/PopoverMenuContext.js +0 -5
  423. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.css +0 -35
  424. package/dist/components/popovers/popover-menu-item/PopoverMenuItem.js +0 -30
  425. package/dist/components/popovers/tooltip/Tooltip.d.ts +0 -5
  426. package/dist/components/popovers/tooltip/Tooltip.js +0 -12
  427. package/dist/components/progress/Progress.d.ts +0 -7
  428. package/dist/components/progress/Progress.js +0 -26
  429. package/dist/components/scroll-area/ScrollArea.d.ts +0 -4
  430. package/dist/components/scroll-area/ScrollArea.js +0 -10
  431. package/dist/components/scroll-area/ScrollArea.stories.css +0 -9
  432. package/dist/components/search-input/ClearButton.d.ts +0 -2
  433. package/dist/components/search-input/ClearButton.js +0 -10
  434. package/dist/components/search-input/SearchInput.css +0 -13
  435. package/dist/components/search-input/SearchInput.d.ts +0 -14
  436. package/dist/components/search-input/SearchInput.js +0 -61
  437. package/dist/components/search-input/SearchSuggestion.js +0 -21
  438. package/dist/components/search-input/useSearchInput.js +0 -85
  439. package/dist/components/snackbar/Snackbar.css +0 -55
  440. package/dist/components/snackbar/Snackbar.js +0 -78
  441. package/dist/components/snackbar/SnackbarContext.js +0 -3
  442. package/dist/components/snackbar/SnackbarProvider.d.ts +0 -8
  443. package/dist/components/snackbar/SnackbarProvider.js +0 -66
  444. package/dist/components/snackbar/useSnackbar.d.ts +0 -2
  445. package/dist/components/snackbar/useSnackbar.js +0 -4
  446. package/dist/components/stepper-horizontal/StepperHorizontal.css +0 -6
  447. package/dist/components/stepper-horizontal/StepperHorizontal.d.ts +0 -7
  448. package/dist/components/stepper-horizontal/StepperHorizontal.js +0 -48
  449. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.css +0 -24
  450. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.d.ts +0 -6
  451. package/dist/components/stepper-horizontal/step-horizontal/StepHorizontal.js +0 -16
  452. package/dist/components/stepper-vertical/StepperVertical.d.ts +0 -6
  453. package/dist/components/stepper-vertical/StepperVertical.js +0 -26
  454. package/dist/components/stepper-vertical/step-vertical/StepVertical.css +0 -10
  455. package/dist/components/stepper-vertical/step-vertical/StepVertical.d.ts +0 -11
  456. package/dist/components/stepper-vertical/step-vertical/StepVertical.js +0 -58
  457. package/dist/components/tab/Tabs.css +0 -285
  458. package/dist/components/tab/Tabs.d.ts +0 -23
  459. package/dist/components/tab/Tabs.js +0 -194
  460. package/dist/components/tab/interfaces.js +0 -0
  461. package/dist/components/tab/tab-pane/TabPane.css +0 -8
  462. package/dist/components/tab/tab-pane/TabPane.d.ts +0 -9
  463. package/dist/components/tab/tab-pane/TabPane.js +0 -18
  464. package/dist/components/tab/useTabScroll.js +0 -151
  465. package/dist/components/table-header-cell/TableHeaderCell.d.ts +0 -5
  466. package/dist/components/table-header-cell/TableHeaderCell.js +0 -21
  467. package/dist/forms/checkbox/Checkbox.css +0 -134
  468. package/dist/forms/checkbox/Checkbox.d.ts +0 -15
  469. package/dist/forms/checkbox/Checkbox.js +0 -80
  470. package/dist/forms/radio/RadioButton.js +0 -61
  471. package/dist/forms/radio/RadioGroup.d.ts +0 -12
  472. package/dist/forms/radio/RadioGroup.js +0 -50
  473. package/dist/forms/radio/RadioGroupContext.js +0 -3
  474. package/dist/forms/segment/Segment.d.ts +0 -13
  475. package/dist/forms/segment/Segment.js +0 -59
  476. package/dist/forms/segment/segment-control/SegmentControl.js +0 -57
  477. package/dist/forms/select/Select.css +0 -160
  478. package/dist/forms/select/Select.js +0 -95
  479. package/dist/forms/select/internal/HiddenInput.d.ts +0 -8
  480. package/dist/forms/select/internal/HiddenInput.js +0 -15
  481. package/dist/forms/select/internal/ListItem.js +0 -69
  482. package/dist/forms/select/internal/SelectButton.js +0 -49
  483. package/dist/forms/select/internal/SelectButtonContent.js +0 -31
  484. package/dist/forms/select/internal/SelectCheckbox.d.ts +0 -4
  485. package/dist/forms/select/internal/SelectCheckbox.js +0 -13
  486. package/dist/forms/select/internal/SelectLabel.js +0 -12
  487. package/dist/forms/select/internal/SelectOptionsContainer.js +0 -103
  488. package/dist/forms/select/internal/SelectScrollContainer.js +0 -15
  489. package/dist/forms/select/internal/SelectWrapper.d.ts +0 -6
  490. package/dist/forms/select/internal/SelectWrapper.js +0 -12
  491. package/dist/forms/select/internal/index.d.ts +0 -6
  492. package/dist/forms/select/internal/index.js +0 -7
  493. package/dist/forms/select/internal/utils.js +0 -30
  494. package/dist/forms/select/select-option/SelectOption.js +0 -12
  495. package/dist/forms/select/utils.d.ts +0 -2
  496. package/dist/forms/select/utils.js +0 -12
  497. package/dist/forms/slider/Slider.css +0 -50
  498. package/dist/forms/slider/Slider.d.ts +0 -17
  499. package/dist/forms/slider/Slider.js +0 -93
  500. package/dist/forms/switch/Switch.d.ts +0 -12
  501. package/dist/forms/switch/Switch.js +0 -42
  502. package/dist/forms/text-area/TextArea.css +0 -14
  503. package/dist/forms/text-area/TextArea.js +0 -99
  504. package/dist/forms/text-input/TextInput.js +0 -74
  505. package/dist/forms/time-picker/TimePicker.css +0 -10
  506. package/dist/forms/time-picker/TimePicker.js +0 -140
  507. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.css +0 -4
  508. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.d.ts +0 -19
  509. package/dist/forms/time-picker/time-picker-dropdown/TimePickerDropdown.js +0 -202
  510. package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.d.ts +0 -9
  511. package/dist/forms/time-picker/time-picker-dropdown/TimePickerInput.js +0 -14
  512. package/dist/index.d.ts +0 -63
  513. package/dist/index.js +0 -60
  514. package/dist/utils/index.js +0 -7
  515. package/dist/utils/setRef.d.ts +0 -1
  516. package/dist/utils/setRef.js +0 -5
  517. package/dist/utils/types.js +0 -0
  518. package/dist/utils/useControlled.js +0 -20
  519. package/dist/utils/useForkRef.d.ts +0 -2
  520. package/dist/utils/useForkRef.js +0 -15
  521. package/dist/utils/useId.d.ts +0 -1
  522. package/dist/utils/useId.js +0 -20
  523. package/dist/utils/useOnClickOutside.d.ts +0 -2
  524. package/dist/utils/useOnClickOutside.js +0 -20
  525. /package/{dist → lib}/components/tab/interfaces.d.ts +0 -0
@@ -1,6 +1,6 @@
1
- import React from 'react';
2
- import type { ClassNameProps } from '../../utils/types';
3
- import './TextArea.scss';
1
+ import React from "react";
2
+ import type { ClassNameProps } from "../../helper/types";
3
+ import "./TextArea.scss";
4
4
  export interface TextAreaProps extends ClassNameProps {
5
5
  disabled?: boolean;
6
6
  required?: boolean;
@@ -19,4 +19,5 @@ export interface TextAreaProps extends ClassNameProps {
19
19
  maxLength?: number;
20
20
  id?: string;
21
21
  }
22
- export declare function TextArea({ disabled, onBlur, onChange, onFocus, onInput, readonly, required, label, error, hint, value, defaultValue, name, rows, maxLength, className, id: idProps, }: Readonly<TextAreaProps>): import("react/jsx-runtime").JSX.Element;
22
+ declare function TextArea({ disabled, onBlur, onChange, onFocus, onInput, readonly, required, label, error, hint, value, defaultValue, name, rows, maxLength, className, id: idProps, }: Readonly<TextAreaProps>): import("react/jsx-runtime").JSX.Element;
23
+ export default TextArea;
@@ -0,0 +1,109 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import classNames from "classnames";
3
+ import useId from "../../helper/useId.js";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ function TextArea(_ref) {
6
+ let {
7
+ disabled,
8
+ onBlur,
9
+ onChange,
10
+ onFocus,
11
+ onInput,
12
+ readonly,
13
+ required,
14
+ label,
15
+ error,
16
+ hint,
17
+ value,
18
+ defaultValue,
19
+ name,
20
+ rows,
21
+ maxLength,
22
+ className,
23
+ id: idProps
24
+ } = _ref;
25
+ const controlled = value !== undefined;
26
+ const [innerValue, setInnerValue] = useState(controlled ? value : defaultValue);
27
+ const id = useId(idProps);
28
+ const hintClasses = classNames("fwe-input-text-info");
29
+ const shadowRef = React.useRef(null);
30
+ const ref = React.useRef(null);
31
+ const [height, setHeight] = useState(undefined);
32
+ useEffect(() => {
33
+ if (controlled) {
34
+ setInnerValue(value);
35
+ }
36
+ }, [value, controlled]);
37
+ useEffect(() => {
38
+ const input = ref.current;
39
+ const shadow = shadowRef.current;
40
+ const minRows = 2;
41
+ if (shadow && input) {
42
+ shadow.value = input.value || "x";
43
+ shadow.style.width = `${input.clientWidth}`;
44
+ const newHeight = Math.max(minRows * 24, shadow.scrollHeight);
45
+ setHeight(newHeight + 4 + 4 + 1);
46
+ }
47
+ }, []);
48
+ function handleChange(event) {
49
+ if (!controlled) {
50
+ setInnerValue(event.target.value);
51
+ }
52
+ if (onChange) {
53
+ onChange(event);
54
+ }
55
+ }
56
+ return /*#__PURE__*/_jsxs("label", {
57
+ className: classNames("fwe-input-text", className),
58
+ htmlFor: id,
59
+ children: [/*#__PURE__*/_jsx("textarea", {
60
+ style: {
61
+ ...(!rows && {
62
+ height,
63
+ overflow: "hidden"
64
+ })
65
+ },
66
+ ref: ref,
67
+ name: name,
68
+ className: classNames("fr-textarea", `fwe-row-${rows}`),
69
+ disabled: disabled,
70
+ readOnly: readonly,
71
+ required: required,
72
+ autoComplete: "off",
73
+ onChange: handleChange,
74
+ onFocus: onFocus,
75
+ onInput: onInput,
76
+ onBlur: onBlur,
77
+ maxLength: maxLength,
78
+ defaultValue: defaultValue,
79
+ value: value,
80
+ id: id
81
+ }), /*#__PURE__*/_jsx("textarea", {
82
+ style: {
83
+ visibility: "hidden",
84
+ position: "absolute",
85
+ overflow: "hidden",
86
+ height: 0,
87
+ top: 0,
88
+ left: 0,
89
+ transform: "translateZ(0)",
90
+ padding: "0"
91
+ },
92
+ ref: shadowRef,
93
+ readOnly: true
94
+ }), /*#__PURE__*/_jsx("span", {
95
+ className: "fwe-input-text-label",
96
+ children: label
97
+ }), hint && /*#__PURE__*/_jsx("span", {
98
+ className: hintClasses,
99
+ children: hint
100
+ }), error !== undefined && /*#__PURE__*/_jsx("span", {
101
+ className: "fwe-input-text-invalid",
102
+ children: error
103
+ }), !!maxLength && innerValue !== undefined && /*#__PURE__*/_jsxs("span", {
104
+ className: "fwe-input-text-count",
105
+ children: [innerValue.length, " /", maxLength]
106
+ })]
107
+ });
108
+ }
109
+ export default TextArea;
@@ -1,4 +1,4 @@
1
- import type React from 'react';
1
+ import type React from "react";
2
2
  export interface TextInputProps {
3
3
  disabled?: boolean;
4
4
  required?: boolean;
@@ -21,4 +21,5 @@ export interface TextInputProps {
21
21
  icon?: React.ReactNode;
22
22
  autoFocus?: boolean;
23
23
  }
24
- export declare const TextInput: (props: TextInputProps & React.HTMLProps<HTMLInputElement> & React.RefAttributes<HTMLLabelElement>) => React.ReactElement | null;
24
+ declare const TextInput: (props: TextInputProps & React.HTMLProps<HTMLInputElement> & React.RefAttributes<HTMLLabelElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
25
+ export default TextInput;
@@ -0,0 +1,91 @@
1
+ import { forwardRef, useEffect, useRef } from "react";
2
+ import classNames from "classnames";
3
+ import useId from "../../helper/useId.js";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
6
+ let {
7
+ disabled,
8
+ required,
9
+ readonly,
10
+ placeholder,
11
+ max,
12
+ min,
13
+ onBlur,
14
+ onFocus,
15
+ onInput,
16
+ step,
17
+ type,
18
+ value,
19
+ defaultValue,
20
+ name,
21
+ error,
22
+ hint,
23
+ label,
24
+ labelClassName,
25
+ icon,
26
+ id: idProps,
27
+ autoFocus,
28
+ ...props
29
+ } = _ref;
30
+ const id = useId(idProps);
31
+ const inputRef = useRef(null);
32
+
33
+ // Programmatically focus the input instead of using autoFocus attribute
34
+ useEffect(() => {
35
+ if (autoFocus && inputRef.current) {
36
+ // Short delay to ensure component is fully rendered
37
+ const timer = setTimeout(() => {
38
+ inputRef.current?.focus();
39
+ }, 0);
40
+ return () => clearTimeout(timer);
41
+ }
42
+ return undefined;
43
+ }, [autoFocus]);
44
+ const supported = ["text", "number", "password", "datetime-local"];
45
+ const innerType = type && supported.includes(type) ? type : "text";
46
+ const labelClasses = classNames("fwe-input-text", {
47
+ "fwe-input-text-icon": icon
48
+ }, labelClassName);
49
+ const hintClasses = classNames("fwe-input-text-info");
50
+ function handleChange(e) {
51
+ if (props.onChange) {
52
+ props.onChange(e);
53
+ }
54
+ }
55
+ return /*#__PURE__*/_jsxs("label", {
56
+ className: labelClasses,
57
+ htmlFor: id,
58
+ ref: ref,
59
+ children: [/*#__PURE__*/_jsx("input", {
60
+ name: name,
61
+ disabled: disabled,
62
+ required: required,
63
+ readOnly: readonly,
64
+ placeholder: placeholder,
65
+ autoComplete: "off",
66
+ min: min,
67
+ max: max,
68
+ step: step,
69
+ onChange: handleChange,
70
+ onBlur: onBlur,
71
+ onFocus: onFocus,
72
+ onInput: onInput,
73
+ type: innerType,
74
+ value: value,
75
+ defaultValue: defaultValue,
76
+ id: id,
77
+ ref: inputRef,
78
+ ...props
79
+ }), icon, /*#__PURE__*/_jsx("span", {
80
+ className: "fwe-input-text-label",
81
+ children: label
82
+ }), hint && /*#__PURE__*/_jsx("span", {
83
+ className: hintClasses,
84
+ children: hint
85
+ }), error && /*#__PURE__*/_jsx("span", {
86
+ className: "fwe-input-text-invalid",
87
+ children: error
88
+ })]
89
+ });
90
+ });
91
+ export default TextInput;
@@ -1,8 +1,7 @@
1
- import './TimePicker.scss';
2
- import type React from 'react';
3
- import { type ComponentPropsWithoutRef } from 'react';
1
+ import type React from "react";
2
+ import { type ComponentPropsWithoutRef } from "react";
4
3
  export interface TimePickerOptions {
5
- timeFormat?: '12' | '24';
4
+ timeFormat?: "12" | "24";
6
5
  showSeconds?: boolean;
7
6
  minuteStepSize?: number;
8
7
  range?: {
@@ -10,7 +9,7 @@ export interface TimePickerOptions {
10
9
  maxValue: Date;
11
10
  };
12
11
  }
13
- export interface TimePickerProps extends Omit<ComponentPropsWithoutRef<'button'>, 'value' | 'defaultValue' | 'onChange'> {
12
+ export interface TimePickerProps extends Omit<ComponentPropsWithoutRef<"div">, "value" | "defaultValue" | "onChange"> {
14
13
  error?: string;
15
14
  hint?: string;
16
15
  required?: boolean;
@@ -21,4 +20,5 @@ export interface TimePickerProps extends Omit<ComponentPropsWithoutRef<'button'>
21
20
  formatDate?: (date: Date) => string;
22
21
  onChange?: (date: Date) => void;
23
22
  }
24
- export declare const TimePicker: (props: TimePickerProps & React.RefAttributes<HTMLButtonElement>) => React.ReactElement | null;
23
+ declare const TimePicker: (props: TimePickerProps & React.RefAttributes<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
24
+ export default TimePicker;
@@ -0,0 +1,159 @@
1
+ import cn from "classnames";
2
+ import { forwardRef, useMemo, useRef, useState, useEffect } from "react";
3
+ import ReactDOM from "react-dom";
4
+ import { usePopper } from "react-popper";
5
+ import { IconTime } from "@festo-ui/react-icons";
6
+ import useForkRef from "../../helper/useForkRef.js";
7
+ import useId from "../../helper/useId.js";
8
+ import TimePickerDropdown from "./time-picker-dropdown/TimePickerDropdown.js";
9
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
10
+ const TimePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
11
+ let {
12
+ error,
13
+ hint,
14
+ required,
15
+ disabled,
16
+ children,
17
+ value,
18
+ options,
19
+ defaultValue,
20
+ formatDate,
21
+ onChange,
22
+ id: idProps,
23
+ ...props
24
+ } = _ref;
25
+ const id = useId(idProps);
26
+ const innerFormatDate = formatDate ?? Intl.DateTimeFormat("default", {
27
+ hour: "numeric",
28
+ minute: "numeric",
29
+ ...(options?.showSeconds && {
30
+ second: "numeric"
31
+ })
32
+ }).format;
33
+ const timeFormat = options?.timeFormat ?? "24";
34
+ const [referenceElement, setReferenceElement] = useState(null);
35
+ const [popperElement, setPopperElement] = useState(null);
36
+ const customModifier = useMemo(() => ({
37
+ name: "offset",
38
+ options: {
39
+ offset: _ref2 => {
40
+ let {
41
+ placement
42
+ } = _ref2;
43
+ if (placement === "bottom") {
44
+ return [0, -12];
45
+ }
46
+ return [0, 0];
47
+ }
48
+ }
49
+ }), []);
50
+ const {
51
+ styles,
52
+ attributes
53
+ } = usePopper(referenceElement, popperElement, {
54
+ modifiers: [customModifier]
55
+ });
56
+ const combinedRef = useForkRef(ref, r => setReferenceElement(r));
57
+ const labelRef = useRef(null);
58
+ const allRefs = useForkRef(combinedRef, labelRef);
59
+ const timePickerRef = useRef(null);
60
+ const combinedTimePickerRef = useForkRef(timePickerRef, r => setPopperElement(r));
61
+ const [open, setOpen] = useState(false);
62
+ const controlled = value !== undefined;
63
+ const initialValue = controlled ? value : defaultValue;
64
+ const [innerValue, setInnerValue] = useState(initialValue ?? new Date());
65
+ useEffect(() => {
66
+ if (value !== undefined) {
67
+ value.setMilliseconds(0);
68
+ setInnerValue(value);
69
+ }
70
+ }, [value]);
71
+ function toggle(e) {
72
+ e?.preventDefault();
73
+ if (!disabled) {
74
+ setOpen(prevOpen => !prevOpen);
75
+ }
76
+ }
77
+ function handleDateChange(newDate) {
78
+ if (!controlled) {
79
+ setInnerValue(newDate);
80
+ }
81
+ if (onChange) {
82
+ onChange(newDate);
83
+ }
84
+ }
85
+ function handleClose(newDate) {
86
+ if (newDate) {
87
+ handleDateChange(newDate);
88
+ }
89
+ setOpen(false);
90
+ }
91
+ const handleKeyDown = event => {
92
+ if (event.key === "Enter") {
93
+ toggle();
94
+ }
95
+ };
96
+ const handleKeyUp = event => {
97
+ if (event.key === " ") {
98
+ toggle();
99
+ }
100
+ };
101
+ const container = labelRef?.current?.ownerDocument || document;
102
+ return /*#__PURE__*/_jsxs(_Fragment, {
103
+ children: [/*#__PURE__*/_jsx("div", {
104
+ tabIndex: 0,
105
+ role: "button",
106
+ ref: allRefs,
107
+ onKeyDown: handleKeyDown,
108
+ onKeyUp: handleKeyUp,
109
+ onClick: toggle,
110
+ ...props,
111
+ children: /*#__PURE__*/_jsxs("label", {
112
+ htmlFor: id,
113
+ className: "fr-time-picker fwe-input-text fwe-input-text-icon",
114
+ children: [/*#__PURE__*/_jsx(IconTime, {
115
+ className: cn({
116
+ "fwe-color-hero": open && !disabled,
117
+ "fwe-color-control-disabled": disabled
118
+ })
119
+ }), /*#__PURE__*/_jsx("input", {
120
+ id: id,
121
+ "aria-label": "picked time",
122
+ type: "text",
123
+ readOnly: true,
124
+ required: required,
125
+ className: cn({
126
+ "fwe-border-hero": open
127
+ }),
128
+ value: innerFormatDate(innerValue),
129
+ disabled: disabled
130
+ }), /*#__PURE__*/_jsx("span", {
131
+ className: "fwe-input-text-label",
132
+ children: children
133
+ }), hint && /*#__PURE__*/_jsx("span", {
134
+ className: "fwe-input-text-info",
135
+ children: hint
136
+ }), error && /*#__PURE__*/_jsx("span", {
137
+ className: "fwe-input-text-invalid",
138
+ children: error
139
+ })]
140
+ })
141
+ }), open && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(TimePickerDropdown, {
142
+ labelRef: labelRef,
143
+ ref: combinedTimePickerRef,
144
+ onClose: handleClose,
145
+ onDateChange: handleDateChange,
146
+ timeFormat: timeFormat,
147
+ showSeconds: options?.showSeconds,
148
+ minuteStepSize: options?.minuteStepSize,
149
+ range: options?.range,
150
+ date: innerValue,
151
+ style: {
152
+ ...styles.popper,
153
+ minWidth: labelRef?.current?.scrollWidth
154
+ },
155
+ ...attributes.popper
156
+ }), container.body)]
157
+ });
158
+ });
159
+ export default TimePicker;
@@ -0,0 +1,19 @@
1
+ import "./TimePickerDropdown.scss";
2
+ import type React from "react";
3
+ import { type RefObject } from "react";
4
+ interface TimePickerDropdownProps {
5
+ timeFormat: "12" | "24";
6
+ date: Date;
7
+ onDateChange: (date: Date) => void;
8
+ showSeconds?: boolean;
9
+ minuteStepSize?: number;
10
+ range?: {
11
+ minValue: Date;
12
+ maxValue: Date;
13
+ };
14
+ onClose: (date?: Date) => void;
15
+ style?: React.CSSProperties;
16
+ labelRef: RefObject<HTMLDivElement>;
17
+ }
18
+ declare const TimePickerDropdown: (props: TimePickerDropdownProps & React.RefAttributes<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
19
+ export default TimePickerDropdown;
@@ -0,0 +1,212 @@
1
+ import cn from "classnames";
2
+ import { forwardRef, useEffect, useRef, useState } from "react";
3
+ import { IconCollapse, IconExpand } from "@festo-ui/react-icons";
4
+ import useForkRef from "../../../helper/useForkRef.js";
5
+ import LinkButton from "../../../components/link-button/LinkButton.js";
6
+ import TimePickerInput from "./TimePickerInput.js";
7
+ import useOnClickOutside from "../../../helper/useOnClickOutside.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const TimePickerDropdown = /*#__PURE__*/forwardRef((_ref, ref) => {
10
+ let {
11
+ timeFormat,
12
+ date,
13
+ onDateChange,
14
+ showSeconds,
15
+ minuteStepSize,
16
+ range,
17
+ onClose,
18
+ style,
19
+ labelRef
20
+ } = _ref;
21
+ const innerRef = useRef(null);
22
+ const combinedRef = useForkRef(ref, innerRef);
23
+ const hoursRef = useRef(null);
24
+ const [tmpHours, setTmpHours] = useState(null);
25
+ const [tmpMinutes, setTmpMinutes] = useState(null);
26
+ const [tmpSeconds, setTmpSeconds] = useState(null);
27
+ const [innerDate, setInnerDate] = useState(date);
28
+ useOnClickOutside(labelRef, () => onClose(innerDate), innerRef);
29
+ const min = 0;
30
+ const hourMax = timeFormat === "12" ? 12 : 23;
31
+ const minutesSecondsMax = 59;
32
+ let innerMinuteStepSize = 1;
33
+ if (minuteStepSize) {
34
+ if (minuteStepSize > 1 && minuteStepSize < 60) {
35
+ innerMinuteStepSize = Math.round(minuteStepSize);
36
+ }
37
+ }
38
+ useEffect(() => {
39
+ requestAnimationFrame(() => {
40
+ hoursRef.current?.focus();
41
+ });
42
+ }, []);
43
+ function handleKeyPress(e) {
44
+ if (e.key === "Escape" || e.key === "Enter") {
45
+ onClose(e.key === "Enter" ? innerDate : undefined);
46
+ }
47
+ }
48
+ function limitRange(newDate) {
49
+ if (range) {
50
+ if (newDate > range.maxValue) {
51
+ return range.minValue;
52
+ }
53
+ if (newDate < range.minValue) {
54
+ return range.maxValue;
55
+ }
56
+ }
57
+ return newDate;
58
+ }
59
+ function handleHourIncrement(increment) {
60
+ let newDate = new Date(innerDate);
61
+ newDate.setHours(innerDate.getHours() + increment);
62
+ newDate = limitRange(newDate);
63
+ setInnerDate(newDate);
64
+ onDateChange(newDate);
65
+ setTmpHours(null);
66
+ }
67
+ function handleHourChange(e) {
68
+ let newDate = new Date(innerDate);
69
+ const hour = +e.target.value;
70
+ newDate.setHours(Math.min(Math.max(hour, min), hourMax));
71
+ newDate = limitRange(newDate);
72
+ setInnerDate(newDate);
73
+ setTmpHours(newDate.getHours().toString());
74
+ }
75
+ function handleMinuteIncrement(increment) {
76
+ let newDate = new Date(innerDate);
77
+ newDate.setMinutes(innerDate.getMinutes() + increment);
78
+ newDate = limitRange(newDate);
79
+ setInnerDate(newDate);
80
+ onDateChange(newDate);
81
+ setTmpMinutes(null);
82
+ }
83
+ function handleMinuteChange(e) {
84
+ let newDate = new Date(innerDate);
85
+ const minute = +e.target.value;
86
+ newDate.setMinutes(Math.min(Math.max(minute, min), minutesSecondsMax));
87
+ newDate = limitRange(newDate);
88
+ setInnerDate(newDate);
89
+ setTmpMinutes(newDate.getMinutes().toString());
90
+ }
91
+ function handleSecondIncrement(increment) {
92
+ let newDate = new Date(innerDate);
93
+ newDate.setSeconds(innerDate.getSeconds() + increment);
94
+ newDate = limitRange(newDate);
95
+ setInnerDate(newDate);
96
+ onDateChange(newDate);
97
+ setTmpSeconds(null);
98
+ }
99
+ function handleSecondChange(e) {
100
+ let newDate = new Date(innerDate);
101
+ const seconds = +e.target.value;
102
+ newDate.setSeconds(Math.min(Math.max(seconds, min), minutesSecondsMax));
103
+ newDate = limitRange(newDate);
104
+ setInnerDate(newDate);
105
+ setTmpSeconds(newDate.getSeconds().toString());
106
+ }
107
+ const hours = timeFormat === "12" ? (innerDate.getHours() + 11) % 12 + 1 : innerDate.getHours();
108
+ function toggleAmPm() {
109
+ const newDate = new Date(innerDate);
110
+ // Get the current hour in 24-hour format
111
+ const currentHours = innerDate.getHours();
112
+ if (currentHours >= 0 && currentHours < 12) {
113
+ // Switching from AM to PM
114
+ newDate.setHours(currentHours + 12);
115
+ } else {
116
+ // Switching from PM to AM
117
+ newDate.setHours(currentHours - 12);
118
+ }
119
+ setInnerDate(newDate);
120
+ onDateChange(newDate);
121
+ }
122
+ const formatNumberWithLeadingZero = number => (number < 10 ? "0" : "") + number;
123
+ return (
124
+ /*#__PURE__*/
125
+ // should not be an issue with dialog
126
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
127
+ _jsxs("div", {
128
+ role: "dialog",
129
+ style: style,
130
+ ref: combinedRef,
131
+ className: cn("fr-timepicker fwe-timepicker", {
132
+ "fwe-timepicker-am-pm": timeFormat === "12"
133
+ }),
134
+ onKeyDown: e => handleKeyPress(e),
135
+ tabIndex: -1,
136
+ children: [/*#__PURE__*/_jsxs("div", {
137
+ className: "fwe-timepicker-spinners",
138
+ children: [/*#__PURE__*/_jsxs("div", {
139
+ className: "fwe-timepicker-spinners-hours",
140
+ children: [/*#__PURE__*/_jsx(LinkButton, {
141
+ "aria-label": "hour up",
142
+ className: "fwe-dark",
143
+ onClick: () => handleHourIncrement(1),
144
+ iconOnly: true,
145
+ icon: /*#__PURE__*/_jsx(IconExpand, {})
146
+ }), /*#__PURE__*/_jsx(TimePickerInput, {
147
+ "aria-label": "hours value",
148
+ min: min,
149
+ max: hourMax,
150
+ value: tmpHours ?? formatNumberWithLeadingZero(hours),
151
+ onInput: handleHourChange,
152
+ ref: hoursRef
153
+ }), /*#__PURE__*/_jsx(LinkButton, {
154
+ "aria-label": "hour down",
155
+ className: "fwe-dark",
156
+ onClick: () => handleHourIncrement(-1),
157
+ iconOnly: true,
158
+ icon: /*#__PURE__*/_jsx(IconCollapse, {})
159
+ })]
160
+ }), /*#__PURE__*/_jsxs("div", {
161
+ className: "fwe-timepicker-spinners-minutes",
162
+ children: [/*#__PURE__*/_jsx(LinkButton, {
163
+ "aria-label": "minute up",
164
+ className: "fwe-dark",
165
+ onClick: () => handleMinuteIncrement(innerMinuteStepSize),
166
+ iconOnly: true,
167
+ icon: /*#__PURE__*/_jsx(IconExpand, {})
168
+ }), /*#__PURE__*/_jsx(TimePickerInput, {
169
+ "aria-label": "minutes value",
170
+ min: min,
171
+ max: minutesSecondsMax,
172
+ value: tmpMinutes ?? formatNumberWithLeadingZero(innerDate.getMinutes()),
173
+ onInput: handleMinuteChange
174
+ }), /*#__PURE__*/_jsx(LinkButton, {
175
+ "aria-label": "minute down",
176
+ className: "fwe-dark",
177
+ onClick: () => handleMinuteIncrement(-innerMinuteStepSize),
178
+ iconOnly: true,
179
+ icon: /*#__PURE__*/_jsx(IconCollapse, {})
180
+ })]
181
+ }), showSeconds && /*#__PURE__*/_jsxs("div", {
182
+ className: "fwe-timepicker-spinners-seconds",
183
+ children: [/*#__PURE__*/_jsx(LinkButton, {
184
+ "aria-label": "seconds up",
185
+ className: "fwe-dark",
186
+ onClick: () => handleSecondIncrement(1),
187
+ iconOnly: true,
188
+ icon: /*#__PURE__*/_jsx(IconExpand, {})
189
+ }), /*#__PURE__*/_jsx(TimePickerInput, {
190
+ "aria-label": "seconds value",
191
+ min: min,
192
+ max: minutesSecondsMax,
193
+ value: tmpSeconds ?? formatNumberWithLeadingZero(innerDate.getSeconds()),
194
+ onInput: handleSecondChange
195
+ }), /*#__PURE__*/_jsx(LinkButton, {
196
+ "aria-label": "minute down",
197
+ className: "fwe-dark",
198
+ onClick: () => handleSecondIncrement(-1),
199
+ iconOnly: true,
200
+ icon: /*#__PURE__*/_jsx(IconCollapse, {})
201
+ })]
202
+ })]
203
+ }), timeFormat === "12" && /*#__PURE__*/_jsx("button", {
204
+ onClick: toggleAmPm,
205
+ type: "button",
206
+ className: "fwe-btn fwe-ml-m",
207
+ children: innerDate.getHours() >= 12 ? "PM" : "AM"
208
+ })]
209
+ })
210
+ );
211
+ });
212
+ export default TimePickerDropdown;
@@ -0,0 +1,9 @@
1
+ interface TimePickerInputProps {
2
+ min: number;
3
+ value: string | number;
4
+ max: number;
5
+ onInput: React.FormEventHandler<HTMLInputElement>;
6
+ "aria-label": string;
7
+ }
8
+ declare const TimePickerInput: (props: TimePickerInputProps & import("react").RefAttributes<HTMLInputElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
9
+ export default TimePickerInput;
@@ -0,0 +1,23 @@
1
+ import { forwardRef } from "react";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const TimePickerInput = /*#__PURE__*/forwardRef((_ref, ref) => {
4
+ let {
5
+ min,
6
+ max,
7
+ value,
8
+ onInput,
9
+ "aria-label": ariaLabel
10
+ } = _ref;
11
+ return /*#__PURE__*/_jsx("input", {
12
+ "aria-label": ariaLabel,
13
+ className: "fwe-timepicker-hide-spinners",
14
+ type: "number",
15
+ min: min,
16
+ step: 1,
17
+ value: value,
18
+ max: max,
19
+ onInput: onInput,
20
+ ref: ref
21
+ });
22
+ });
23
+ export default TimePickerInput;
@@ -1 +1,2 @@
1
1
  export declare const provideDiv: () => HTMLDivElement;
2
+ export default provideDiv;