@lifesg/react-design-system 4.0.0-alpha.5 → 4.0.0-alpha.7
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/accordion/accordion.js.map +1 -1
- package/accordion/types.d.ts +1 -1
- package/alert/alert.js.map +1 -1
- package/alert/types.d.ts +2 -0
- package/animations/loading-dots/loading-dots.d.ts +5 -2
- package/animations/loading-dots/loading-dots.js.map +1 -1
- package/animations/loading-dots-spinner/loading-dots-spinner.d.ts +3 -0
- package/animations/loading-dots-spinner/loading-dots-spinner.js.map +1 -1
- package/animations/loading-dots-spinner/lottie-animation.d.ts +2 -2
- package/animations/loading-dots-spinner/lottie-animation.js.map +1 -1
- package/animations/loading-spinner/loading-spinner.d.ts +5 -2
- package/animations/loading-spinner/loading-spinner.js.map +1 -1
- package/animations/themed-loading-spinner/themed-loading-spinner.d.ts +5 -2
- package/animations/themed-loading-spinner/themed-loading-spinner.js.map +1 -1
- package/animations/types.d.ts +13 -6
- package/avatar/avatar.js.map +1 -1
- package/badge/badge.js.map +1 -1
- package/badge/types.d.ts +13 -2
- package/box-container/box-container.js.map +1 -1
- package/box-container/types.d.ts +2 -0
- package/breadcrumb/breadcrumb.d.ts +7 -0
- package/breadcrumb/breadcrumb.js.map +1 -1
- package/breadcrumb/types.d.ts +36 -0
- package/button/button.d.ts +1 -0
- package/button/button.js.map +1 -1
- package/button/types.d.ts +47 -9
- package/calendar/calendar.d.ts +3 -0
- package/calendar/calendar.js.map +1 -1
- package/calendar/types.d.ts +46 -10
- package/card/card.d.ts +1 -0
- package/card/card.js.map +1 -1
- package/card/types.d.ts +1 -0
- package/checkbox/checkbox.d.ts +3 -0
- package/checkbox/checkbox.js.map +1 -1
- package/checkbox/types.d.ts +23 -3
- package/cjs/accordion/accordion.js.map +1 -1
- package/cjs/alert/alert.js.map +1 -1
- package/cjs/animations/loading-dots/loading-dots.js.map +1 -1
- package/cjs/animations/loading-dots-spinner/loading-dots-spinner.js.map +1 -1
- package/cjs/animations/loading-dots-spinner/lottie-animation.js.map +1 -1
- package/cjs/animations/loading-spinner/loading-spinner.js.map +1 -1
- package/cjs/animations/themed-loading-spinner/themed-loading-spinner.js.map +1 -1
- package/cjs/avatar/avatar.js.map +1 -1
- package/cjs/badge/badge.js.map +1 -1
- package/cjs/box-container/box-container.js.map +1 -1
- package/cjs/breadcrumb/breadcrumb.js.map +1 -1
- package/cjs/button/button.js.map +1 -1
- package/cjs/calendar/calendar.js.map +1 -1
- package/cjs/card/card.js.map +1 -1
- package/cjs/checkbox/checkbox.js.map +1 -1
- package/cjs/countdown-timer/countdown-timer.js.map +1 -1
- package/cjs/dashed-border/dashed-border.js.map +1 -1
- package/cjs/data-table/data-table.js +1 -1
- package/cjs/data-table/data-table.js.map +1 -1
- package/cjs/data-table/data-table.styles.js +1 -1
- package/cjs/data-table/data-table.styles.js.map +1 -1
- package/cjs/data-table/data-table.styles_rxganh.css +27 -0
- package/cjs/date-input/date-input.js.map +1 -1
- package/cjs/date-navigator/date-navigator.js.map +1 -1
- package/cjs/date-range-input/date-range-input.js.map +1 -1
- package/cjs/divider/divider.js.map +1 -1
- package/cjs/drawer/drawer.js.map +1 -1
- package/cjs/e-signature/e-signature.js.map +1 -1
- package/cjs/error-display/error-display.js.map +1 -1
- package/cjs/external/dompurify/dist/purify.es.js +2 -2
- package/cjs/external/dompurify/dist/purify.es.js.map +1 -1
- package/cjs/external/lodash/_setCacheHas.js.map +1 -1
- package/cjs/external/lodash/lodash.js +1 -1
- package/cjs/external/lodash/lodash.js.map +1 -1
- package/cjs/feedback-rating/feedback-rating.js.map +1 -1
- package/cjs/file-download/file-download.js.map +1 -1
- package/cjs/file-upload/file-item-edit.js.map +1 -1
- package/cjs/file-upload/file-list/file-list.js.map +1 -1
- package/cjs/file-upload/file-list-item/file-list-item.js.map +1 -1
- package/cjs/file-upload/file-list-item/file-list-item.styles.js +1 -1
- package/cjs/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
- package/cjs/file-upload/file-list-item/{file-list-item.styles_o8000f.css → file-list-item.styles_kgtfke.css} +1 -1
- package/cjs/file-upload/file-upload.js.map +1 -1
- package/cjs/filter/addons/filter-item-checkbox-helpers.js.map +1 -1
- package/cjs/filter/addons/filter-item-checkbox.js.map +1 -1
- package/cjs/filter/filter-item.js +1 -1
- package/cjs/filter/filter-item.js.map +1 -1
- package/cjs/filter/filter.js.map +1 -1
- package/cjs/footer/footer.js.map +1 -1
- package/cjs/form/form-custom-field/form-custom-field.js +2 -0
- package/cjs/form/form-custom-field/form-custom-field.js.map +1 -0
- package/cjs/form/form-date-input/form-date-input.js +2 -0
- package/cjs/form/form-date-input/form-date-input.js.map +1 -0
- package/cjs/form/form-date-range-input/form-date-range-input.js +2 -0
- package/cjs/form/form-date-range-input/form-date-range-input.js.map +1 -0
- package/cjs/form/form-e-signature/form-e-signature.js +2 -0
- package/cjs/form/form-e-signature/form-e-signature.js.map +1 -0
- package/cjs/form/form-histogram-slider/form-histogram-slider.js +2 -0
- package/cjs/form/form-histogram-slider/form-histogram-slider.js.map +1 -0
- package/cjs/form/form-input/form-input.js +2 -0
- package/cjs/form/form-input/form-input.js.map +1 -0
- package/cjs/form/form-input-group/form-input-group.js +2 -0
- package/cjs/form/form-input-group/form-input-group.js.map +1 -0
- package/cjs/form/form-label/form-label-addon.js +2 -0
- package/cjs/form/form-label/form-label-addon.js.map +1 -0
- package/cjs/form/form-label/form-label-addon.styles.js +2 -0
- package/cjs/form/form-label/form-label-addon.styles.js.map +1 -0
- package/cjs/form/form-label/form-label-addon.styles_aztasj.css +1 -0
- package/cjs/form/form-label/form-label.js +2 -0
- package/cjs/form/form-label/form-label.js.map +1 -0
- package/cjs/form/form-label/form-label.styles.js +2 -0
- package/cjs/form/form-label/form-label.styles.js.map +1 -0
- package/cjs/form/form-label/form-label.styles_180zf7j.css +6 -0
- package/cjs/form/form-masked-input/form-masked-input.js +2 -0
- package/cjs/form/form-masked-input/form-masked-input.js.map +1 -0
- package/cjs/form/form-multi-select/form-multi-select.js +2 -0
- package/cjs/form/form-multi-select/form-multi-select.js.map +1 -0
- package/cjs/form/form-nested-multi-select/form-nested-multi-select.js +2 -0
- package/cjs/form/form-nested-multi-select/form-nested-multi-select.js.map +1 -0
- package/cjs/form/form-nested-select/form-nested-select.js +2 -0
- package/cjs/form/form-nested-select/form-nested-select.js.map +1 -0
- package/cjs/form/form-otp-verification/form-otp-verification.js +2 -0
- package/cjs/form/form-otp-verification/form-otp-verification.js.map +1 -0
- package/cjs/form/form-phone-number-input/form-phone-number-input.js +2 -0
- package/cjs/form/form-phone-number-input/form-phone-number-input.js.map +1 -0
- package/cjs/form/form-predictive-text-input/form-predictive-text-input.js +2 -0
- package/cjs/form/form-predictive-text-input/form-predictive-text-input.js.map +1 -0
- package/cjs/form/form-range-select/form-range-select.js +2 -0
- package/cjs/form/form-range-select/form-range-select.js.map +1 -0
- package/cjs/form/form-range-slider/form-range-slider.js +2 -0
- package/cjs/form/form-range-slider/form-range-slider.js.map +1 -0
- package/cjs/form/form-select/form-select.js +2 -0
- package/cjs/form/form-select/form-select.js.map +1 -0
- package/cjs/form/form-select-histogram/form-select-histogram.js +2 -0
- package/cjs/form/form-select-histogram/form-select-histogram.js.map +1 -0
- package/cjs/form/form-slider/form-slider.js +2 -0
- package/cjs/form/form-slider/form-slider.js.map +1 -0
- package/cjs/form/form-textarea/form-textarea.js +2 -0
- package/cjs/form/form-textarea/form-textarea.js.map +1 -0
- package/cjs/form/form-textarea/form-textarea.styles.js +2 -0
- package/cjs/form/form-textarea/form-textarea.styles.js.map +1 -0
- package/cjs/form/form-textarea/form-textarea.styles_1kneyif.css +3 -0
- package/cjs/form/form-time-range-picker/form-time-range-picker.js +2 -0
- package/cjs/form/form-time-range-picker/form-time-range-picker.js.map +1 -0
- package/cjs/form/form-timepicker/form-timepicker.js +2 -0
- package/cjs/form/form-timepicker/form-timepicker.js.map +1 -0
- package/cjs/form/form-unit-number-input/form-unit-number-input.js +2 -0
- package/cjs/form/form-unit-number-input/form-unit-number-input.js.map +1 -0
- package/cjs/form/form-wrapper.js +1 -1
- package/cjs/form/form-wrapper.js.map +1 -1
- package/cjs/form/index.js +1 -1
- package/cjs/form/index.js.map +1 -1
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
- package/cjs/histogram-slider/histogram-slider.js.map +1 -1
- package/cjs/image-button/image-button.js.map +1 -1
- package/cjs/index.js +1 -1
- package/cjs/input/input.js.map +1 -1
- package/cjs/input-group/input-group.js.map +1 -1
- package/cjs/input-multi-select/input-multi-select.js.map +1 -1
- package/cjs/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
- package/cjs/input-nested-select/input-nested-select.js.map +1 -1
- package/cjs/input-range-select/input-range-select.js.map +1 -1
- package/cjs/input-range-slider/input-range-slider.js.map +1 -1
- package/cjs/input-select/input-select.js.map +1 -1
- package/cjs/input-slider/input-slider.js.map +1 -1
- package/cjs/input-textarea/textarea.js.map +1 -1
- package/cjs/input-textarea/textarea.styles.js +1 -1
- package/cjs/input-textarea/textarea.styles.js.map +1 -1
- package/cjs/input-textarea/{textarea.styles_22z4n3.css → textarea.styles_q77m5x.css} +1 -1
- package/cjs/language-switcher/language-switcher.js.map +1 -1
- package/cjs/layout/index.js +1 -1
- package/cjs/layout/index.js.map +1 -1
- package/cjs/link-list/components/common.js.map +1 -1
- package/cjs/link-list/components/link-list-eager.js.map +1 -1
- package/cjs/link-list/components/link-list-lazy.js.map +1 -1
- package/cjs/link-list/link-list.js.map +1 -1
- package/cjs/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
- package/cjs/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
- package/cjs/markup/markup.js.map +1 -1
- package/cjs/masked-input/masked-input.js.map +1 -1
- package/cjs/masthead/masthead.js.map +1 -1
- package/cjs/menu/menu.js +1 -1
- package/cjs/menu/menu.js.map +1 -1
- package/cjs/modal/index.js.map +1 -1
- package/cjs/modal/modal-box.js +1 -1
- package/cjs/modal/modal-box.js.map +1 -1
- package/cjs/modal-v2/index.js +1 -1
- package/cjs/modal-v2/index.js.map +1 -1
- package/cjs/modal-v2/modal-v2.js +1 -1
- package/cjs/modal-v2/modal-v2.js.map +1 -1
- package/cjs/modal-v2/slots/card.js +1 -1
- package/cjs/modal-v2/slots/card.js.map +1 -1
- package/cjs/navbar/navbar.js.map +1 -1
- package/cjs/notification-banner/notification-banner-hoc.js.map +1 -1
- package/cjs/notification-banner/notification-banner.js.map +1 -1
- package/cjs/otp-input/otp-input.js +1 -1
- package/cjs/otp-input/otp-input.js.map +1 -1
- package/cjs/otp-verification/contact-input-section.js +1 -1
- package/cjs/otp-verification/contact-input-section.js.map +1 -1
- package/cjs/otp-verification/otp-verification.js.map +1 -1
- package/cjs/otp-verification/verification-section.js +1 -1
- package/cjs/otp-verification/verification-section.js.map +1 -1
- package/cjs/overlay/overlay.js.map +1 -1
- package/cjs/pagination/pagination.js.map +1 -1
- package/cjs/phone-number-input/phone-number-input.js.map +1 -1
- package/cjs/pill/pill.js.map +1 -1
- package/cjs/popover/popover-inline/popover-inline.js.map +1 -1
- package/cjs/popover/popover-trigger.js.map +1 -1
- package/cjs/popover/popover.js +1 -1
- package/cjs/popover/popover.js.map +1 -1
- package/cjs/predictive-text-input/predictive-text-input.js +1 -1
- package/cjs/predictive-text-input/predictive-text-input.js.map +1 -1
- package/cjs/progress-indicator/progress-indicator.js.map +1 -1
- package/cjs/radio-button/radio-button.js.map +1 -1
- package/cjs/schedule/schedule.js.map +1 -1
- package/cjs/schedule/shared/with-optional-popover.js +1 -1
- package/cjs/schedule/shared/with-optional-popover.js.map +1 -1
- package/cjs/select-histogram/select-histogram.js.map +1 -1
- package/cjs/shared/dropdown-list/dropdown-list.js +1 -1
- package/cjs/shared/dropdown-list/dropdown-list.js.map +1 -1
- package/cjs/shared/dropdown-wrapper/element-with-dropdown.js +1 -1
- package/cjs/shared/dropdown-wrapper/element-with-dropdown.js.map +1 -1
- package/cjs/sidenav/sidenav.js.map +1 -1
- package/cjs/singpass-button/singpass-button.js.map +1 -1
- package/cjs/smart-app-banner/smart-app-banner.js.map +1 -1
- package/cjs/tab/tab.js.map +1 -1
- package/cjs/table/table.js.map +1 -1
- package/cjs/table/table.styles.js +1 -1
- package/cjs/table/table.styles.js.map +1 -1
- package/cjs/table/{table.styles_1af5ipv.css → table.styles_1vjx31g.css} +1 -1
- package/cjs/tag/tag.js.map +1 -1
- package/cjs/text-list/index.js.map +1 -1
- package/cjs/theme/theme-provider/breakpoint.js +1 -1
- package/cjs/theme/theme-provider/breakpoint.js.map +1 -1
- package/cjs/theme/theme-provider/hooks.js.map +1 -1
- package/cjs/theme/theme-provider/index.js.map +1 -1
- package/cjs/theme/tokens/border.js.map +1 -1
- package/cjs/theme/tokens/breakpoint.js.map +1 -1
- package/cjs/theme/tokens/colour.js.map +1 -1
- package/cjs/theme/tokens/component.js.map +1 -1
- package/cjs/theme/tokens/font.js.map +1 -1
- package/cjs/theme/tokens/media-query.js.map +1 -1
- package/cjs/theme/tokens/motion.js.map +1 -1
- package/cjs/theme/tokens/radius.js.map +1 -1
- package/cjs/theme/tokens/shadow.js.map +1 -1
- package/cjs/theme/tokens/spacing.js.map +1 -1
- package/cjs/theme/types.js.map +1 -1
- package/cjs/theme/utils/css-variable.js.map +1 -1
- package/cjs/theme/utils/font.js.map +1 -1
- package/cjs/theme/utils/use-apply-styles.js +1 -1
- package/cjs/theme/utils/use-apply-styles.js.map +1 -1
- package/cjs/theme/utils/use-design-token-override.js.map +1 -1
- package/cjs/theme/utils/use-design-token.js.map +1 -1
- package/cjs/theme/utils/use-media-query.js.map +1 -1
- package/cjs/time-range-picker/combobox-picker/combobox-picker.js +1 -1
- package/cjs/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
- package/cjs/time-range-picker/common.styles.js +1 -1
- package/cjs/time-range-picker/common.styles.js.map +1 -1
- package/cjs/time-range-picker/{common.styles_1qwp4xa.css → common.styles_cnkkax.css} +2 -1
- package/cjs/time-range-picker/dial-picker/dial-picker.js +1 -1
- package/cjs/time-range-picker/dial-picker/dial-picker.js.map +1 -1
- package/cjs/time-range-picker/time-range-picker.js.map +1 -1
- package/cjs/time-slot-bar/time-slot-bar.js.map +1 -1
- package/cjs/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
- package/cjs/time-slot-week-view/time-slot-week-view.js.map +1 -1
- package/cjs/timeline/timeline.js.map +1 -1
- package/cjs/timepicker/timepicker.js +1 -1
- package/cjs/timepicker/timepicker.js.map +1 -1
- package/cjs/timepicker/timepicker.styles.js +1 -1
- package/cjs/timepicker/timepicker.styles.js.map +1 -1
- package/cjs/timepicker/timepicker.styles_lyizvq.css +2 -0
- package/cjs/timetable/timetable-row/with-optional-popover.js +1 -1
- package/cjs/timetable/timetable-row/with-optional-popover.js.map +1 -1
- package/cjs/timetable/timetable.js +1 -1
- package/cjs/timetable/timetable.js.map +1 -1
- package/cjs/toast/toast.js.map +1 -1
- package/cjs/toggle/toggle.js.map +1 -1
- package/cjs/typography/index.js.map +1 -1
- package/cjs/uneditable-section/index.js.map +1 -1
- package/cjs/uneditable-section/section-item.js +1 -1
- package/cjs/uneditable-section/section-item.js.map +1 -1
- package/cjs/unit-number/unit-number-input.js.map +1 -1
- package/cjs/util/merge-refs.js.map +1 -1
- package/cjs/util/use-throttle.js +2 -0
- package/cjs/util/use-throttle.js.map +1 -0
- package/countdown-timer/countdown-timer.js.map +1 -1
- package/countdown-timer/types.d.ts +6 -6
- package/dashed-border/dashed-border.js.map +1 -1
- package/data-table/data-table.js +1 -1
- package/data-table/data-table.js.map +1 -1
- package/data-table/data-table.styles.d.ts +2 -1
- package/data-table/data-table.styles.js +1 -1
- package/data-table/data-table.styles.js.map +1 -1
- package/data-table/data-table.styles_rxganh.css +27 -0
- package/date-input/date-input.js.map +1 -1
- package/date-input/types.d.ts +1 -1
- package/date-navigator/date-navigator.js.map +1 -1
- package/date-navigator/types.d.ts +1 -1
- package/date-range-input/date-range-input.js.map +1 -1
- package/date-range-input/types.d.ts +2 -2
- package/divider/divider.js.map +1 -1
- package/divider/types.d.ts +1 -1
- package/docs/component-catalog.json +644 -0
- package/drawer/drawer.js.map +1 -1
- package/drawer/types.d.ts +1 -1
- package/e-signature/e-signature.js.map +1 -1
- package/e-signature/types.d.ts +1 -1
- package/error-display/error-display.js.map +1 -1
- package/external/dompurify/dist/purify.es.js +2 -2
- package/external/dompurify/dist/purify.es.js.map +1 -1
- package/external/lodash/_setCacheHas.js.map +1 -1
- package/external/lodash/lodash.js +1 -1
- package/external/lodash/lodash.js.map +1 -1
- package/feedback-rating/feedback-rating.js.map +1 -1
- package/file-download/file-download.js.map +1 -1
- package/file-download/types.d.ts +6 -1
- package/file-upload/file-item-edit.d.ts +1 -1
- package/file-upload/file-item-edit.js.map +1 -1
- package/file-upload/file-list/file-list.d.ts +1 -1
- package/file-upload/file-list/file-list.js.map +1 -1
- package/file-upload/file-list-item/file-list-item.d.ts +1 -1
- package/file-upload/file-list-item/file-list-item.js.map +1 -1
- package/file-upload/file-list-item/file-list-item.styles.js +1 -1
- package/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
- package/file-upload/file-list-item/{file-list-item.styles_o8000f.css → file-list-item.styles_kgtfke.css} +1 -1
- package/file-upload/file-upload.js.map +1 -1
- package/file-upload/types.d.ts +6 -3
- package/filter/addons/filter-item-checkbox-helpers.d.ts +2 -2
- package/filter/addons/filter-item-checkbox-helpers.js.map +1 -1
- package/filter/addons/filter-item-checkbox.d.ts +1 -1
- package/filter/addons/filter-item-checkbox.js.map +1 -1
- package/filter/addons/internal-types.d.ts +12 -0
- package/filter/addons/types.d.ts +60 -9
- package/filter/filter-item.js +1 -1
- package/filter/filter-item.js.map +1 -1
- package/filter/filter.d.ts +1 -1
- package/filter/filter.js.map +1 -1
- package/filter/index.d.ts +1 -0
- package/filter/types.d.ts +36 -72
- package/footer/footer.js.map +1 -1
- package/form/form-custom-field/form-custom-field.js +2 -0
- package/form/form-custom-field/form-custom-field.js.map +1 -0
- package/form/form-custom-field/index.d.ts +2 -0
- package/form/form-custom-field/types.d.ts +7 -0
- package/form/form-date-input/form-date-input.js +2 -0
- package/form/form-date-input/form-date-input.js.map +1 -0
- package/form/form-date-input/index.d.ts +2 -0
- package/form/form-date-input/types.d.ts +8 -0
- package/form/form-date-range-input/form-date-range-input.js +2 -0
- package/form/form-date-range-input/form-date-range-input.js.map +1 -0
- package/form/form-date-range-input/index.d.ts +2 -0
- package/form/form-date-range-input/types.d.ts +8 -0
- package/form/form-e-signature/form-e-signature.js +2 -0
- package/form/form-e-signature/form-e-signature.js.map +1 -0
- package/form/form-e-signature/index.d.ts +2 -0
- package/form/form-e-signature/types.d.ts +8 -0
- package/form/form-histogram-slider/form-histogram-slider.js +2 -0
- package/form/form-histogram-slider/form-histogram-slider.js.map +1 -0
- package/form/form-histogram-slider/index.d.ts +2 -0
- package/form/form-histogram-slider/types.d.ts +8 -0
- package/form/form-input/form-input.js +2 -0
- package/form/form-input/form-input.js.map +1 -0
- package/form/form-input/index.d.ts +2 -0
- package/form/form-input/types.d.ts +8 -0
- package/form/form-input-group/form-input-group.js +2 -0
- package/form/form-input-group/form-input-group.js.map +1 -0
- package/form/form-input-group/index.d.ts +2 -0
- package/form/form-input-group/types.d.ts +10 -0
- package/form/form-label/form-label-addon.js +2 -0
- package/form/form-label/form-label-addon.js.map +1 -0
- package/form/form-label/form-label-addon.styles.js +2 -0
- package/form/form-label/form-label-addon.styles.js.map +1 -0
- package/form/form-label/form-label-addon.styles_aztasj.css +1 -0
- package/form/form-label/form-label.js +2 -0
- package/form/form-label/form-label.js.map +1 -0
- package/form/form-label/form-label.styles.js +2 -0
- package/form/form-label/form-label.styles.js.map +1 -0
- package/form/form-label/form-label.styles_180zf7j.css +6 -0
- package/form/form-label/index.d.ts +2 -0
- package/form/form-label/types.d.ts +39 -0
- package/form/form-masked-input/form-masked-input.js +2 -0
- package/form/form-masked-input/form-masked-input.js.map +1 -0
- package/form/form-masked-input/index.d.ts +2 -0
- package/form/form-masked-input/types.d.ts +8 -0
- package/form/form-multi-select/form-multi-select.js +2 -0
- package/form/form-multi-select/form-multi-select.js.map +1 -0
- package/form/form-multi-select/index.d.ts +2 -0
- package/form/form-multi-select/types.d.ts +10 -0
- package/form/form-nested-multi-select/form-nested-multi-select.js +2 -0
- package/form/form-nested-multi-select/form-nested-multi-select.js.map +1 -0
- package/form/form-nested-multi-select/index.d.ts +2 -0
- package/form/form-nested-multi-select/types.d.ts +11 -0
- package/form/form-nested-select/form-nested-select.js +2 -0
- package/form/form-nested-select/form-nested-select.js.map +1 -0
- package/form/form-nested-select/index.d.ts +2 -0
- package/form/form-nested-select/types.d.ts +11 -0
- package/form/{form-otp-verification.d.ts → form-otp-verification/form-otp-verification.d.ts} +1 -1
- package/form/form-otp-verification/form-otp-verification.js +2 -0
- package/form/form-otp-verification/form-otp-verification.js.map +1 -0
- package/form/form-otp-verification/index.d.ts +2 -0
- package/form/form-otp-verification/types.d.ts +1 -0
- package/form/form-phone-number-input/form-phone-number-input.js +2 -0
- package/form/form-phone-number-input/form-phone-number-input.js.map +1 -0
- package/form/form-phone-number-input/index.d.ts +2 -0
- package/form/form-phone-number-input/types.d.ts +8 -0
- package/form/form-predictive-text-input/form-predictive-text-input.js +2 -0
- package/form/form-predictive-text-input/form-predictive-text-input.js.map +1 -0
- package/form/form-predictive-text-input/index.d.ts +2 -0
- package/form/form-predictive-text-input/types.d.ts +10 -0
- package/form/form-range-select/form-range-select.js +2 -0
- package/form/form-range-select/form-range-select.js.map +1 -0
- package/form/form-range-select/index.d.ts +2 -0
- package/form/form-range-select/types.d.ts +10 -0
- package/form/form-range-slider/form-range-slider.js +2 -0
- package/form/form-range-slider/form-range-slider.js.map +1 -0
- package/form/form-range-slider/index.d.ts +2 -0
- package/form/form-range-slider/types.d.ts +8 -0
- package/form/form-select/form-select.js +2 -0
- package/form/form-select/form-select.js.map +1 -0
- package/form/form-select/index.d.ts +2 -0
- package/form/form-select/types.d.ts +10 -0
- package/form/form-select-histogram/form-select-histogram.js +2 -0
- package/form/form-select-histogram/form-select-histogram.js.map +1 -0
- package/form/form-select-histogram/index.d.ts +2 -0
- package/form/form-select-histogram/types.d.ts +8 -0
- package/form/form-slider/form-slider.js +2 -0
- package/form/form-slider/form-slider.js.map +1 -0
- package/form/form-slider/index.d.ts +2 -0
- package/form/form-slider/types.d.ts +8 -0
- package/form/form-textarea/form-textarea.js +2 -0
- package/form/form-textarea/form-textarea.js.map +1 -0
- package/form/form-textarea/form-textarea.styles.js +2 -0
- package/form/form-textarea/form-textarea.styles.js.map +1 -0
- package/form/form-textarea/form-textarea.styles_1kneyif.css +3 -0
- package/form/form-textarea/index.d.ts +2 -0
- package/form/form-textarea/types.d.ts +8 -0
- package/form/form-time-range-picker/form-time-range-picker.js +2 -0
- package/form/form-time-range-picker/form-time-range-picker.js.map +1 -0
- package/form/form-time-range-picker/index.d.ts +2 -0
- package/form/form-time-range-picker/types.d.ts +8 -0
- package/form/form-timepicker/form-timepicker.js +2 -0
- package/form/form-timepicker/form-timepicker.js.map +1 -0
- package/form/form-timepicker/index.d.ts +2 -0
- package/form/form-timepicker/types.d.ts +8 -0
- package/form/form-unit-number-input/form-unit-number-input.js +2 -0
- package/form/form-unit-number-input/form-unit-number-input.js.map +1 -0
- package/form/form-unit-number-input/index.d.ts +2 -0
- package/form/form-unit-number-input/types.d.ts +8 -0
- package/form/form-wrapper.js +1 -1
- package/form/form-wrapper.js.map +1 -1
- package/form/index.d.ts +104 -24
- package/form/index.js +1 -1
- package/form/index.js.map +1 -1
- package/form/types.d.ts +27 -85
- package/fullscreen-image-carousel/fullscreen-image-carousel.d.ts +7 -0
- package/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
- package/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
- package/fullscreen-image-carousel/types.d.ts +91 -3
- package/histogram-slider/histogram-slider.d.ts +6 -0
- package/histogram-slider/histogram-slider.js.map +1 -1
- package/histogram-slider/types.d.ts +63 -3
- package/image-button/image-button.d.ts +6 -0
- package/image-button/image-button.js.map +1 -1
- package/image-button/types.d.ts +11 -1
- package/index.js +1 -1
- package/input/input.d.ts +6 -0
- package/input/input.js.map +1 -1
- package/input/types.d.ts +38 -2
- package/input-group/input-group.d.ts +7 -0
- package/input-group/input-group.js.map +1 -1
- package/input-group/types.d.ts +84 -8
- package/input-multi-select/input-multi-select.d.ts +6 -0
- package/input-multi-select/input-multi-select.js.map +1 -1
- package/input-multi-select/types.d.ts +46 -5
- package/input-nested-multi-select/input-nested-multi-select.d.ts +8 -0
- package/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
- package/input-nested-multi-select/types.d.ts +35 -5
- package/input-nested-select/input-nested-select.d.ts +9 -2
- package/input-nested-select/input-nested-select.js.map +1 -1
- package/input-nested-select/types.d.ts +77 -8
- package/input-range-select/input-range-select.d.ts +6 -0
- package/input-range-select/input-range-select.js.map +1 -1
- package/input-range-select/types.d.ts +68 -1
- package/input-range-slider/input-range-slider.d.ts +7 -0
- package/input-range-slider/input-range-slider.js.map +1 -1
- package/input-range-slider/types.d.ts +91 -6
- package/input-select/input-select.d.ts +5 -0
- package/input-select/input-select.js.map +1 -1
- package/input-select/types.d.ts +70 -14
- package/input-slider/input-slider.d.ts +6 -0
- package/input-slider/input-slider.js.map +1 -1
- package/input-slider/types.d.ts +21 -2
- package/input-textarea/textarea.d.ts +3 -0
- package/input-textarea/textarea.js.map +1 -1
- package/input-textarea/textarea.styles.js +1 -1
- package/input-textarea/textarea.styles.js.map +1 -1
- package/input-textarea/{textarea.styles_22z4n3.css → textarea.styles_q77m5x.css} +1 -1
- package/input-textarea/types.d.ts +24 -1
- package/language-switcher/language-switcher.d.ts +6 -0
- package/language-switcher/language-switcher.js.map +1 -1
- package/language-switcher/types.d.ts +23 -0
- package/layout/index.d.ts +16 -2
- package/layout/index.js +1 -1
- package/layout/index.js.map +1 -1
- package/layout/types.d.ts +61 -3
- package/link-list/components/common.d.ts +1 -1
- package/link-list/components/common.js.map +1 -1
- package/link-list/components/link-list-eager.d.ts +2 -2
- package/link-list/components/link-list-eager.js.map +1 -1
- package/link-list/components/link-list-lazy.d.ts +2 -2
- package/link-list/components/link-list-lazy.js.map +1 -1
- package/link-list/link-list.d.ts +6 -0
- package/link-list/link-list.js.map +1 -1
- package/link-list/types.d.ts +92 -3
- package/local-nav/local-nav-dropdown/local-nav-dropdown.d.ts +11 -0
- package/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
- package/local-nav/local-nav-menu/local-nav-menu.d.ts +6 -0
- package/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
- package/local-nav/types.d.ts +51 -0
- package/markup/markup.d.ts +6 -0
- package/markup/markup.js.map +1 -1
- package/markup/types.d.ts +6 -2
- package/masked-input/masked-input.d.ts +6 -0
- package/masked-input/masked-input.js.map +1 -1
- package/masked-input/types.d.ts +83 -8
- package/masthead/masthead.d.ts +6 -0
- package/masthead/masthead.js.map +1 -1
- package/masthead/types.d.ts +9 -0
- package/menu/menu.d.ts +27 -4
- package/menu/menu.js +1 -1
- package/menu/menu.js.map +1 -1
- package/menu/types.d.ts +49 -1
- package/modal/index.d.ts +13 -0
- package/modal/index.js.map +1 -1
- package/modal/modal-box.js +1 -1
- package/modal/modal-box.js.map +1 -1
- package/modal/types.d.ts +56 -7
- package/modal-v2/index.d.ts +1 -15
- package/modal-v2/index.js +1 -1
- package/modal-v2/index.js.map +1 -1
- package/modal-v2/modal-v2.d.ts +32 -1
- package/modal-v2/modal-v2.js +1 -1
- package/modal-v2/modal-v2.js.map +1 -1
- package/modal-v2/slots/card.js +1 -1
- package/modal-v2/slots/card.js.map +1 -1
- package/modal-v2/types.d.ts +92 -8
- package/navbar/navbar.d.ts +7 -0
- package/navbar/navbar.js.map +1 -1
- package/navbar/types.d.ts +201 -13
- package/notification-banner/notification-banner-hoc.d.ts +6 -0
- package/notification-banner/notification-banner-hoc.js.map +1 -1
- package/notification-banner/notification-banner.d.ts +7 -0
- package/notification-banner/notification-banner.js.map +1 -1
- package/notification-banner/types.d.ts +57 -2
- package/otp-input/otp-input.d.ts +7 -0
- package/otp-input/otp-input.js +1 -1
- package/otp-input/otp-input.js.map +1 -1
- package/otp-input/types.d.ts +63 -15
- package/otp-verification/contact-input-section.js +1 -1
- package/otp-verification/contact-input-section.js.map +1 -1
- package/otp-verification/internal-types.d.ts +22 -5
- package/otp-verification/otp-verification.d.ts +6 -0
- package/otp-verification/otp-verification.js.map +1 -1
- package/otp-verification/types.d.ts +125 -6
- package/otp-verification/verification-section.js +1 -1
- package/otp-verification/verification-section.js.map +1 -1
- package/overlay/overlay.d.ts +7 -0
- package/overlay/overlay.js.map +1 -1
- package/overlay/types.d.ts +57 -2
- package/package.json +1 -1
- package/pagination/pagination.d.ts +5 -0
- package/pagination/pagination.js.map +1 -1
- package/pagination/types.d.ts +48 -0
- package/phone-number-input/phone-number-input.d.ts +7 -0
- package/phone-number-input/phone-number-input.js.map +1 -1
- package/phone-number-input/types.d.ts +78 -13
- package/pill/pill.d.ts +6 -0
- package/pill/pill.js.map +1 -1
- package/pill/types.d.ts +19 -0
- package/popover/popover-inline/index.d.ts +1 -0
- package/popover/popover-inline/popover-inline.d.ts +6 -1
- package/popover/popover-inline/popover-inline.js.map +1 -1
- package/popover/popover-inline/types.d.ts +36 -0
- package/popover/popover-trigger.d.ts +6 -0
- package/popover/popover-trigger.js.map +1 -1
- package/popover/popover.d.ts +6 -0
- package/popover/popover.js +1 -1
- package/popover/popover.js.map +1 -1
- package/popover/types.d.ts +125 -11
- package/predictive-text-input/predictive-text-input.d.ts +6 -0
- package/predictive-text-input/predictive-text-input.js +1 -1
- package/predictive-text-input/predictive-text-input.js.map +1 -1
- package/predictive-text-input/types.d.ts +65 -11
- package/progress-indicator/progress-indicator.d.ts +7 -0
- package/progress-indicator/progress-indicator.js.map +1 -1
- package/progress-indicator/types.d.ts +18 -0
- package/radio-button/radio-button.d.ts +5 -0
- package/radio-button/radio-button.js.map +1 -1
- package/radio-button/types.d.ts +14 -0
- package/schedule/internal-types.d.ts +18 -0
- package/schedule/schedule-day-view/types.d.ts +2 -1
- package/schedule/schedule-week-view/types.d.ts +2 -1
- package/schedule/schedule.d.ts +3 -0
- package/schedule/schedule.js.map +1 -1
- package/schedule/shared/with-optional-popover.js +1 -1
- package/schedule/shared/with-optional-popover.js.map +1 -1
- package/schedule/types.d.ts +129 -10
- package/select-histogram/select-histogram.d.ts +5 -0
- package/select-histogram/select-histogram.js.map +1 -1
- package/select-histogram/types.d.ts +57 -4
- package/shared/dropdown-list/dropdown-list.js +1 -1
- package/shared/dropdown-list/dropdown-list.js.map +1 -1
- package/shared/dropdown-list/types.d.ts +52 -19
- package/shared/dropdown-wrapper/element-with-dropdown.d.ts +5 -4
- package/shared/dropdown-wrapper/element-with-dropdown.js +1 -1
- package/shared/dropdown-wrapper/element-with-dropdown.js.map +1 -1
- package/shared/dropdown-wrapper/types.d.ts +6 -0
- package/sidenav/sidenav.d.ts +10 -0
- package/sidenav/sidenav.js.map +1 -1
- package/sidenav/types.d.ts +71 -21
- package/singpass-button/singpass-button.d.ts +6 -0
- package/singpass-button/singpass-button.js.map +1 -1
- package/singpass-button/types.d.ts +29 -2
- package/smart-app-banner/smart-app-banner.d.ts +5 -0
- package/smart-app-banner/smart-app-banner.js.map +1 -1
- package/smart-app-banner/types.d.ts +56 -0
- package/tab/tab.d.ts +7 -0
- package/tab/tab.js.map +1 -1
- package/tab/types.d.ts +55 -6
- package/table/table.d.ts +30 -8
- package/table/table.js.map +1 -1
- package/table/table.styles.js +1 -1
- package/table/table.styles.js.map +1 -1
- package/table/{table.styles_1af5ipv.css → table.styles_1vjx31g.css} +1 -1
- package/table/types.d.ts +35 -0
- package/tag/tag.d.ts +5 -0
- package/tag/tag.js.map +1 -1
- package/tag/types.d.ts +24 -0
- package/text-list/index.d.ts +17 -0
- package/text-list/index.js.map +1 -1
- package/text-list/types.d.ts +33 -4
- package/theme/theme-provider/breakpoint.d.ts +0 -1
- package/theme/theme-provider/breakpoint.js +1 -1
- package/theme/theme-provider/breakpoint.js.map +1 -1
- package/theme/theme-provider/hooks.d.ts +16 -0
- package/theme/theme-provider/hooks.js.map +1 -1
- package/theme/theme-provider/index.d.ts +7 -0
- package/theme/theme-provider/index.js.map +1 -1
- package/theme/theme-provider/types.d.ts +14 -0
- package/theme/tokens/border.d.ts +9 -0
- package/theme/tokens/border.js.map +1 -1
- package/theme/tokens/breakpoint.d.ts +3 -0
- package/theme/tokens/breakpoint.js.map +1 -1
- package/theme/tokens/colour.d.ts +9 -0
- package/theme/tokens/colour.js.map +1 -1
- package/theme/tokens/component.d.ts +3 -0
- package/theme/tokens/component.js.map +1 -1
- package/theme/tokens/font.d.ts +6 -0
- package/theme/tokens/font.js.map +1 -1
- package/theme/tokens/media-query.d.ts +3 -0
- package/theme/tokens/media-query.js.map +1 -1
- package/theme/tokens/motion.d.ts +3 -0
- package/theme/tokens/motion.js.map +1 -1
- package/theme/tokens/radius.d.ts +3 -0
- package/theme/tokens/radius.js.map +1 -1
- package/theme/tokens/shadow.d.ts +3 -0
- package/theme/tokens/shadow.js.map +1 -1
- package/theme/tokens/spacing.d.ts +3 -0
- package/theme/tokens/spacing.js.map +1 -1
- package/theme/types.d.ts +23 -3
- package/theme/types.js.map +1 -1
- package/theme/utils/css-variable.d.ts +10 -2
- package/theme/utils/css-variable.js.map +1 -1
- package/theme/utils/font.d.ts +2 -1
- package/theme/utils/font.js.map +1 -1
- package/theme/utils/use-apply-styles.d.ts +8 -2
- package/theme/utils/use-apply-styles.js +1 -1
- package/theme/utils/use-apply-styles.js.map +1 -1
- package/theme/utils/use-design-token-override.d.ts +9 -1
- package/theme/utils/use-design-token-override.js.map +1 -1
- package/theme/utils/use-design-token.d.ts +9 -0
- package/theme/utils/use-design-token.js.map +1 -1
- package/theme/utils/use-media-query.d.ts +41 -3
- package/theme/utils/use-media-query.js.map +1 -1
- package/time-range-picker/combobox-picker/combobox-picker.js +1 -1
- package/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
- package/time-range-picker/common.styles.d.ts +1 -0
- package/time-range-picker/common.styles.js +1 -1
- package/time-range-picker/common.styles.js.map +1 -1
- package/time-range-picker/{common.styles_1qwp4xa.css → common.styles_cnkkax.css} +2 -1
- package/time-range-picker/dial-picker/dial-picker.js +1 -1
- package/time-range-picker/dial-picker/dial-picker.js.map +1 -1
- package/time-range-picker/time-range-picker.d.ts +5 -0
- package/time-range-picker/time-range-picker.js.map +1 -1
- package/time-range-picker/types.d.ts +85 -25
- package/time-slot-bar/internal-types.d.ts +1 -0
- package/time-slot-bar/time-slot-bar.d.ts +7 -0
- package/time-slot-bar/time-slot-bar.js.map +1 -1
- package/time-slot-bar/types.d.ts +116 -20
- package/time-slot-bar-week/time-slot-bar-week.d.ts +8 -0
- package/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
- package/time-slot-bar-week/types.d.ts +80 -13
- package/time-slot-week-view/time-slot-week-view.d.ts +7 -0
- package/time-slot-week-view/time-slot-week-view.js.map +1 -1
- package/time-slot-week-view/types.d.ts +55 -10
- package/timeline/timeline.d.ts +6 -0
- package/timeline/timeline.js.map +1 -1
- package/timeline/types.d.ts +58 -4
- package/timepicker/timepicker.d.ts +5 -0
- package/timepicker/timepicker.js +1 -1
- package/timepicker/timepicker.js.map +1 -1
- package/timepicker/timepicker.styles.d.ts +1 -0
- package/timepicker/timepicker.styles.js +1 -1
- package/timepicker/timepicker.styles.js.map +1 -1
- package/timepicker/timepicker.styles_lyizvq.css +2 -0
- package/timepicker/types.d.ts +49 -14
- package/timetable/timetable-row/with-optional-popover.js +1 -1
- package/timetable/timetable-row/with-optional-popover.js.map +1 -1
- package/timetable/timetable.d.ts +6 -0
- package/timetable/timetable.js +1 -1
- package/timetable/timetable.js.map +1 -1
- package/timetable/types.d.ts +175 -50
- package/toast/toast.d.ts +6 -0
- package/toast/toast.js.map +1 -1
- package/toast/types.d.ts +44 -8
- package/toggle/toggle.d.ts +6 -0
- package/toggle/toggle.js.map +1 -1
- package/toggle/types.d.ts +95 -17
- package/tools/shared/generated-file-formatter.d.ts +6 -0
- package/tools/shared/jsdoc-parser.d.ts +36 -0
- package/tools/shared/ts-morph-project-factory.d.ts +9 -0
- package/tools/shared/typescript-source-provider.d.ts +9 -0
- package/tools/storybook-argtypes/adapters/file-system-adapter.d.ts +69 -0
- package/tools/storybook-argtypes/arg-types-generator.d.ts +85 -0
- package/tools/storybook-argtypes/config/arg-types-config.d.ts +31 -0
- package/tools/storybook-argtypes/index.d.ts +11 -0
- package/tools/storybook-argtypes/services/arg-types-row-builder.d.ts +43 -0
- package/tools/storybook-argtypes/services/file-path-resolver.d.ts +118 -0
- package/tools/storybook-argtypes/services/index.d.ts +6 -0
- package/tools/storybook-argtypes/services/jsdoc-metadata-extractor.d.ts +33 -0
- package/tools/storybook-argtypes/services/story-registry-generator.d.ts +27 -0
- package/tools/storybook-argtypes/services/type-dependency-resolver.d.ts +46 -0
- package/tools/storybook-argtypes/services/type-formatting-service.d.ts +27 -0
- package/tools/storybook-argtypes/types.d.ts +102 -0
- package/typography/index.d.ts +29 -0
- package/typography/index.js.map +1 -1
- package/typography/types.d.ts +51 -8
- package/uneditable-section/index.d.ts +15 -0
- package/uneditable-section/index.js.map +1 -1
- package/uneditable-section/section-item.js +1 -1
- package/uneditable-section/section-item.js.map +1 -1
- package/uneditable-section/types.d.ts +66 -23
- package/unit-number/types.d.ts +30 -4
- package/unit-number/unit-number-input.d.ts +6 -0
- package/unit-number/unit-number-input.js.map +1 -1
- package/util/index.d.ts +1 -0
- package/util/merge-refs.d.ts +1 -1
- package/util/merge-refs.js.map +1 -1
- package/util/use-throttle.d.ts +1 -0
- package/util/use-throttle.js +2 -0
- package/util/use-throttle.js.map +1 -0
- package/cjs/data-table/data-table.styles_1iqq1g7.css +0 -26
- package/cjs/form/form-custom-field.js +0 -2
- package/cjs/form/form-custom-field.js.map +0 -1
- package/cjs/form/form-date-input.js +0 -2
- package/cjs/form/form-date-input.js.map +0 -1
- package/cjs/form/form-date-range-input.js +0 -2
- package/cjs/form/form-date-range-input.js.map +0 -1
- package/cjs/form/form-e-signature.js +0 -2
- package/cjs/form/form-e-signature.js.map +0 -1
- package/cjs/form/form-histogram.js +0 -2
- package/cjs/form/form-histogram.js.map +0 -1
- package/cjs/form/form-input-group.js +0 -2
- package/cjs/form/form-input-group.js.map +0 -1
- package/cjs/form/form-input.js +0 -2
- package/cjs/form/form-input.js.map +0 -1
- package/cjs/form/form-label-addon.js +0 -2
- package/cjs/form/form-label-addon.js.map +0 -1
- package/cjs/form/form-label-addon.styles.js +0 -2
- package/cjs/form/form-label-addon.styles.js.map +0 -1
- package/cjs/form/form-label-addon.styles_b00z8p.css +0 -1
- package/cjs/form/form-label.js +0 -2
- package/cjs/form/form-label.js.map +0 -1
- package/cjs/form/form-label.styles.js +0 -2
- package/cjs/form/form-label.styles.js.map +0 -1
- package/cjs/form/form-label.styles_1nbe0bm.css +0 -6
- package/cjs/form/form-masked-input.js +0 -2
- package/cjs/form/form-masked-input.js.map +0 -1
- package/cjs/form/form-multi-select.js +0 -2
- package/cjs/form/form-multi-select.js.map +0 -1
- package/cjs/form/form-nested-multi-select.js +0 -2
- package/cjs/form/form-nested-multi-select.js.map +0 -1
- package/cjs/form/form-nested-select.js +0 -2
- package/cjs/form/form-nested-select.js.map +0 -1
- package/cjs/form/form-otp-verification.js +0 -2
- package/cjs/form/form-otp-verification.js.map +0 -1
- package/cjs/form/form-phone-number-input.js +0 -2
- package/cjs/form/form-phone-number-input.js.map +0 -1
- package/cjs/form/form-predictive-text-input.js +0 -2
- package/cjs/form/form-predictive-text-input.js.map +0 -1
- package/cjs/form/form-range-select.js +0 -2
- package/cjs/form/form-range-select.js.map +0 -1
- package/cjs/form/form-range-slider.js +0 -2
- package/cjs/form/form-range-slider.js.map +0 -1
- package/cjs/form/form-select-histogram.js +0 -2
- package/cjs/form/form-select-histogram.js.map +0 -1
- package/cjs/form/form-select.js +0 -2
- package/cjs/form/form-select.js.map +0 -1
- package/cjs/form/form-slider.js +0 -2
- package/cjs/form/form-slider.js.map +0 -1
- package/cjs/form/form-textarea.js +0 -2
- package/cjs/form/form-textarea.js.map +0 -1
- package/cjs/form/form-textarea.styles.js +0 -2
- package/cjs/form/form-textarea.styles.js.map +0 -1
- package/cjs/form/form-textarea.styles_3p9qoy.css +0 -3
- package/cjs/form/form-time-range-picker.js +0 -2
- package/cjs/form/form-time-range-picker.js.map +0 -1
- package/cjs/form/form-timepicker.js +0 -2
- package/cjs/form/form-timepicker.js.map +0 -1
- package/cjs/form/form-unit-number-input.js +0 -2
- package/cjs/form/form-unit-number-input.js.map +0 -1
- package/cjs/timepicker/timepicker.styles_1jm33yw.css +0 -1
- package/data-table/data-table.styles_1iqq1g7.css +0 -26
- package/form/form-custom-field.js +0 -2
- package/form/form-custom-field.js.map +0 -1
- package/form/form-date-input.js +0 -2
- package/form/form-date-input.js.map +0 -1
- package/form/form-date-range-input.js +0 -2
- package/form/form-date-range-input.js.map +0 -1
- package/form/form-e-signature.js +0 -2
- package/form/form-e-signature.js.map +0 -1
- package/form/form-histogram.js +0 -2
- package/form/form-histogram.js.map +0 -1
- package/form/form-input-group.js +0 -2
- package/form/form-input-group.js.map +0 -1
- package/form/form-input.js +0 -2
- package/form/form-input.js.map +0 -1
- package/form/form-label-addon.js +0 -2
- package/form/form-label-addon.js.map +0 -1
- package/form/form-label-addon.styles.js +0 -2
- package/form/form-label-addon.styles.js.map +0 -1
- package/form/form-label-addon.styles_b00z8p.css +0 -1
- package/form/form-label.js +0 -2
- package/form/form-label.js.map +0 -1
- package/form/form-label.styles.js +0 -2
- package/form/form-label.styles.js.map +0 -1
- package/form/form-label.styles_1nbe0bm.css +0 -6
- package/form/form-masked-input.js +0 -2
- package/form/form-masked-input.js.map +0 -1
- package/form/form-multi-select.js +0 -2
- package/form/form-multi-select.js.map +0 -1
- package/form/form-nested-multi-select.js +0 -2
- package/form/form-nested-multi-select.js.map +0 -1
- package/form/form-nested-select.js +0 -2
- package/form/form-nested-select.js.map +0 -1
- package/form/form-otp-verification.js +0 -2
- package/form/form-otp-verification.js.map +0 -1
- package/form/form-phone-number-input.js +0 -2
- package/form/form-phone-number-input.js.map +0 -1
- package/form/form-predictive-text-input.js +0 -2
- package/form/form-predictive-text-input.js.map +0 -1
- package/form/form-range-select.js +0 -2
- package/form/form-range-select.js.map +0 -1
- package/form/form-range-slider.js +0 -2
- package/form/form-range-slider.js.map +0 -1
- package/form/form-select-histogram.js +0 -2
- package/form/form-select-histogram.js.map +0 -1
- package/form/form-select.js +0 -2
- package/form/form-select.js.map +0 -1
- package/form/form-slider.js +0 -2
- package/form/form-slider.js.map +0 -1
- package/form/form-textarea.js +0 -2
- package/form/form-textarea.js.map +0 -1
- package/form/form-textarea.styles.js +0 -2
- package/form/form-textarea.styles.js.map +0 -1
- package/form/form-textarea.styles_3p9qoy.css +0 -3
- package/form/form-time-range-picker.js +0 -2
- package/form/form-time-range-picker.js.map +0 -1
- package/form/form-timepicker.js +0 -2
- package/form/form-timepicker.js.map +0 -1
- package/form/form-unit-number-input.js +0 -2
- package/form/form-unit-number-input.js.map +0 -1
- package/link-list/internal-types.d.ts +0 -31
- package/timepicker/timepicker.styles_1jm33yw.css +0 -1
- /package/{codemod-utils.d.ts → codemods/codemod-utils.d.ts} +0 -0
- /package/{migrate-popover → codemods/migrate-popover}/index.d.ts +0 -0
- /package/{run-codemod.d.ts → codemods/run-codemod.d.ts} +0 -0
- /package/form/{form-custom-field.d.ts → form-custom-field/form-custom-field.d.ts} +0 -0
- /package/form/{form-date-input.d.ts → form-date-input/form-date-input.d.ts} +0 -0
- /package/form/{form-date-range-input.d.ts → form-date-range-input/form-date-range-input.d.ts} +0 -0
- /package/form/{form-e-signature.d.ts → form-e-signature/form-e-signature.d.ts} +0 -0
- /package/form/{form-histogram.d.ts → form-histogram-slider/form-histogram-slider.d.ts} +0 -0
- /package/form/{form-input.d.ts → form-input/form-input.d.ts} +0 -0
- /package/form/{form-input-group.d.ts → form-input-group/form-input-group.d.ts} +0 -0
- /package/form/{form-label-addon.d.ts → form-label/form-label-addon.d.ts} +0 -0
- /package/form/{form-label-addon.styles.d.ts → form-label/form-label-addon.styles.d.ts} +0 -0
- /package/form/{form-label.d.ts → form-label/form-label.d.ts} +0 -0
- /package/form/{form-label.styles.d.ts → form-label/form-label.styles.d.ts} +0 -0
- /package/form/{form-masked-input.d.ts → form-masked-input/form-masked-input.d.ts} +0 -0
- /package/form/{form-multi-select.d.ts → form-multi-select/form-multi-select.d.ts} +0 -0
- /package/form/{form-nested-multi-select.d.ts → form-nested-multi-select/form-nested-multi-select.d.ts} +0 -0
- /package/form/{form-nested-select.d.ts → form-nested-select/form-nested-select.d.ts} +0 -0
- /package/form/{form-phone-number-input.d.ts → form-phone-number-input/form-phone-number-input.d.ts} +0 -0
- /package/form/{form-predictive-text-input.d.ts → form-predictive-text-input/form-predictive-text-input.d.ts} +0 -0
- /package/form/{form-range-select.d.ts → form-range-select/form-range-select.d.ts} +0 -0
- /package/form/{form-range-slider.d.ts → form-range-slider/form-range-slider.d.ts} +0 -0
- /package/form/{form-select.d.ts → form-select/form-select.d.ts} +0 -0
- /package/form/{form-select-histogram.d.ts → form-select-histogram/form-select-histogram.d.ts} +0 -0
- /package/form/{form-slider.d.ts → form-slider/form-slider.d.ts} +0 -0
- /package/form/{form-textarea.d.ts → form-textarea/form-textarea.d.ts} +0 -0
- /package/form/{form-textarea.styles.d.ts → form-textarea/form-textarea.styles.d.ts} +0 -0
- /package/form/{form-time-range-picker.d.ts → form-time-range-picker/form-time-range-picker.d.ts} +0 -0
- /package/form/{form-timepicker.d.ts → form-timepicker/form-timepicker.d.ts} +0 -0
- /package/form/{form-unit-number-input.d.ts → form-unit-number-input/form-unit-number-input.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-item-checkbox.js","sources":["../../../../src/filter/addons/filter-item-checkbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { AriaAttributes } from \"react\";\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { Button } from \"../../button\";\nimport { Checkbox } from \"../../checkbox\";\nimport { Toggle } from \"../../toggle\";\nimport { FilterContext } from \"../filter-context\";\nimport { FilterItem } from \"../filter-item\";\nimport type {\n FilterItemCheckboxOptionProps,\n FilterItemCheckboxProps,\n} from \"../types\";\nimport * as styles from \"./filter-item-checkbox.styles\";\nimport {\n buildKeyPath,\n flattenNestedOptions,\n getAllDescendantChildren,\n getAllDescendantKeyPaths,\n hasNestedOptions,\n} from \"./filter-item-checkbox-helpers\";\nimport type { FlattenedFilterOption } from \"./types\";\n\nexport const FilterItemCheckbox = <T = FilterItemCheckboxOptionProps,>({\n selectedOptions,\n options,\n showAsCheckboxInMobile = false,\n minimisableOptions = true,\n onSelect,\n labelExtractor,\n valueExtractor,\n useToggleContentWidth,\n ...filterItemProps\n}: FilterItemCheckboxProps<T>) => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const { mode } = useContext(FilterContext);\n const [selected, setSelected] = useState<T[]>(selectedOptions || []);\n const [minimisedHeight, setMinimisedHeight] = useState<number>();\n const [lastVisibleElementIndex, setLastVisibleElementIndex] =\n useState<number>(options.length);\n const parentRef = useRef<HTMLDivElement>(null);\n const lastVisibleElement = useRef<HTMLElement | null>(null);\n\n // Check if options have nested structure\n const isNested = useMemo(\n () => hasNestedOptions(options, (item) => (item as any).options),\n [options]\n );\n\n const isMobileToggleMode =\n mode === \"mobile\" && !showAsCheckboxInMobile && !isNested;\n\n // Flatten nested options\n const flattenedOptions = useMemo(\n () =>\n flattenNestedOptions(\n options,\n [],\n valueExtractor || ((item) => (item as any).value),\n labelExtractor || ((item) => (item as any).label)\n ),\n [options, valueExtractor, labelExtractor]\n );\n\n const optionCount = flattenedOptions.length;\n\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleItemClick = (item: T) => () => {\n // Find the flattened option\n const flatOption = flattenedOptions.find(\n (opt) => opt.originalItem === item\n );\n if (!flatOption) return;\n\n if (flatOption.hasChildren) {\n // Handle parent click - select/deselect all children\n const allChildren = getAllDescendantChildren<T>(\n flattenedOptions,\n flatOption.keyPath\n );\n\n const currentlySelectedChildren = allChildren.filter((child) =>\n selected.some((s) => getValue(s) === getValue(child))\n );\n\n let newSelection = [...selected];\n\n if (currentlySelectedChildren.length === allChildren.length) {\n // All children selected, deselect all\n newSelection = newSelection.filter(\n (s) =>\n !allChildren.some(\n (child) => getValue(child) === getValue(s)\n )\n );\n } else {\n // Some or no children selected, select all\n allChildren.forEach((child) => {\n if (\n !newSelection.some(\n (s) => getValue(s) === getValue(child)\n )\n ) {\n newSelection.push(child);\n }\n });\n }\n\n setSelected(newSelection);\n onSelect?.(newSelection);\n } else {\n // Handle leaf item click - toggle selection\n const newSelection = [...selected];\n const selectedIndex = selected.findIndex(\n (s) => getValue(s) === getValue(item)\n );\n\n if (selectedIndex >= 0) {\n newSelection.splice(selectedIndex, 1);\n } else {\n newSelection.push(item);\n }\n setSelected(newSelection);\n onSelect?.(newSelection);\n }\n };\n\n const handleSelectClearAll = () => {\n if (isNested) {\n if (selected.length > 0) {\n // Clear all\n setSelected([]);\n onSelect?.([]);\n } else {\n // Select all leaf nodes\n const leafOptions = flattenedOptions.filter(\n (option) => !option.hasChildren\n );\n const allValues = leafOptions.map(\n (option) => option.originalItem\n ) as T[];\n setSelected(allValues);\n onSelect?.(allValues);\n }\n } else {\n const newSelection = selected.length ? [] : options;\n setSelected(newSelection);\n onSelect?.(newSelection);\n }\n };\n\n const handleListItemKeyDown =\n (originalItem: T) => (event: React.KeyboardEvent) => {\n if (isNested && (event.key === \" \" || event.key === \"Enter\")) {\n event.preventDefault();\n handleItemClick(originalItem)();\n }\n };\n\n const handleCheckboxChange = (originalItem: T) => () => {\n if (!isNested) {\n handleItemClick(originalItem)();\n }\n };\n\n // =============================================================================\n // HELPER FUNCTIONS\n // =============================================================================\n const getCheckboxState = (flatOption: (typeof flattenedOptions)[0]) => {\n if (!flatOption.hasChildren) {\n // Leaf item - simple check\n return {\n checked: selected.some(\n (s) =>\n getValue(s) === getValue(flatOption.originalItem as T)\n ),\n indeterminate: false,\n };\n }\n\n // Parent item - check children states (following IndeterminateState pattern)\n const allChildren = getAllDescendantKeyPaths(\n flattenedOptions,\n flatOption.keyPath\n )\n .map((keyPath: string[]) =>\n flattenedOptions.find(\n (opt) => buildKeyPath(opt.keyPath) === buildKeyPath(keyPath)\n )\n )\n .filter((opt) => opt && !opt.hasChildren)\n .map((opt) => opt!.originalItem as T);\n\n const selectedChildren = allChildren.filter((child) =>\n selected.some((s) => getValue(s) === getValue(child))\n );\n\n return {\n checked:\n selectedChildren.length === allChildren.length &&\n allChildren.length > 0,\n indeterminate:\n selectedChildren.length > 0 &&\n selectedChildren.length < allChildren.length,\n };\n };\n\n const getLabel = (item: T): React.ReactNode => {\n return labelExtractor\n ? labelExtractor(item)\n : (item as any).label ?? item?.toString();\n };\n\n const getValue = (item: T): string => {\n return valueExtractor\n ? valueExtractor(item)\n : (item as any).value ?? item?.toString();\n };\n\n const setVisibleItemsWhenMinimised = () => {\n const elementBottom = lastVisibleElement.current\n ? lastVisibleElement.current.offsetTop +\n lastVisibleElement.current.clientHeight\n : undefined;\n setMinimisedHeight(elementBottom);\n };\n\n const setVisibleMobileItemsWhenMinimised = useCallback(() => {\n if (!parentRef.current) {\n setMinimisedHeight(undefined);\n return;\n }\n\n const children = Array.from(parentRef.current.children);\n\n let lastElementInRow = 0;\n let rowCount = 0;\n let rowTop = -1;\n\n for (let i = 0; i < children.length; i++) {\n const childTop = (children[i] as HTMLDivElement).offsetTop;\n if (childTop > rowTop) {\n rowCount++;\n rowTop = childTop;\n // show only the first 2 rows\n if (rowCount > 2) {\n break;\n }\n }\n lastElementInRow = i;\n }\n\n setLastVisibleElementIndex(lastElementInRow);\n\n if (rowCount > 2) {\n setMinimisedHeight(rowTop - 8); // gap from next row\n } else {\n setMinimisedHeight(undefined);\n }\n }, []);\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n if (selectedOptions !== selected) {\n setSelected(selectedOptions || []);\n }\n }, [selectedOptions]);\n\n useEffect(() => {\n if (isMobileToggleMode) {\n setVisibleMobileItemsWhenMinimised();\n } else {\n setVisibleItemsWhenMinimised();\n }\n }, [options]);\n\n useResizeDetector({\n handleWidth: true,\n handleHeight: false,\n skipOnMount: true,\n refreshMode: \"throttle\",\n targetRef: parentRef,\n onResize: isMobileToggleMode\n ? setVisibleMobileItemsWhenMinimised\n : setVisibleItemsWhenMinimised,\n });\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderCheckboxIcon = (\n originalItem: T,\n flatOption: FlattenedFilterOption<T>\n ) => {\n const { checked, indeterminate } = getCheckboxState(flatOption);\n\n return (\n <Checkbox\n className={styles.checkbox}\n displaySize=\"small\"\n checked={checked}\n indeterminate={indeterminate}\n onChange={handleCheckboxChange(originalItem)}\n tabIndex={isNested ? -1 : undefined}\n aria-hidden={isNested ? \"true\" : undefined}\n />\n );\n };\n\n const renderCheckbox = (\n option: FlattenedFilterOption<T>,\n index: number,\n minimised: boolean\n ) => {\n const originalItem = option.originalItem;\n const optionLabel = getLabel(originalItem);\n const { checked, indeterminate } = getCheckboxState(option);\n const isSelected = checked || indeterminate;\n const isVisible = !minimised || index < 5;\n\n // ARIA attributes for tree items\n const treeItemAriaAttributes: AriaAttributes = isNested\n ? {\n \"aria-checked\": indeterminate ? \"mixed\" : checked,\n \"aria-selected\": !!checked,\n \"aria-level\": option.level + 1,\n \"aria-posinset\": option.indexInParent + 1,\n \"aria-setsize\": option.parentSetSize,\n }\n : {};\n\n const itemRef = (el: HTMLElement | null) => {\n if (el && option.level) {\n el.style.setProperty(\n styles.tokens.item.level,\n String(option.level)\n );\n }\n if (index === 4) {\n lastVisibleElement.current = el;\n }\n };\n\n const itemClassName = clsx(\n styles.item,\n !isVisible && styles.itemHidden,\n isSelected && styles.itemSelected\n );\n\n const itemContent = (\n <>\n {renderCheckboxIcon(originalItem, option)}\n {optionLabel}\n </>\n );\n\n if (isNested) {\n return (\n <div\n key={buildKeyPath(option.keyPath)}\n role=\"treeitem\"\n {...treeItemAriaAttributes}\n onClick={handleItemClick(originalItem)}\n onKeyDown={handleListItemKeyDown(originalItem)}\n tabIndex={0}\n className={itemClassName}\n ref={itemRef}\n >\n {itemContent}\n </div>\n );\n }\n\n return (\n <label\n key={buildKeyPath(option.keyPath)}\n onKeyDown={handleListItemKeyDown(originalItem)}\n className={itemClassName}\n ref={itemRef}\n >\n {itemContent}\n </label>\n );\n };\n\n const renderToggle = (\n option: FlattenedFilterOption<T>,\n index: number,\n minimised: boolean\n ) => {\n const originalItem = option.originalItem;\n const optionLabel = getLabel(originalItem);\n const optionValue = getValue(originalItem);\n const checked = !!selected.find((s) => getValue(s) === optionValue);\n const isToggleVisible =\n !minimised ||\n (!!minimisedHeight && index <= lastVisibleElementIndex);\n return (\n <Toggle\n key={optionValue}\n type=\"checkbox\"\n checked={checked}\n className={clsx(\n !useToggleContentWidth && styles.toggle,\n !isToggleVisible && styles.toggleHidden\n )}\n onChange={handleItemClick(originalItem)}\n useContentWidth={useToggleContentWidth}\n >\n {optionLabel}\n </Toggle>\n );\n };\n\n const renderSelectClearAllButton = () => {\n if (optionCount < 3) {\n return null;\n }\n return (\n <Button\n className={styles.selectAllButton}\n styleType=\"link\"\n type=\"button\"\n sizeType=\"small\"\n onClick={handleSelectClearAll}\n aria-label={\n selected.length\n ? \"Clear all selections\"\n : `Select all in ${\n parentRef.current?.ariaLabel || \"this group\"\n }`\n }\n >\n {selected.length ? \"Clear all\" : \"Select all\"}\n </Button>\n );\n };\n\n return (\n <FilterItem\n minimisable={\n minimisableOptions\n ? isMobileToggleMode // set minimisable base on mobile toggle mode\n ? !!minimisedHeight\n : optionCount > 5\n : false // if minimisableOptions is false, never allow minimising\n }\n minimisedHeight={minimisedHeight}\n {...filterItemProps}\n className={clsx(styles.filterItem, filterItemProps.className)}\n >\n {(_, { minimised }) => (\n <>\n {renderSelectClearAllButton()}\n <div\n role={isNested ? \"tree\" : \"group\"}\n aria-label={filterItemProps.title}\n aria-multiselectable={true}\n ref={parentRef}\n className={clsx(\n styles.group,\n isMobileToggleMode && styles.groupMobileToggleMode\n )}\n >\n {flattenedOptions.map((option, i) =>\n isMobileToggleMode\n ? renderToggle(option, i, minimised)\n : renderCheckbox(option, i, minimised)\n )}\n </div>\n </>\n )}\n </FilterItem>\n );\n};\n\nFilterItemCheckbox.displayName = \"Filter.Checkbox\";\n"],"names":["FilterItemCheckbox","_a","selectedOptions","options","showAsCheckboxInMobile","minimisableOptions","onSelect","labelExtractor","valueExtractor","useToggleContentWidth","filterItemProps","__rest","mode","useContext","FilterContext","selected","setSelected","useState","minimisedHeight","setMinimisedHeight","lastVisibleElementIndex","setLastVisibleElementIndex","length","parentRef","useRef","lastVisibleElement","isNested","useMemo","hasNestedOptions","item","isMobileToggleMode","flattenedOptions","flattenNestedOptions","value","label","optionCount","handleItemClick","flatOption","find","opt","originalItem","hasChildren","allChildren","getAllDescendantChildren","keyPath","currentlySelectedChildren","filter","child","some","s","getValue","newSelection","forEach","push","selectedIndex","findIndex","splice","handleSelectClearAll","allValues","option","map","handleListItemKeyDown","event","key","preventDefault","handleCheckboxChange","getCheckboxState","checked","indeterminate","getAllDescendantKeyPaths","buildKeyPath","selectedChildren","getLabel","toString","setVisibleItemsWhenMinimised","elementBottom","current","offsetTop","clientHeight","undefined","setVisibleMobileItemsWhenMinimised","useCallback","children","Array","from","lastElementInRow","rowCount","rowTop","i","childTop","useEffect","useResizeDetector","handleWidth","handleHeight","skipOnMount","refreshMode","targetRef","onResize","renderCheckboxIcon","_jsx","Checkbox","className","styles.checkbox","displaySize","onChange","tabIndex","renderSelectClearAllButton","Button","styles.selectAllButton","styleType","type","sizeType","onClick","ariaLabel","FilterItem","Object","assign","minimisable","clsx","styles.filterItem","_","minimised","_jsxs","_Fragment","role","title","ref","styles.group","styles.groupMobileToggleMode","index","optionLabel","optionValue","isToggleVisible","Toggle","styles.toggle","styles.toggleHidden","useContentWidth","renderToggle","isSelected","isVisible","treeItemAriaAttributes","level","indexInParent","parentSetSize","itemRef","el","style","setProperty","styles.tokens","String","itemClassName","styles.item","styles.itemHidden","styles.itemSelected","itemContent","onKeyDown","renderCheckbox","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-item-checkbox.js","sources":["../../../../src/filter/addons/filter-item-checkbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { AriaAttributes } from \"react\";\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { Button } from \"../../button\";\nimport { Checkbox } from \"../../checkbox\";\nimport { Toggle } from \"../../toggle\";\nimport { FilterContext } from \"../filter-context\";\nimport { FilterItem } from \"../filter-item\";\nimport * as styles from \"./filter-item-checkbox.styles\";\nimport {\n buildKeyPath,\n flattenNestedOptions,\n getAllDescendantChildren,\n getAllDescendantKeyPaths,\n hasNestedOptions,\n} from \"./filter-item-checkbox-helpers\";\nimport type { FlattenedFilterOption } from \"./internal-types\";\nimport type {\n FilterItemCheckboxOptionProps,\n FilterItemCheckboxProps,\n} from \"./types\";\n\nexport const FilterItemCheckbox = <T = FilterItemCheckboxOptionProps,>({\n selectedOptions,\n options,\n showAsCheckboxInMobile = false,\n minimisableOptions = true,\n onSelect,\n labelExtractor,\n valueExtractor,\n useToggleContentWidth,\n ...filterItemProps\n}: FilterItemCheckboxProps<T>) => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const { mode } = useContext(FilterContext);\n const [selected, setSelected] = useState<T[]>(selectedOptions || []);\n const [minimisedHeight, setMinimisedHeight] = useState<number>();\n const [lastVisibleElementIndex, setLastVisibleElementIndex] =\n useState<number>(options.length);\n const parentRef = useRef<HTMLDivElement>(null);\n const lastVisibleElement = useRef<HTMLElement | null>(null);\n\n // Check if options have nested structure\n const isNested = useMemo(\n () => hasNestedOptions(options, (item) => (item as any).options),\n [options]\n );\n\n const isMobileToggleMode =\n mode === \"mobile\" && !showAsCheckboxInMobile && !isNested;\n\n // Flatten nested options\n const flattenedOptions = useMemo(\n () =>\n flattenNestedOptions(\n options,\n [],\n valueExtractor || ((item) => (item as any).value),\n labelExtractor || ((item) => (item as any).label)\n ),\n [options, valueExtractor, labelExtractor]\n );\n\n const optionCount = flattenedOptions.length;\n\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleItemClick = (item: T) => () => {\n // Find the flattened option\n const flatOption = flattenedOptions.find(\n (opt) => opt.originalItem === item\n );\n if (!flatOption) return;\n\n if (flatOption.hasChildren) {\n // Handle parent click - select/deselect all children\n const allChildren = getAllDescendantChildren<T>(\n flattenedOptions,\n flatOption.keyPath\n );\n\n const currentlySelectedChildren = allChildren.filter((child) =>\n selected.some((s) => getValue(s) === getValue(child))\n );\n\n let newSelection = [...selected];\n\n if (currentlySelectedChildren.length === allChildren.length) {\n // All children selected, deselect all\n newSelection = newSelection.filter(\n (s) =>\n !allChildren.some(\n (child) => getValue(child) === getValue(s)\n )\n );\n } else {\n // Some or no children selected, select all\n allChildren.forEach((child) => {\n if (\n !newSelection.some(\n (s) => getValue(s) === getValue(child)\n )\n ) {\n newSelection.push(child);\n }\n });\n }\n\n setSelected(newSelection);\n onSelect?.(newSelection);\n } else {\n // Handle leaf item click - toggle selection\n const newSelection = [...selected];\n const selectedIndex = selected.findIndex(\n (s) => getValue(s) === getValue(item)\n );\n\n if (selectedIndex >= 0) {\n newSelection.splice(selectedIndex, 1);\n } else {\n newSelection.push(item);\n }\n setSelected(newSelection);\n onSelect?.(newSelection);\n }\n };\n\n const handleSelectClearAll = () => {\n if (isNested) {\n if (selected.length > 0) {\n // Clear all\n setSelected([]);\n onSelect?.([]);\n } else {\n // Select all leaf nodes\n const leafOptions = flattenedOptions.filter(\n (option) => !option.hasChildren\n );\n const allValues = leafOptions.map(\n (option) => option.originalItem\n ) as T[];\n setSelected(allValues);\n onSelect?.(allValues);\n }\n } else {\n const newSelection = selected.length ? [] : options;\n setSelected(newSelection);\n onSelect?.(newSelection);\n }\n };\n\n const handleListItemKeyDown =\n (originalItem: T) => (event: React.KeyboardEvent) => {\n if (isNested && (event.key === \" \" || event.key === \"Enter\")) {\n event.preventDefault();\n handleItemClick(originalItem)();\n }\n };\n\n const handleCheckboxChange = (originalItem: T) => () => {\n if (!isNested) {\n handleItemClick(originalItem)();\n }\n };\n\n // =============================================================================\n // HELPER FUNCTIONS\n // =============================================================================\n const getCheckboxState = (flatOption: (typeof flattenedOptions)[0]) => {\n if (!flatOption.hasChildren) {\n // Leaf item - simple check\n return {\n checked: selected.some(\n (s) =>\n getValue(s) === getValue(flatOption.originalItem as T)\n ),\n indeterminate: false,\n };\n }\n\n // Parent item - check children states (following IndeterminateState pattern)\n const allChildren = getAllDescendantKeyPaths(\n flattenedOptions,\n flatOption.keyPath\n )\n .map((keyPath: string[]) =>\n flattenedOptions.find(\n (opt) => buildKeyPath(opt.keyPath) === buildKeyPath(keyPath)\n )\n )\n .filter((opt) => opt && !opt.hasChildren)\n .map((opt) => opt!.originalItem as T);\n\n const selectedChildren = allChildren.filter((child) =>\n selected.some((s) => getValue(s) === getValue(child))\n );\n\n return {\n checked:\n selectedChildren.length === allChildren.length &&\n allChildren.length > 0,\n indeterminate:\n selectedChildren.length > 0 &&\n selectedChildren.length < allChildren.length,\n };\n };\n\n const getLabel = (item: T): React.ReactNode => {\n return labelExtractor\n ? labelExtractor(item)\n : (item as any).label ?? item?.toString();\n };\n\n const getValue = (item: T): string => {\n return valueExtractor\n ? valueExtractor(item)\n : (item as any).value ?? item?.toString();\n };\n\n const setVisibleItemsWhenMinimised = () => {\n const elementBottom = lastVisibleElement.current\n ? lastVisibleElement.current.offsetTop +\n lastVisibleElement.current.clientHeight\n : undefined;\n setMinimisedHeight(elementBottom);\n };\n\n const setVisibleMobileItemsWhenMinimised = useCallback(() => {\n if (!parentRef.current) {\n setMinimisedHeight(undefined);\n return;\n }\n\n const children = Array.from(parentRef.current.children);\n\n let lastElementInRow = 0;\n let rowCount = 0;\n let rowTop = -1;\n\n for (let i = 0; i < children.length; i++) {\n const childTop = (children[i] as HTMLDivElement).offsetTop;\n if (childTop > rowTop) {\n rowCount++;\n rowTop = childTop;\n // show only the first 2 rows\n if (rowCount > 2) {\n break;\n }\n }\n lastElementInRow = i;\n }\n\n setLastVisibleElementIndex(lastElementInRow);\n\n if (rowCount > 2) {\n setMinimisedHeight(rowTop - 8); // gap from next row\n } else {\n setMinimisedHeight(undefined);\n }\n }, []);\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n if (selectedOptions !== selected) {\n setSelected(selectedOptions || []);\n }\n }, [selectedOptions]);\n\n useEffect(() => {\n if (isMobileToggleMode) {\n setVisibleMobileItemsWhenMinimised();\n } else {\n setVisibleItemsWhenMinimised();\n }\n }, [options]);\n\n useResizeDetector({\n handleWidth: true,\n handleHeight: false,\n skipOnMount: true,\n refreshMode: \"throttle\",\n targetRef: parentRef,\n onResize: isMobileToggleMode\n ? setVisibleMobileItemsWhenMinimised\n : setVisibleItemsWhenMinimised,\n });\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderCheckboxIcon = (\n originalItem: T,\n flatOption: FlattenedFilterOption<T>\n ) => {\n const { checked, indeterminate } = getCheckboxState(flatOption);\n\n return (\n <Checkbox\n className={styles.checkbox}\n displaySize=\"small\"\n checked={checked}\n indeterminate={indeterminate}\n onChange={handleCheckboxChange(originalItem)}\n tabIndex={isNested ? -1 : undefined}\n aria-hidden={isNested ? \"true\" : undefined}\n />\n );\n };\n\n const renderCheckbox = (\n option: FlattenedFilterOption<T>,\n index: number,\n minimised: boolean\n ) => {\n const originalItem = option.originalItem;\n const optionLabel = getLabel(originalItem);\n const { checked, indeterminate } = getCheckboxState(option);\n const isSelected = checked || indeterminate;\n const isVisible = !minimised || index < 5;\n\n // ARIA attributes for tree items\n const treeItemAriaAttributes: AriaAttributes = isNested\n ? {\n \"aria-checked\": indeterminate ? \"mixed\" : checked,\n \"aria-selected\": !!checked,\n \"aria-level\": option.level + 1,\n \"aria-posinset\": option.indexInParent + 1,\n \"aria-setsize\": option.parentSetSize,\n }\n : {};\n\n const itemRef = (el: HTMLElement | null) => {\n if (el && option.level) {\n el.style.setProperty(\n styles.tokens.item.level,\n String(option.level)\n );\n }\n if (index === 4) {\n lastVisibleElement.current = el;\n }\n };\n\n const itemClassName = clsx(\n styles.item,\n !isVisible && styles.itemHidden,\n isSelected && styles.itemSelected\n );\n\n const itemContent = (\n <>\n {renderCheckboxIcon(originalItem, option)}\n {optionLabel}\n </>\n );\n\n if (isNested) {\n return (\n <div\n key={buildKeyPath(option.keyPath)}\n role=\"treeitem\"\n {...treeItemAriaAttributes}\n onClick={handleItemClick(originalItem)}\n onKeyDown={handleListItemKeyDown(originalItem)}\n tabIndex={0}\n className={itemClassName}\n ref={itemRef}\n >\n {itemContent}\n </div>\n );\n }\n\n return (\n <label\n key={buildKeyPath(option.keyPath)}\n onKeyDown={handleListItemKeyDown(originalItem)}\n className={itemClassName}\n ref={itemRef}\n >\n {itemContent}\n </label>\n );\n };\n\n const renderToggle = (\n option: FlattenedFilterOption<T>,\n index: number,\n minimised: boolean\n ) => {\n const originalItem = option.originalItem;\n const optionLabel = getLabel(originalItem);\n const optionValue = getValue(originalItem);\n const checked = !!selected.find((s) => getValue(s) === optionValue);\n const isToggleVisible =\n !minimised ||\n (!!minimisedHeight && index <= lastVisibleElementIndex);\n return (\n <Toggle\n key={optionValue}\n type=\"checkbox\"\n checked={checked}\n className={clsx(\n !useToggleContentWidth && styles.toggle,\n !isToggleVisible && styles.toggleHidden\n )}\n onChange={handleItemClick(originalItem)}\n useContentWidth={useToggleContentWidth}\n >\n {optionLabel}\n </Toggle>\n );\n };\n\n const renderSelectClearAllButton = () => {\n if (optionCount < 3) {\n return null;\n }\n return (\n <Button\n className={styles.selectAllButton}\n styleType=\"link\"\n type=\"button\"\n sizeType=\"small\"\n onClick={handleSelectClearAll}\n aria-label={\n selected.length\n ? \"Clear all selections\"\n : `Select all in ${\n parentRef.current?.ariaLabel || \"this group\"\n }`\n }\n >\n {selected.length ? \"Clear all\" : \"Select all\"}\n </Button>\n );\n };\n\n return (\n <FilterItem\n minimisable={\n minimisableOptions\n ? isMobileToggleMode // set minimisable base on mobile toggle mode\n ? !!minimisedHeight\n : optionCount > 5\n : false // if minimisableOptions is false, never allow minimising\n }\n minimisedHeight={minimisedHeight}\n {...filterItemProps}\n className={clsx(styles.filterItem, filterItemProps.className)}\n >\n {(_, { minimised }) => (\n <>\n {renderSelectClearAllButton()}\n <div\n role={isNested ? \"tree\" : \"group\"}\n aria-label={filterItemProps.title}\n aria-multiselectable={true}\n ref={parentRef}\n className={clsx(\n styles.group,\n isMobileToggleMode && styles.groupMobileToggleMode\n )}\n >\n {flattenedOptions.map((option, i) =>\n isMobileToggleMode\n ? renderToggle(option, i, minimised)\n : renderCheckbox(option, i, minimised)\n )}\n </div>\n </>\n )}\n </FilterItem>\n );\n};\n\nFilterItemCheckbox.displayName = \"Filter.Checkbox\";\n"],"names":["FilterItemCheckbox","_a","selectedOptions","options","showAsCheckboxInMobile","minimisableOptions","onSelect","labelExtractor","valueExtractor","useToggleContentWidth","filterItemProps","__rest","mode","useContext","FilterContext","selected","setSelected","useState","minimisedHeight","setMinimisedHeight","lastVisibleElementIndex","setLastVisibleElementIndex","length","parentRef","useRef","lastVisibleElement","isNested","useMemo","hasNestedOptions","item","isMobileToggleMode","flattenedOptions","flattenNestedOptions","value","label","optionCount","handleItemClick","flatOption","find","opt","originalItem","hasChildren","allChildren","getAllDescendantChildren","keyPath","currentlySelectedChildren","filter","child","some","s","getValue","newSelection","forEach","push","selectedIndex","findIndex","splice","handleSelectClearAll","allValues","option","map","handleListItemKeyDown","event","key","preventDefault","handleCheckboxChange","getCheckboxState","checked","indeterminate","getAllDescendantKeyPaths","buildKeyPath","selectedChildren","getLabel","toString","setVisibleItemsWhenMinimised","elementBottom","current","offsetTop","clientHeight","undefined","setVisibleMobileItemsWhenMinimised","useCallback","children","Array","from","lastElementInRow","rowCount","rowTop","i","childTop","useEffect","useResizeDetector","handleWidth","handleHeight","skipOnMount","refreshMode","targetRef","onResize","renderCheckboxIcon","_jsx","Checkbox","className","styles.checkbox","displaySize","onChange","tabIndex","renderSelectClearAllButton","Button","styles.selectAllButton","styleType","type","sizeType","onClick","ariaLabel","FilterItem","Object","assign","minimisable","clsx","styles.filterItem","_","minimised","_jsxs","_Fragment","role","title","ref","styles.group","styles.groupMobileToggleMode","index","optionLabel","optionValue","isToggleVisible","Toggle","styles.toggle","styles.toggleHidden","useContentWidth","renderToggle","isSelected","isVisible","treeItemAriaAttributes","level","indexInParent","parentSetSize","itemRef","el","style","setProperty","styles.tokens","String","itemClassName","styles.item","styles.itemHidden","styles.itemSelected","itemContent","onKeyDown","renderCheckbox","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../_virtual/_tslib.js"),i=require("react/jsx-runtime"),t=require("@lifesg/react-icons/chevron-down"),r=require("@react-spring/web"),s=require("clsx"),l=require("../external/lodash/isNil.js"),a=require("react"),n=require("../external/react-resize-detector/build/index.esm.js"),d=require("../button/button.js"),o=require("../form/form-label-addon.js"),u=require("../shared/accessibility/index.js"),c=require("../shared/clickable-icon/clickable-icon.js");require("../theme/theme-provider/index.js"),require("../theme/theme-provider/context.js"),require("../theme/tokens/border.js"),require("../theme/tokens/colour.js"),require("../theme/tokens/font.js"),require("../theme/tokens/media-query.js");var m=require("../theme/utils/use-apply-styles.js");require("../theme/utils/use-media-query.js"),require("../util/calendar-helper.js"),require("../external/dayjs/dayjs.min.js");var h=require("../util/simple-id-generator.js");require("../util/string-helper.js"),require("@react-aria/live-announcer");var f=require("./filter-context.js"),p=require("./filter-item.styles.js");function x(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var j=x(s);const b=s=>{var x,{collapsible:b=!0,initialExpanded:v=!1,expanded:q,onExpandChange:y,minimisable:g=!1,minimisedHeight:I,showDivider:N=!0,showMobileDivider:k=!0,title:C,addon:w,children:D,className:E}=s,M=e.__rest(s,["collapsible","initialExpanded","expanded","onExpandChange","minimisable","minimisedHeight","showDivider","showMobileDivider","title","addon","children","className"]);const{mode:H,rootNode:V}=a.useContext(f.FilterContext),$="mobile"===H,[z,B]=a.useState(K()),[S,T]=a.useState(g),_=!$&&b,F=n.useResizeDetector(),R=n.useResizeDetector(),A=r.useSpring({height:z?F.height:0}),O=S?null!=I?I:Math.min(.5*(null!==(x=R.height)&&void 0!==x?x:0),216):R.height,W=h.useId(),P=`${W}-content`,G=`${W}-title`,J=a.useRef(null);m.useApplyStyle(J,{[p.tokens.minimisableContent.height]:O?`${O}px`:null}),a.useEffect((()=>{B(K())}),[b,q]),a.useEffect((()=>{T(g)}),[g]);function K(){return!!$||(l.default(q)?!b||v:q)}return i.jsxs("div",{"aria-labelledby":G,className:j.default(p.filterItemWrapper,(_||$)&&p.filterItemWrapperDarker),children:[i.jsx("div",{className:j.default(p.divider,($?k:N)&&p.dividerVisible,$&&p.dividerMobile)}),(C||_)&&i.jsxs("div",{className:j.default(p.filterItemHeader,$&&p.filterItemHeaderMobile),children:[C&&i.jsxs("h3",{id:G,"data-testid":"filter-item-title",className:j.default(p.filterItemTitle,$&&p.filterItemTitleMobile),children:[C," ",w&&("popover"===(null==w?void 0:w.type)?i.jsx(o.PopoverAddon,{addon:w,rootNode:$?V:void 0}):null)]}),_&&i.jsxs(c.ClickableIcon,{className:p.filterItemExpandButton,"data-testid":"expand-collapse-button",focusHighlight:!1,focusOutline:"browser",onClick:()=>{const e=!z;l.default(q)&&B(e),y&&y(e)},"aria-expanded":z,"aria-disabled":!_,"aria-controls":P,children:[C&&i.jsx(u.VisuallyHidden,{children:C}),i.jsx(t.ChevronDownIcon,{"aria-hidden":!0,className:j.default(p.chevronIcon,z&&p.chevronIconExpanded)})]})]}),i.jsx(r.animated.div,{className:p.expandableItem,id:P,"data-testid":"expandable-container","data-expanded":z,style:A,inert:u.inertValue(!z),children:i.jsx("div",{ref:F.ref,children:i.jsxs("div",Object.assign({className:j.default(p.filterItemBody,E)},M,{children:[i.jsx("div",{ref:J,"data-testid":"minimisable-container",className:j.default(p.minimisableContent,g&&p.minimisableContentMinimisable),children:i.jsx("div",{ref:R.ref,children:i.jsx("div",{"data-id":"content-container",children:"function"==typeof D?D(H,{minimised:S}):D})})}),g&&i.jsxs(d.Button,{className:p.filterItemMinimiseButton,"data-id":"minimise-button",sizeType:"small",styleType:"link",type:"button",onClick:()=>{T(!S)},children:[i.jsx(u.VisuallyHidden,{children:`view ${S?"more":"less"} in ${C}`}),i.jsxs("span",{"aria-hidden":!0,children:["View ",S?"more":"less"]})]})]}))})})]})};b.displayName="Filter.Item",exports.FilterItem=b;
|
|
1
|
+
"use strict";var e=require("../_virtual/_tslib.js"),i=require("react/jsx-runtime"),t=require("@lifesg/react-icons/chevron-down"),r=require("@react-spring/web"),s=require("clsx"),l=require("../external/lodash/isNil.js"),a=require("react"),n=require("../external/react-resize-detector/build/index.esm.js"),d=require("../button/button.js"),o=require("../form/form-label/form-label-addon.js"),u=require("../shared/accessibility/index.js"),c=require("../shared/clickable-icon/clickable-icon.js");require("../theme/theme-provider/index.js"),require("../theme/theme-provider/context.js"),require("../theme/tokens/border.js"),require("../theme/tokens/colour.js"),require("../theme/tokens/font.js"),require("../theme/tokens/media-query.js");var m=require("../theme/utils/use-apply-styles.js");require("../theme/utils/use-media-query.js"),require("../util/calendar-helper.js"),require("../external/dayjs/dayjs.min.js");var h=require("../util/simple-id-generator.js");require("../util/string-helper.js"),require("@react-aria/live-announcer");var f=require("./filter-context.js"),p=require("./filter-item.styles.js");function x(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var j=x(s);const b=s=>{var x,{collapsible:b=!0,initialExpanded:v=!1,expanded:q,onExpandChange:y,minimisable:g=!1,minimisedHeight:I,showDivider:N=!0,showMobileDivider:k=!0,title:C,addon:w,children:D,className:E}=s,M=e.__rest(s,["collapsible","initialExpanded","expanded","onExpandChange","minimisable","minimisedHeight","showDivider","showMobileDivider","title","addon","children","className"]);const{mode:H,rootNode:V}=a.useContext(f.FilterContext),$="mobile"===H,[z,B]=a.useState(K()),[S,T]=a.useState(g),_=!$&&b,F=n.useResizeDetector(),R=n.useResizeDetector(),A=r.useSpring({height:z?F.height:0}),O=S?null!=I?I:Math.min(.5*(null!==(x=R.height)&&void 0!==x?x:0),216):R.height,W=h.useId(),P=`${W}-content`,G=`${W}-title`,J=a.useRef(null);m.useApplyStyle(J,{[p.tokens.minimisableContent.height]:O?`${O}px`:null}),a.useEffect((()=>{B(K())}),[b,q]),a.useEffect((()=>{T(g)}),[g]);function K(){return!!$||(l.default(q)?!b||v:q)}return i.jsxs("div",{"aria-labelledby":G,className:j.default(p.filterItemWrapper,(_||$)&&p.filterItemWrapperDarker),children:[i.jsx("div",{className:j.default(p.divider,($?k:N)&&p.dividerVisible,$&&p.dividerMobile)}),(C||_)&&i.jsxs("div",{className:j.default(p.filterItemHeader,$&&p.filterItemHeaderMobile),children:[C&&i.jsxs("h3",{id:G,"data-testid":"filter-item-title",className:j.default(p.filterItemTitle,$&&p.filterItemTitleMobile),children:[C," ",w&&("popover"===(null==w?void 0:w.type)?i.jsx(o.PopoverAddon,{addon:w,rootNode:$?V:void 0}):null)]}),_&&i.jsxs(c.ClickableIcon,{className:p.filterItemExpandButton,"data-testid":"expand-collapse-button",focusHighlight:!1,focusOutline:"browser",onClick:()=>{const e=!z;l.default(q)&&B(e),y&&y(e)},"aria-expanded":z,"aria-disabled":!_,"aria-controls":P,children:[C&&i.jsx(u.VisuallyHidden,{children:C}),i.jsx(t.ChevronDownIcon,{"aria-hidden":!0,className:j.default(p.chevronIcon,z&&p.chevronIconExpanded)})]})]}),i.jsx(r.animated.div,{className:p.expandableItem,id:P,"data-testid":"expandable-container","data-expanded":z,style:A,inert:u.inertValue(!z),children:i.jsx("div",{ref:F.ref,children:i.jsxs("div",Object.assign({className:j.default(p.filterItemBody,E)},M,{children:[i.jsx("div",{ref:J,"data-testid":"minimisable-container",className:j.default(p.minimisableContent,g&&p.minimisableContentMinimisable),children:i.jsx("div",{ref:R.ref,children:i.jsx("div",{"data-id":"content-container",children:"function"==typeof D?D(H,{minimised:S}):D})})}),g&&i.jsxs(d.Button,{className:p.filterItemMinimiseButton,"data-id":"minimise-button",sizeType:"small",styleType:"link",type:"button",onClick:()=>{T(!S)},children:[i.jsx(u.VisuallyHidden,{children:`view ${S?"more":"less"} in ${C}`}),i.jsxs("span",{"aria-hidden":!0,children:["View ",S?"more":"less"]})]})]}))})})]})};b.displayName="Filter.Item",exports.FilterItem=b;
|
|
2
2
|
//# sourceMappingURL=filter-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-item.js","sources":["../../../src/filter/filter-item.tsx"],"sourcesContent":["import { ChevronDownIcon } from \"@lifesg/react-icons/chevron-down\";\nimport { animated, useSpring } from \"@react-spring/web\";\nimport clsx from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { Button } from \"../button\";\nimport { PopoverAddon } from \"../form/form-label-addon\";\nimport { inertValue, VisuallyHidden } from \"../shared/accessibility\";\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { useApplyStyle } from \"../theme\";\nimport { useId } from \"../util\";\nimport { FilterContext } from \"./filter-context\";\nimport * as styles from \"./filter-item.styles\";\nimport type { FilterItemProps } from \"./types\";\n\nconst DEFAULT_MINIMISED_HEIGHT_CAP = 216;\n\nexport const FilterItem = ({\n collapsible: desktopCollapsible = true,\n initialExpanded = false,\n expanded: controlledExpanded,\n onExpandChange,\n minimisable = false,\n minimisedHeight,\n showDivider = true,\n showMobileDivider = true,\n title,\n addon,\n children,\n className,\n ...otherProps\n}: FilterItemProps) => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const { mode, rootNode } = useContext(FilterContext);\n const isMobile = mode === \"mobile\";\n const [expanded, setExpanded] = useState(getInitialExpandState());\n const [contentMinimised, setContentMinimised] = useState(minimisable);\n const collapsible = !isMobile && desktopCollapsible;\n\n const itemResizeDetector = useResizeDetector();\n const contentResizeDetector = useResizeDetector();\n const itemAnimationStyles = useSpring({\n height: expanded ? itemResizeDetector.height : 0,\n });\n const contentHeight = contentMinimised\n ? minimisedHeight ??\n Math.min(\n (contentResizeDetector.height ?? 0) * 0.5,\n DEFAULT_MINIMISED_HEIGHT_CAP\n )\n : contentResizeDetector.height;\n const internalId = useId();\n const contentId = `${internalId}-content`;\n const titleId = `${internalId}-title`;\n const minimisableContentRef = useRef<HTMLDivElement | null>(null);\n\n useApplyStyle(minimisableContentRef, {\n [styles.tokens.minimisableContent.height]: contentHeight\n ? `${contentHeight}px`\n : null,\n });\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n setExpanded(getInitialExpandState());\n }, [desktopCollapsible, controlledExpanded]);\n\n useEffect(() => {\n setContentMinimised(minimisable);\n }, [minimisable]);\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleExpandCollapse = () => {\n const nextState = !expanded;\n\n if (isNil(controlledExpanded)) {\n setExpanded(nextState);\n }\n\n if (onExpandChange) {\n onExpandChange(nextState);\n }\n };\n\n const handleMinimise = () => {\n setContentMinimised(!contentMinimised);\n };\n\n // =============================================================================\n // HELPERS\n // =============================================================================\n function getInitialExpandState() {\n if (isMobile) {\n return true;\n }\n if (isNil(controlledExpanded)) {\n return !desktopCollapsible || initialExpanded;\n }\n return controlledExpanded;\n }\n\n // =============================================================================\n // RENDER\n // =============================================================================\n\n const renderAddon = () => {\n switch (addon?.type) {\n case \"popover\":\n return (\n <PopoverAddon\n addon={addon}\n rootNode={isMobile ? rootNode : undefined}\n />\n );\n default:\n return null;\n }\n };\n\n return (\n <div\n aria-labelledby={titleId}\n className={clsx(\n styles.filterItemWrapper,\n (collapsible || isMobile) && styles.filterItemWrapperDarker\n )}\n >\n <div\n className={clsx(\n styles.divider,\n (isMobile ? showMobileDivider : showDivider) &&\n styles.dividerVisible,\n isMobile && styles.dividerMobile\n )}\n />\n {(title || collapsible) && (\n <div\n className={clsx(\n styles.filterItemHeader,\n isMobile && styles.filterItemHeaderMobile\n )}\n >\n {title && (\n <h3\n id={titleId}\n data-testid=\"filter-item-title\"\n className={clsx(\n styles.filterItemTitle,\n isMobile && styles.filterItemTitleMobile\n )}\n >\n {title} {addon && renderAddon()}\n </h3>\n )}\n {collapsible && (\n <ClickableIcon\n className={styles.filterItemExpandButton}\n data-testid={\"expand-collapse-button\"}\n focusHighlight={false}\n focusOutline=\"browser\"\n onClick={handleExpandCollapse}\n aria-expanded={expanded}\n aria-disabled={!collapsible}\n aria-controls={contentId}\n >\n {title && <VisuallyHidden>{title}</VisuallyHidden>}\n <ChevronDownIcon\n aria-hidden\n className={clsx(\n styles.chevronIcon,\n expanded && styles.chevronIconExpanded\n )}\n />\n </ClickableIcon>\n )}\n </div>\n )}\n <animated.div\n className={styles.expandableItem}\n id={contentId}\n data-testid={\"expandable-container\"}\n data-expanded={expanded}\n style={itemAnimationStyles}\n inert={inertValue(!expanded)}\n >\n <div ref={itemResizeDetector.ref}>\n <div\n className={clsx(styles.filterItemBody, className)}\n {...otherProps}\n >\n <div\n ref={minimisableContentRef}\n data-testid=\"minimisable-container\"\n className={clsx(\n styles.minimisableContent,\n minimisable &&\n styles.minimisableContentMinimisable\n )}\n >\n <div ref={contentResizeDetector.ref}>\n <div data-id=\"content-container\">\n {typeof children === \"function\"\n ? children(mode, {\n minimised: contentMinimised,\n })\n : children}\n </div>\n </div>\n </div>\n {minimisable && (\n <Button\n className={styles.filterItemMinimiseButton}\n data-id=\"minimise-button\"\n sizeType=\"small\"\n styleType=\"link\"\n type=\"button\"\n onClick={handleMinimise}\n >\n <VisuallyHidden>{`view ${\n contentMinimised ? \"more\" : \"less\"\n } in ${title}`}</VisuallyHidden>\n <span aria-hidden>\n View {contentMinimised ? \"more\" : \"less\"}\n </span>\n </Button>\n )}\n </div>\n </div>\n </animated.div>\n </div>\n );\n};\n\nFilterItem.displayName = \"Filter.Item\";\n"],"names":["FilterItem","_a","collapsible","desktopCollapsible","initialExpanded","expanded","controlledExpanded","onExpandChange","minimisable","minimisedHeight","showDivider","showMobileDivider","title","addon","children","className","otherProps","__rest","mode","rootNode","useContext","FilterContext","isMobile","setExpanded","useState","getInitialExpandState","contentMinimised","setContentMinimised","itemResizeDetector","useResizeDetector","contentResizeDetector","itemAnimationStyles","useSpring","height","contentHeight","Math","min","_b","internalId","useId","contentId","titleId","minimisableContentRef","useRef","useApplyStyle","styles.tokens","minimisableContent","useEffect","isNil","_jsxs","clsx","styles.filterItemWrapper","styles.filterItemWrapperDarker","_jsx","styles.divider","styles.dividerVisible","styles.dividerMobile","styles.filterItemHeader","styles.filterItemHeaderMobile","id","styles.filterItemTitle","styles.filterItemTitleMobile","type","PopoverAddon","undefined","ClickableIcon","styles.filterItemExpandButton","focusHighlight","focusOutline","onClick","nextState","VisuallyHidden","ChevronDownIcon","styles.chevronIcon","styles.chevronIconExpanded","animated","div","styles.expandableItem","style","inert","inertValue","ref","Object","assign","styles.filterItemBody","styles.minimisableContent","styles.minimisableContentMinimisable","minimised","Button","styles.filterItemMinimiseButton","sizeType","styleType","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-item.js","sources":["../../../src/filter/filter-item.tsx"],"sourcesContent":["import { ChevronDownIcon } from \"@lifesg/react-icons/chevron-down\";\nimport { animated, useSpring } from \"@react-spring/web\";\nimport clsx from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport { useContext, useEffect, useRef, useState } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\n\nimport { Button } from \"../button\";\nimport { PopoverAddon } from \"../form/form-label/form-label-addon\";\nimport { inertValue, VisuallyHidden } from \"../shared/accessibility\";\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { useApplyStyle } from \"../theme\";\nimport { useId } from \"../util\";\nimport { FilterContext } from \"./filter-context\";\nimport * as styles from \"./filter-item.styles\";\nimport type { FilterItemProps } from \"./types\";\n\nconst DEFAULT_MINIMISED_HEIGHT_CAP = 216;\n\nexport const FilterItem = ({\n collapsible: desktopCollapsible = true,\n initialExpanded = false,\n expanded: controlledExpanded,\n onExpandChange,\n minimisable = false,\n minimisedHeight,\n showDivider = true,\n showMobileDivider = true,\n title,\n addon,\n children,\n className,\n ...otherProps\n}: FilterItemProps) => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const { mode, rootNode } = useContext(FilterContext);\n const isMobile = mode === \"mobile\";\n const [expanded, setExpanded] = useState(getInitialExpandState());\n const [contentMinimised, setContentMinimised] = useState(minimisable);\n const collapsible = !isMobile && desktopCollapsible;\n\n const itemResizeDetector = useResizeDetector();\n const contentResizeDetector = useResizeDetector();\n const itemAnimationStyles = useSpring({\n height: expanded ? itemResizeDetector.height : 0,\n });\n const contentHeight = contentMinimised\n ? minimisedHeight ??\n Math.min(\n (contentResizeDetector.height ?? 0) * 0.5,\n DEFAULT_MINIMISED_HEIGHT_CAP\n )\n : contentResizeDetector.height;\n const internalId = useId();\n const contentId = `${internalId}-content`;\n const titleId = `${internalId}-title`;\n const minimisableContentRef = useRef<HTMLDivElement | null>(null);\n\n useApplyStyle(minimisableContentRef, {\n [styles.tokens.minimisableContent.height]: contentHeight\n ? `${contentHeight}px`\n : null,\n });\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n setExpanded(getInitialExpandState());\n }, [desktopCollapsible, controlledExpanded]);\n\n useEffect(() => {\n setContentMinimised(minimisable);\n }, [minimisable]);\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleExpandCollapse = () => {\n const nextState = !expanded;\n\n if (isNil(controlledExpanded)) {\n setExpanded(nextState);\n }\n\n if (onExpandChange) {\n onExpandChange(nextState);\n }\n };\n\n const handleMinimise = () => {\n setContentMinimised(!contentMinimised);\n };\n\n // =============================================================================\n // HELPERS\n // =============================================================================\n function getInitialExpandState() {\n if (isMobile) {\n return true;\n }\n if (isNil(controlledExpanded)) {\n return !desktopCollapsible || initialExpanded;\n }\n return controlledExpanded;\n }\n\n // =============================================================================\n // RENDER\n // =============================================================================\n\n const renderAddon = () => {\n switch (addon?.type) {\n case \"popover\":\n return (\n <PopoverAddon\n addon={addon}\n rootNode={isMobile ? rootNode : undefined}\n />\n );\n default:\n return null;\n }\n };\n\n return (\n <div\n aria-labelledby={titleId}\n className={clsx(\n styles.filterItemWrapper,\n (collapsible || isMobile) && styles.filterItemWrapperDarker\n )}\n >\n <div\n className={clsx(\n styles.divider,\n (isMobile ? showMobileDivider : showDivider) &&\n styles.dividerVisible,\n isMobile && styles.dividerMobile\n )}\n />\n {(title || collapsible) && (\n <div\n className={clsx(\n styles.filterItemHeader,\n isMobile && styles.filterItemHeaderMobile\n )}\n >\n {title && (\n <h3\n id={titleId}\n data-testid=\"filter-item-title\"\n className={clsx(\n styles.filterItemTitle,\n isMobile && styles.filterItemTitleMobile\n )}\n >\n {title} {addon && renderAddon()}\n </h3>\n )}\n {collapsible && (\n <ClickableIcon\n className={styles.filterItemExpandButton}\n data-testid={\"expand-collapse-button\"}\n focusHighlight={false}\n focusOutline=\"browser\"\n onClick={handleExpandCollapse}\n aria-expanded={expanded}\n aria-disabled={!collapsible}\n aria-controls={contentId}\n >\n {title && <VisuallyHidden>{title}</VisuallyHidden>}\n <ChevronDownIcon\n aria-hidden\n className={clsx(\n styles.chevronIcon,\n expanded && styles.chevronIconExpanded\n )}\n />\n </ClickableIcon>\n )}\n </div>\n )}\n <animated.div\n className={styles.expandableItem}\n id={contentId}\n data-testid={\"expandable-container\"}\n data-expanded={expanded}\n style={itemAnimationStyles}\n inert={inertValue(!expanded)}\n >\n <div ref={itemResizeDetector.ref}>\n <div\n className={clsx(styles.filterItemBody, className)}\n {...otherProps}\n >\n <div\n ref={minimisableContentRef}\n data-testid=\"minimisable-container\"\n className={clsx(\n styles.minimisableContent,\n minimisable &&\n styles.minimisableContentMinimisable\n )}\n >\n <div ref={contentResizeDetector.ref}>\n <div data-id=\"content-container\">\n {typeof children === \"function\"\n ? children(mode, {\n minimised: contentMinimised,\n })\n : children}\n </div>\n </div>\n </div>\n {minimisable && (\n <Button\n className={styles.filterItemMinimiseButton}\n data-id=\"minimise-button\"\n sizeType=\"small\"\n styleType=\"link\"\n type=\"button\"\n onClick={handleMinimise}\n >\n <VisuallyHidden>{`view ${\n contentMinimised ? \"more\" : \"less\"\n } in ${title}`}</VisuallyHidden>\n <span aria-hidden>\n View {contentMinimised ? \"more\" : \"less\"}\n </span>\n </Button>\n )}\n </div>\n </div>\n </animated.div>\n </div>\n );\n};\n\nFilterItem.displayName = \"Filter.Item\";\n"],"names":["FilterItem","_a","collapsible","desktopCollapsible","initialExpanded","expanded","controlledExpanded","onExpandChange","minimisable","minimisedHeight","showDivider","showMobileDivider","title","addon","children","className","otherProps","__rest","mode","rootNode","useContext","FilterContext","isMobile","setExpanded","useState","getInitialExpandState","contentMinimised","setContentMinimised","itemResizeDetector","useResizeDetector","contentResizeDetector","itemAnimationStyles","useSpring","height","contentHeight","Math","min","_b","internalId","useId","contentId","titleId","minimisableContentRef","useRef","useApplyStyle","styles.tokens","minimisableContent","useEffect","isNil","_jsxs","clsx","styles.filterItemWrapper","styles.filterItemWrapperDarker","_jsx","styles.divider","styles.dividerVisible","styles.dividerMobile","styles.filterItemHeader","styles.filterItemHeaderMobile","id","styles.filterItemTitle","styles.filterItemTitleMobile","type","PopoverAddon","undefined","ClickableIcon","styles.filterItemExpandButton","focusHighlight","focusOutline","onClick","nextState","VisuallyHidden","ChevronDownIcon","styles.chevronIcon","styles.chevronIconExpanded","animated","div","styles.expandableItem","style","inert","inertValue","ref","Object","assign","styles.filterItemBody","styles.minimisableContent","styles.minimisableContentMinimisable","minimised","Button","styles.filterItemMinimiseButton","sizeType","styleType","displayName"],"mappings":"oqCAiBA,MAEaA,EAAcC,WACvBC,YAAaC,GAAqB,EAAIC,gBACtCA,GAAkB,EAClBC,SAAUC,EAAkBC,eAC5BA,EAAcC,YACdA,GAAc,EAAKC,gBACnBA,EAAeC,YACfA,GAAc,EAAIC,kBAClBA,GAAoB,EAAIC,MACxBA,EAAKC,MACLA,EAAKC,SACLA,EAAQC,UACRA,GAASd,EACNe,EAAUC,EAAAA,OAAAhB,EAbU,wKAkBvB,MAAMiB,KAAEA,EAAIC,SAAEA,GAAaC,EAAAA,WAAWC,EAAAA,eAChCC,EAAoB,WAATJ,GACVb,EAAUkB,GAAeC,EAAAA,SAASC,MAClCC,EAAkBC,GAAuBH,EAAAA,SAAShB,GACnDN,GAAeoB,GAAYnB,EAE3ByB,EAAqBC,EAAAA,oBACrBC,EAAwBD,EAAAA,oBACxBE,EAAsBC,EAAAA,UAAU,CAClCC,OAAQ5B,EAAWuB,EAAmBK,OAAS,IAE7CC,EAAgBR,EAChBjB,QAAAA,EACA0B,KAAKC,IACqC,IAAT,QAA5BC,EAAAP,EAAsBG,cAAM,IAAAI,EAAAA,EAAI,GAlCV,KAqC3BP,EAAsBG,OACtBK,EAAaC,EAAAA,QACbC,EAAY,GAAGF,YACfG,EAAU,GAAGH,UACbI,EAAwBC,EAAAA,OAA8B,MAE5DC,EAAAA,cAAcF,EAAuB,CACjC,CAACG,EAAAA,OAAcC,mBAAmBb,QAASC,EACrC,GAAGA,MACH,OAMVa,EAAAA,WAAU,KACNxB,EAAYE,IAAwB,GACrC,CAACtB,EAAoBG,IAExByC,EAAAA,WAAU,KACNpB,EAAoBnB,EAAY,GACjC,CAACA,IAuBJ,SAASiB,IACL,QAAIH,IAGA0B,EAAAA,QAAM1C,IACEH,GAAsBC,EAE3BE,EACX,CAoBA,OACI2C,EAAAA,KAAA,MAAA,CAAA,kBACqBR,EACjB1B,UAAWmC,UACPC,EAAAA,mBACCjD,GAAeoB,IAAa8B,2BAChCtC,SAAA,CAEDuC,aACItC,UAAWmC,EAAAA,QACPI,WACChC,EAAWX,EAAoBD,IAC5B6C,EAAAA,eACJjC,GAAYkC,EAAAA,kBAGlB5C,GAASV,IACP+C,EAAAA,KAAA,MAAA,CACIlC,UAAWmC,EAAAA,QACPO,EAAAA,iBACAnC,GAAYoC,EAAAA,wBACf5C,SAAA,CAEAF,GACGqC,EAAAA,KAAA,KAAA,CACIU,GAAIlB,gBACQ,oBACZ1B,UAAWmC,EAAAA,QACPU,EAAAA,gBACAtC,GAAYuC,EAAAA,uBACf/C,SAAA,CAEAF,MAAQC,IA5CpB,aADDA,aAAK,EAALA,EAAOiD,MAGHT,EAAAA,IAACU,eAAY,CACTlD,MAAOA,EACPM,SAAUG,EAAWH,OAAW6C,IAIjC,SAuCF9D,GACG+C,EAAAA,KAACgB,EAAAA,eACGlD,UAAWmD,EAAAA,qCACE,yBACbC,gBAAgB,EAChBC,aAAa,UACbC,QAxFK,KACzB,MAAMC,GAAajE,EAEf2C,EAAAA,QAAM1C,IACNiB,EAAY+C,GAGZ/D,GACAA,EAAe+D,EACnB,EA+EiD,gBACdjE,EAAQ,iBACPH,EAAW,gBACZsC,EAAS1B,SAAA,CAEvBF,GAASyC,EAAAA,IAACkB,EAAAA,yBAAgB3D,IAC3ByC,EAAAA,IAACmB,EAAAA,kCAEGzD,UAAWmC,EAAAA,QACPuB,EAAAA,YACApE,GAAYqE,EAAAA,6BAOpCrB,EAAAA,IAACsB,EAAAA,SAASC,IAAG,CACT7D,UAAW8D,EAAAA,eACXlB,GAAInB,EAAS,cACA,uBAAsB,gBACpBnC,EACfyE,MAAO/C,EACPgD,MAAOC,EAAAA,YAAY3E,YAEnBgD,EAAAA,IAAA,MAAA,CAAK4B,IAAKrD,EAAmBqD,IAAGnE,SAC5BmC,EAAAA,KAAA,MAAAiC,OAAAC,OAAA,CACIpE,UAAWmC,EAAAA,QAAKkC,EAAAA,eAAuBrE,IACnCC,EAAU,CAAAF,SAAA,CAEduC,EAAAA,IAAA,MAAA,CACI4B,IAAKvC,gBACO,wBACZ3B,UAAWmC,EAAAA,QACPmC,EAAAA,mBACA7E,GACI8E,EAAAA,+BACPxE,SAEDuC,EAAAA,IAAA,MAAA,CAAK4B,IAAKnD,EAAsBmD,aAC5B5B,EAAAA,IAAA,MAAA,CAAA,UAAa,6BACY,mBAAbvC,EACFA,EAASI,EAAM,CACXqE,UAAW7D,IAEfZ,QAIjBN,GACGyC,EAAAA,KAACuC,EAAAA,OAAM,CACHzE,UAAW0E,2BAA+B,UAClC,kBACRC,SAAS,QACTC,UAAU,OACV7B,KAAK,SACLO,QApIL,KACnB1C,GAAqBD,EAAiB,EAmISZ,SAAA,CAEvBuC,EAAAA,IAACkB,iBAAc,CAAAzD,SAAE,QACbY,EAAmB,OAAS,aACzBd,MACPqC,EAAAA,KAAA,OAAA,CAAA,eAAA,EAAAnC,SAAA,CAAA,QACUY,EAAmB,OAAS,uBAOxD,EAId1B,EAAW4F,YAAc"}
|
package/cjs/filter/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sources":["../../../src/filter/filter.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { useMaxWidthMediaQuery } from \"../theme\";\nimport { FilterItemCheckbox } from \"./addons/filter-item-checkbox\";\nimport { FilterItem } from \"./filter-item\";\nimport { FilterItemPage } from \"./filter-item-page\";\nimport { FilterModal } from \"./filter-modal\";\nimport { FilterSidebar } from \"./filter-sidebar\";\nimport type { FilterProps } from \"./types\";\n\n/**\n * A responsive filter panel that switches between a persistent sidebar on\n * desktop and a modal overlay on mobile.\n *\n * Use `Filter` to let users narrow a result set by one or more criteria.\n * On mobile (below lg breakpoint) the panel is hidden behind a toggle button and\n * rendered in a full-screen modal; otherwise it is displayed as a\n * fixed sidebar.\n *\n * Sub-components:\n * - `Filter.Sidebar` — standalone desktop sidebar, used by `Filter` internally.\n * - `Filter.Modal` — standalone mobile modal, used by `Filter` internally.\n * - `Filter.Item` — a collapsible section within the panel.\n * - `Filter.Page` — a drill-down sub-page inside the mobile modal.\n * - `Filter.Checkbox` — a filter item with selectable checkbox or toggle options.\n */\nexport const Filter = ({\n children,\n className,\n style,\n onDismiss,\n onDone,\n onModalOpen,\n toggleFilterButtonStyle,\n insets,\n id,\n \"data-testid\": testId,\n ...props\n}: FilterProps) => {\n const isMobile = useMaxWidthMediaQuery(\"lg\");\n\n useEffect(() => {\n if (!isMobile) {\n onDismiss?.();\n }\n }, [isMobile]);\n\n return (\n <div className={className} style={style} id={id} data-testid={testId}>\n {isMobile ? (\n <FilterModal\n onDismiss={onDismiss}\n onDone={onDone}\n onModalOpen={onModalOpen}\n toggleFilterButtonStyle={toggleFilterButtonStyle}\n insets={insets}\n {...props}\n >\n {typeof children === \"function\"\n ? children(\"mobile\")\n : children}\n </FilterModal>\n ) : (\n <FilterSidebar {...props}>\n {typeof children === \"function\"\n ? children(\"default\")\n : children}\n </FilterSidebar>\n )}\n </div>\n );\n};\n\n/** Standalone desktop sidebar variant of the filter panel. */\nFilter.Sidebar = FilterSidebar;\n/** Standalone mobile modal variant of the filter panel. */\nFilter.Modal = FilterModal;\n/** A collapsible section within a filter panel. */\nFilter.Item = FilterItem;\n/** A full-screen sub-page overlay for drill-down selection in the mobile modal. */\nFilter.Page = FilterItemPage;\n/** A filter item that renders selectable checkboxes (desktop) or toggle chips (mobile). */\nFilter.Checkbox = FilterItemCheckbox;\n"],"names":["Filter","_a","children","className","style","onDismiss","onDone","onModalOpen","toggleFilterButtonStyle","insets","id","testId","props","__rest","isMobile","useMaxWidthMediaQuery","useEffect","_jsx","FilterModal","Object","assign","FilterSidebar","Sidebar","Modal","Item","FilterItem","Page","FilterItemPage","Checkbox","FilterItemCheckbox"],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter.js","sources":["../../../src/filter/filter.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { useMaxWidthMediaQuery } from \"../theme\";\nimport { FilterItemCheckbox } from \"./addons/filter-item-checkbox\";\nimport { FilterItem } from \"./filter-item\";\nimport { FilterItemPage } from \"./filter-item-page\";\nimport { FilterModal } from \"./filter-modal\";\nimport { FilterSidebar } from \"./filter-sidebar\";\nimport type { FilterProps } from \"./types\";\n\n// @catalog\n/**\n * A responsive filter panel that switches between a persistent sidebar on\n * desktop and a modal overlay on mobile.\n *\n * Use `Filter` to let users narrow a result set by one or more criteria.\n * On mobile (below lg breakpoint) the panel is hidden behind a toggle button and\n * rendered in a full-screen modal; otherwise it is displayed as a\n * fixed sidebar.\n *\n * Sub-components:\n * - `Filter.Sidebar` — standalone desktop sidebar, used by `Filter` internally.\n * - `Filter.Modal` — standalone mobile modal, used by `Filter` internally.\n * - `Filter.Item` — a collapsible section within the panel.\n * - `Filter.Page` — a drill-down sub-page inside the mobile modal.\n * - `Filter.Checkbox` — a filter item with selectable checkbox or toggle options.\n */\nexport const Filter = ({\n children,\n className,\n style,\n onDismiss,\n onDone,\n onModalOpen,\n toggleFilterButtonStyle,\n insets,\n id,\n \"data-testid\": testId,\n ...props\n}: FilterProps) => {\n const isMobile = useMaxWidthMediaQuery(\"lg\");\n\n useEffect(() => {\n if (!isMobile) {\n onDismiss?.();\n }\n }, [isMobile]);\n\n return (\n <div className={className} style={style} id={id} data-testid={testId}>\n {isMobile ? (\n <FilterModal\n onDismiss={onDismiss}\n onDone={onDone}\n onModalOpen={onModalOpen}\n toggleFilterButtonStyle={toggleFilterButtonStyle}\n insets={insets}\n {...props}\n >\n {typeof children === \"function\"\n ? children(\"mobile\")\n : children}\n </FilterModal>\n ) : (\n <FilterSidebar {...props}>\n {typeof children === \"function\"\n ? children(\"default\")\n : children}\n </FilterSidebar>\n )}\n </div>\n );\n};\n\n/** Standalone desktop sidebar variant of the filter panel. */\nFilter.Sidebar = FilterSidebar;\n/** Standalone mobile modal variant of the filter panel. */\nFilter.Modal = FilterModal;\n/** A collapsible section within a filter panel. */\nFilter.Item = FilterItem;\n/** A full-screen sub-page overlay for drill-down selection in the mobile modal. */\nFilter.Page = FilterItemPage;\n/** A filter item that renders selectable checkboxes (desktop) or toggle chips (mobile). */\nFilter.Checkbox = FilterItemCheckbox;\n"],"names":["Filter","_a","children","className","style","onDismiss","onDone","onModalOpen","toggleFilterButtonStyle","insets","id","testId","props","__rest","isMobile","useMaxWidthMediaQuery","useEffect","_jsx","FilterModal","Object","assign","FilterSidebar","Sidebar","Modal","Item","FilterItem","Page","FilterItemPage","Checkbox","FilterItemCheckbox"],"mappings":"6vBA2BO,MAAMA,EAAUC,QAAAC,SACnBA,EAAQC,UACRA,EAASC,MACTA,EAAKC,UACLA,EAASC,OACTA,EAAMC,YACNA,EAAWC,wBACXA,EAAuBC,OACvBA,EAAMC,GACNA,EACA,cAAeC,GAAMV,EAClBW,EAAKC,EAAAA,OAAAZ,EAXW,CAAA,WAAA,YAAA,QAAA,YAAA,SAAA,cAAA,0BAAA,SAAA,KAAA,gBAanB,MAAMa,EAAWC,EAAAA,sBAAsB,MAQvC,OANAC,EAAAA,WAAU,KACDF,GACDT,SAAAA,GACJ,GACD,CAACS,IAGAG,EAAAA,WAAKd,UAAWA,EAAWC,MAAOA,EAAOM,GAAIA,EAAE,cAAeC,EAAMT,SAC/DY,EACGG,EAAAA,IAACC,cAAWC,OAAAC,OAAA,CACRf,UAAWA,EACXC,OAAQA,EACRC,YAAaA,EACbC,wBAAyBA,EACzBC,OAAQA,GACJG,EAAK,CAAAV,SAEY,mBAAbA,EACFA,EAAS,UACTA,KAGVe,EAAAA,IAACI,EAAAA,+BAAkBT,EAAK,CAAAV,SACC,mBAAbA,EACFA,EAAS,WACTA,MAGZ,EAKdF,EAAOsB,QAAUD,EAAAA,cAEjBrB,EAAOuB,MAAQL,EAAAA,YAEflB,EAAOwB,KAAOC,EAAAA,WAEdzB,EAAO0B,KAAOC,EAAAA,eAEd3B,EAAO4B,SAAWC,EAAAA"}
|
package/cjs/footer/footer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.js","sources":["../../../src/footer/footer.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type React from \"react\";\nimport { useContext } from \"react\";\n\nimport { Divider } from \"../divider\";\nimport { Layout } from \"../layout\";\nimport { ThemeContext } from \"../theme/theme-provider/context\";\nimport { Typography } from \"../typography\";\nimport * as styles from \"./footer.styles\";\nimport { DownloadApp } from \"./footer-download-app\";\nimport type { InternalDisclaimerLinks } from \"./footer-helper\";\nimport { FooterHelper } from \"./footer-helper\";\nimport { ResourceAddon } from \"./footer-resource-addon\";\nimport type { FooterLinkProps, FooterProps } from \"./types\";\n\n/**\n * Site-wide footer with navigation links, branding, and legal copy.\n *\n * Use `Footer` at the bottom of a page to surface navigation links grouped\n * into columns, a theme-appropriate logo, download-app or resource add-ons,\n * and disclaimer links with auto-generated copyright text.\n */\nexport const Footer = <T,>({\n children,\n links,\n lastUpdated,\n disclaimerLinks,\n showDownloadAddon,\n showResourceAddon,\n logoSrc,\n logoAlt = \"\",\n copyrightInfo,\n onFooterLinkClick,\n layout = \"default\",\n hideLogo,\n className,\n ...otherProps\n}: FooterProps<T>) => {\n // =============================================================================\n // CONST, STATE, REFS\n // =============================================================================\n const isStretch = layout === \"stretch\";\n const theme = useContext(ThemeContext);\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleLinkClick = <K extends T>(\n event: React.MouseEvent<HTMLAnchorElement>,\n item: FooterLinkProps<K>\n ) => {\n /**\n * Individual link onClick will override\n * the onFooterLinkClick callback\n */\n if (item.onClick) {\n event.preventDefault();\n item.onClick(event);\n } else if (onFooterLinkClick) {\n event.preventDefault();\n onFooterLinkClick(item);\n } else {\n // do nothing, let default behaviour happen\n }\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderDisclaimerLinks = () => {\n const links = FooterHelper.getDisclaimerLinks(\n theme?.theme,\n disclaimerLinks\n );\n\n return (Object.keys(links) as (keyof InternalDisclaimerLinks)[]).map(\n (key) => {\n return (\n <Typography.LinkXS\n key={key}\n underlineStyle=\"none\"\n className={styles.disclaimerTextLink}\n {...links[key]}\n />\n );\n }\n );\n };\n\n const renderFooterLinks = (links: FooterLinkProps<T>[]) => {\n return links.map((link, index) => {\n const { \"data-options\": _options, ...otherProps } = link;\n\n return (\n <li key={index}>\n <Typography.LinkMD\n underlineStyle=\"none\"\n className={styles.footerLink}\n {...otherProps}\n onClick={(event) => handleLinkClick(event, link)}\n />\n </li>\n );\n });\n };\n\n const renderTopSection = () => {\n let component: React.ReactNode = null;\n\n if (children) {\n return children;\n }\n\n if (links || showDownloadAddon) {\n const { src, alt, logoType, ...otherLogoAttributes } =\n FooterHelper.getFooterLogoAttribute(theme?.theme);\n component = (\n <>\n {(logoSrc || src) && !hideLogo && (\n <div\n data-testid=\"logo-section\"\n className={styles.logoSection}\n >\n <img\n src={logoSrc || src}\n data-testid=\"logo\"\n className={clsx(\n styles.logoImage,\n logoType && styles.logoSize[logoType]\n )}\n alt={logoAlt || alt}\n {...otherLogoAttributes}\n />\n </div>\n )}\n <div className={styles.linkSectionWrapper}>\n {links?.map((columnLinks, columnIndex) => (\n <ul\n key={`link-col-${columnIndex}`}\n data-testid={`link-col-${columnIndex}`}\n className={styles.linkSection}\n >\n {renderFooterLinks(columnLinks)}\n </ul>\n ))}\n </div>\n {showDownloadAddon && (\n <div className={styles.addonSection}>\n <DownloadApp />\n </div>\n )}\n {/* when showDownloadAddon and showResourceAddon are enabled, showDownloadAddon should take priority to being rendered */}\n {!showDownloadAddon && showResourceAddon && (\n <div className={styles.addonSection}>\n <ResourceAddon />\n </div>\n )}\n </>\n );\n }\n\n if (component) {\n return (\n <>\n <Layout.Content\n className={styles.topSection}\n stretch={isStretch}\n >\n {component}\n </Layout.Content>\n <Divider className={styles.fullWidthDivider} />\n </>\n );\n }\n\n return null;\n };\n return (\n <footer {...otherProps} className={clsx(styles.baseFooter, className)}>\n {renderTopSection()}\n <Layout.Content\n className={styles.bottomSection}\n stretch={isStretch}\n >\n <div key=\"disclaimer\" className={styles.bottomSectionContent}>\n {renderDisclaimerLinks()}\n </div>\n <div\n key=\"copyright\"\n className={clsx(\n styles.bottomSectionContent,\n styles.copyrightSection\n )}\n >\n <Typography.BodyXS\n data-testid={\"copyright-text\"}\n className={styles.copyrightText}\n >\n {copyrightInfo || (\n <>\n ©{\" \"}\n {FooterHelper.getCopyrightInfo(\n lastUpdated,\n theme?.theme\n )}\n </>\n )}\n </Typography.BodyXS>\n </div>\n </Layout.Content>\n </footer>\n );\n};\n"],"names":["_a","children","links","lastUpdated","disclaimerLinks","showDownloadAddon","showResourceAddon","logoSrc","logoAlt","copyrightInfo","onFooterLinkClick","layout","hideLogo","className","otherProps","__rest","isStretch","theme","useContext","ThemeContext","renderFooterLinks","map","link","index","_options","_jsx","Typography","LinkMD","Object","assign","underlineStyle","styles.footerLink","onClick","event","item","preventDefault","handleLinkClick","_jsxs","clsx","styles.baseFooter","component","FooterHelper","getFooterLogoAttribute","src","alt","logoType","otherLogoAttributes","_Fragment","styles.logoSection","styles.logoImage","styles.logoSize","styles.linkSectionWrapper","columnLinks","columnIndex","styles.linkSection","styles.addonSection","DownloadApp","ResourceAddon","Layout","Content","styles.topSection","stretch","Divider","styles.fullWidthDivider","renderTopSection","styles.bottomSection","styles.bottomSectionContent","getDisclaimerLinks","keys","key","LinkXS","styles.disclaimerTextLink","renderDisclaimerLinks","styles.copyrightSection","BodyXS","styles.copyrightText","getCopyrightInfo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"footer.js","sources":["../../../src/footer/footer.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type React from \"react\";\nimport { useContext } from \"react\";\n\nimport { Divider } from \"../divider\";\nimport { Layout } from \"../layout\";\nimport { ThemeContext } from \"../theme/theme-provider/context\";\nimport { Typography } from \"../typography\";\nimport * as styles from \"./footer.styles\";\nimport { DownloadApp } from \"./footer-download-app\";\nimport type { InternalDisclaimerLinks } from \"./footer-helper\";\nimport { FooterHelper } from \"./footer-helper\";\nimport { ResourceAddon } from \"./footer-resource-addon\";\nimport type { FooterLinkProps, FooterProps } from \"./types\";\n\n// @catalog\n/**\n * Site-wide footer with navigation links, branding, and legal copy.\n *\n * Use `Footer` at the bottom of a page to surface navigation links grouped\n * into columns, a theme-appropriate logo, download-app or resource add-ons,\n * and disclaimer links with auto-generated copyright text.\n */\nexport const Footer = <T,>({\n children,\n links,\n lastUpdated,\n disclaimerLinks,\n showDownloadAddon,\n showResourceAddon,\n logoSrc,\n logoAlt = \"\",\n copyrightInfo,\n onFooterLinkClick,\n layout = \"default\",\n hideLogo,\n className,\n ...otherProps\n}: FooterProps<T>) => {\n // =============================================================================\n // CONST, STATE, REFS\n // =============================================================================\n const isStretch = layout === \"stretch\";\n const theme = useContext(ThemeContext);\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleLinkClick = <K extends T>(\n event: React.MouseEvent<HTMLAnchorElement>,\n item: FooterLinkProps<K>\n ) => {\n /**\n * Individual link onClick will override\n * the onFooterLinkClick callback\n */\n if (item.onClick) {\n event.preventDefault();\n item.onClick(event);\n } else if (onFooterLinkClick) {\n event.preventDefault();\n onFooterLinkClick(item);\n } else {\n // do nothing, let default behaviour happen\n }\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderDisclaimerLinks = () => {\n const links = FooterHelper.getDisclaimerLinks(\n theme?.theme,\n disclaimerLinks\n );\n\n return (Object.keys(links) as (keyof InternalDisclaimerLinks)[]).map(\n (key) => {\n return (\n <Typography.LinkXS\n key={key}\n underlineStyle=\"none\"\n className={styles.disclaimerTextLink}\n {...links[key]}\n />\n );\n }\n );\n };\n\n const renderFooterLinks = (links: FooterLinkProps<T>[]) => {\n return links.map((link, index) => {\n const { \"data-options\": _options, ...otherProps } = link;\n\n return (\n <li key={index}>\n <Typography.LinkMD\n underlineStyle=\"none\"\n className={styles.footerLink}\n {...otherProps}\n onClick={(event) => handleLinkClick(event, link)}\n />\n </li>\n );\n });\n };\n\n const renderTopSection = () => {\n let component: React.ReactNode = null;\n\n if (children) {\n return children;\n }\n\n if (links || showDownloadAddon) {\n const { src, alt, logoType, ...otherLogoAttributes } =\n FooterHelper.getFooterLogoAttribute(theme?.theme);\n component = (\n <>\n {(logoSrc || src) && !hideLogo && (\n <div\n data-testid=\"logo-section\"\n className={styles.logoSection}\n >\n <img\n src={logoSrc || src}\n data-testid=\"logo\"\n className={clsx(\n styles.logoImage,\n logoType && styles.logoSize[logoType]\n )}\n alt={logoAlt || alt}\n {...otherLogoAttributes}\n />\n </div>\n )}\n <div className={styles.linkSectionWrapper}>\n {links?.map((columnLinks, columnIndex) => (\n <ul\n key={`link-col-${columnIndex}`}\n data-testid={`link-col-${columnIndex}`}\n className={styles.linkSection}\n >\n {renderFooterLinks(columnLinks)}\n </ul>\n ))}\n </div>\n {showDownloadAddon && (\n <div className={styles.addonSection}>\n <DownloadApp />\n </div>\n )}\n {/* when showDownloadAddon and showResourceAddon are enabled, showDownloadAddon should take priority to being rendered */}\n {!showDownloadAddon && showResourceAddon && (\n <div className={styles.addonSection}>\n <ResourceAddon />\n </div>\n )}\n </>\n );\n }\n\n if (component) {\n return (\n <>\n <Layout.Content\n className={styles.topSection}\n stretch={isStretch}\n >\n {component}\n </Layout.Content>\n <Divider className={styles.fullWidthDivider} />\n </>\n );\n }\n\n return null;\n };\n return (\n <footer {...otherProps} className={clsx(styles.baseFooter, className)}>\n {renderTopSection()}\n <Layout.Content\n className={styles.bottomSection}\n stretch={isStretch}\n >\n <div key=\"disclaimer\" className={styles.bottomSectionContent}>\n {renderDisclaimerLinks()}\n </div>\n <div\n key=\"copyright\"\n className={clsx(\n styles.bottomSectionContent,\n styles.copyrightSection\n )}\n >\n <Typography.BodyXS\n data-testid={\"copyright-text\"}\n className={styles.copyrightText}\n >\n {copyrightInfo || (\n <>\n ©{\" \"}\n {FooterHelper.getCopyrightInfo(\n lastUpdated,\n theme?.theme\n )}\n </>\n )}\n </Typography.BodyXS>\n </div>\n </Layout.Content>\n </footer>\n );\n};\n"],"names":["_a","children","links","lastUpdated","disclaimerLinks","showDownloadAddon","showResourceAddon","logoSrc","logoAlt","copyrightInfo","onFooterLinkClick","layout","hideLogo","className","otherProps","__rest","isStretch","theme","useContext","ThemeContext","renderFooterLinks","map","link","index","_options","_jsx","Typography","LinkMD","Object","assign","underlineStyle","styles.footerLink","onClick","event","item","preventDefault","handleLinkClick","_jsxs","clsx","styles.baseFooter","component","FooterHelper","getFooterLogoAttribute","src","alt","logoType","otherLogoAttributes","_Fragment","styles.logoSection","styles.logoImage","styles.logoSize","styles.linkSectionWrapper","columnLinks","columnIndex","styles.linkSection","styles.addonSection","DownloadApp","ResourceAddon","Layout","Content","styles.topSection","stretch","Divider","styles.fullWidthDivider","renderTopSection","styles.bottomSection","styles.bottomSectionContent","getDisclaimerLinks","keys","key","LinkXS","styles.disclaimerTextLink","renderDisclaimerLinks","styles.copyrightSection","BodyXS","styles.copyrightText","getCopyrightInfo"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=require("../../_virtual/_tslib.js"),e=require("react/jsx-runtime");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var t=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var i=require("../form-wrapper.js");exports.FormCustomField=a=>{var{id:s,"data-error-testid":d,"data-testid":u,children:l}=a,n=r.__rest(a,["id","data-error-testid","data-testid","children"]);const o=t.useId(),c=null!=s?s:`form-custom-field-${o}`;return e.jsx(i.FormWrapper,Object.assign({id:c,"data-testid":u,"data-error-testid":d},n,{children:l}))};
|
|
2
|
+
//# sourceMappingURL=form-custom-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-custom-field.js","sources":["../../../../src/form/form-custom-field/form-custom-field.tsx"],"sourcesContent":["import { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormCustomFieldProps } from \"./types\";\n\nexport const FormCustomField = ({\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n children,\n ...otherProps\n}: FormCustomFieldProps): JSX.Element => {\n const internalId = useId();\n\n const inputId = id ?? `form-custom-field-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n data-error-testid={errorTestId}\n {...otherProps}\n >\n {children}\n </FormWrapper>\n );\n};\n"],"names":["_a","id","errorTestId","testId","children","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","Object","assign"],"mappings":"yXAIgCA,IAAA,IAAAC,GAC5BA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,SACrBA,GAAQJ,EACLK,EAAUC,EAAAA,OAAAN,EALe,qDAO5B,MAAMO,EAAaC,EAAAA,QAEbC,EAAUR,QAAAA,EAAM,qBAAqBM,IAE3C,OACIG,EAAAA,IAACC,EAAAA,YAAWC,OAAAC,OAAA,CACRZ,GAAIQ,EAAO,cACEN,EAAM,oBACAD,GACfG,YAEHD,IACS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("../../date-input/date-input.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var l=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");exports.FormDateInput=t=>{var{label:i,errorMessage:o,id:d,"data-error-testid":u,"data-testid":x,layoutType:C,xxsCols:n,xsCols:p,smCols:j,mdCols:m,lgCols:q,xlCols:b,xxlCols:c}=t,g=e.__rest(t,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]);const y=l.useId(),v=null!=d?d:`form-date-input-${y}`;return r.jsx(a.FormWrapper,{id:v,label:i,errorMessage:o,"data-error-testid":u,layoutType:C,xxsCols:n,xsCols:p,smCols:j,mdCols:m,lgCols:q,xlCols:b,xxlCols:c,children:r.jsx(s.DateInput,Object.assign({id:`${v}-base`,"data-testid":x||d,"aria-labelledby":`${v}-label`,error:!!o},g))})};
|
|
2
|
+
//# sourceMappingURL=form-date-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-date-input.js","sources":["../../../../src/form/form-date-input/form-date-input.tsx"],"sourcesContent":["import { DateInput } from \"../../date-input\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormDateInputProps } from \"./types\";\n\nexport const FormDateInput = ({\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n}: FormDateInputProps): JSX.Element => {\n const internalId = useId();\n const inputId = id ?? `form-date-input-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <DateInput\n id={`${inputId}-base`}\n data-testid={testId || id}\n aria-labelledby={`${inputId}-label`}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["_a","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","children","DateInput","Object","assign","error"],"mappings":"maAK8BA,IAAA,IAAAC,MAC1BA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAAOb,EACJc,EAAUC,EAAAA,OAAAf,EAda,+IAgB1B,MAAMgB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,mBAAmBa,IAEzC,OACIG,MAACC,EAAAA,YAAW,CACRjB,GAAIe,EACJjB,MAAOA,EACPC,aAAcA,sBACKE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EAAOQ,SAEhBF,MAACG,EAAAA,UAASC,OAAAC,OAAA,CACNrB,GAAI,GAAGe,SAAc,cACRb,GAAUF,EAAE,kBACR,GAAGe,UACpBO,QAASvB,GACLY,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("../../date-range-input/date-range-input.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var l=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");exports.FormDateRangeInput=t=>{var{label:i,errorMessage:o,id:d,"data-error-testid":u,"data-testid":n,layoutType:x,xxsCols:C,xsCols:p,smCols:g,mdCols:j,lgCols:m,xlCols:b,xxlCols:q}=t,c=e.__rest(t,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]);const y=l.useId(),v=null!=d?d:`form-date-range-input-${y}`;return r.jsx(a.FormWrapper,{id:v,label:i,errorMessage:o,"data-error-testid":u,layoutType:x,xxsCols:C,xsCols:p,smCols:g,mdCols:j,lgCols:m,xlCols:b,xxlCols:q,children:r.jsx(s.DateRangeInput,Object.assign({id:`${d}-base`,"data-testid":n?`${n}-base`:void 0,"aria-labelledby":`${v}-label`,error:!!o},c))})};
|
|
2
|
+
//# sourceMappingURL=form-date-range-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-date-range-input.js","sources":["../../../../src/form/form-date-range-input/form-date-range-input.tsx"],"sourcesContent":["import { DateRangeInput } from \"../../date-range-input\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormDateRangeInputProps } from \"./types\";\n\nexport const FormDateRangeInput = ({\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n}: FormDateRangeInputProps): JSX.Element => {\n const internalId = useId();\n const inputId = id ?? `form-date-range-input-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <DateRangeInput\n id={`${id}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n aria-labelledby={`${inputId}-label`}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["_a","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","children","DateRangeInput","Object","assign","undefined","error"],"mappings":"obAKmCA,IAAA,IAAAC,MAC/BA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAAOb,EACJc,EAAUC,EAAAA,OAAAf,EAdkB,+IAgB/B,MAAMgB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,yBAAyBa,IAE/C,OACIG,MAACC,EAAAA,aACGjB,GAAIe,EACJjB,MAAOA,EACPC,aAAcA,EAAY,oBACPE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EAAOQ,SAEhBF,EAAAA,IAACG,EAAAA,eAAcC,OAAAC,OAAA,CACXrB,GAAI,GAAGA,uBACME,EAAS,GAAGA,cAAgBoB,EAAS,kBACjC,GAAGP,UACpBQ,QAASxB,GACLY,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("../../_virtual/_tslib.js"),e=require("react/jsx-runtime"),r=require("../../e-signature/e-signature.js"),l=require("../form-wrapper.js");exports.FormESignature=o=>{const{label:t,errorMessage:a,id:i="form-field","data-error-testid":x,"data-testid":d,layoutType:C,xxsCols:u,xsCols:g,smCols:m,mdCols:n,lgCols:p,xlCols:j,xxlCols:b}=o,y=s.__rest(o,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]);return e.jsx(l.FormWrapper,{id:i,label:t,errorMessage:a,"data-error-testid":x,layoutType:C,xxsCols:u,xsCols:g,smCols:m,mdCols:n,lgCols:p,xlCols:j,xxlCols:b,children:e.jsx(r.ESignature,Object.assign({id:`${i}-base`,"data-testid":d||i},y))})};
|
|
2
|
+
//# sourceMappingURL=form-e-signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-e-signature.js","sources":["../../../../src/form/form-e-signature/form-e-signature.tsx"],"sourcesContent":["import { ESignature } from \"../../e-signature\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormESignatureProps } from \"./types\";\n\nexport const FormESignature = (props: FormESignatureProps) => {\n const {\n label,\n errorMessage,\n id = \"form-field\",\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n } = props;\n\n return (\n <FormWrapper\n id={id}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <ESignature\n id={`${id}-base`}\n data-testid={testId || id}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["props","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","_jsx","FormWrapper","children","ESignature","Object","assign"],"mappings":"2LAI+BA,IAC3B,MAAMC,MACFA,EAAKC,aACLA,EAAYC,GACZA,EAAK,aACL,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAEAb,EADGc,EAAUC,EAAAA,OACbf,EAfE,CAAA,QAAA,eAAA,KAAA,oBAAA,cAAA,aAAA,UAAA,SAAA,SAAA,SAAA,SAAA,SAAA,YAiBN,OACIgB,EAAAA,IAACC,cAAW,CACRd,GAAIA,EACJF,MAAOA,EACPC,aAAcA,EAAY,oBACPE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EAAOK,SAEhBF,EAAAA,IAACG,aAAUC,OAAAC,OAAA,CACPlB,GAAI,GAAGA,SAAS,cACHE,GAAUF,GACnBW,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=require("../../_virtual/_tslib.js"),e=require("react/jsx-runtime"),s=require("../../histogram-slider/histogram-slider.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var l=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");exports.FormHistogramSlider=t=>{var{label:i,errorMessage:o,id:d,"data-error-testid":u,"data-testid":x,layoutType:C,xxsCols:m,xsCols:g,smCols:n,mdCols:j,lgCols:p,xlCols:q,xxlCols:c}=t,y=r.__rest(t,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]);const b=l.useId(),v=null!=d?d:`form-histogram-slider-${b}`;return e.jsx(a.FormWrapper,{id:v,label:i,errorMessage:o,"data-testid":x,"data-error-testid":u,layoutType:C,xxsCols:m,xsCols:g,smCols:n,mdCols:j,lgCols:p,xlCols:q,xxlCols:c,children:e.jsx(s.HistogramSlider,Object.assign({id:`${v}-base`,"data-testid":x?`${x}-base`:void 0},y))})};
|
|
2
|
+
//# sourceMappingURL=form-histogram-slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-histogram-slider.js","sources":["../../../../src/form/form-histogram-slider/form-histogram-slider.tsx"],"sourcesContent":["import { HistogramSlider } from \"../../histogram-slider\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormHistogramSliderProps } from \"./types\";\n\nexport const FormHistogramSlider = ({\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n}: FormHistogramSliderProps): JSX.Element => {\n const internalId = useId();\n const inputId = id ?? `form-histogram-slider-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n label={label}\n errorMessage={errorMessage}\n data-testid={testId}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <HistogramSlider\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["_a","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","children","HistogramSlider","Object","assign","undefined"],"mappings":"qbAKoCA,IAAA,IAAAC,MAChCA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAAOb,EACJc,EAAUC,EAAAA,OAAAf,EAdmB,+IAgBhC,MAAMgB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,yBAAyBa,IAE/C,OACIG,MAACC,EAAAA,YAAW,CACRjB,GAAIe,EACJjB,MAAOA,EACPC,aAAcA,gBACDG,EAAM,oBACAD,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EAAOQ,SAEhBF,MAACG,EAAAA,gBAAeC,OAAAC,OAAA,CACZrB,GAAI,GAAGe,uBACMb,EAAS,GAAGA,cAAgBoB,GACrCX,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("react"),l=require("../../input/input.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js");var t=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const i=o(s).default.forwardRef(((s,o)=>{const{label:i,errorMessage:d,id:u,"data-error-testid":n,"data-testid":x,layoutType:C,xxsCols:p,xsCols:j,smCols:m,mdCols:c,lgCols:f,xlCols:q,xxlCols:g}=s,y=e.__rest(s,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]),b=t.useId(),v=null!=u?u:`form-field-${b}`;return r.jsx(a.FormWrapper,{id:v,"data-testid":x,label:i,errorMessage:d,"data-error-testid":n,layoutType:C,xxsCols:p,xsCols:j,smCols:m,mdCols:c,lgCols:f,xlCols:q,xxlCols:g,children:r.jsx(l.Input,Object.assign({id:`${v}-base`,"data-testid":x?`${x}-base`:void 0,ref:o,error:!!d},y))})}));exports.FormInput=i;
|
|
2
|
+
//# sourceMappingURL=form-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-input.js","sources":["../../../../src/form/form-input/form-input.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Input } from \"../../input\";\nimport type { InputRef } from \"../../input/types\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormInputProps } from \"./types\";\n\nconst Component = (props: FormInputProps, ref: InputRef): JSX.Element => {\n const {\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n } = props;\n\n const internalId = useId();\n const inputId = id ?? `form-field-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <Input\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n ref={ref}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n\nexport const FormInput = React.forwardRef(Component);\n"],"names":["FormInput","React","forwardRef","props","ref","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","Input","undefined","error"],"mappings":"6cAQA,MAgDaA,OAAYC,QAAMC,YAhDb,CAACC,EAAuBC,KACtC,MAAMC,MACFA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAEAd,EADGe,EAAUC,EAAAA,OACbhB,EAfE,CAAA,QAAA,eAAA,KAAA,oBAAA,cAAA,aAAA,UAAA,SAAA,SAAA,SAAA,SAAA,SAAA,YAiBAiB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,cAAca,IAEpC,OACIG,MAACC,EAAAA,aACGjB,GAAIe,EAAO,cACEb,EACbJ,MAAOA,EACPC,aAAcA,sBACKE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,WAETM,EAAAA,IAACE,EAAAA,qBACGlB,GAAI,GAAGe,uBACMb,EAAS,GAAGA,cAAgBiB,EACzCtB,IAAKA,EACLuB,QAASrB,GACLY,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("react"),l=require("../../input-group/input-group.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js");var t=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const i=o(s).default.forwardRef(((s,o)=>{const{label:i,errorMessage:u,id:d,"data-error-testid":n,"data-testid":x,layoutType:C,xxsCols:p,xsCols:j,smCols:m,mdCols:c,lgCols:b,xlCols:f,xxlCols:g}=s,q=e.__rest(s,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]),y=t.useId(),v=null!=d?d:`form-field-${y}`;return r.jsx(a.FormWrapper,{id:v,"data-testid":x,label:i,errorMessage:u,"data-error-testid":n,layoutType:C,xxsCols:p,xsCols:j,smCols:m,mdCols:c,lgCols:b,xlCols:f,xxlCols:g,children:r.jsx(l.InputGroup,Object.assign({ref:o,id:`${v}-base`,"data-testid":x?`${x}-base`:void 0,"aria-labelledby":`${v}-label`,error:!!u},q))})}));exports.FormInputGroup=i;
|
|
2
|
+
//# sourceMappingURL=form-input-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-input-group.js","sources":["../../../../src/form/form-input-group/form-input-group.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { InputGroup } from \"../../input-group\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormInputGroupProps } from \"./types\";\n\nconst Component = <T, V>(\n props: FormInputGroupProps<T, V>,\n ref: React.Ref<HTMLInputElement>\n): JSX.Element => {\n const {\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n } = props;\n\n const internalId = useId();\n const inputId = id ?? `form-field-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <InputGroup\n ref={ref}\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n aria-labelledby={`${inputId}-label`}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n\nexport const FormInputGroup = React.forwardRef(Component);\n"],"names":["FormInputGroup","React","forwardRef","props","ref","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","InputGroup","undefined","error"],"mappings":"ydAOA,MAoDaA,OAAiBC,QAAMC,YApDlB,CACdC,EACAC,KAEA,MAAMC,MACFA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAEAd,EADGe,EAAUC,EAAAA,OACbhB,EAfE,CAAA,QAAA,eAAA,KAAA,oBAAA,cAAA,aAAA,UAAA,SAAA,SAAA,SAAA,SAAA,SAAA,YAiBAiB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,cAAca,IAEpC,OACIG,EAAAA,IAACC,EAAAA,aACGjB,GAAIe,EAAO,cACEb,EACbJ,MAAOA,EACPC,aAAcA,EAAY,oBACPE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,WAETM,EAAAA,IAACE,EAAAA,0BACGrB,IAAKA,EACLG,GAAI,GAAGe,SAAc,cACRb,EAAS,GAAGA,cAAgBiB,EAAS,kBACjC,GAAGJ,UACpBK,QAASrB,GACLY,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),o=require("@lifesg/react-icons/i-circle-fill"),r=require("../../popover/popover-inline/popover-inline.js"),i=require("./form-label-addon.styles.js");exports.PopoverAddon=({addon:n,rootNode:t})=>{const{content:d,type:a,icon:l,id:s,zIndex:c,"data-testid":p}=n;return e.jsx("div",{className:i.addonWrapper,children:e.jsx(r.PopoverInline,{trigger:"click",id:s,"data-testid":p,popoverContent:d,rootNode:t,zIndex:c,icon:null!=l?l:e.jsx(o.ICircleFillIcon,{"data-testid":`${a}-icon`}),ariaLabel:"More info"})})};
|
|
2
|
+
//# sourceMappingURL=form-label-addon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-label-addon.js","sources":["../../../../src/form/form-label/form-label-addon.tsx"],"sourcesContent":["import { ICircleFillIcon } from \"@lifesg/react-icons/i-circle-fill\";\nimport type { RefObject } from \"react\";\n\nimport { PopoverInline } from \"../../popover/popover-inline\";\nimport * as styles from \"./form-label-addon.styles\";\nimport type { FormLabelAddonProps } from \"./types\";\n\n// =============================================================================\n// POPOVER ADDON COMPONENT\n// Note: We need to re-construct as using with the HOC causes some rendering\n// issues\n// =============================================================================\ninterface PopoverAddonProps {\n addon: FormLabelAddonProps;\n rootNode?: RefObject<HTMLElement>;\n}\n\nexport const PopoverAddon = ({\n addon,\n rootNode,\n}: PopoverAddonProps): JSX.Element => {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const { content, type, icon, id, zIndex, \"data-testid\": testId } = addon;\n\n // =========================================================================\n // RENDER FUNCTION\n // =========================================================================\n return (\n <div className={styles.addonWrapper}>\n <PopoverInline\n trigger=\"click\"\n id={id}\n data-testid={testId}\n popoverContent={content}\n rootNode={rootNode}\n zIndex={zIndex}\n icon={icon ?? <ICircleFillIcon data-testid={`${type}-icon`} />}\n ariaLabel=\"More info\"\n />\n </div>\n );\n};\n"],"names":["addon","rootNode","content","type","icon","id","zIndex","testId","_jsx","className","styles.addonWrapper","children","PopoverInline","trigger","popoverContent","ICircleFillIcon","ariaLabel"],"mappings":"0NAiB4B,EACxBA,QACAC,eAKA,MAAMC,QAAEA,EAAOC,KAAEA,EAAIC,KAAEA,EAAIC,GAAEA,EAAEC,OAAEA,EAAQ,cAAeC,GAAWP,EAKnE,OACIQ,EAAAA,IAAA,MAAA,CAAKC,UAAWC,EAAAA,aAAmBC,SAC/BH,EAAAA,IAACI,gBAAa,CACVC,QAAQ,QACRR,GAAIA,EAAE,cACOE,EACbO,eAAgBZ,EAChBD,SAAUA,EACVK,OAAQA,EACRF,KAAMA,QAAAA,EAAQI,EAAAA,IAACO,EAAAA,gBAAe,CAAA,cAAc,GAAGZ,WAC/Ca,UAAU,eAEZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-label-addon.styles.js","sources":["../../../../src/form/form-label/form-label-addon.styles.ts"],"sourcesContent":["import { css } from \"@linaria/core\";\n\nimport { Spacing } from \"../../theme\";\n\nexport const addonWrapper = css`\n padding-left: ${Spacing[\"spacing-4\"]};\n display: inline;\n`;\n"],"names":[],"mappings":"iHAIyB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer fds{.a1vtv2lw{padding-left:var(--fds-spacing-4);display:inline;}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),r=require("@lifesg/react-icons"),a=require("clsx"),t=require("../../markup/markup.js"),l=require("./form-label.styles.js"),i=require("./form-label-addon.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=d(a);exports.FormErrorMessage=a=>{var{className:t}=a,i=e.__rest(a,["className"]);return s.jsxs("div",{className:n.default(l.errorMessageContainer,t),children:[s.jsx(r.ExclamationCircleFillIcon,{className:l.errorIcon,"aria-hidden":!0}),s.jsx("p",Object.assign({className:l.errorMessage},i))]})},exports.FormLabel=r=>{var{id:a,children:d,addon:o,subtitle:c,"data-testid":u,className:m,style:b}=r,j=e.__rest(r,["id","children","addon","subtitle","data-testid","className","style"]);return s.jsxs("div",{className:n.default(l.labelContainer,m),style:b,"data-testid":u,children:[s.jsx("label",Object.assign({id:a,className:l.label},j,{children:s.jsxs(t.Markup,{inline:!0,children:[d,(null==o?void 0:o.type)&&("popover"===(null==o?void 0:o.type)?s.jsx(i.PopoverAddon,{addon:o}):null)]})})),"string"==typeof c?s.jsx("span",{id:a?`${a}-subtitle`:void 0,className:l.subtitle,"data-testid":u?`${u}-subtitle`:"subtitle",children:c}):c]})};
|
|
2
|
+
//# sourceMappingURL=form-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-label.js","sources":["../../../../src/form/form-label/form-label.tsx"],"sourcesContent":["import { ExclamationCircleFillIcon } from \"@lifesg/react-icons\";\nimport clsx from \"clsx\";\nimport type React from \"react\";\n\nimport { Markup } from \"../../markup\";\nimport * as styles from \"./form-label.styles\";\nimport { PopoverAddon } from \"./form-label-addon\";\nimport type { FormLabelProps } from \"./types\";\n\nexport const FormLabel = ({\n id,\n children,\n addon,\n subtitle,\n \"data-testid\": testId,\n className,\n style,\n ...otherProps\n}: FormLabelProps): JSX.Element => {\n // -------------------------------------------------------------------------\n // RENDER FUNCTIONS\n // -------------------------------------------------------------------------\n const renderAddon = () => {\n switch (addon?.type) {\n case \"popover\":\n return <PopoverAddon addon={addon} />;\n default:\n return null;\n }\n };\n\n return (\n <div\n className={clsx(styles.labelContainer, className)}\n style={style}\n data-testid={testId}\n >\n <label id={id} className={styles.label} {...otherProps}>\n <Markup inline>\n {children}\n {addon?.type && renderAddon()}\n </Markup>\n </label>\n {typeof subtitle === \"string\" ? (\n <span\n id={id ? `${id}-subtitle` : undefined}\n className={styles.subtitle}\n data-testid={testId ? `${testId}-subtitle` : \"subtitle\"}\n >\n {subtitle}\n </span>\n ) : (\n subtitle\n )}\n </div>\n );\n};\n\nexport const FormErrorMessage = ({\n className,\n ...otherProps\n}: React.HTMLAttributes<HTMLElement>): JSX.Element => {\n return (\n <div className={clsx(styles.errorMessageContainer, className)}>\n <ExclamationCircleFillIcon\n className={styles.errorIcon}\n aria-hidden\n />\n <p className={styles.errorMessage} {...otherProps} />\n </div>\n );\n};\n"],"names":["_a","className","otherProps","__rest","_jsxs","clsx","styles.errorMessageContainer","children","_jsx","ExclamationCircleFillIcon","styles.errorIcon","styles.errorMessage","id","addon","subtitle","testId","style","styles.labelContainer","Object","assign","styles.label","Markup","inline","type","PopoverAddon","undefined","styles.subtitle"],"mappings":"gWA0DiCA,IAAA,IAAAC,UAC7BA,GAASD,EACNE,EAAUC,EAAAA,OAAAH,EAFgB,eAI7B,OACII,EAAAA,KAAA,MAAA,CAAKH,UAAWI,EAAAA,QAAKC,EAAAA,sBAA8BL,GAAUM,SAAA,CACzDC,EAAAA,IAACC,EAAAA,0BAAyB,CACtBR,UAAWS,EAAAA,UAAgB,eAAA,IAG/BF,yBAAGP,UAAWU,EAAAA,cAAyBT,MACrC,oBA5DYF,QAAAY,GACtBA,EAAEL,SACFA,EAAQM,MACRA,EAAKC,SACLA,EACA,cAAeC,EAAMd,UACrBA,EAASe,MACTA,GAAKhB,EACFE,EAAUC,SAAAH,EARS,wEAsBtB,OACII,EAAAA,YACIH,UAAWI,EAAAA,QAAKY,EAAAA,eAAuBhB,GACvCe,MAAOA,EAAK,cACCD,YAEbP,EAAAA,IAAA,QAAAU,OAAAC,OAAA,CAAOP,GAAIA,EAAIX,UAAWmB,EAAAA,OAAkBlB,YACxCE,EAAAA,KAACiB,EAAAA,OAAM,CAACC,QAAM,EAAAf,SAAA,CACTA,GACAM,aAAK,EAALA,EAAOU,QAhBX,aADDV,aAAK,EAALA,EAAOU,MAEAf,EAAAA,IAACgB,EAAAA,aAAY,CAACX,MAAOA,IAErB,YAgBU,iBAAbC,EACJN,EAAAA,IAAA,OAAA,CACII,GAAIA,EAAK,GAAGA,kBAAgBa,EAC5BxB,UAAWyB,EAAAA,SAAe,cACbX,EAAS,GAAGA,aAAoB,oBAE5CD,IACE,IAIT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";require("./form-label.styles_180zf7j.css");exports.errorIcon="e1e3hk6g",exports.errorMessage="e12a59lq",exports.errorMessageContainer="e1g4xpi9",exports.label="l1twplde",exports.labelContainer="l1tkqesw",exports.subtitle="sgjbjlm";
|
|
2
|
+
//# sourceMappingURL=form-label.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-label.styles.js","sources":["../../../../src/form/form-label/form-label.styles.ts"],"sourcesContent":["import { css } from \"@linaria/core\";\n\nimport { Colour, Font, Spacing } from \"../../theme\";\n\n// =============================================================================\n// STYLING\n// =============================================================================\nexport const labelContainer = css`\n margin-bottom: ${Spacing[\"spacing-8\"]};\n display: flex;\n flex-direction: column;\n gap: ${Spacing[\"spacing-4\"]};\n`;\n\nexport const label = css`\n color: ${Colour[\"text-subtle\"]};\n display: inline-block;\n ${Font[\"form-label\"]}\n font-weight: ${Font.Spec[\"weight-semibold\"]};\n`;\n\nexport const errorIcon = css`\n height: 1lh;\n width: 1em;\n flex-shrink: 0;\n color: ${Colour[\"icon-error-strong\"]};\n`;\n\nexport const errorMessageContainer = css`\n ${Font[\"body-sm-semibold\"]}\n display: flex;\n gap: ${Spacing[\"spacing-4\"]};\n margin-top: ${Spacing[\"spacing-8\"]};\n`;\n\nexport const errorMessage = css`\n color: ${Colour[\"text-error\"]};\n ${Font[\"body-sm-semibold\"]}\n margin-bottom: 0;\n outline: none;\n`;\n\nexport const subtitle = css`\n ${Font[\"form-description\"]}\n color: ${Colour[\"text-subtler\"]};\n display: block;\n`;\n"],"names":[],"mappings":"yGAqBsB,gCAcG,yCAPS,yBAdhB,kCAPS,4BAmCN"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
@layer fds{.l1tkqesw{margin-bottom:var(--fds-spacing-8);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:var(--fds-spacing-4);}
|
|
2
|
+
.l1twplde{color:var(--fds-colour-text-subtle);display:inline-block;font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-form-label-size);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-form-label-lh);letter-spacing:var(--fds-font-form-label-ls);font-weight:var(--fds-font-weight-semibold);}
|
|
3
|
+
.e1e3hk6g{height:1lh;width:1em;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--fds-colour-icon-error-strong);}
|
|
4
|
+
.e1g4xpi9{font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-sm);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-sm);letter-spacing:var(--fds-font-body-ls-sm);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:var(--fds-spacing-4);margin-top:var(--fds-spacing-8);}
|
|
5
|
+
.e12a59lq{color:var(--fds-colour-text-error);font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-sm);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-sm);letter-spacing:var(--fds-font-body-ls-sm);margin-bottom:0;outline:none;}
|
|
6
|
+
.sgjbjlm{font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-form-description-size);font-weight:var(--fds-font-weight-regular);line-height:var(--fds-font-form-description-lh);letter-spacing:var(--fds-font-form-description-ls);color:var(--fds-colour-text-subtler);display:block;}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("react"),l=require("../../masked-input/masked-input.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js");var t=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const i=o(s).default.forwardRef(((s,o)=>{const{label:i,errorMessage:d,id:u,"data-error-testid":n,"data-testid":x,layoutType:C,xxsCols:p,xsCols:m,smCols:j,mdCols:c,lgCols:f,xlCols:q,xxlCols:g}=s,y=e.__rest(s,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]),b=t.useId(),v=null!=u?u:`form-field-masked-input-${b}`;return r.jsx(a.FormWrapper,{id:v,"data-testid":x,label:i,errorMessage:d,"data-error-testid":n,layoutType:C,xxsCols:p,xsCols:m,smCols:j,mdCols:c,lgCols:f,xlCols:q,xxlCols:g,children:r.jsx(l.MaskedInput,Object.assign({ref:o,id:`${v}-base`,"data-testid":x?`${x}-base`:void 0,error:!!d},y))})}));exports.FormMaskedInput=i;
|
|
2
|
+
//# sourceMappingURL=form-masked-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-masked-input.js","sources":["../../../../src/form/form-masked-input/form-masked-input.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { MaskedInput } from \"../../masked-input/masked-input\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormMaskedInputProps } from \"./types\";\n\nconst Component = (\n props: FormMaskedInputProps,\n ref: React.Ref<HTMLInputElement>\n): JSX.Element => {\n const {\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n } = props;\n\n const internalId = useId();\n const inputId = id ?? `form-field-masked-input-${internalId}`;\n\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <MaskedInput\n ref={ref}\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n\nexport const FormMaskedInput = React.forwardRef(Component);\n"],"names":["FormMaskedInput","React","forwardRef","props","ref","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","MaskedInput","undefined","error"],"mappings":"2dAOA,MAmDaA,OAAkBC,QAAMC,YAnDnB,CACdC,EACAC,KAEA,MAAMC,MACFA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAEAd,EADGe,EAAUC,EAAAA,OACbhB,EAfE,CAAA,QAAA,eAAA,KAAA,oBAAA,cAAA,aAAA,UAAA,SAAA,SAAA,SAAA,SAAA,SAAA,YAiBAiB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,2BAA2Ba,IAEjD,OACIG,MAACC,EAAAA,aACGjB,GAAIe,EAAO,cACEb,EACbJ,MAAOA,EACPC,aAAcA,sBACKE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,WAETM,EAAAA,IAACE,EAAAA,2BACGrB,IAAKA,EACLG,GAAI,GAAGe,SAAc,cACRb,EAAS,GAAGA,cAAgBiB,EACzCC,QAASrB,GACLY,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("../../input-multi-select/input-multi-select.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var l=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var a=require("../form-wrapper.js");exports.FormMultiSelect=t=>{var{label:i,errorMessage:o,id:u,"data-error-testid":d,"data-testid":n,enableSearch:x=!1,layoutType:C,xxsCols:c,xsCols:m,smCols:p,mdCols:j,lgCols:b,xlCols:q,xxlCols:v,variant:g}=t,y=e.__rest(t,["label","errorMessage","id","data-error-testid","data-testid","enableSearch","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","variant"]);const h=l.useId(),M=null!=u?u:`form-field-${h}`;return r.jsx(a.FormWrapper,{id:M,"data-testid":n,label:i,errorMessage:o,"data-error-testid":d,layoutType:C,xxsCols:c,xsCols:m,smCols:p,mdCols:j,lgCols:b,xlCols:q,xxlCols:v,children:r.jsx(s.InputMultiSelect,Object.assign({id:`${M}-base`,"data-testid":n?`${n}-base`:void 0,error:!!o,enableSearch:x,variant:g},y))})};
|
|
2
|
+
//# sourceMappingURL=form-multi-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-multi-select.js","sources":["../../../../src/form/form-multi-select/form-multi-select.tsx"],"sourcesContent":["import { InputMultiSelect } from \"../../input-multi-select/input-multi-select\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormMultiSelectProps } from \"./types\";\n\nexport const FormMultiSelect = <T, V>({\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n enableSearch = false,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n variant,\n ...otherProps\n}: FormMultiSelectProps<T, V>): JSX.Element => {\n const internalId = useId();\n const inputId = id ?? `form-field-${internalId}`;\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <InputMultiSelect\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n error={!!errorMessage}\n enableSearch={enableSearch}\n variant={variant}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["_a","label","errorMessage","id","errorTestId","testId","enableSearch","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","variant","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","InputMultiSelect","undefined","error"],"mappings":"qbAKsCA,IAAA,IAAAC,MAClCA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,aACrBA,GAAe,EAAKC,WACpBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,EAAOC,QACPA,GAAOf,EACJgB,EAAUC,EAAAA,OAAAjB,EAhBqB,wKAkBlC,MAAMkB,EAAaC,EAAAA,QACbC,EAAUjB,QAAAA,EAAM,cAAce,IACpC,OACIG,EAAAA,IAACC,EAAAA,aACGnB,GAAIiB,EAAO,cACEf,EACbJ,MAAOA,EACPC,aAAcA,EAAY,oBACPE,EACnBG,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,WAETO,EAAAA,IAACE,kCACGpB,GAAI,GAAGiB,uBACMf,EAAS,GAAGA,cAAgBmB,EACzCC,QAASvB,EACTI,aAAcA,EACdS,QAASA,GACLC,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),r=require("../../input-nested-multi-select/input-nested-multi-select.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var l=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var t=require("../form-wrapper.js");exports.FormNestedMultiSelect=a=>{var{label:i,errorMessage:o,id:d,"data-error-testid":u,"data-testid":x,layoutType:C,xxsCols:n,xsCols:m,smCols:p,mdCols:c,lgCols:j,xlCols:q,xxlCols:g}=a,y=e.__rest(a,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]);const b=l.useId(),v=null!=d?d:`form-field-${b}`;return s.jsx(t.FormWrapper,{id:v,"data-testid":x,label:i,errorMessage:o,"data-error-testid":u,layoutType:C,xxsCols:n,xsCols:m,smCols:p,mdCols:c,lgCols:j,xlCols:q,xxlCols:g,children:s.jsx(r.InputNestedMultiSelect,Object.assign({id:`${v}-base`,"data-testid":x?`${x}-base`:void 0,error:!!o},y))})};
|
|
2
|
+
//# sourceMappingURL=form-nested-multi-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-nested-multi-select.js","sources":["../../../../src/form/form-nested-multi-select/form-nested-multi-select.tsx"],"sourcesContent":["import { InputNestedMultiSelect } from \"../../input-nested-multi-select\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormNestedMultiSelectProps } from \"./types\";\n\nexport const FormNestedMultiSelect = <V1, V2, V3>({\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n}: FormNestedMultiSelectProps<V1, V2, V3>): JSX.Element => {\n const internalId = useId();\n const inputId = id ?? `form-field-${internalId}`;\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <InputNestedMultiSelect\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["_a","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","children","InputNestedMultiSelect","undefined","error"],"mappings":"ycAKkDA,IAAA,IAAAC,MAC9CA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAAOb,EACJc,EAAUC,EAAAA,OAAAf,EAdiC,+IAgB9C,MAAMgB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,cAAca,IACpC,OACIG,MAACC,EAAAA,YAAW,CACRjB,GAAIe,EAAO,cACEb,EACbJ,MAAOA,EACPC,aAAcA,EAAY,oBACPE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EAAOQ,SAEhBF,EAAAA,IAACG,EAAAA,sCACGnB,GAAI,GAAGe,uBACMb,EAAS,GAAGA,cAAgBkB,EACzCC,QAAStB,GACLY,KAEE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),r=require("../../input-nested-select/input-nested-select.js");require("../../util/calendar-helper.js"),require("../../external/dayjs/dayjs.min.js"),require("react");var l=require("../../util/simple-id-generator.js");require("../../util/string-helper.js"),require("@react-aria/live-announcer");var t=require("../form-wrapper.js");exports.FormNestedSelect=a=>{var{label:i,errorMessage:o,id:d,"data-error-testid":u,"data-testid":x,layoutType:C,xxsCols:n,xsCols:p,smCols:c,mdCols:j,lgCols:m,xlCols:q,xxlCols:g}=a,y=e.__rest(a,["label","errorMessage","id","data-error-testid","data-testid","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols"]);const b=l.useId(),v=null!=d?d:`form-field-${b}`;return s.jsx(t.FormWrapper,{id:v,"data-testid":x,label:i,errorMessage:o,"data-error-testid":u,layoutType:C,xxsCols:n,xsCols:p,smCols:c,mdCols:j,lgCols:m,xlCols:q,xxlCols:g,children:s.jsx(r.InputNestedSelect,Object.assign({id:`${v}-base`,"data-testid":x?`${x}-base`:void 0,error:!!o},y))})};
|
|
2
|
+
//# sourceMappingURL=form-nested-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-nested-select.js","sources":["../../../../src/form/form-nested-select/form-nested-select.tsx"],"sourcesContent":["import { InputNestedSelect } from \"../../input-nested-select\";\nimport { useId } from \"../../util\";\nimport { FormWrapper } from \"../form-wrapper\";\nimport type { FormNestedSelectProps } from \"./types\";\n\nexport const FormNestedSelect = <V1, V2, V3>({\n label,\n errorMessage,\n id,\n \"data-error-testid\": errorTestId,\n \"data-testid\": testId,\n layoutType,\n xxsCols,\n xsCols,\n smCols,\n mdCols,\n lgCols,\n xlCols,\n xxlCols,\n ...otherProps\n}: FormNestedSelectProps<V1, V2, V3>): JSX.Element => {\n const internalId = useId();\n const inputId = id ?? `form-field-${internalId}`;\n return (\n <FormWrapper\n id={inputId}\n data-testid={testId}\n label={label}\n errorMessage={errorMessage}\n data-error-testid={errorTestId}\n layoutType={layoutType}\n xxsCols={xxsCols}\n xsCols={xsCols}\n smCols={smCols}\n mdCols={mdCols}\n lgCols={lgCols}\n xlCols={xlCols}\n xxlCols={xxlCols}\n >\n <InputNestedSelect\n id={`${inputId}-base`}\n data-testid={testId ? `${testId}-base` : undefined}\n error={!!errorMessage}\n {...otherProps}\n />\n </FormWrapper>\n );\n};\n"],"names":["_a","label","errorMessage","id","errorTestId","testId","layoutType","xxsCols","xsCols","smCols","mdCols","lgCols","xlCols","xxlCols","otherProps","__rest","internalId","useId","inputId","_jsx","FormWrapper","children","InputNestedSelect","undefined","error"],"mappings":"wbAK6CA,IAAA,IAAAC,MACzCA,EAAKC,aACLA,EAAYC,GACZA,EACA,oBAAqBC,EACrB,cAAeC,EAAMC,WACrBA,EAAUC,QACVA,EAAOC,OACPA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,OACNA,EAAMC,QACNA,GAAOb,EACJc,EAAUC,EAAAA,OAAAf,EAd4B,+IAgBzC,MAAMgB,EAAaC,EAAAA,QACbC,EAAUf,QAAAA,EAAM,cAAca,IACpC,OACIG,MAACC,EAAAA,YAAW,CACRjB,GAAIe,EAAO,cACEb,EACbJ,MAAOA,EACPC,aAAcA,EAAY,oBACPE,EACnBE,WAAYA,EACZC,QAASA,EACTC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EAAOQ,SAEhBF,EAAAA,IAACG,EAAAA,iCACGnB,GAAI,GAAGe,uBACMb,EAAS,GAAGA,cAAgBkB,EACzCC,QAAStB,GACLY,KAEE"}
|