@hitachivantara/uikit-react-core 5.80.2 → 5.81.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/BaseDropdown/BaseDropdown.cjs +82 -165
- package/dist/cjs/BaseDropdown/BaseDropdown.styles.cjs +2 -2
- package/dist/cjs/BaseDropdown/BaseDropdownPanel.cjs +80 -0
- package/dist/cjs/BaseDropdown/{BaseDropdownContext/BaseDropdownContext.cjs → context.cjs} +2 -2
- package/dist/cjs/Button/Button.styles.cjs +6 -2
- package/dist/cjs/DropDownMenu/DropDownMenu.cjs +21 -28
- package/dist/cjs/DropDownMenu/DropDownMenu.styles.cjs +15 -2
- package/dist/cjs/Dropdown/List/List.cjs +6 -5
- package/dist/cjs/InlineEditor/InlineEditor.cjs +13 -2
- package/dist/cjs/MultiButton/MultiButton.cjs +3 -4
- package/dist/cjs/MultiButton/MultiButton.styles.cjs +48 -109
- package/dist/cjs/Pagination/Pagination.styles.cjs +1 -1
- package/dist/cjs/Table/TableCell/TableCell.styles.cjs +2 -5
- package/dist/cjs/Table/TableHeader/TableHeader.cjs +40 -49
- package/dist/cjs/Table/TableHeader/TableHeader.styles.cjs +18 -20
- package/dist/cjs/Table/TableRow/TableRow.styles.cjs +7 -15
- package/dist/esm/Accordion/Accordion.js.map +1 -1
- package/dist/esm/Accordion/Accordion.styles.js.map +1 -1
- package/dist/esm/ActionBar/ActionBar.js.map +1 -1
- package/dist/esm/ActionBar/ActionBar.styles.js.map +1 -1
- package/dist/esm/ActionsGeneric/ActionsGeneric.js.map +1 -1
- package/dist/esm/ActionsGeneric/ActionsGeneric.styles.js.map +1 -1
- package/dist/esm/AppSwitcher/Action/Action.js.map +1 -1
- package/dist/esm/AppSwitcher/Action/Action.styles.js.map +1 -1
- package/dist/esm/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/esm/AppSwitcher/AppSwitcher.styles.js.map +1 -1
- package/dist/esm/Avatar/Avatar.js.map +1 -1
- package/dist/esm/Avatar/Avatar.styles.js.map +1 -1
- package/dist/esm/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/esm/AvatarGroup/AvatarGroup.styles.js.map +1 -1
- package/dist/esm/Badge/Badge.js.map +1 -1
- package/dist/esm/Badge/Badge.styles.js.map +1 -1
- package/dist/esm/Banner/Banner.js.map +1 -1
- package/dist/esm/Banner/Banner.styles.js.map +1 -1
- package/dist/esm/Banner/BannerContent/ActionContainer/ActionContainer.js.map +1 -1
- package/dist/esm/Banner/BannerContent/ActionContainer/ActionContainer.styles.js.map +1 -1
- package/dist/esm/Banner/BannerContent/BannerContent.js.map +1 -1
- package/dist/esm/Banner/BannerContent/BannerContent.styles.js.map +1 -1
- package/dist/esm/Banner/BannerContent/MessageContainer/MessageContainer.js.map +1 -1
- package/dist/esm/Banner/BannerContent/MessageContainer/MessageContainer.styles.js.map +1 -1
- package/dist/esm/BaseCheckBox/BaseCheckBox.js.map +1 -1
- package/dist/esm/BaseCheckBox/BaseCheckBox.styles.js.map +1 -1
- package/dist/esm/BaseCheckBox/icons.js.map +1 -1
- package/dist/esm/BaseDropdown/BaseDropdown.js +82 -163
- package/dist/esm/BaseDropdown/BaseDropdown.js.map +1 -1
- package/dist/esm/BaseDropdown/BaseDropdown.styles.js +2 -2
- package/dist/esm/BaseDropdown/BaseDropdown.styles.js.map +1 -1
- package/dist/esm/BaseDropdown/BaseDropdownPanel.js +80 -0
- package/dist/esm/BaseDropdown/BaseDropdownPanel.js.map +1 -0
- package/dist/esm/BaseDropdown/{BaseDropdownContext/BaseDropdownContext.js → context.js} +1 -1
- package/dist/esm/BaseDropdown/context.js.map +1 -0
- package/dist/esm/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/BaseInput/BaseInput.styles.js.map +1 -1
- package/dist/esm/BaseInput/validations.js.map +1 -1
- package/dist/esm/BaseRadio/BaseRadio.js.map +1 -1
- package/dist/esm/BaseRadio/BaseRadio.styles.js.map +1 -1
- package/dist/esm/BaseRadio/icons.js.map +1 -1
- package/dist/esm/BaseSwitch/BaseSwitch.js.map +1 -1
- package/dist/esm/BaseSwitch/BaseSwitch.styles.js.map +1 -1
- package/dist/esm/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/esm/BreadCrumb/BreadCrumb.styles.js.map +1 -1
- package/dist/esm/BreadCrumb/Page/Page.js.map +1 -1
- package/dist/esm/BreadCrumb/Page/Page.styles.js.map +1 -1
- package/dist/esm/BreadCrumb/PathElement/PathElement.js.map +1 -1
- package/dist/esm/BreadCrumb/PathElement/PathElement.styles.js.map +1 -1
- package/dist/esm/BreadCrumb/utils.js.map +1 -1
- package/dist/esm/BulkActions/BulkActions.js.map +1 -1
- package/dist/esm/BulkActions/BulkActions.styles.js.map +1 -1
- package/dist/esm/Button/Button.js.map +1 -1
- package/dist/esm/Button/Button.styles.js +6 -2
- package/dist/esm/Button/Button.styles.js.map +1 -1
- package/dist/esm/ButtonBase/ButtonBase.js.map +1 -1
- package/dist/esm/ButtonBase/ButtonBase.styles.js.map +1 -1
- package/dist/esm/Calendar/Calendar.js.map +1 -1
- package/dist/esm/Calendar/Calendar.styles.js.map +1 -1
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.styles.js.map +1 -1
- package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
- package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.js.map +1 -1
- package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
- package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.js.map +1 -1
- package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.styles.js.map +1 -1
- package/dist/esm/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
- package/dist/esm/Calendar/SingleCalendar/CalendarCell.styles.js.map +1 -1
- package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
- package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js.map +1 -1
- package/dist/esm/Calendar/model.js.map +1 -1
- package/dist/esm/Calendar/utils.js.map +1 -1
- package/dist/esm/Card/Card.js.map +1 -1
- package/dist/esm/Card/Card.styles.js.map +1 -1
- package/dist/esm/Card/Content/Content.js.map +1 -1
- package/dist/esm/Card/Content/Content.styles.js.map +1 -1
- package/dist/esm/Card/Header/Header.js.map +1 -1
- package/dist/esm/Card/Header/Header.styles.js.map +1 -1
- package/dist/esm/Card/Media/Media.js.map +1 -1
- package/dist/esm/Card/Media/Media.styles.js.map +1 -1
- package/dist/esm/Carousel/Carousel.js.map +1 -1
- package/dist/esm/Carousel/Carousel.styles.js.map +1 -1
- package/dist/esm/Carousel/CarouselControls.js.map +1 -1
- package/dist/esm/Carousel/CarouselSlide/CarouselSlide.js.map +1 -1
- package/dist/esm/Carousel/CarouselSlide/CarouselSlide.styles.js.map +1 -1
- package/dist/esm/Carousel/CarouselThumbnails.js.map +1 -1
- package/dist/esm/CheckBox/CheckBox.js.map +1 -1
- package/dist/esm/CheckBox/CheckBox.styles.js.map +1 -1
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.styles.js.map +1 -1
- package/dist/esm/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/ColorPicker/ColorPicker.styles.js.map +1 -1
- package/dist/esm/ColorPicker/Fields/Fields.js.map +1 -1
- package/dist/esm/ColorPicker/Fields/Fields.styles.js.map +1 -1
- package/dist/esm/ColorPicker/Picker/Picker.js.map +1 -1
- package/dist/esm/ColorPicker/Picker/Picker.styles.js.map +1 -1
- package/dist/esm/ColorPicker/PresetColors/PresetColors.js.map +1 -1
- package/dist/esm/ColorPicker/PresetColors/PresetColors.styles.js.map +1 -1
- package/dist/esm/ColorPicker/SavedColors/SavedColors.js.map +1 -1
- package/dist/esm/ColorPicker/SavedColors/SavedColors.styles.js.map +1 -1
- package/dist/esm/Container/Container.js.map +1 -1
- package/dist/esm/Container/Container.styles.js.map +1 -1
- package/dist/esm/Controls/Controls.js.map +1 -1
- package/dist/esm/Controls/Controls.styles.js.map +1 -1
- package/dist/esm/Controls/LeftControl/LeftControl.js.map +1 -1
- package/dist/esm/Controls/RightControl/RightControl.js.map +1 -1
- package/dist/esm/Controls/context/ControlsContext.js.map +1 -1
- package/dist/esm/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/DatePicker/DatePicker.styles.js.map +1 -1
- package/dist/esm/DatePicker/useVisibleDate.js.map +1 -1
- package/dist/esm/DatePicker/utils.js.map +1 -1
- package/dist/esm/Dialog/Actions/Actions.js.map +1 -1
- package/dist/esm/Dialog/Actions/Actions.styles.js.map +1 -1
- package/dist/esm/Dialog/Content/Content.js.map +1 -1
- package/dist/esm/Dialog/Content/Content.styles.js.map +1 -1
- package/dist/esm/Dialog/Dialog.js.map +1 -1
- package/dist/esm/Dialog/Dialog.styles.js.map +1 -1
- package/dist/esm/Dialog/Title/Title.js.map +1 -1
- package/dist/esm/Dialog/Title/Title.styles.js.map +1 -1
- package/dist/esm/Dialog/context.js.map +1 -1
- package/dist/esm/DotPagination/DotPagination.js.map +1 -1
- package/dist/esm/DotPagination/DotPagination.styles.js.map +1 -1
- package/dist/esm/Drawer/Drawer.js.map +1 -1
- package/dist/esm/Drawer/Drawer.styles.js.map +1 -1
- package/dist/esm/DropDownMenu/DropDownMenu.js +20 -27
- package/dist/esm/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/esm/DropDownMenu/DropDownMenu.styles.js +15 -2
- package/dist/esm/DropDownMenu/DropDownMenu.styles.js.map +1 -1
- package/dist/esm/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/Dropdown/Dropdown.styles.js.map +1 -1
- package/dist/esm/Dropdown/List/List.js +6 -5
- package/dist/esm/Dropdown/List/List.js.map +1 -1
- package/dist/esm/Dropdown/List/List.styles.js.map +1 -1
- package/dist/esm/Dropdown/utils.js.map +1 -1
- package/dist/esm/DropdownButton/DropdownButton.js.map +1 -1
- package/dist/esm/DropdownButton/DropdownButton.styles.js.map +1 -1
- package/dist/esm/EmptyState/EmptyState.js.map +1 -1
- package/dist/esm/EmptyState/EmptyState.styles.js.map +1 -1
- package/dist/esm/FileUploader/DropZone/DropZone.js.map +1 -1
- package/dist/esm/FileUploader/DropZone/DropZone.styles.js.map +1 -1
- package/dist/esm/FileUploader/File/File.js.map +1 -1
- package/dist/esm/FileUploader/File/File.styles.js.map +1 -1
- package/dist/esm/FileUploader/FileList/FileList.js.map +1 -1
- package/dist/esm/FileUploader/FileList/FileList.styles.js.map +1 -1
- package/dist/esm/FileUploader/FileUploader.js.map +1 -1
- package/dist/esm/FileUploader/Preview/Preview.js.map +1 -1
- package/dist/esm/FileUploader/Preview/Preview.styles.js.map +1 -1
- package/dist/esm/FileUploader/utils.js.map +1 -1
- package/dist/esm/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/esm/FilterGroup/Counter/Counter.styles.js.map +1 -1
- package/dist/esm/FilterGroup/FilterContent/FilterContent.js.map +1 -1
- package/dist/esm/FilterGroup/FilterContent/FilterContent.styles.js.map +1 -1
- package/dist/esm/FilterGroup/FilterGroup.js.map +1 -1
- package/dist/esm/FilterGroup/FilterGroup.styles.js.map +1 -1
- package/dist/esm/FilterGroup/FilterGroupContext.js.map +1 -1
- package/dist/esm/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
- package/dist/esm/FilterGroup/LeftPanel/LeftPanel.styles.js.map +1 -1
- package/dist/esm/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/esm/FilterGroup/RightPanel/RightPanel.styles.js.map +1 -1
- package/dist/esm/Focus/Focus.js.map +1 -1
- package/dist/esm/Focus/Focus.styles.js.map +1 -1
- package/dist/esm/Focus/utils.js.map +1 -1
- package/dist/esm/Footer/Footer.js.map +1 -1
- package/dist/esm/Footer/Footer.styles.js.map +1 -1
- package/dist/esm/Forms/Adornment/Adornment.js.map +1 -1
- package/dist/esm/Forms/Adornment/Adornment.styles.js.map +1 -1
- package/dist/esm/Forms/CharCounter/CharCounter.js.map +1 -1
- package/dist/esm/Forms/FormElement/FormElement.js.map +1 -1
- package/dist/esm/Forms/FormElement/FormElement.styles.js.map +1 -1
- package/dist/esm/Forms/FormElement/context/FormElementContext.js.map +1 -1
- package/dist/esm/Forms/FormElement/context/FormElementDescriptorsContext.js.map +1 -1
- package/dist/esm/Forms/FormElement/utils/FormUtils.js.map +1 -1
- package/dist/esm/Forms/InfoMessage/InfoMessage.js.map +1 -1
- package/dist/esm/Forms/Label/Label.js.map +1 -1
- package/dist/esm/Forms/Suggestions/Suggestions.js.map +1 -1
- package/dist/esm/Forms/Suggestions/Suggestions.styles.js.map +1 -1
- package/dist/esm/Forms/WarningText/WarningText.js.map +1 -1
- package/dist/esm/GlobalActions/GlobalActions.js.map +1 -1
- package/dist/esm/GlobalActions/GlobalActions.styles.js.map +1 -1
- package/dist/esm/Grid/Grid.js.map +1 -1
- package/dist/esm/Grid/Grid.styles.js.map +1 -1
- package/dist/esm/Header/Actions/Actions.js.map +1 -1
- package/dist/esm/Header/Actions/Actions.styles.js.map +1 -1
- package/dist/esm/Header/Brand/Brand.js.map +1 -1
- package/dist/esm/Header/Brand/Brand.styles.js.map +1 -1
- package/dist/esm/Header/Header.js.map +1 -1
- package/dist/esm/Header/Header.styles.js.map +1 -1
- package/dist/esm/Header/Navigation/MenuBar/Bar.js.map +1 -1
- package/dist/esm/Header/Navigation/MenuBar/Bar.styles.js.map +1 -1
- package/dist/esm/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/Header/Navigation/MenuItem/MenuItem.styles.js.map +1 -1
- package/dist/esm/Header/Navigation/Navigation.js.map +1 -1
- package/dist/esm/Header/Navigation/Navigation.styles.js.map +1 -1
- package/dist/esm/Header/Navigation/useSelectionPath.js.map +1 -1
- package/dist/esm/Header/Navigation/utils/FocusContext.js.map +1 -1
- package/dist/esm/IconButton/IconButton.js.map +1 -1
- package/dist/esm/InlineEditor/InlineEditor.js +13 -2
- package/dist/esm/InlineEditor/InlineEditor.js.map +1 -1
- package/dist/esm/InlineEditor/InlineEditor.styles.js.map +1 -1
- package/dist/esm/Input/Input.js.map +1 -1
- package/dist/esm/Input/Input.styles.js.map +1 -1
- package/dist/esm/Kpi/Kpi.js.map +1 -1
- package/dist/esm/Link/Link.js.map +1 -1
- package/dist/esm/Link/Link.styles.js.map +1 -1
- package/dist/esm/List/List.js.map +1 -1
- package/dist/esm/List/List.styles.js.map +1 -1
- package/dist/esm/List/utils.js.map +1 -1
- package/dist/esm/ListContainer/ListContainer.js.map +1 -1
- package/dist/esm/ListContainer/ListContainer.styles.js.map +1 -1
- package/dist/esm/ListContainer/ListContext/ListContext.js.map +1 -1
- package/dist/esm/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/esm/ListContainer/ListItem/ListItem.styles.js.map +1 -1
- package/dist/esm/Loading/Loading.js.map +1 -1
- package/dist/esm/Loading/Loading.styles.js.map +1 -1
- package/dist/esm/LoadingContainer/LoadingContainer.js.map +1 -1
- package/dist/esm/LoadingContainer/LoadingContainer.styles.js.map +1 -1
- package/dist/esm/Login/Login.js.map +1 -1
- package/dist/esm/Login/Login.styles.js.map +1 -1
- package/dist/esm/MultiButton/MultiButton.js +3 -4
- package/dist/esm/MultiButton/MultiButton.js.map +1 -1
- package/dist/esm/MultiButton/MultiButton.styles.js +48 -109
- package/dist/esm/MultiButton/MultiButton.styles.js.map +1 -1
- package/dist/esm/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/dist/esm/OverflowTooltip/OverflowTooltip.styles.js.map +1 -1
- package/dist/esm/Pagination/Pagination.js.map +1 -1
- package/dist/esm/Pagination/Pagination.styles.js +1 -1
- package/dist/esm/Pagination/Pagination.styles.js.map +1 -1
- package/dist/esm/Pagination/Select.js.map +1 -1
- package/dist/esm/Pagination/Select.styles.js.map +1 -1
- package/dist/esm/Panel/Panel.js.map +1 -1
- package/dist/esm/Panel/Panel.styles.js.map +1 -1
- package/dist/esm/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/esm/ProgressBar/ProgressBar.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Context.js.map +1 -1
- package/dist/esm/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/esm/QueryBuilder/QueryBuilder.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Attribute/Attribute.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Operator/Operator.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Rule.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Rule.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/utils.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/EmptyValue/EmptyValue.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/Value.js.map +1 -1
- package/dist/esm/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/QueryBuilder/utils/index.js.map +1 -1
- package/dist/esm/QueryBuilder/utils/reducer.js.map +1 -1
- package/dist/esm/Radio/Radio.js.map +1 -1
- package/dist/esm/Radio/Radio.styles.js.map +1 -1
- package/dist/esm/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/RadioGroup/RadioGroup.styles.js.map +1 -1
- package/dist/esm/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -1
- package/dist/esm/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +1 -1
- package/dist/esm/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
- package/dist/esm/ScrollTo/Horizontal/ScrollToHorizontal.styles.js.map +1 -1
- package/dist/esm/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
- package/dist/esm/ScrollTo/Vertical/ScrollToVertical.styles.js.map +1 -1
- package/dist/esm/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -1
- package/dist/esm/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -1
- package/dist/esm/ScrollTo/useScrollTo.js.map +1 -1
- package/dist/esm/ScrollTo/utils.js.map +1 -1
- package/dist/esm/Section/Section.js.map +1 -1
- package/dist/esm/Section/Section.styles.js.map +1 -1
- package/dist/esm/Select/Option.js.map +1 -1
- package/dist/esm/Select/OptionGroup.js.map +1 -1
- package/dist/esm/Select/Select.js.map +1 -1
- package/dist/esm/Select/Select.styles.js.map +1 -1
- package/dist/esm/SelectionList/SelectionList.js.map +1 -1
- package/dist/esm/SelectionList/SelectionList.styles.js.map +1 -1
- package/dist/esm/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/esm/SimpleGrid/SimpleGrid.styles.js.map +1 -1
- package/dist/esm/Skeleton/Skeleton.js.map +1 -1
- package/dist/esm/Skeleton/Skeleton.styles.js.map +1 -1
- package/dist/esm/Slider/Slider.js.map +1 -1
- package/dist/esm/Slider/Slider.styles.js.map +1 -1
- package/dist/esm/Slider/SliderInput/SliderInput.js.map +1 -1
- package/dist/esm/Slider/base.js.map +1 -1
- package/dist/esm/Slider/utils.js.map +1 -1
- package/dist/esm/Snackbar/Snackbar.js.map +1 -1
- package/dist/esm/Snackbar/Snackbar.styles.js.map +1 -1
- package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.js.map +1 -1
- package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.styles.js.map +1 -1
- package/dist/esm/SnackbarProvider/SnackbarProvider.js.map +1 -1
- package/dist/esm/SnackbarProvider/SnackbarProvider.styles.js.map +1 -1
- package/dist/esm/Stack/Stack.js.map +1 -1
- package/dist/esm/Stack/Stack.styles.js.map +1 -1
- package/dist/esm/Switch/Switch.js.map +1 -1
- package/dist/esm/Switch/Switch.styles.js.map +1 -1
- package/dist/esm/Tab/Tab.js.map +1 -1
- package/dist/esm/Tab/Tab.styles.js.map +1 -1
- package/dist/esm/Table/Table.js.map +1 -1
- package/dist/esm/Table/Table.styles.js.map +1 -1
- package/dist/esm/Table/TableBody/TableBody.js.map +1 -1
- package/dist/esm/Table/TableCell/TableCell.js.map +1 -1
- package/dist/esm/Table/TableCell/TableCell.styles.js +2 -5
- package/dist/esm/Table/TableCell/TableCell.styles.js.map +1 -1
- package/dist/esm/Table/TableContainer/TableContainer.js.map +1 -1
- package/dist/esm/Table/TableContainer/TableContainer.styles.js.map +1 -1
- package/dist/esm/Table/TableHead/TableHead.js.map +1 -1
- package/dist/esm/Table/TableHeader/TableHeader.js +44 -52
- package/dist/esm/Table/TableHeader/TableHeader.js.map +1 -1
- package/dist/esm/Table/TableHeader/TableHeader.styles.js +18 -20
- package/dist/esm/Table/TableHeader/TableHeader.styles.js.map +1 -1
- package/dist/esm/Table/TableHeader/utils.js.map +1 -1
- package/dist/esm/Table/TableRow/TableRow.js.map +1 -1
- package/dist/esm/Table/TableRow/TableRow.styles.js +7 -15
- package/dist/esm/Table/TableRow/TableRow.styles.js.map +1 -1
- package/dist/esm/Table/hooks/useBulkActions.js.map +1 -1
- package/dist/esm/Table/hooks/useFilters.js.map +1 -1
- package/dist/esm/Table/hooks/useGlobalFilter.js.map +1 -1
- package/dist/esm/Table/hooks/useHeaderGroups.js.map +1 -1
- package/dist/esm/Table/hooks/usePagination.js.map +1 -1
- package/dist/esm/Table/hooks/useResizeColumns.js.map +1 -1
- package/dist/esm/Table/hooks/useRowExpand.js.map +1 -1
- package/dist/esm/Table/hooks/useRowSelection.js.map +1 -1
- package/dist/esm/Table/hooks/useRowState.js.map +1 -1
- package/dist/esm/Table/hooks/useSortBy.js.map +1 -1
- package/dist/esm/Table/hooks/useSticky.js.map +1 -1
- package/dist/esm/Table/hooks/useTable.js.map +1 -1
- package/dist/esm/Table/hooks/useTableStyles.js.map +1 -1
- package/dist/esm/Table/renderers/DateColumnCell/DateColumnCell.js.map +1 -1
- package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.js.map +1 -1
- package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js.map +1 -1
- package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.js.map +1 -1
- package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.js.map +1 -1
- package/dist/esm/Table/renderers/renderers.js.map +1 -1
- package/dist/esm/Table/utils/fallbacks.js.map +1 -1
- package/dist/esm/Table/utils/utils.js.map +1 -1
- package/dist/esm/TableSection/TableSection.js.map +1 -1
- package/dist/esm/TableSection/TableSection.styles.js.map +1 -1
- package/dist/esm/Tabs/Tabs.js.map +1 -1
- package/dist/esm/Tabs/Tabs.styles.js.map +1 -1
- package/dist/esm/Tag/Tag.js.map +1 -1
- package/dist/esm/Tag/Tag.styles.js.map +1 -1
- package/dist/esm/TagsInput/TagsInput.js.map +1 -1
- package/dist/esm/TagsInput/TagsInput.styles.js.map +1 -1
- package/dist/esm/TextArea/TextArea.js.map +1 -1
- package/dist/esm/TimeAgo/TimeAgo.js.map +1 -1
- package/dist/esm/TimeAgo/TimeAgo.styles.js.map +1 -1
- package/dist/esm/TimeAgo/formatUtils.js.map +1 -1
- package/dist/esm/TimeAgo/useTimeAgo.js.map +1 -1
- package/dist/esm/TimePicker/Placeholder.js.map +1 -1
- package/dist/esm/TimePicker/TimePicker.js.map +1 -1
- package/dist/esm/TimePicker/TimePicker.styles.js.map +1 -1
- package/dist/esm/TimePicker/Unit/Unit.js.map +1 -1
- package/dist/esm/TimePicker/Unit/Unit.styles.js.map +1 -1
- package/dist/esm/ToggleButton/ToggleButton.js.map +1 -1
- package/dist/esm/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/Tooltip/Tooltip.styles.js.map +1 -1
- package/dist/esm/TreeView/TreeItem/DefaultContent.js.map +1 -1
- package/dist/esm/TreeView/TreeItem/TreeItem.js.map +1 -1
- package/dist/esm/TreeView/TreeItem/TreeItem.styles.js.map +1 -1
- package/dist/esm/TreeView/TreeItem/useHvTreeItem.js.map +1 -1
- package/dist/esm/TreeView/TreeView.js.map +1 -1
- package/dist/esm/TreeView/TreeView.styles.js.map +1 -1
- package/dist/esm/TreeView/internals/DescendantProvider.js.map +1 -1
- package/dist/esm/TreeView/internals/TreeViewProvider.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewExpansion.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewFocus.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewNodes.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewSelection.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/useInstanceEventHandler.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/useTreeView.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/useTreeViewInstanceEvents.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/useTreeViewModels.js.map +1 -1
- package/dist/esm/TreeView/internals/hooks/utils.js.map +1 -1
- package/dist/esm/TreeView/internals/utils/EventManager.js.map +1 -1
- package/dist/esm/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.js.map +1 -1
- package/dist/esm/TreeView/internals/utils/TimerBasedCleanupTracking.js.map +1 -1
- package/dist/esm/Typography/Typography.js.map +1 -1
- package/dist/esm/Typography/Typography.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/Actions/Action.js.map +1 -1
- package/dist/esm/VerticalNavigation/Actions/Action.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/Actions/Actions.js.map +1 -1
- package/dist/esm/VerticalNavigation/Actions/Actions.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/Header/Header.js.map +1 -1
- package/dist/esm/VerticalNavigation/Header/Header.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/VerticalNavigation/Navigation/Navigation.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js.map +1 -1
- package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.js.map +1 -1
- package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/NavigationSlider/utils.js.map +1 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeView.js.map +1 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeView.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeViewContext.js.map +1 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/esm/VerticalNavigation/VerticalNavigation.styles.js.map +1 -1
- package/dist/esm/VerticalNavigation/VerticalNavigationContext.js.map +1 -1
- package/dist/esm/hocs/withTooltip.js.map +1 -1
- package/dist/esm/hooks/useClickOutside.js.map +1 -1
- package/dist/esm/hooks/useComputation.js.map +1 -1
- package/dist/esm/hooks/useControlled.js.map +1 -1
- package/dist/esm/hooks/useExpandable.js.map +1 -1
- package/dist/esm/hooks/useForkRef.js.map +1 -1
- package/dist/esm/hooks/useImageLoaded.js.map +1 -1
- package/dist/esm/hooks/useIsMounted.js.map +1 -1
- package/dist/esm/hooks/useUniqueId.js.map +1 -1
- package/dist/esm/hooks/useWidth.js.map +1 -1
- package/dist/esm/providers/Provider.js.map +1 -1
- package/dist/esm/providers/ThemeProvider.js.map +1 -1
- package/dist/esm/utils/Random.js.map +1 -1
- package/dist/esm/utils/browser.js.map +1 -1
- package/dist/esm/utils/deepMerge.js.map +1 -1
- package/dist/esm/utils/document.js.map +1 -1
- package/dist/esm/utils/focusableElementFinder.js.map +1 -1
- package/dist/esm/utils/helpers.js.map +1 -1
- package/dist/esm/utils/iconVariant.js.map +1 -1
- package/dist/esm/utils/multiSelectionEventHandler.js.map +1 -1
- package/dist/esm/utils/sizes.js.map +1 -1
- package/dist/esm/utils/theme.js.map +1 -1
- package/dist/esm/utils/useSavedState.js.map +1 -1
- package/dist/esm/utils/wrapperTooltip.js.map +1 -1
- package/dist/types/index.d.ts +7 -4
- package/package.json +6 -6
- package/dist/esm/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","sources":["../../../src/QueryBuilder/Context.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nimport {\n AskAction,\n HvQueryBuilderAttribute,\n HvQueryBuilderLabels,\n HvQueryBuilderQueryCombinator,\n HvQueryBuilderQueryOperator,\n HvQueryBuilderRenderers,\n QueryAction,\n} from \"./types\";\n\nexport const defaultOperators = {\n numeric: [\n {\n operator: \"greaterThan\",\n label: \"Greater than (>)\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThan\",\n label: \"Less than (<)\",\n combinators: [\"and\"],\n },\n {\n operator: \"equalsTo\",\n label: \"Equal to (=)\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"greaterThanEq\",\n label: \"Greater than or equal to (>=)\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThanEq\",\n label: \"Less than or equal to (<=)\",\n combinators: [\"and\"],\n },\n {\n operator: \"notEqual\",\n label: \"Not equal to (!=)\",\n combinators: [\"and\"],\n },\n {\n operator: \"range\",\n label: \"Range\",\n combinators: [\"and\"],\n },\n ],\n text: [\n {\n operator: \"equals\",\n label: \"Equals\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"equalsIgnoreCase\",\n label: \"Equals Ignore Case\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"Contains\",\n label: \"Contains\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"StartsWith\",\n label: \"A string begins with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"EndsWith\",\n label: \"A string ends with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"IsNotEmpty\",\n label: \"Is Not empty\",\n combinators: [\"and\"],\n },\n {\n operator: \"IsNot\",\n label: \"Is Not\",\n combinators: [\"and\"],\n },\n {\n operator: \"Empty\",\n label: \"Empty\",\n combinators: [\"and\"],\n },\n ],\n textarea: [\n {\n operator: \"equals\",\n label: \"Equals\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"equalsIgnoreCase\",\n label: \"Equals Ignore Case\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"Contains\",\n label: \"Contains\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"StartsWith\",\n label: \"A string begins with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"EndsWith\",\n label: \"A string ends with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"IsNotEmpty\",\n label: \"Is Not empty\",\n combinators: [\"and\"],\n },\n {\n operator: \"IsNot\",\n label: \"Is Not\",\n combinators: [\"and\"],\n },\n {\n operator: \"Empty\",\n label: \"Empty\",\n combinators: [\"and\"],\n },\n ],\n boolean: [\n {\n operator: \"equalsTo\",\n label: \"=\",\n combinators: [\"and\", \"or\"],\n },\n ],\n dateandtime: [\n {\n operator: \"greaterThan\",\n label: \"Greater than\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThan\",\n label: \"Less than\",\n combinators: [\"and\"],\n },\n {\n operator: \"equalsTo\",\n label: \"Equal to\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"greaterThanEq\",\n label: \"Greater than or equal to\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThanEq\",\n label: \"Less than or equal to\",\n combinators: [\"and\"],\n },\n {\n operator: \"notEqual\",\n label: \"Not equal to\",\n combinators: [\"and\"],\n },\n {\n operator: \"range\",\n label: \"Range\",\n combinators: [\"and\"],\n },\n ],\n};\n\nexport const defaultCombinators = [\n { operand: \"and\", label: \"AND\" },\n { operand: \"or\", label: \"OR\" },\n];\n\nexport const defaultLabels: HvQueryBuilderLabels = {\n query: {\n delete: {\n ariaLabel: \"Reset query\",\n tooltip: \"Reset query\",\n dialogTitle: \"Remove all conditions?\",\n dialogMessage:\n \"Are you sure you want to remove all the conditions? They will be removed permanently.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n addRule: {\n label: \"Add condition\",\n },\n addGroup: {\n label: \"Add group\",\n },\n },\n rule: {\n attribute: {\n label: \"Attribute\",\n placeholder: \"Select attribute...\",\n exists: \"Attribute already exists.\",\n },\n operator: {\n label: \"Operator\",\n placeholder: \"Select operator...\",\n },\n value: {\n distance: {\n label: \"Value\",\n connectorText: \"radius miles from\",\n button: \"Select location\",\n validation: {\n required: \"The value is required.\",\n invalid: \"Value must be a positive number.\",\n },\n },\n text: {\n label: \"Value\",\n placeholder: \"Enter value...\",\n validation: {\n required: \"The value is required.\",\n },\n },\n boolean: {\n label: \"Value\",\n placeholder: \"Enter value\",\n options: {\n true: \"True\",\n false: \"False\",\n },\n },\n numeric: {\n label: \"Value\",\n placeholder: \"Enter value\",\n validation: {\n required: \"The value is required.\",\n invalid: \"Value must be a number.\",\n equal: \"Cannot be equal.\",\n greaterThan: \"Needs to be greater.\",\n },\n range: {\n leftLabel: \"From\",\n rightLabel: \"To\",\n },\n },\n datetime: {\n dateLabel: \"Date\",\n datePlaceholder: \"Select Date\",\n timeLabel: \"Time\",\n timePlaceholder: \"Select Time\",\n startDateLabel: \"Start Date\",\n startDatePlaceholder: \"Select Start Date\",\n startTimeLabel: \"Start Time\",\n startTimePlaceholder: \"Select Start Time\",\n endDateLabel: \"End Date\",\n endDatePlaceholder: \"Select End Date\",\n endTimeLabel: \"End Time\",\n endTimePlaceholder: \"Select End Time\",\n validation: {\n required: \"The value is required.\",\n invalidInterval:\n \"End date and time must be after start date and time.\",\n },\n },\n },\n delete: {\n ariaLabel: \"Remove condition\",\n tooltip: \"Remove condition\",\n dialogTitle: \"Remove condition?\",\n dialogMessage:\n \"Are you sure you want to remove the condition? It will be removed permanently.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n },\n group: {\n delete: {\n ariaLabel: \"Remove group\",\n tooltip: \"Remove group\",\n dialogTitle: \"Remove group?\",\n dialogMessage:\n \"Are you sure you want to remove the group? It will be removed permanently.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n reset: {\n ariaLabel: \"Change operator\",\n tooltip: \"Change operator query\",\n dialogTitle: \"Change conditional operator?\",\n dialogMessage:\n \"Do you want to change conditional operator? You won't be able to undo this operation. Conditions and/or groups will be removed.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n addRule: {\n label: \"Add condition\",\n },\n addGroup: {\n label: \"Add group\",\n },\n },\n empty: {\n title: \"No conditions created yet\",\n createCondition: \"Create a condition\",\n createGroup: \"condition group\",\n spacer: \" or a \",\n },\n};\n\nexport interface HvQueryBuilderContextValue {\n dispatchAction: React.Dispatch<QueryAction>;\n askAction: React.Dispatch<React.SetStateAction<AskAction | undefined>>;\n selectLocation?: React.Dispatch<unknown>; // TODO - remove in v6 (not used)\n attributes?: Record<string, HvQueryBuilderAttribute>;\n operators: Record<string, HvQueryBuilderQueryOperator[]>;\n combinators: HvQueryBuilderQueryCombinator[];\n maxDepth: number;\n labels: HvQueryBuilderLabels;\n initialTouched: boolean;\n readOnly: boolean;\n disableConfirmation: boolean;\n allowRepeatedAttributes?: boolean;\n renderers?: HvQueryBuilderRenderers;\n emptyRenderer?: string[];\n}\n\nexport const HvQueryBuilderContext = createContext<HvQueryBuilderContextValue>({\n dispatchAction: () => ({}),\n askAction: () => ({}),\n selectLocation: () => ({}), // TODO - remove in v6 (not used)\n attributes: {},\n operators: defaultOperators,\n combinators: defaultCombinators,\n maxDepth: 1,\n labels: defaultLabels,\n initialTouched: false,\n disableConfirmation: false,\n allowRepeatedAttributes: false,\n readOnly: false,\n});\n\nexport interface HvQueryBuilderProviderProps {\n value: HvQueryBuilderContextValue;\n children: React.ReactNode;\n}\n\nexport const HvQueryBuilderProvider = ({\n children,\n value,\n}: HvQueryBuilderProviderProps) => {\n return (\n <HvQueryBuilderContext.Provider value={value}>\n {children}\n </HvQueryBuilderContext.Provider>\n );\n};\n\nexport const useQueryBuilderContext = () => {\n return useContext(HvQueryBuilderContext);\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Context.js","sources":["../../../src/QueryBuilder/Context.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nimport {\n AskAction,\n HvQueryBuilderAttribute,\n HvQueryBuilderLabels,\n HvQueryBuilderQueryCombinator,\n HvQueryBuilderQueryOperator,\n HvQueryBuilderRenderers,\n QueryAction,\n} from \"./types\";\n\nexport const defaultOperators = {\n numeric: [\n {\n operator: \"greaterThan\",\n label: \"Greater than (>)\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThan\",\n label: \"Less than (<)\",\n combinators: [\"and\"],\n },\n {\n operator: \"equalsTo\",\n label: \"Equal to (=)\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"greaterThanEq\",\n label: \"Greater than or equal to (>=)\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThanEq\",\n label: \"Less than or equal to (<=)\",\n combinators: [\"and\"],\n },\n {\n operator: \"notEqual\",\n label: \"Not equal to (!=)\",\n combinators: [\"and\"],\n },\n {\n operator: \"range\",\n label: \"Range\",\n combinators: [\"and\"],\n },\n ],\n text: [\n {\n operator: \"equals\",\n label: \"Equals\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"equalsIgnoreCase\",\n label: \"Equals Ignore Case\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"Contains\",\n label: \"Contains\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"StartsWith\",\n label: \"A string begins with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"EndsWith\",\n label: \"A string ends with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"IsNotEmpty\",\n label: \"Is Not empty\",\n combinators: [\"and\"],\n },\n {\n operator: \"IsNot\",\n label: \"Is Not\",\n combinators: [\"and\"],\n },\n {\n operator: \"Empty\",\n label: \"Empty\",\n combinators: [\"and\"],\n },\n ],\n textarea: [\n {\n operator: \"equals\",\n label: \"Equals\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"equalsIgnoreCase\",\n label: \"Equals Ignore Case\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"Contains\",\n label: \"Contains\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"StartsWith\",\n label: \"A string begins with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"EndsWith\",\n label: \"A string ends with\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"IsNotEmpty\",\n label: \"Is Not empty\",\n combinators: [\"and\"],\n },\n {\n operator: \"IsNot\",\n label: \"Is Not\",\n combinators: [\"and\"],\n },\n {\n operator: \"Empty\",\n label: \"Empty\",\n combinators: [\"and\"],\n },\n ],\n boolean: [\n {\n operator: \"equalsTo\",\n label: \"=\",\n combinators: [\"and\", \"or\"],\n },\n ],\n dateandtime: [\n {\n operator: \"greaterThan\",\n label: \"Greater than\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThan\",\n label: \"Less than\",\n combinators: [\"and\"],\n },\n {\n operator: \"equalsTo\",\n label: \"Equal to\",\n combinators: [\"and\", \"or\"],\n },\n {\n operator: \"greaterThanEq\",\n label: \"Greater than or equal to\",\n combinators: [\"and\"],\n },\n {\n operator: \"lessThanEq\",\n label: \"Less than or equal to\",\n combinators: [\"and\"],\n },\n {\n operator: \"notEqual\",\n label: \"Not equal to\",\n combinators: [\"and\"],\n },\n {\n operator: \"range\",\n label: \"Range\",\n combinators: [\"and\"],\n },\n ],\n};\n\nexport const defaultCombinators = [\n { operand: \"and\", label: \"AND\" },\n { operand: \"or\", label: \"OR\" },\n];\n\nexport const defaultLabels: HvQueryBuilderLabels = {\n query: {\n delete: {\n ariaLabel: \"Reset query\",\n tooltip: \"Reset query\",\n dialogTitle: \"Remove all conditions?\",\n dialogMessage:\n \"Are you sure you want to remove all the conditions? They will be removed permanently.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n addRule: {\n label: \"Add condition\",\n },\n addGroup: {\n label: \"Add group\",\n },\n },\n rule: {\n attribute: {\n label: \"Attribute\",\n placeholder: \"Select attribute...\",\n exists: \"Attribute already exists.\",\n },\n operator: {\n label: \"Operator\",\n placeholder: \"Select operator...\",\n },\n value: {\n distance: {\n label: \"Value\",\n connectorText: \"radius miles from\",\n button: \"Select location\",\n validation: {\n required: \"The value is required.\",\n invalid: \"Value must be a positive number.\",\n },\n },\n text: {\n label: \"Value\",\n placeholder: \"Enter value...\",\n validation: {\n required: \"The value is required.\",\n },\n },\n boolean: {\n label: \"Value\",\n placeholder: \"Enter value\",\n options: {\n true: \"True\",\n false: \"False\",\n },\n },\n numeric: {\n label: \"Value\",\n placeholder: \"Enter value\",\n validation: {\n required: \"The value is required.\",\n invalid: \"Value must be a number.\",\n equal: \"Cannot be equal.\",\n greaterThan: \"Needs to be greater.\",\n },\n range: {\n leftLabel: \"From\",\n rightLabel: \"To\",\n },\n },\n datetime: {\n dateLabel: \"Date\",\n datePlaceholder: \"Select Date\",\n timeLabel: \"Time\",\n timePlaceholder: \"Select Time\",\n startDateLabel: \"Start Date\",\n startDatePlaceholder: \"Select Start Date\",\n startTimeLabel: \"Start Time\",\n startTimePlaceholder: \"Select Start Time\",\n endDateLabel: \"End Date\",\n endDatePlaceholder: \"Select End Date\",\n endTimeLabel: \"End Time\",\n endTimePlaceholder: \"Select End Time\",\n validation: {\n required: \"The value is required.\",\n invalidInterval:\n \"End date and time must be after start date and time.\",\n },\n },\n },\n delete: {\n ariaLabel: \"Remove condition\",\n tooltip: \"Remove condition\",\n dialogTitle: \"Remove condition?\",\n dialogMessage:\n \"Are you sure you want to remove the condition? It will be removed permanently.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n },\n group: {\n delete: {\n ariaLabel: \"Remove group\",\n tooltip: \"Remove group\",\n dialogTitle: \"Remove group?\",\n dialogMessage:\n \"Are you sure you want to remove the group? It will be removed permanently.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n reset: {\n ariaLabel: \"Change operator\",\n tooltip: \"Change operator query\",\n dialogTitle: \"Change conditional operator?\",\n dialogMessage:\n \"Do you want to change conditional operator? You won't be able to undo this operation. Conditions and/or groups will be removed.\",\n dialogConfirm: \"Yes\",\n dialogCancel: \"No\",\n dialogCloseTooltip: \"Close\",\n },\n addRule: {\n label: \"Add condition\",\n },\n addGroup: {\n label: \"Add group\",\n },\n },\n empty: {\n title: \"No conditions created yet\",\n createCondition: \"Create a condition\",\n createGroup: \"condition group\",\n spacer: \" or a \",\n },\n};\n\nexport interface HvQueryBuilderContextValue {\n dispatchAction: React.Dispatch<QueryAction>;\n askAction: React.Dispatch<React.SetStateAction<AskAction | undefined>>;\n selectLocation?: React.Dispatch<unknown>; // TODO - remove in v6 (not used)\n attributes?: Record<string, HvQueryBuilderAttribute>;\n operators: Record<string, HvQueryBuilderQueryOperator[]>;\n combinators: HvQueryBuilderQueryCombinator[];\n maxDepth: number;\n labels: HvQueryBuilderLabels;\n initialTouched: boolean;\n readOnly: boolean;\n disableConfirmation: boolean;\n allowRepeatedAttributes?: boolean;\n renderers?: HvQueryBuilderRenderers;\n emptyRenderer?: string[];\n}\n\nexport const HvQueryBuilderContext = createContext<HvQueryBuilderContextValue>({\n dispatchAction: () => ({}),\n askAction: () => ({}),\n selectLocation: () => ({}), // TODO - remove in v6 (not used)\n attributes: {},\n operators: defaultOperators,\n combinators: defaultCombinators,\n maxDepth: 1,\n labels: defaultLabels,\n initialTouched: false,\n disableConfirmation: false,\n allowRepeatedAttributes: false,\n readOnly: false,\n});\n\nexport interface HvQueryBuilderProviderProps {\n value: HvQueryBuilderContextValue;\n children: React.ReactNode;\n}\n\nexport const HvQueryBuilderProvider = ({\n children,\n value,\n}: HvQueryBuilderProviderProps) => {\n return (\n <HvQueryBuilderContext.Provider value={value}>\n {children}\n </HvQueryBuilderContext.Provider>\n );\n};\n\nexport const useQueryBuilderContext = () => {\n return useContext(HvQueryBuilderContext);\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sources":["../../../src/QueryBuilder/QueryBuilder.tsx"],"sourcesContent":["import { useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { useControlled } from \"../hooks/useControlled\";\nimport { useLabels } from \"../hooks/useLabels\";\nimport { DeepPartial } from \"../types/generic\";\nimport { isEqual } from \"../utils/helpers\";\nimport { ConfirmationDialog } from \"./ConfirmationDialog\";\nimport {\n defaultCombinators,\n defaultLabels,\n defaultOperators,\n HvQueryBuilderProvider,\n} from \"./Context\";\nimport { staticClasses, useClasses } from \"./QueryBuilder.styles\";\nimport { RuleGroup } from \"./RuleGroup\";\nimport {\n AskAction,\n defaultRendererKey,\n HvQueryBuilderAttribute,\n HvQueryBuilderLabels,\n HvQueryBuilderQuery,\n HvQueryBuilderQueryCombinator,\n HvQueryBuilderQueryOperator,\n HvQueryBuilderRenderers,\n} from \"./types\";\nimport { clearNodeIds, emptyGroup, setNodeIds } from \"./utils\";\nimport reducer from \"./utils/reducer\";\n\nexport { staticClasses as queryBuilderClasses };\n\nexport type HvQueryBuilderClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvQueryBuilderProps {\n /** The query attribute types. */\n attributes?: Record<string, HvQueryBuilderAttribute>;\n /** The query rules operators by attribute type and combinator. */\n operators?: Record<string, HvQueryBuilderQueryOperator[]>;\n /** The query combinators operands. */\n combinators?: HvQueryBuilderQueryCombinator[];\n /** The query when the component is controlled. */\n value?: HvQueryBuilderQuery;\n /** The initial query when the component is uncontrolled. */\n defaultValue?: HvQueryBuilderQuery;\n /**\n * The initial query when the component is uncontrolled.\n *\n * @deprecated Use `defaultValue` instead.\n * */\n query?: HvQueryBuilderQuery; // TODO - remove in v6\n /** Callback fired when the query changes. */\n onChange?: (value: HvQueryBuilderQuery) => void;\n /** Max depth of nested query groups. */\n maxDepth?: number;\n /** Object containing all the labels. */\n labels?: DeepPartial<HvQueryBuilderLabels>;\n /** Whether the query builder is in read-only mode. */\n readOnly?: boolean;\n /**\n * Operators that should use the empty value renderer when selected.\n *\n * When one of the listed operators is selected, the rule value is reset and an empty component is rendered.\n * This property takes priority over `renderers`.\n *\n * @default [\"Empty\", \"IsNotEmpty\"]\n * */\n emptyRenderer?: string[];\n /** Custom renderers for the rules' value. */\n renderers?: HvQueryBuilderRenderers;\n /** Whether to opt-out of the confirmation dialogs shown before removing rules and rule groups. @default false. */\n disableConfirmation?: boolean;\n /**\n * Whether to allow attributes to be repeated in AND conditions.\n * By default an error is shown when the selected attribute already exists in an AND conditions.\n * @default false\n */\n allowRepeatedAttributes?: boolean; // TODO - review in v6: should we even have this validation? if needed, we should review its behavior.\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvQueryBuilderClasses;\n}\n\n// TODO - v6\n// - \"range\", \"Empty\", and \"IsNotEmpty\" operators with internal/built-in logic\n// - review query builder validation\n\n// Notes:\n// Deep clone is needed throughout the component to avoid undesired mutations in props, state, and ref values\n\n/**\n * This component allows you to create conditions and group them using logical operators.\n * It outputs a structured set of rules which can be easily parsed to create SQL/NoSQL/whatever queries.\n *\n * Take a look at the [usage page](https://lumada-design.github.io/uikit/master/?path=/docs/widgets-query-builder-usage--docs) to learn more about this component.\n */\nexport const HvQueryBuilder = (props: HvQueryBuilderProps) => {\n const {\n attributes,\n renderers,\n query: queryProp, // TODO - remove in v6\n value,\n defaultValue,\n onChange,\n disableConfirmation = false,\n allowRepeatedAttributes = false,\n operators = defaultOperators,\n combinators = defaultCombinators,\n maxDepth = 1,\n labels: labelsProp,\n readOnly = false,\n emptyRenderer = [\"Empty\", \"IsNotEmpty\"],\n classes: classesProp,\n } = useDefaultProps(\"HvQueryBuilder\", props);\n\n if (\n import.meta.env.DEV &&\n [\n Object.values(attributes || {}).map(({ type }) => type),\n Object.values(operators || {}).flatMap((ops) =>\n ops.map(({ operator }) => operator),\n ),\n ]\n .flat()\n ?.find((key) => key === defaultRendererKey)\n ) {\n // eslint-disable-next-line no-console\n console.error(\n `${defaultRendererKey} is a restricted key and shouldn't be used as an attribute or operator type. Update the key to avoid unexpected behaviors.`,\n );\n }\n\n const { classes } = useClasses(classesProp);\n\n const currentAttributes = useRef<HvQueryBuilderProps[\"attributes\"] | null>(\n null,\n );\n\n const controlled = useRef(value != null);\n const initialQuery = useRef(\n value ?? defaultValue ?? queryProp ?? emptyGroup(),\n );\n const [query, setQuery] = useControlled(value, initialQuery.current);\n const prevQuery = useRef(query);\n\n const [pendingAction, setPendingAction] = useState<AskAction>();\n const [initialState, setInitialState] = useState(true);\n\n const [state, dispatchAction] = useReducer(\n reducer,\n setNodeIds(structuredClone(initialQuery.current)),\n );\n\n const labels = useLabels(defaultLabels, labelsProp);\n\n const contextValue = useMemo(\n () => ({\n dispatchAction,\n askAction: setPendingAction,\n attributes,\n operators,\n combinators,\n maxDepth,\n labels,\n initialTouched: initialState,\n readOnly,\n renderers,\n disableConfirmation,\n allowRepeatedAttributes,\n emptyRenderer,\n }),\n [\n attributes,\n operators,\n combinators,\n maxDepth,\n labels,\n readOnly,\n initialState,\n renderers,\n disableConfirmation,\n emptyRenderer,\n allowRepeatedAttributes,\n ],\n );\n\n // Keep track of attributes\n useEffect(() => {\n if (currentAttributes.current == null) {\n // First run, nothing to do\n currentAttributes.current = attributes;\n } else if (currentAttributes.current !== attributes) {\n // Attributes changed. The existing query is almost certainly invalid, so reset it\n currentAttributes.current = attributes;\n dispatchAction({ type: \"reset-query\" });\n }\n }, [attributes]);\n\n useEffect(() => {\n // \"value\" prop was updated by user (when controlled)\n if (!isEqual(prevQuery.current, query)) {\n dispatchAction({\n type: \"set-query\",\n query: setNodeIds(structuredClone(query), state),\n });\n prevQuery.current = query;\n } else if (\n !isEqual(\n clearNodeIds(structuredClone(state)),\n clearNodeIds(structuredClone(query)),\n )\n ) {\n setInitialState(false);\n\n // TODO - remove \"true\" from clearNodeIds in v6 (only keep else statement)\n // To avoid breaking changes, clearNodeIds will delete all ids provided by the user when uncontrolled\n // In the future if the user provides ids, it doesn't make sense to remove them with onChange\n if (!controlled.current) {\n onChange?.(\n clearNodeIds(structuredClone(state), true) as HvQueryBuilderQuery,\n );\n } else {\n // When controlled, the ids provided by the user are not removed. Only the auto generated ones.\n onChange?.(clearNodeIds(structuredClone(state)) as HvQueryBuilderQuery);\n }\n\n prevQuery.current = state;\n // This will only run if uncontrolled\n setQuery(state);\n }\n }, [onChange, query, setQuery, state]);\n\n const handleConfirm = () => {\n if (pendingAction) {\n setPendingAction(undefined);\n pendingAction.actions.forEach((action) => dispatchAction(action));\n }\n };\n\n const handleCancel = () => {\n setPendingAction(undefined);\n };\n\n return (\n <HvQueryBuilderProvider value={contextValue}>\n <RuleGroup\n level={0}\n id={state.id}\n combinator={state.combinator}\n rules={state.rules}\n classes={classes}\n />\n <ConfirmationDialog\n isOpen={pendingAction != null}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n title={pendingAction?.dialog.dialogTitle}\n message={pendingAction?.dialog.dialogMessage}\n confirmButtonLabel={pendingAction?.dialog.dialogConfirm}\n cancelButtonLabel={pendingAction?.dialog.dialogCancel}\n closeButtonTooltip={pendingAction?.dialog.dialogCloseTooltip}\n />\n </HvQueryBuilderProvider>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sources":["../../../src/QueryBuilder/QueryBuilder.tsx"],"sourcesContent":["import { useEffect, useMemo, useReducer, useRef, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { useControlled } from \"../hooks/useControlled\";\nimport { useLabels } from \"../hooks/useLabels\";\nimport { DeepPartial } from \"../types/generic\";\nimport { isEqual } from \"../utils/helpers\";\nimport { ConfirmationDialog } from \"./ConfirmationDialog\";\nimport {\n defaultCombinators,\n defaultLabels,\n defaultOperators,\n HvQueryBuilderProvider,\n} from \"./Context\";\nimport { staticClasses, useClasses } from \"./QueryBuilder.styles\";\nimport { RuleGroup } from \"./RuleGroup\";\nimport {\n AskAction,\n defaultRendererKey,\n HvQueryBuilderAttribute,\n HvQueryBuilderLabels,\n HvQueryBuilderQuery,\n HvQueryBuilderQueryCombinator,\n HvQueryBuilderQueryOperator,\n HvQueryBuilderRenderers,\n} from \"./types\";\nimport { clearNodeIds, emptyGroup, setNodeIds } from \"./utils\";\nimport reducer from \"./utils/reducer\";\n\nexport { staticClasses as queryBuilderClasses };\n\nexport type HvQueryBuilderClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvQueryBuilderProps {\n /** The query attribute types. */\n attributes?: Record<string, HvQueryBuilderAttribute>;\n /** The query rules operators by attribute type and combinator. */\n operators?: Record<string, HvQueryBuilderQueryOperator[]>;\n /** The query combinators operands. */\n combinators?: HvQueryBuilderQueryCombinator[];\n /** The query when the component is controlled. */\n value?: HvQueryBuilderQuery;\n /** The initial query when the component is uncontrolled. */\n defaultValue?: HvQueryBuilderQuery;\n /**\n * The initial query when the component is uncontrolled.\n *\n * @deprecated Use `defaultValue` instead.\n * */\n query?: HvQueryBuilderQuery; // TODO - remove in v6\n /** Callback fired when the query changes. */\n onChange?: (value: HvQueryBuilderQuery) => void;\n /** Max depth of nested query groups. */\n maxDepth?: number;\n /** Object containing all the labels. */\n labels?: DeepPartial<HvQueryBuilderLabels>;\n /** Whether the query builder is in read-only mode. */\n readOnly?: boolean;\n /**\n * Operators that should use the empty value renderer when selected.\n *\n * When one of the listed operators is selected, the rule value is reset and an empty component is rendered.\n * This property takes priority over `renderers`.\n *\n * @default [\"Empty\", \"IsNotEmpty\"]\n * */\n emptyRenderer?: string[];\n /** Custom renderers for the rules' value. */\n renderers?: HvQueryBuilderRenderers;\n /** Whether to opt-out of the confirmation dialogs shown before removing rules and rule groups. @default false. */\n disableConfirmation?: boolean;\n /**\n * Whether to allow attributes to be repeated in AND conditions.\n * By default an error is shown when the selected attribute already exists in an AND conditions.\n * @default false\n */\n allowRepeatedAttributes?: boolean; // TODO - review in v6: should we even have this validation? if needed, we should review its behavior.\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvQueryBuilderClasses;\n}\n\n// TODO - v6\n// - \"range\", \"Empty\", and \"IsNotEmpty\" operators with internal/built-in logic\n// - review query builder validation\n\n// Notes:\n// Deep clone is needed throughout the component to avoid undesired mutations in props, state, and ref values\n\n/**\n * This component allows you to create conditions and group them using logical operators.\n * It outputs a structured set of rules which can be easily parsed to create SQL/NoSQL/whatever queries.\n *\n * Take a look at the [usage page](https://lumada-design.github.io/uikit/master/?path=/docs/widgets-query-builder-usage--docs) to learn more about this component.\n */\nexport const HvQueryBuilder = (props: HvQueryBuilderProps) => {\n const {\n attributes,\n renderers,\n query: queryProp, // TODO - remove in v6\n value,\n defaultValue,\n onChange,\n disableConfirmation = false,\n allowRepeatedAttributes = false,\n operators = defaultOperators,\n combinators = defaultCombinators,\n maxDepth = 1,\n labels: labelsProp,\n readOnly = false,\n emptyRenderer = [\"Empty\", \"IsNotEmpty\"],\n classes: classesProp,\n } = useDefaultProps(\"HvQueryBuilder\", props);\n\n if (\n import.meta.env.DEV &&\n [\n Object.values(attributes || {}).map(({ type }) => type),\n Object.values(operators || {}).flatMap((ops) =>\n ops.map(({ operator }) => operator),\n ),\n ]\n .flat()\n ?.find((key) => key === defaultRendererKey)\n ) {\n // eslint-disable-next-line no-console\n console.error(\n `${defaultRendererKey} is a restricted key and shouldn't be used as an attribute or operator type. Update the key to avoid unexpected behaviors.`,\n );\n }\n\n const { classes } = useClasses(classesProp);\n\n const currentAttributes = useRef<HvQueryBuilderProps[\"attributes\"] | null>(\n null,\n );\n\n const controlled = useRef(value != null);\n const initialQuery = useRef(\n value ?? defaultValue ?? queryProp ?? emptyGroup(),\n );\n const [query, setQuery] = useControlled(value, initialQuery.current);\n const prevQuery = useRef(query);\n\n const [pendingAction, setPendingAction] = useState<AskAction>();\n const [initialState, setInitialState] = useState(true);\n\n const [state, dispatchAction] = useReducer(\n reducer,\n setNodeIds(structuredClone(initialQuery.current)),\n );\n\n const labels = useLabels(defaultLabels, labelsProp);\n\n const contextValue = useMemo(\n () => ({\n dispatchAction,\n askAction: setPendingAction,\n attributes,\n operators,\n combinators,\n maxDepth,\n labels,\n initialTouched: initialState,\n readOnly,\n renderers,\n disableConfirmation,\n allowRepeatedAttributes,\n emptyRenderer,\n }),\n [\n attributes,\n operators,\n combinators,\n maxDepth,\n labels,\n readOnly,\n initialState,\n renderers,\n disableConfirmation,\n emptyRenderer,\n allowRepeatedAttributes,\n ],\n );\n\n // Keep track of attributes\n useEffect(() => {\n if (currentAttributes.current == null) {\n // First run, nothing to do\n currentAttributes.current = attributes;\n } else if (currentAttributes.current !== attributes) {\n // Attributes changed. The existing query is almost certainly invalid, so reset it\n currentAttributes.current = attributes;\n dispatchAction({ type: \"reset-query\" });\n }\n }, [attributes]);\n\n useEffect(() => {\n // \"value\" prop was updated by user (when controlled)\n if (!isEqual(prevQuery.current, query)) {\n dispatchAction({\n type: \"set-query\",\n query: setNodeIds(structuredClone(query), state),\n });\n prevQuery.current = query;\n } else if (\n !isEqual(\n clearNodeIds(structuredClone(state)),\n clearNodeIds(structuredClone(query)),\n )\n ) {\n setInitialState(false);\n\n // TODO - remove \"true\" from clearNodeIds in v6 (only keep else statement)\n // To avoid breaking changes, clearNodeIds will delete all ids provided by the user when uncontrolled\n // In the future if the user provides ids, it doesn't make sense to remove them with onChange\n if (!controlled.current) {\n onChange?.(\n clearNodeIds(structuredClone(state), true) as HvQueryBuilderQuery,\n );\n } else {\n // When controlled, the ids provided by the user are not removed. Only the auto generated ones.\n onChange?.(clearNodeIds(structuredClone(state)) as HvQueryBuilderQuery);\n }\n\n prevQuery.current = state;\n // This will only run if uncontrolled\n setQuery(state);\n }\n }, [onChange, query, setQuery, state]);\n\n const handleConfirm = () => {\n if (pendingAction) {\n setPendingAction(undefined);\n pendingAction.actions.forEach((action) => dispatchAction(action));\n }\n };\n\n const handleCancel = () => {\n setPendingAction(undefined);\n };\n\n return (\n <HvQueryBuilderProvider value={contextValue}>\n <RuleGroup\n level={0}\n id={state.id}\n combinator={state.combinator}\n rules={state.rules}\n classes={classes}\n />\n <ConfirmationDialog\n isOpen={pendingAction != null}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n title={pendingAction?.dialog.dialogTitle}\n message={pendingAction?.dialog.dialogMessage}\n confirmButtonLabel={pendingAction?.dialog.dialogConfirm}\n cancelButtonLabel={pendingAction?.dialog.dialogCancel}\n closeButtonTooltip={pendingAction?.dialog.dialogCloseTooltip}\n />\n </HvQueryBuilderProvider>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.styles.js","sources":["../../../src/QueryBuilder/QueryBuilder.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvQueryBuilder\", {\n /** Styles applied to the component root class. */\n root: {\n position: \"relative\",\n padding: theme.space.sm,\n marginTop: 12,\n marginBottom: 32,\n border: `1px solid ${theme.colors.atmo4}`,\n },\n /** Styles applied to the top group container. */\n topGroup: {\n margin: theme.space.sm,\n backgroundColor: \"transparent\",\n maxWidth: \"100%\",\n paddingBottom: theme.space.lg,\n },\n /** Styles applied to the sub group containers. */\n subGroup: {\n margin: \"40px 14px 32px 20px\",\n minHeight: 120,\n paddingBottom: theme.space.md,\n\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 2,\n\n width: 21,\n height: 36,\n\n borderBottom: `1px solid ${theme.colors.atmo4}`,\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: -38,\n left: -38,\n },\n \":not($topRulesContainer)>&:last-child::after\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 1,\n\n width: 32,\n height: \"100%\",\n\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: 0,\n left: `calc(${theme.space.sm} + 2)`,\n },\n },\n /** Styles applied to the radio button+label topGroup when the radio button is disabled. */\n combinator: { minWidth: 80 },\n /** Styles applied to the multi-button combinator container on the top group. */\n topCombinator: {\n position: \"absolute\",\n top: `calc(-1 * ${theme.space.sm})`,\n left: `calc(-1 * ${theme.space.sm})`,\n },\n /** Styles applied to each combinator button. */\n combinatorButton: {},\n /** Styles applied to the remove button. */\n removeButton: {},\n /** Styles applied to the remove button on the top group. */\n topRemoveButton: { position: \"absolute\", top: -16, right: -16 },\n /** Styles applied to the remove button when disabled on the top group. */\n topRemoveButtonDisabled: { backgroundColor: theme.colors.atmo2 },\n /** Styles applied to the rules container. */\n rulesContainer: {},\n /** Styles applied to the sub rules container. */\n subRulesContainer: {\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n marginLeft: theme.space.sm,\n marginBottom: theme.space.md,\n paddingLeft: theme.space.sm,\n paddingTop: 7,\n position: \"relative\",\n left: -33,\n width: \"100%\",\n },\n /** Styles applied to the action button container. */\n actionButtonContainer: {\n marginLeft: \"auto\",\n\n \"&>*\": {\n marginLeft: theme.space.sm,\n },\n },\n /** Styles applied to the top action button container. */\n topActionButtonContainer: {\n position: \"absolute\",\n bottom: `calc(-1 * ${theme.space.md} * 0.5 - 3px)`,\n right: `calc(${theme.space.sm} * 1.75 + 2px)`,\n },\n /** Styles applied to the top rules container. */\n topRulesContainer: {},\n /** Styles applied to the background of buttons to remove transparency */\n buttonBackground: {\n backgroundColor: theme.colors.atmo2,\n display: \"inline-flex\",\n },\n createConditionButton: {\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n padding: 0,\n\n \"&:disabled\": { cursor: \"not-allowed\", pointerEvents: \"none\" },\n },\n createGroupButton: {\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n padding: 0,\n\n \"&:disabled\": { cursor: \"not-allowed\", pointerEvents: \"none\" },\n },\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,YAAY,kBAAkB,cAAc,kBAAkB;AAAA;AAAA,EAE3E,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,SAAS,MAAM,MAAM;AAAA,IACrB,WAAW;AAAA,IACX,cAAc;AAAA,IACd,QAAQ,aAAa,MAAM,OAAO,KAAK;AAAA,EACzC;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,QAAQ,MAAM,MAAM;AAAA,IACpB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,eAAe,MAAM,MAAM;AAAA,EAC7B;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,eAAe,MAAM,MAAM;AAAA,IAE3B,aAAa;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MAER,OAAO;AAAA,MACP,QAAQ;AAAA,MAER,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,MAC7C,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,MAE3C,KAAK;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,gDAAgD;AAAA,MAC9C,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MAER,OAAO;AAAA,MACP,QAAQ;AAAA,MAER,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,MAE3C,KAAK;AAAA,MACL,MAAM,QAAQ,MAAM,MAAM,EAAE;AAAA,
|
|
1
|
+
{"version":3,"file":"QueryBuilder.styles.js","sources":["../../../src/QueryBuilder/QueryBuilder.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvQueryBuilder\", {\n /** Styles applied to the component root class. */\n root: {\n position: \"relative\",\n padding: theme.space.sm,\n marginTop: 12,\n marginBottom: 32,\n border: `1px solid ${theme.colors.atmo4}`,\n },\n /** Styles applied to the top group container. */\n topGroup: {\n margin: theme.space.sm,\n backgroundColor: \"transparent\",\n maxWidth: \"100%\",\n paddingBottom: theme.space.lg,\n },\n /** Styles applied to the sub group containers. */\n subGroup: {\n margin: \"40px 14px 32px 20px\",\n minHeight: 120,\n paddingBottom: theme.space.md,\n\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 2,\n\n width: 21,\n height: 36,\n\n borderBottom: `1px solid ${theme.colors.atmo4}`,\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: -38,\n left: -38,\n },\n \":not($topRulesContainer)>&:last-child::after\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 1,\n\n width: 32,\n height: \"100%\",\n\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: 0,\n left: `calc(${theme.space.sm} + 2)`,\n },\n },\n /** Styles applied to the radio button+label topGroup when the radio button is disabled. */\n combinator: { minWidth: 80 },\n /** Styles applied to the multi-button combinator container on the top group. */\n topCombinator: {\n position: \"absolute\",\n top: `calc(-1 * ${theme.space.sm})`,\n left: `calc(-1 * ${theme.space.sm})`,\n },\n /** Styles applied to each combinator button. */\n combinatorButton: {},\n /** Styles applied to the remove button. */\n removeButton: {},\n /** Styles applied to the remove button on the top group. */\n topRemoveButton: { position: \"absolute\", top: -16, right: -16 },\n /** Styles applied to the remove button when disabled on the top group. */\n topRemoveButtonDisabled: { backgroundColor: theme.colors.atmo2 },\n /** Styles applied to the rules container. */\n rulesContainer: {},\n /** Styles applied to the sub rules container. */\n subRulesContainer: {\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n marginLeft: theme.space.sm,\n marginBottom: theme.space.md,\n paddingLeft: theme.space.sm,\n paddingTop: 7,\n position: \"relative\",\n left: -33,\n width: \"100%\",\n },\n /** Styles applied to the action button container. */\n actionButtonContainer: {\n marginLeft: \"auto\",\n\n \"&>*\": {\n marginLeft: theme.space.sm,\n },\n },\n /** Styles applied to the top action button container. */\n topActionButtonContainer: {\n position: \"absolute\",\n bottom: `calc(-1 * ${theme.space.md} * 0.5 - 3px)`,\n right: `calc(${theme.space.sm} * 1.75 + 2px)`,\n },\n /** Styles applied to the top rules container. */\n topRulesContainer: {},\n /** Styles applied to the background of buttons to remove transparency */\n buttonBackground: {\n backgroundColor: theme.colors.atmo2,\n display: \"inline-flex\",\n },\n createConditionButton: {\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n padding: 0,\n\n \"&:disabled\": { cursor: \"not-allowed\", pointerEvents: \"none\" },\n },\n createGroupButton: {\n cursor: \"pointer\",\n backgroundColor: \"transparent\",\n padding: 0,\n\n \"&:disabled\": { cursor: \"not-allowed\", pointerEvents: \"none\" },\n },\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,YAAY,kBAAkB,cAAc,kBAAkB;AAAA;AAAA,EAE3E,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,SAAS,MAAM,MAAM;AAAA,IACrB,WAAW;AAAA,IACX,cAAc;AAAA,IACd,QAAQ,aAAa,MAAM,OAAO,KAAK;AAAA,EACzC;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,QAAQ,MAAM,MAAM;AAAA,IACpB,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,eAAe,MAAM,MAAM;AAAA,EAC7B;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,eAAe,MAAM,MAAM;AAAA,IAE3B,aAAa;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MAER,OAAO;AAAA,MACP,QAAQ;AAAA,MAER,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,MAC7C,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,MAE3C,KAAK;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,gDAAgD;AAAA,MAC9C,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,MAER,OAAO;AAAA,MACP,QAAQ;AAAA,MAER,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,MAE3C,KAAK;AAAA,MACL,MAAM,QAAQ,MAAM,MAAM,EAAE;AAAA,IAAA;AAAA,EAEhC;AAAA;AAAA,EAEA,YAAY,EAAE,UAAU,GAAG;AAAA;AAAA,EAE3B,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,aAAa,MAAM,MAAM,EAAE;AAAA,IAChC,MAAM,aAAa,MAAM,MAAM,EAAE;AAAA,EACnC;AAAA;AAAA,EAEA,kBAAkB,CAAC;AAAA;AAAA,EAEnB,cAAc,CAAC;AAAA;AAAA,EAEf,iBAAiB,EAAE,UAAU,YAAY,KAAK,KAAK,OAAO,IAAI;AAAA;AAAA,EAE9D,yBAAyB,EAAE,iBAAiB,MAAM,OAAO,MAAM;AAAA;AAAA,EAE/D,gBAAgB,CAAC;AAAA;AAAA,EAEjB,mBAAmB;AAAA,IACjB,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,IAC3C,YAAY,MAAM,MAAM;AAAA,IACxB,cAAc,MAAM,MAAM;AAAA,IAC1B,aAAa,MAAM,MAAM;AAAA,IACzB,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA;AAAA,EAEA,uBAAuB;AAAA,IACrB,YAAY;AAAA,IAEZ,OAAO;AAAA,MACL,YAAY,MAAM,MAAM;AAAA,IAAA;AAAA,EAE5B;AAAA;AAAA,EAEA,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,QAAQ,aAAa,MAAM,MAAM,EAAE;AAAA,IACnC,OAAO,QAAQ,MAAM,MAAM,EAAE;AAAA,EAC/B;AAAA;AAAA,EAEA,mBAAmB,CAAC;AAAA;AAAA,EAEpB,kBAAkB;AAAA,IAChB,iBAAiB,MAAM,OAAO;AAAA,IAC9B,SAAS;AAAA,EACX;AAAA,EACA,uBAAuB;AAAA,IACrB,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,SAAS;AAAA,IAET,cAAc,EAAE,QAAQ,eAAe,eAAe,OAAO;AAAA,EAC/D;AAAA,EACA,mBAAmB;AAAA,IACjB,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,SAAS;AAAA,IAET,cAAc,EAAE,QAAQ,eAAe,eAAe,OAAO;AAAA,EAAA;AAEjE,CAAC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attribute.js","sources":["../../../../../src/QueryBuilder/Rule/Attribute/Attribute.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { HvDropdown } from \"../../../Dropdown\";\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { isBigList } from \"../../utils\";\n\nexport interface AttributeProps {\n id: React.Key;\n attribute?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n}\n\nexport const Attribute = ({\n id,\n attribute,\n disabled,\n isInvalid,\n}: AttributeProps) => {\n const { dispatchAction, attributes, operators, labels, readOnly } =\n useQueryBuilderContext();\n\n const values = useMemo(() => {\n if (!attributes) return [];\n\n return Object.keys(attributes).map((key) => ({\n id: key,\n label: attributes[key].label,\n selected: key === attribute,\n }));\n }, [attributes, attribute]);\n\n const currentType =\n attribute != null && attributes ? attributes[attribute]?.type : null;\n\n return (\n <HvDropdown\n singleSelectionToggle={false}\n label={labels.rule.attribute.label}\n placeholder={labels.rule.attribute.placeholder}\n values={values}\n disabled={disabled}\n readOnly={readOnly}\n status={isInvalid ? \"invalid\" : \"valid\"}\n statusMessage={labels.rule.attribute.exists}\n onChange={(selected) => {\n if (selected) {\n const attributeId = selected.id;\n\n const type =\n attributes && attributeId && attributes[attributeId]?.type;\n const typeOperators = type ? operators[type] : undefined;\n\n let operator;\n if (currentType === type) {\n operator = undefined;\n } else if (typeOperators?.length === 1) {\n operator = typeOperators[0].operator;\n } else {\n operator = null;\n }\n\n // default boolean attributes to true\n const value = type === \"boolean\" ? true : undefined;\n\n dispatchAction({\n type: \"set-attribute\",\n id,\n attribute: attributeId?.toString(),\n operator,\n value,\n });\n } else {\n dispatchAction({ type: \"set-attribute\", id, attribute: null });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(Attribute);\n"],"names":[],"mappings":";;;;;AAaO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAsB;AACpB,QAAM,EAAE,gBAAgB,YAAY,WAAW,QAAQ,
|
|
1
|
+
{"version":3,"file":"Attribute.js","sources":["../../../../../src/QueryBuilder/Rule/Attribute/Attribute.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { HvDropdown } from \"../../../Dropdown\";\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { isBigList } from \"../../utils\";\n\nexport interface AttributeProps {\n id: React.Key;\n attribute?: string;\n disabled?: boolean;\n isInvalid?: boolean;\n}\n\nexport const Attribute = ({\n id,\n attribute,\n disabled,\n isInvalid,\n}: AttributeProps) => {\n const { dispatchAction, attributes, operators, labels, readOnly } =\n useQueryBuilderContext();\n\n const values = useMemo(() => {\n if (!attributes) return [];\n\n return Object.keys(attributes).map((key) => ({\n id: key,\n label: attributes[key].label,\n selected: key === attribute,\n }));\n }, [attributes, attribute]);\n\n const currentType =\n attribute != null && attributes ? attributes[attribute]?.type : null;\n\n return (\n <HvDropdown\n singleSelectionToggle={false}\n label={labels.rule.attribute.label}\n placeholder={labels.rule.attribute.placeholder}\n values={values}\n disabled={disabled}\n readOnly={readOnly}\n status={isInvalid ? \"invalid\" : \"valid\"}\n statusMessage={labels.rule.attribute.exists}\n onChange={(selected) => {\n if (selected) {\n const attributeId = selected.id;\n\n const type =\n attributes && attributeId && attributes[attributeId]?.type;\n const typeOperators = type ? operators[type] : undefined;\n\n let operator;\n if (currentType === type) {\n operator = undefined;\n } else if (typeOperators?.length === 1) {\n operator = typeOperators[0].operator;\n } else {\n operator = null;\n }\n\n // default boolean attributes to true\n const value = type === \"boolean\" ? true : undefined;\n\n dispatchAction({\n type: \"set-attribute\",\n id,\n attribute: attributeId?.toString(),\n operator,\n value,\n });\n } else {\n dispatchAction({ type: \"set-attribute\", id, attribute: null });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(Attribute);\n"],"names":[],"mappings":";;;;;AAaO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAsB;AACpB,QAAM,EAAE,gBAAgB,YAAY,WAAW,QAAQ,aACrD,uBAAuB;AAEnB,QAAA,SAAS,QAAQ,MAAM;AACvB,QAAA,CAAC,WAAY,QAAO,CAAC;AAEzB,WAAO,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,SAAS;AAAA,MAC3C,IAAI;AAAA,MACJ,OAAO,WAAW,GAAG,EAAE;AAAA,MACvB,UAAU,QAAQ;AAAA,IAAA,EAClB;AAAA,EAAA,GACD,CAAC,YAAY,SAAS,CAAC;AAE1B,QAAM,cACJ,aAAa,QAAQ,aAAa,WAAW,SAAS,GAAG,OAAO;AAGhE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,uBAAuB;AAAA,MACvB,OAAO,OAAO,KAAK,UAAU;AAAA,MAC7B,aAAa,OAAO,KAAK,UAAU;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,YAAY,YAAY;AAAA,MAChC,eAAe,OAAO,KAAK,UAAU;AAAA,MACrC,UAAU,CAAC,aAAa;AACtB,YAAI,UAAU;AACZ,gBAAM,cAAc,SAAS;AAE7B,gBAAM,OACJ,cAAc,eAAe,WAAW,WAAW,GAAG;AACxD,gBAAM,gBAAgB,OAAO,UAAU,IAAI,IAAI;AAE3C,cAAA;AACJ,cAAI,gBAAgB,MAAM;AACb,uBAAA;AAAA,UAAA,WACF,eAAe,WAAW,GAAG;AAC3B,uBAAA,cAAc,CAAC,EAAE;AAAA,UAAA,OACvB;AACM,uBAAA;AAAA,UAAA;AAIP,gBAAA,QAAQ,SAAS,YAAY,OAAO;AAE3B,yBAAA;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,WAAW,aAAa,SAAS;AAAA,YACjC;AAAA,YACA;AAAA,UAAA,CACD;AAAA,QAAA,OACI;AACL,yBAAe,EAAE,MAAM,iBAAiB,IAAI,WAAW,MAAM;AAAA,QAAA;AAAA,MAEjE;AAAA,MACA,YAAY,UAAU,MAAM;AAAA,MAC3B,GAAI,UAAU,MAAM,KAAK,EAAE,aAAa,MAAM,QAAQ,IAAI;AAAA,IAAA;AAAA,EAC7D;AAEJ;AAEe,KAAK,SAAS;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Operator.js","sources":["../../../../../src/QueryBuilder/Rule/Operator/Operator.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { HvDropdown } from \"../../../Dropdown\";\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { isBigList } from \"../../utils\";\n\nexport interface OperatorProps {\n id: React.Key;\n combinator: string;\n attribute: string;\n operator?: string;\n}\n\nexport const Operator = ({\n id,\n combinator,\n attribute,\n operator,\n}: OperatorProps) => {\n const { dispatchAction, attributes, operators, labels, readOnly } =\n useQueryBuilderContext();\n\n const value = operator ?? null;\n\n const values = useMemo(() => {\n const attributeSpec =\n attribute && attributes ? attributes[attribute] : null;\n const options = attributeSpec\n ? (operators[attributeSpec.type].filter((o) =>\n o.combinators.includes(combinator),\n ) ?? [])\n : [];\n return options.map((key) => ({\n id: key.operator,\n label: key.label,\n selected: key.operator === value,\n }));\n }, [attribute, attributes, operators, combinator, value]);\n\n return (\n <HvDropdown\n required\n status=\"valid\"\n singleSelectionToggle={false}\n label={labels.rule.operator.label}\n placeholder={labels.rule.operator.placeholder}\n values={values}\n disabled={values.length === 0}\n readOnly={readOnly}\n onChange={(selected) => {\n if (selected?.id) {\n dispatchAction({\n type: \"set-operator\",\n id,\n operator: selected.id.toString(),\n value:\n value === \"range\" || selected.id === \"range\" ? null : undefined,\n });\n } else {\n dispatchAction({\n type: \"set-operator\",\n id,\n operator: null,\n value: null,\n });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(Operator);\n"],"names":[],"mappings":";;;;;AAaO,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,EAAE,gBAAgB,YAAY,WAAW,QAAQ,
|
|
1
|
+
{"version":3,"file":"Operator.js","sources":["../../../../../src/QueryBuilder/Rule/Operator/Operator.tsx"],"sourcesContent":["import { memo, useMemo } from \"react\";\n\nimport { HvDropdown } from \"../../../Dropdown\";\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { isBigList } from \"../../utils\";\n\nexport interface OperatorProps {\n id: React.Key;\n combinator: string;\n attribute: string;\n operator?: string;\n}\n\nexport const Operator = ({\n id,\n combinator,\n attribute,\n operator,\n}: OperatorProps) => {\n const { dispatchAction, attributes, operators, labels, readOnly } =\n useQueryBuilderContext();\n\n const value = operator ?? null;\n\n const values = useMemo(() => {\n const attributeSpec =\n attribute && attributes ? attributes[attribute] : null;\n const options = attributeSpec\n ? (operators[attributeSpec.type].filter((o) =>\n o.combinators.includes(combinator),\n ) ?? [])\n : [];\n return options.map((key) => ({\n id: key.operator,\n label: key.label,\n selected: key.operator === value,\n }));\n }, [attribute, attributes, operators, combinator, value]);\n\n return (\n <HvDropdown\n required\n status=\"valid\"\n singleSelectionToggle={false}\n label={labels.rule.operator.label}\n placeholder={labels.rule.operator.placeholder}\n values={values}\n disabled={values.length === 0}\n readOnly={readOnly}\n onChange={(selected) => {\n if (selected?.id) {\n dispatchAction({\n type: \"set-operator\",\n id,\n operator: selected.id.toString(),\n value:\n value === \"range\" || selected.id === \"range\" ? null : undefined,\n });\n } else {\n dispatchAction({\n type: \"set-operator\",\n id,\n operator: null,\n value: null,\n });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(Operator);\n"],"names":[],"mappings":";;;;;AAaO,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,EAAE,gBAAgB,YAAY,WAAW,QAAQ,aACrD,uBAAuB;AAEzB,QAAM,QAAQ,YAAY;AAEpB,QAAA,SAAS,QAAQ,MAAM;AAC3B,UAAM,gBACJ,aAAa,aAAa,WAAW,SAAS,IAAI;AACpD,UAAM,UAAU,gBACX,UAAU,cAAc,IAAI,EAAE;AAAA,MAAO,CAAC,MACrC,EAAE,YAAY,SAAS,UAAU;AAAA,IACnC,KAAK,CAAC,IACN,CAAC;AACE,WAAA,QAAQ,IAAI,CAAC,SAAS;AAAA,MAC3B,IAAI,IAAI;AAAA,MACR,OAAO,IAAI;AAAA,MACX,UAAU,IAAI,aAAa;AAAA,IAAA,EAC3B;AAAA,EAAA,GACD,CAAC,WAAW,YAAY,WAAW,YAAY,KAAK,CAAC;AAGtD,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAQ;AAAA,MACR,QAAO;AAAA,MACP,uBAAuB;AAAA,MACvB,OAAO,OAAO,KAAK,SAAS;AAAA,MAC5B,aAAa,OAAO,KAAK,SAAS;AAAA,MAClC;AAAA,MACA,UAAU,OAAO,WAAW;AAAA,MAC5B;AAAA,MACA,UAAU,CAAC,aAAa;AACtB,YAAI,UAAU,IAAI;AACD,yBAAA;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,UAAU,SAAS,GAAG,SAAS;AAAA,YAC/B,OACE,UAAU,WAAW,SAAS,OAAO,UAAU,OAAO;AAAA,UAAA,CACzD;AAAA,QAAA,OACI;AACU,yBAAA;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,UAAU;AAAA,YACV,OAAO;AAAA,UAAA,CACR;AAAA,QAAA;AAAA,MAEL;AAAA,MACA,YAAY,UAAU,MAAM;AAAA,MAC3B,GAAI,UAAU,MAAM,KAAK,EAAE,aAAa,MAAM,QAAQ,IAAI;AAAA,IAAA;AAAA,EAC7D;AAEJ;AAEe,KAAK,QAAQ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.js","sources":["../../../../src/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Delete } from \"@hitachivantara/uikit-react-icons\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvGrid } from \"../../Grid\";\nimport { HvIconButton } from \"../../IconButton\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { Attribute } from \"./Attribute\";\nimport { Operator } from \"./Operator\";\nimport { staticClasses, useClasses } from \"./Rule.styles\";\nimport { Value } from \"./Value\";\n\nexport { staticClasses as queryBuilderRuleClasses };\n\nexport type HvQueryBuilderRuleClasses = ExtractNames<typeof useClasses>;\n\nexport interface RuleProps {\n id: React.Key;\n combinator: string;\n attribute?: string;\n operator?: string;\n value?: any;\n disabled?: boolean;\n isInvalid: boolean;\n classes?: HvQueryBuilderRuleClasses;\n}\n\nexport const Rule = (props: RuleProps) => {\n const {\n id,\n combinator,\n attribute,\n operator,\n value,\n disabled,\n isInvalid,\n classes: classesProp,\n } = useDefaultProps(\"HvQueryBuilderRule\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const {\n askAction,\n dispatchAction,\n attributes,\n operators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const availableOperators = useMemo(() => {\n const attributeSpec =\n attribute != null && attributes ? attributes[attribute] : null;\n if (attributeSpec != null) {\n const typeOperators = operators[attributeSpec.type];\n if (typeOperators != null) {\n return typeOperators.reduce(\n (count, item) =>\n count + (item.combinators.includes(combinator) ? 1 : 0),\n 0,\n );\n }\n }\n\n return -1;\n }, [attribute, attributes, combinator, operators]);\n\n return (\n <HvGrid\n container\n className={cx(classes.root, { [classes.isMdDown]: isMdDown })}\n spacing={0}\n >\n <HvGrid item xs={12} md={3}>\n <Attribute\n attribute={attribute}\n id={id}\n disabled={disabled}\n isInvalid={isInvalid}\n />\n </HvGrid>\n {attribute != null && availableOperators > 0 && (\n <HvGrid item xs={12} md={3}>\n <Operator\n id={id}\n combinator={combinator}\n attribute={attribute}\n operator={operator}\n />\n </HvGrid>\n )}\n {attribute != null && (operator != null || availableOperators === 0) && (\n <HvGrid item xs={12} md>\n <Value\n attribute={attribute}\n id={id}\n operator={operator}\n value={value}\n />\n </HvGrid>\n )}\n <HvGrid item className={classes.actionsContainer}>\n <HvIconButton\n placement=\"bottom\"\n title={labels.rule.delete.tooltip || labels.rule.delete.ariaLabel}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog: labels.rule.delete,\n })\n }\n disabled={readOnly}\n >\n <Delete />\n </HvIconButton>\n </HvGrid>\n </HvGrid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAgCa,MAAA,OAAO,CAAC,UAAqB;AAClC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EAAA,IACP,gBAAgB,sBAAsB,KAAK;AAE/C,QAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Rule.js","sources":["../../../../src/QueryBuilder/Rule/Rule.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Delete } from \"@hitachivantara/uikit-react-icons\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvGrid } from \"../../Grid\";\nimport { HvIconButton } from \"../../IconButton\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { Attribute } from \"./Attribute\";\nimport { Operator } from \"./Operator\";\nimport { staticClasses, useClasses } from \"./Rule.styles\";\nimport { Value } from \"./Value\";\n\nexport { staticClasses as queryBuilderRuleClasses };\n\nexport type HvQueryBuilderRuleClasses = ExtractNames<typeof useClasses>;\n\nexport interface RuleProps {\n id: React.Key;\n combinator: string;\n attribute?: string;\n operator?: string;\n value?: any;\n disabled?: boolean;\n isInvalid: boolean;\n classes?: HvQueryBuilderRuleClasses;\n}\n\nexport const Rule = (props: RuleProps) => {\n const {\n id,\n combinator,\n attribute,\n operator,\n value,\n disabled,\n isInvalid,\n classes: classesProp,\n } = useDefaultProps(\"HvQueryBuilderRule\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const {\n askAction,\n dispatchAction,\n attributes,\n operators,\n labels,\n readOnly,\n disableConfirmation,\n } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const availableOperators = useMemo(() => {\n const attributeSpec =\n attribute != null && attributes ? attributes[attribute] : null;\n if (attributeSpec != null) {\n const typeOperators = operators[attributeSpec.type];\n if (typeOperators != null) {\n return typeOperators.reduce(\n (count, item) =>\n count + (item.combinators.includes(combinator) ? 1 : 0),\n 0,\n );\n }\n }\n\n return -1;\n }, [attribute, attributes, combinator, operators]);\n\n return (\n <HvGrid\n container\n className={cx(classes.root, { [classes.isMdDown]: isMdDown })}\n spacing={0}\n >\n <HvGrid item xs={12} md={3}>\n <Attribute\n attribute={attribute}\n id={id}\n disabled={disabled}\n isInvalid={isInvalid}\n />\n </HvGrid>\n {attribute != null && availableOperators > 0 && (\n <HvGrid item xs={12} md={3}>\n <Operator\n id={id}\n combinator={combinator}\n attribute={attribute}\n operator={operator}\n />\n </HvGrid>\n )}\n {attribute != null && (operator != null || availableOperators === 0) && (\n <HvGrid item xs={12} md>\n <Value\n attribute={attribute}\n id={id}\n operator={operator}\n value={value}\n />\n </HvGrid>\n )}\n <HvGrid item className={classes.actionsContainer}>\n <HvIconButton\n placement=\"bottom\"\n title={labels.rule.delete.tooltip || labels.rule.delete.ariaLabel}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog: labels.rule.delete,\n })\n }\n disabled={readOnly}\n >\n <Delete />\n </HvIconButton>\n </HvGrid>\n </HvGrid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAgCa,MAAA,OAAO,CAAC,UAAqB;AAClC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EAAA,IACP,gBAAgB,sBAAsB,KAAK;AAE/C,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAExC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,uBAAuB;AAE3B,QAAM,QAAQ,SAAS;AAEvB,QAAM,WAAW,cAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAErD,QAAA,qBAAqB,QAAQ,MAAM;AACvC,UAAM,gBACJ,aAAa,QAAQ,aAAa,WAAW,SAAS,IAAI;AAC5D,QAAI,iBAAiB,MAAM;AACnB,YAAA,gBAAgB,UAAU,cAAc,IAAI;AAClD,UAAI,iBAAiB,MAAM;AACzB,eAAO,cAAc;AAAA,UACnB,CAAC,OAAO,SACN,SAAS,KAAK,YAAY,SAAS,UAAU,IAAI,IAAI;AAAA,UACvD;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAGK,WAAA;AAAA,KACN,CAAC,WAAW,YAAY,YAAY,SAAS,CAAC;AAG/C,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,MACT,WAAW,GAAG,QAAQ,MAAM,EAAE,CAAC,QAAQ,QAAQ,GAAG,UAAU;AAAA,MAC5D,SAAS;AAAA,MAET,UAAA;AAAA,QAAA,oBAAC,UAAO,MAAI,MAAC,IAAI,IAAI,IAAI,GACvB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QACC,aAAa,QAAQ,qBAAqB,KACzC,oBAAC,QAAO,EAAA,MAAI,MAAC,IAAI,IAAI,IAAI,GACvB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QAED,aAAa,SAAS,YAAY,QAAQ,uBAAuB,MAC/D,oBAAA,QAAA,EAAO,MAAI,MAAC,IAAI,IAAI,IAAE,MACrB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,4BAED,QAAO,EAAA,MAAI,MAAC,WAAW,QAAQ,kBAC9B,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,OAAO,KAAK,OAAO,WAAW,OAAO,KAAK,OAAO;AAAA,YACxD,SAAS,MACP,sBACI,eAAe,EAAE,MAAM,eAAe,IAAI,IAC1C,UAAU;AAAA,cACR,SAAS,CAAC,EAAE,MAAM,eAAe,IAAI;AAAA,cACrC,QAAQ,OAAO,KAAK;AAAA,YAAA,CACrB;AAAA,YAEP,UAAU;AAAA,YAEV,8BAAC,QAAO,CAAA,CAAA;AAAA,UAAA;AAAA,QAAA,EAEZ,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.styles.js","sources":["../../../../src/QueryBuilder/Rule/Rule.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { staticClasses as queryBuilderClasses } from \"../QueryBuilder.styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-Rule\",\n {\n root: {\n position: \"relative\",\n marginTop: theme.space.xs,\n minHeight: 94,\n\n \"&>div:not(:last-child)\": {\n paddingRight: theme.space.md,\n },\n\n // hide required * as all fields are required\n \"& label>span[aria-hidden]\": {\n visibility: \"hidden\",\n },\n\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 2,\n\n width: \"17px\",\n height: \"39px\",\n\n borderBottom: `1px solid ${theme.colors.atmo4}`,\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: 0,\n left: `calc(-1 * 17px)`,\n },\n\n [`:not(.${queryBuilderClasses.topRulesContainer})>&:last-child::after`]: {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 1,\n\n width: \"17px\",\n height: \"100%\",\n\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: 0,\n left: `calc(-1 * 17px)`,\n },\n },\n actionsContainer: {\n marginLeft: \"auto\",\n marginTop: \"24px\",\n\n \"&>:not(:last-child)\": {\n marginRight: theme.space.xs,\n },\n },\n isMdDown: {\n \"&>div:not(:last-child)\": {\n paddingRight: 0,\n },\n \"&>div:not(:first-of-type)\": {\n marginTop: theme.space.xs,\n },\n },\n },\n);\n"],"names":["queryBuilderClasses"],"mappings":";;;AAKa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,WAAW,MAAM,MAAM;AAAA,MACvB,WAAW;AAAA,MAEX,0BAA0B;AAAA,QACxB,cAAc,MAAM,MAAM;AAAA,MAC5B;AAAA;AAAA,MAGA,6BAA6B;AAAA,QAC3B,YAAY;AAAA,MACd;AAAA,MAEA,aAAa;AAAA,QACX,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QAER,OAAO;AAAA,QACP,QAAQ;AAAA,QAER,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,QAC7C,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,QAE3C,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MAEA,CAAC,SAASA,gBAAoB,iBAAiB,uBAAuB,GAAG;AAAA,QACvE,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QAER,OAAO;AAAA,QACP,QAAQ;AAAA,QAER,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,QAE3C,KAAK;AAAA,QACL,MAAM;AAAA,
|
|
1
|
+
{"version":3,"file":"Rule.styles.js","sources":["../../../../src/QueryBuilder/Rule/Rule.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { staticClasses as queryBuilderClasses } from \"../QueryBuilder.styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-Rule\",\n {\n root: {\n position: \"relative\",\n marginTop: theme.space.xs,\n minHeight: 94,\n\n \"&>div:not(:last-child)\": {\n paddingRight: theme.space.md,\n },\n\n // hide required * as all fields are required\n \"& label>span[aria-hidden]\": {\n visibility: \"hidden\",\n },\n\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 2,\n\n width: \"17px\",\n height: \"39px\",\n\n borderBottom: `1px solid ${theme.colors.atmo4}`,\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: 0,\n left: `calc(-1 * 17px)`,\n },\n\n [`:not(.${queryBuilderClasses.topRulesContainer})>&:last-child::after`]: {\n content: '\"\"',\n position: \"absolute\",\n zIndex: 1,\n\n width: \"17px\",\n height: \"100%\",\n\n borderLeft: `1px solid ${theme.colors.atmo4}`,\n\n top: 0,\n left: `calc(-1 * 17px)`,\n },\n },\n actionsContainer: {\n marginLeft: \"auto\",\n marginTop: \"24px\",\n\n \"&>:not(:last-child)\": {\n marginRight: theme.space.xs,\n },\n },\n isMdDown: {\n \"&>div:not(:last-child)\": {\n paddingRight: 0,\n },\n \"&>div:not(:first-of-type)\": {\n marginTop: theme.space.xs,\n },\n },\n },\n);\n"],"names":["queryBuilderClasses"],"mappings":";;;AAKa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,WAAW,MAAM,MAAM;AAAA,MACvB,WAAW;AAAA,MAEX,0BAA0B;AAAA,QACxB,cAAc,MAAM,MAAM;AAAA,MAC5B;AAAA;AAAA,MAGA,6BAA6B;AAAA,QAC3B,YAAY;AAAA,MACd;AAAA,MAEA,aAAa;AAAA,QACX,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QAER,OAAO;AAAA,QACP,QAAQ;AAAA,QAER,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,QAC7C,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,QAE3C,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MAEA,CAAC,SAASA,gBAAoB,iBAAiB,uBAAuB,GAAG;AAAA,QACvE,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ;AAAA,QAER,OAAO;AAAA,QACP,QAAQ;AAAA,QAER,YAAY,aAAa,MAAM,OAAO,KAAK;AAAA,QAE3C,KAAK;AAAA,QACL,MAAM;AAAA,MAAA;AAAA,IAEV;AAAA,IACA,kBAAkB;AAAA,MAChB,YAAY;AAAA,MACZ,WAAW;AAAA,MAEX,uBAAuB;AAAA,QACrB,aAAa,MAAM,MAAM;AAAA,MAAA;AAAA,IAE7B;AAAA,IACA,UAAU;AAAA,MACR,0BAA0B;AAAA,QACxB,cAAc;AAAA,MAChB;AAAA,MACA,6BAA6B;AAAA,QAC3B,WAAW,MAAM,MAAM;AAAA,MAAA;AAAA,IACzB;AAAA,EACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { HvDropdown } from \"../../../../Dropdown\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { isBigList } from \"../../../utils\";\n\nexport interface BooleanValueProps {\n id: React.Key;\n value?: boolean;\n}\n\nexport const BooleanValue = ({ id, value = true }: BooleanValueProps) => {\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const values = [\"true\", \"false\"].map((v) => ({\n id: v,\n label: labels.rule.value.boolean.options[v],\n selected: value === (v === \"true\"),\n }));\n\n return (\n <HvDropdown\n required\n status=\"valid\"\n singleSelectionToggle={false}\n label={labels.rule.value.boolean.label}\n placeholder={labels.rule.value.boolean.placeholder}\n values={values}\n readOnly={readOnly}\n onChange={(selected) => {\n if (selected?.id) {\n dispatchAction({\n type: \"set-value\",\n id,\n value: selected.id === \"true\",\n });\n } else {\n dispatchAction({ type: \"set-value\", id, value: null });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(BooleanValue);\n"],"names":[],"mappings":";;;;;AAWO,MAAM,eAAe,CAAC,EAAE,IAAI,QAAQ,WAA8B;AACvE,QAAM,EAAE,QAAQ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"BooleanValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { HvDropdown } from \"../../../../Dropdown\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { isBigList } from \"../../../utils\";\n\nexport interface BooleanValueProps {\n id: React.Key;\n value?: boolean;\n}\n\nexport const BooleanValue = ({ id, value = true }: BooleanValueProps) => {\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const values = [\"true\", \"false\"].map((v) => ({\n id: v,\n label: labels.rule.value.boolean.options[v],\n selected: value === (v === \"true\"),\n }));\n\n return (\n <HvDropdown\n required\n status=\"valid\"\n singleSelectionToggle={false}\n label={labels.rule.value.boolean.label}\n placeholder={labels.rule.value.boolean.placeholder}\n values={values}\n readOnly={readOnly}\n onChange={(selected) => {\n if (selected?.id) {\n dispatchAction({\n type: \"set-value\",\n id,\n value: selected.id === \"true\",\n });\n } else {\n dispatchAction({ type: \"set-value\", id, value: null });\n }\n }}\n showSearch={isBigList(values)}\n {...(isBigList(values) && { virtualized: true, height: 300 })}\n />\n );\n};\n\nexport default memo(BooleanValue);\n"],"names":[],"mappings":";;;;;AAWO,MAAM,eAAe,CAAC,EAAE,IAAI,QAAQ,WAA8B;AACvE,QAAM,EAAE,QAAQ,gBAAgB,SAAA,IAAa,uBAAuB;AAEpE,QAAM,SAAS,CAAC,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAAA,IAC3C,IAAI;AAAA,IACJ,OAAO,OAAO,KAAK,MAAM,QAAQ,QAAQ,CAAC;AAAA,IAC1C,UAAU,WAAW,MAAM;AAAA,EAAA,EAC3B;AAGA,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAQ;AAAA,MACR,QAAO;AAAA,MACP,uBAAuB;AAAA,MACvB,OAAO,OAAO,KAAK,MAAM,QAAQ;AAAA,MACjC,aAAa,OAAO,KAAK,MAAM,QAAQ;AAAA,MACvC;AAAA,MACA;AAAA,MACA,UAAU,CAAC,aAAa;AACtB,YAAI,UAAU,IAAI;AACD,yBAAA;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,OAAO,SAAS,OAAO;AAAA,UAAA,CACxB;AAAA,QAAA,OACI;AACL,yBAAe,EAAE,MAAM,aAAa,IAAI,OAAO,MAAM;AAAA,QAAA;AAAA,MAEzD;AAAA,MACA,YAAY,UAAU,MAAM;AAAA,MAC3B,GAAI,UAAU,MAAM,KAAK,EAAE,aAAa,MAAM,QAAQ,IAAI;AAAA,IAAA;AAAA,EAC7D;AAEJ;AAEe,KAAK,YAAY;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport dayjs from \"dayjs\";\n\nimport { HvDatePicker } from \"../../../../DatePicker\";\nimport { HvWarningText } from \"../../../../Forms\";\nimport { HvTimePicker, HvTimePickerValue } from \"../../../../TimePicker\";\nimport { uniqueId } from \"../../../../utils/helpers\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./DateTimeValue.styles\";\nimport { padTime, parseDate, parseTime } from \"./utils\";\n\nfunction valueIsRange(operator?: string) {\n return operator === \"range\";\n}\n\nexport interface DateTimeValueProps {\n id: React.Key;\n operator?: string;\n value?: any;\n initialTouched?: boolean;\n}\n\nexport const DateTimeValue = ({\n id,\n operator,\n value: valueProp = {},\n initialTouched = false,\n}: DateTimeValueProps) => {\n const { classes, cx } = useClasses();\n\n const theme = useTheme();\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const isRange = valueIsRange(operator);\n\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const elementId = uniqueId(`datetime${id}`);\n\n const [touchedDate, setTouchedDate] = useState(initialTouched);\n const [touchedTime, setTouchedTime] = useState(initialTouched);\n const [touchedEndDate, setTouchedEndDate] = useState(initialTouched);\n const [touchedEndTime, setTouchedEndTime] = useState(initialTouched);\n\n const onDateChange = useCallback(\n (data?: Date) => {\n setTouchedDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n const oldValue = !isRange ? valueProp?.date : valueProp?.start?.date;\n\n if (date !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date,\n time: valueProp?.time,\n };\n } else {\n value = {\n start: {\n date,\n time: valueProp?.start?.time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp],\n );\n\n const onTimeChange = useCallback(\n (data: HvTimePickerValue) => {\n setTouchedTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds,\n )}`;\n }\n\n const oldValue = !isRange ? valueProp?.time : valueProp?.start?.time;\n\n if (time !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date: valueProp?.date,\n time,\n };\n } else {\n value = {\n start: {\n date: valueProp?.start?.date,\n time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp],\n );\n\n const onEndDateChange = useCallback(\n (data?: Date) => {\n setTouchedEndDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n if (date !== valueProp?.end?.date) {\n const value = {\n start: valueProp?.start,\n end: {\n date,\n time: valueProp?.end?.time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp],\n );\n\n const onEndTimeChange = useCallback(\n (data: HvTimePickerValue) => {\n setTouchedEndTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds,\n )}`;\n }\n\n if (time !== valueProp?.end?.time) {\n const value = {\n start: valueProp?.start,\n end: {\n date: valueProp?.end?.date,\n time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp],\n );\n\n const startDate = isRange ? valueProp?.start?.date : valueProp?.date;\n const datePickerValue = useMemo(() => parseDate(startDate), [startDate]);\n const datePickerStatus = datePickerValue != null ? \"valid\" : \"invalid\";\n\n const startTime = (isRange ? valueProp?.start?.time : valueProp?.time) ?? \"\";\n const timePickerValue = useMemo(() => parseTime(startTime), [startTime]);\n const timePickerStatus = timePickerValue != null ? \"valid\" : \"invalid\";\n\n const endDate = isRange ? valueProp?.end?.date : null;\n const endDatePickerValue = useMemo(() => parseDate(endDate), [endDate]);\n\n const endTime = isRange ? valueProp?.end?.time : null;\n const endTimePickerValue = useMemo(() => parseTime(endTime), [endTime]);\n\n const dateStatus = !touchedDate ? \"standBy\" : datePickerStatus;\n const timeStatus = !touchedTime ? \"standBy\" : timePickerStatus;\n\n const endDateIsBefore =\n startDate != null && endDate != null && endDate < startDate;\n\n const endTimeIsBeforeOrSame =\n startDate != null &&\n endDate != null &&\n endDate === startDate &&\n startTime != null &&\n endTime != null &&\n endTime <= startTime;\n\n const endDateTimeIsBefore = endDateIsBefore || endTimeIsBeforeOrSame;\n\n const endDatePickerStatus =\n endDatePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endDateStatus = !touchedEndDate ? \"standBy\" : endDatePickerStatus;\n\n const endTimePickerStatus =\n endTimePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endTimeStatus = !touchedEndTime ? \"standBy\" : endTimePickerStatus;\n\n return (\n <div className={classes.root}>\n <div\n className={cx(classes.row, classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-date`}\n required\n status={dateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startDateLabel\n : labels.rule.value.datetime.dateLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startDatePlaceholder\n : labels.rule.value.datetime.datePlaceholder\n }\n value={datePickerValue}\n onChange={onDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-time`}\n required\n status={timeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startTimeLabel\n : labels.rule.value.datetime.timeLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startTimePlaceholder\n : labels.rule.value.datetime.timePlaceholder\n }\n value={timePickerValue || undefined}\n onChange={onTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedTime) {\n setTouchedTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n {isRange && (\n <div className={cx(classes.row, classes.vertical)}>\n <div\n className={cx(classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-endDate`}\n required\n status={endDateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endDateLabel}\n placeholder={labels.rule.value.datetime.endDatePlaceholder}\n value={endDatePickerValue}\n onChange={onEndDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-endTime`}\n required\n status={endTimeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endTimeLabel}\n placeholder={labels.rule.value.datetime.endTimePlaceholder}\n value={endTimePickerValue || undefined}\n onChange={onEndTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedEndTime) {\n setTouchedEndTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n <HvWarningText\n disableBorder\n id={`${elementId}-combined-error`}\n isVisible={endDateTimeIsBefore}\n >\n {labels.rule.value.datetime.validation.invalidInterval}\n </HvWarningText>\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(DateTimeValue);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimeValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport dayjs from \"dayjs\";\n\nimport { HvDatePicker } from \"../../../../DatePicker\";\nimport { HvWarningText } from \"../../../../Forms\";\nimport { HvTimePicker, HvTimePickerValue } from \"../../../../TimePicker\";\nimport { uniqueId } from \"../../../../utils/helpers\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./DateTimeValue.styles\";\nimport { padTime, parseDate, parseTime } from \"./utils\";\n\nfunction valueIsRange(operator?: string) {\n return operator === \"range\";\n}\n\nexport interface DateTimeValueProps {\n id: React.Key;\n operator?: string;\n value?: any;\n initialTouched?: boolean;\n}\n\nexport const DateTimeValue = ({\n id,\n operator,\n value: valueProp = {},\n initialTouched = false,\n}: DateTimeValueProps) => {\n const { classes, cx } = useClasses();\n\n const theme = useTheme();\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const isRange = valueIsRange(operator);\n\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const elementId = uniqueId(`datetime${id}`);\n\n const [touchedDate, setTouchedDate] = useState(initialTouched);\n const [touchedTime, setTouchedTime] = useState(initialTouched);\n const [touchedEndDate, setTouchedEndDate] = useState(initialTouched);\n const [touchedEndTime, setTouchedEndTime] = useState(initialTouched);\n\n const onDateChange = useCallback(\n (data?: Date) => {\n setTouchedDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n const oldValue = !isRange ? valueProp?.date : valueProp?.start?.date;\n\n if (date !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date,\n time: valueProp?.time,\n };\n } else {\n value = {\n start: {\n date,\n time: valueProp?.start?.time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp],\n );\n\n const onTimeChange = useCallback(\n (data: HvTimePickerValue) => {\n setTouchedTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds,\n )}`;\n }\n\n const oldValue = !isRange ? valueProp?.time : valueProp?.start?.time;\n\n if (time !== oldValue) {\n let value;\n if (!isRange) {\n value = {\n date: valueProp?.date,\n time,\n };\n } else {\n value = {\n start: {\n date: valueProp?.start?.date,\n time,\n },\n end: valueProp?.end,\n };\n }\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, isRange, valueProp],\n );\n\n const onEndDateChange = useCallback(\n (data?: Date) => {\n setTouchedEndDate(true);\n\n let date;\n if (data != null) {\n date = dayjs(data).format(\"YYYY-MM-DD\");\n }\n\n if (date !== valueProp?.end?.date) {\n const value = {\n start: valueProp?.start,\n end: {\n date,\n time: valueProp?.end?.time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp],\n );\n\n const onEndTimeChange = useCallback(\n (data: HvTimePickerValue) => {\n setTouchedEndTime(true);\n\n let time;\n if (data != null) {\n time = `${padTime(data.hours)}:${padTime(data.minutes)}:${padTime(\n data.seconds,\n )}`;\n }\n\n if (time !== valueProp?.end?.time) {\n const value = {\n start: valueProp?.start,\n end: {\n date: valueProp?.end?.date,\n time,\n },\n };\n\n dispatchAction({\n type: \"set-value\",\n id,\n value,\n });\n }\n },\n [dispatchAction, id, valueProp],\n );\n\n const startDate = isRange ? valueProp?.start?.date : valueProp?.date;\n const datePickerValue = useMemo(() => parseDate(startDate), [startDate]);\n const datePickerStatus = datePickerValue != null ? \"valid\" : \"invalid\";\n\n const startTime = (isRange ? valueProp?.start?.time : valueProp?.time) ?? \"\";\n const timePickerValue = useMemo(() => parseTime(startTime), [startTime]);\n const timePickerStatus = timePickerValue != null ? \"valid\" : \"invalid\";\n\n const endDate = isRange ? valueProp?.end?.date : null;\n const endDatePickerValue = useMemo(() => parseDate(endDate), [endDate]);\n\n const endTime = isRange ? valueProp?.end?.time : null;\n const endTimePickerValue = useMemo(() => parseTime(endTime), [endTime]);\n\n const dateStatus = !touchedDate ? \"standBy\" : datePickerStatus;\n const timeStatus = !touchedTime ? \"standBy\" : timePickerStatus;\n\n const endDateIsBefore =\n startDate != null && endDate != null && endDate < startDate;\n\n const endTimeIsBeforeOrSame =\n startDate != null &&\n endDate != null &&\n endDate === startDate &&\n startTime != null &&\n endTime != null &&\n endTime <= startTime;\n\n const endDateTimeIsBefore = endDateIsBefore || endTimeIsBeforeOrSame;\n\n const endDatePickerStatus =\n endDatePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endDateStatus = !touchedEndDate ? \"standBy\" : endDatePickerStatus;\n\n const endTimePickerStatus =\n endTimePickerValue == null || endDateTimeIsBefore ? \"invalid\" : \"valid\";\n const endTimeStatus = !touchedEndTime ? \"standBy\" : endTimePickerStatus;\n\n return (\n <div className={classes.root}>\n <div\n className={cx(classes.row, classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-date`}\n required\n status={dateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startDateLabel\n : labels.rule.value.datetime.dateLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startDatePlaceholder\n : labels.rule.value.datetime.datePlaceholder\n }\n value={datePickerValue}\n onChange={onDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-time`}\n required\n status={timeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n label={\n isRange\n ? labels.rule.value.datetime.startTimeLabel\n : labels.rule.value.datetime.timeLabel\n }\n placeholder={\n isRange\n ? labels.rule.value.datetime.startTimePlaceholder\n : labels.rule.value.datetime.timePlaceholder\n }\n value={timePickerValue || undefined}\n onChange={onTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedTime) {\n setTouchedTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n {isRange && (\n <div className={cx(classes.row, classes.vertical)}>\n <div\n className={cx(classes.horizontal, {\n [classes.isMdDown]: isMdDown,\n })}\n >\n <HvDatePicker\n className={classes.datePicker}\n name={`${elementId}-endDate`}\n required\n status={endDateStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endDateLabel}\n placeholder={labels.rule.value.datetime.endDatePlaceholder}\n value={endDatePickerValue}\n onChange={onEndDateChange}\n readOnly={readOnly}\n />\n <HvTimePicker\n className={classes.timePicker}\n timeFormat=\"24\"\n name={`${elementId}-endTime`}\n required\n status={endTimeStatus}\n statusMessage={labels.rule.value.datetime.validation.required}\n aria-errormessage={\n endDateTimeIsBefore ? `${elementId}-combined-error` : undefined\n }\n label={labels.rule.value.datetime.endTimeLabel}\n placeholder={labels.rule.value.datetime.endTimePlaceholder}\n value={endTimePickerValue || undefined}\n onChange={onEndTimeChange}\n onToggle={(_evt, open) => {\n if (!open && !touchedEndTime) {\n setTouchedEndTime(true);\n }\n }}\n readOnly={readOnly}\n />\n </div>\n <HvWarningText\n disableBorder\n id={`${elementId}-combined-error`}\n isVisible={endDateTimeIsBefore}\n >\n {labels.rule.value.datetime.validation.invalidInterval}\n </HvWarningText>\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(DateTimeValue);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeValue.styles.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-DateTimeValue\",\n {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n row: {},\n vertical: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n horizontal: {\n display: \"flex\",\n\n \"& > div:not(:last-child)\": {\n marginRight: theme.space.md,\n },\n },\n isMdDown: {\n \"& > div:not(:last-child)\": {\n marginRight: `calc(${theme.space.md} / 2)`,\n },\n },\n datePicker: {\n flex: 1,\n },\n timePicker: {\n flex: 1,\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IACA,KAAK,CAAC;AAAA,IACN,UAAU;AAAA,MACR,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IACA,YAAY;AAAA,MACV,SAAS;AAAA,MAET,4BAA4B;AAAA,QAC1B,aAAa,MAAM,MAAM;AAAA,
|
|
1
|
+
{"version":3,"file":"DateTimeValue.styles.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-DateTimeValue\",\n {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n row: {},\n vertical: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n horizontal: {\n display: \"flex\",\n\n \"& > div:not(:last-child)\": {\n marginRight: theme.space.md,\n },\n },\n isMdDown: {\n \"& > div:not(:last-child)\": {\n marginRight: `calc(${theme.space.md} / 2)`,\n },\n },\n datePicker: {\n flex: 1,\n },\n timePicker: {\n flex: 1,\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IACA,KAAK,CAAC;AAAA,IACN,UAAU;AAAA,MACR,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,IACA,YAAY;AAAA,MACV,SAAS;AAAA,MAET,4BAA4B;AAAA,QAC1B,aAAa,MAAM,MAAM;AAAA,MAAA;AAAA,IAE7B;AAAA,IACA,UAAU;AAAA,MACR,4BAA4B;AAAA,QAC1B,aAAa,QAAQ,MAAM,MAAM,EAAE;AAAA,MAAA;AAAA,IAEvC;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/DateTimeValue/utils.tsx"],"sourcesContent":["import dayjs from \"dayjs\";\n\n/**\n * Pads the unit time values so that they always have two digits\n * @param {Number} value - unit time value\n * @returns The unit time value with two digits\n */\nexport const padTime = (value: number) => {\n if (!value || value < 0) {\n return \"00\";\n }\n if (value < 10 && value.toString().length === 1) {\n return `0${value.toString()}`;\n }\n\n return value.toString();\n};\n\nexport const parseDate = (date: string) => {\n if (date != null) {\n return dayjs(date).toDate();\n }\n\n return undefined;\n};\n\nexport const parseTime = (time: string) => {\n if (time != null) {\n const parts = time.split(\":\");\n\n if (parts.length === 3) {\n return {\n hours: Number.parseInt(parts[0], 10),\n minutes: Number.parseInt(parts[1], 10),\n seconds: Number.parseInt(parts[2], 10),\n };\n }\n }\n\n return null;\n};\n"],"names":[],"mappings":";AAOa,MAAA,UAAU,CAAC,UAAkB;AACpC,MAAA,CAAC,SAAS,QAAQ,GAAG;AAChB,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/DateTimeValue/utils.tsx"],"sourcesContent":["import dayjs from \"dayjs\";\n\n/**\n * Pads the unit time values so that they always have two digits\n * @param {Number} value - unit time value\n * @returns The unit time value with two digits\n */\nexport const padTime = (value: number) => {\n if (!value || value < 0) {\n return \"00\";\n }\n if (value < 10 && value.toString().length === 1) {\n return `0${value.toString()}`;\n }\n\n return value.toString();\n};\n\nexport const parseDate = (date: string) => {\n if (date != null) {\n return dayjs(date).toDate();\n }\n\n return undefined;\n};\n\nexport const parseTime = (time: string) => {\n if (time != null) {\n const parts = time.split(\":\");\n\n if (parts.length === 3) {\n return {\n hours: Number.parseInt(parts[0], 10),\n minutes: Number.parseInt(parts[1], 10),\n seconds: Number.parseInt(parts[2], 10),\n };\n }\n }\n\n return null;\n};\n"],"names":[],"mappings":";AAOa,MAAA,UAAU,CAAC,UAAkB;AACpC,MAAA,CAAC,SAAS,QAAQ,GAAG;AAChB,WAAA;AAAA,EAAA;AAET,MAAI,QAAQ,MAAM,MAAM,SAAS,EAAE,WAAW,GAAG;AACxC,WAAA,IAAI,MAAM,SAAU,CAAA;AAAA,EAAA;AAG7B,SAAO,MAAM,SAAS;AACxB;AAEa,MAAA,YAAY,CAAC,SAAiB;AACzC,MAAI,QAAQ,MAAM;AACT,WAAA,MAAM,IAAI,EAAE,OAAO;AAAA,EAAA;AAGrB,SAAA;AACT;AAEa,MAAA,YAAY,CAAC,SAAiB;AACzC,MAAI,QAAQ,MAAM;AACV,UAAA,QAAQ,KAAK,MAAM,GAAG;AAExB,QAAA,MAAM,WAAW,GAAG;AACf,aAAA;AAAA,QACL,OAAO,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE;AAAA,QACnC,SAAS,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE;AAAA,QACrC,SAAS,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE;AAAA,MACvC;AAAA,IAAA;AAAA,EACF;AAGK,SAAA;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/EmptyValue/EmptyValue.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\n\nexport interface EmptyValueProps {\n id: React.Key;\n}\n\nexport const EmptyValue = ({ id }: EmptyValueProps) => {\n const { dispatchAction } = useQueryBuilderContext();\n\n // Clear value on first render\n useEffect(() => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: null,\n });\n }, [dispatchAction, id]);\n\n return null;\n};\n"],"names":[],"mappings":";;AAQO,MAAM,aAAa,CAAC,EAAE,SAA0B;AAC/C,QAAA,EAAE,
|
|
1
|
+
{"version":3,"file":"EmptyValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/EmptyValue/EmptyValue.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\n\nexport interface EmptyValueProps {\n id: React.Key;\n}\n\nexport const EmptyValue = ({ id }: EmptyValueProps) => {\n const { dispatchAction } = useQueryBuilderContext();\n\n // Clear value on first render\n useEffect(() => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: null,\n });\n }, [dispatchAction, id]);\n\n return null;\n};\n"],"names":[],"mappings":";;AAQO,MAAM,aAAa,CAAC,EAAE,SAA0B;AAC/C,QAAA,EAAE,eAAe,IAAI,uBAAuB;AAGlD,YAAU,MAAM;AACC,mBAAA;AAAA,MACb,MAAM;AAAA,MACN;AAAA,MACA,OAAO;AAAA,IAAA,CACR;AAAA,EAAA,GACA,CAAC,gBAAgB,EAAE,CAAC;AAEhB,SAAA;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Numeric.styles.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-NumericValue\",\n {\n root: {},\n label: {\n paddingBottom: \"6px\",\n },\n inputContainer: {},\n rangeContainer: {\n display: \"flex\",\n\n \"& $inputContainer\": {\n flexGrow: 1,\n overflow: \"auto\",\n },\n\n \"& > $inputContainer:not(:last-child)\": {\n marginRight: theme.space.md,\n },\n },\n input: {\n flexGrow: 1,\n },\n isMdDown: {\n \"& > $inputContainer:not(:last-child)\": {\n marginRight: `calc(${theme.space.md} / 2)`,\n },\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM,CAAC;AAAA,IACP,OAAO;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,IACA,gBAAgB,CAAC;AAAA,IACjB,gBAAgB;AAAA,MACd,SAAS;AAAA,MAET,qBAAqB;AAAA,QACnB,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,MAEA,wCAAwC;AAAA,QACtC,aAAa,MAAM,MAAM;AAAA,
|
|
1
|
+
{"version":3,"file":"Numeric.styles.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-NumericValue\",\n {\n root: {},\n label: {\n paddingBottom: \"6px\",\n },\n inputContainer: {},\n rangeContainer: {\n display: \"flex\",\n\n \"& $inputContainer\": {\n flexGrow: 1,\n overflow: \"auto\",\n },\n\n \"& > $inputContainer:not(:last-child)\": {\n marginRight: theme.space.md,\n },\n },\n input: {\n flexGrow: 1,\n },\n isMdDown: {\n \"& > $inputContainer:not(:last-child)\": {\n marginRight: `calc(${theme.space.md} / 2)`,\n },\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM,CAAC;AAAA,IACP,OAAO;AAAA,MACL,eAAe;AAAA,IACjB;AAAA,IACA,gBAAgB,CAAC;AAAA,IACjB,gBAAgB;AAAA,MACd,SAAS;AAAA,MAET,qBAAqB;AAAA,QACnB,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,MAEA,wCAAwC;AAAA,QACtC,aAAa,MAAM,MAAM;AAAA,MAAA;AAAA,IAE7B;AAAA,IACA,OAAO;AAAA,MACL,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,wCAAwC;AAAA,QACtC,aAAa,QAAQ,MAAM,MAAM,EAAE;AAAA,MAAA;AAAA,IACrC;AAAA,EACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumericValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/NumericValue/NumericValue.tsx"],"sourcesContent":["import { memo, useCallback, useState } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { HvInput } from \"../../../../Input\";\nimport { uniqueId } from \"../../../../utils/helpers\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { HvQueryBuilderNumericRange } from \"../../../types\";\nimport { useClasses } from \"./Numeric.styles\";\n\nexport interface NumericValueProps {\n id: React.Key;\n value?: any;\n operator?: string;\n initialTouched?: boolean;\n}\n\nexport const NumericValue = ({\n id,\n value,\n operator,\n initialTouched = false,\n}: NumericValueProps) => {\n const { classes, cx } = useClasses();\n\n const isRange = operator === \"range\";\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const onSingleValueChange = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n data: string,\n ) => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: data ?? null,\n });\n },\n [dispatchAction, id],\n );\n\n const onRangeValueChange = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n data: string,\n from = true,\n ) => {\n const currentValue = value;\n const numericRange = {\n from: currentValue?.from,\n to: currentValue?.to,\n };\n if (from) {\n numericRange.from = data ?? null;\n } else {\n numericRange.to = data ?? null;\n }\n dispatchAction({\n type: \"set-value\",\n id,\n value: numericRange,\n });\n },\n [dispatchAction, id, value],\n );\n\n const [touchedNumeric, setTouchedNumeric] = useState(initialTouched);\n const [touchedNumericTo, setTouchedNumericTo] = useState(initialTouched);\n\n const elementId = uniqueId(\"numeric\");\n\n let numericValidation: \"required\" | \"invalid\" | null = null;\n let rightValidation: \"required\" | \"invalid\" | \"greaterThan\" | \"equal\" | null =\n null;\n\n if (touchedNumeric || touchedNumericTo) {\n if (value === undefined || value?.toString() === \"\") {\n if (touchedNumeric) {\n numericValidation = \"required\";\n }\n if (touchedNumericTo) {\n rightValidation = \"required\";\n }\n } else if (!isRange) {\n if (Number.isNaN(Number(value))) {\n numericValidation = \"invalid\";\n }\n } else if (isRange) {\n const rangeValue = value;\n if (\n rangeValue?.from === undefined ||\n rangeValue?.from?.toString() === \"\"\n ) {\n numericValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.from))) {\n numericValidation = \"invalid\";\n }\n\n if (rangeValue?.to === undefined || rangeValue?.to?.toString() === \"\") {\n rightValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.to))) {\n rightValidation = \"invalid\";\n } else if (Number(rangeValue?.from) > Number(rangeValue?.to)) {\n rightValidation = \"greaterThan\";\n } else if (Number(rangeValue?.from) === Number(rangeValue?.to)) {\n rightValidation = \"equal\";\n }\n }\n }\n\n const numericStatus = numericValidation != null ? \"invalid\" : \"valid\";\n const rightStatus = rightValidation != null ? \"invalid\" : \"valid\";\n\n const renderRangeInputs = (rangeValue: HvQueryBuilderNumericRange) => (\n <div\n className={cx(classes.rangeContainer, { [classes.isMdDown]: isMdDown })}\n >\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.leftLabel}\n className={classes.input}\n id={`${elementId}-numeric-from`}\n name={`${elementId}-numeric-from`}\n value={rangeValue?.from?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data)}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.rightLabel}\n className={classes.input}\n id={`${elementId}-numeric-to`}\n name={`${elementId}-numeric-to`}\n value={rangeValue?.to?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data, false)}\n onBlur={() => {\n setTouchedNumericTo(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumericTo ? \"standBy\" : rightStatus}\n statusMessage={\n rightValidation\n ? labels.rule.value.numeric.validation[rightValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n </div>\n );\n\n return (\n <div className={classes.root}>\n {isRange && renderRangeInputs(value || {})}\n {!isRange && (\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.label}\n className={classes.input}\n id={`${elementId}-numeric`}\n name={`${elementId}-numeric`}\n value={value?.toString() || \"\"}\n onChange={onSingleValueChange}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n readOnly={readOnly}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(NumericValue);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumericValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/NumericValue/NumericValue.tsx"],"sourcesContent":["import { memo, useCallback, useState } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { HvInput } from \"../../../../Input\";\nimport { uniqueId } from \"../../../../utils/helpers\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { HvQueryBuilderNumericRange } from \"../../../types\";\nimport { useClasses } from \"./Numeric.styles\";\n\nexport interface NumericValueProps {\n id: React.Key;\n value?: any;\n operator?: string;\n initialTouched?: boolean;\n}\n\nexport const NumericValue = ({\n id,\n value,\n operator,\n initialTouched = false,\n}: NumericValueProps) => {\n const { classes, cx } = useClasses();\n\n const isRange = operator === \"range\";\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const onSingleValueChange = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n data: string,\n ) => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: data ?? null,\n });\n },\n [dispatchAction, id],\n );\n\n const onRangeValueChange = useCallback(\n (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n data: string,\n from = true,\n ) => {\n const currentValue = value;\n const numericRange = {\n from: currentValue?.from,\n to: currentValue?.to,\n };\n if (from) {\n numericRange.from = data ?? null;\n } else {\n numericRange.to = data ?? null;\n }\n dispatchAction({\n type: \"set-value\",\n id,\n value: numericRange,\n });\n },\n [dispatchAction, id, value],\n );\n\n const [touchedNumeric, setTouchedNumeric] = useState(initialTouched);\n const [touchedNumericTo, setTouchedNumericTo] = useState(initialTouched);\n\n const elementId = uniqueId(\"numeric\");\n\n let numericValidation: \"required\" | \"invalid\" | null = null;\n let rightValidation: \"required\" | \"invalid\" | \"greaterThan\" | \"equal\" | null =\n null;\n\n if (touchedNumeric || touchedNumericTo) {\n if (value === undefined || value?.toString() === \"\") {\n if (touchedNumeric) {\n numericValidation = \"required\";\n }\n if (touchedNumericTo) {\n rightValidation = \"required\";\n }\n } else if (!isRange) {\n if (Number.isNaN(Number(value))) {\n numericValidation = \"invalid\";\n }\n } else if (isRange) {\n const rangeValue = value;\n if (\n rangeValue?.from === undefined ||\n rangeValue?.from?.toString() === \"\"\n ) {\n numericValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.from))) {\n numericValidation = \"invalid\";\n }\n\n if (rangeValue?.to === undefined || rangeValue?.to?.toString() === \"\") {\n rightValidation = \"required\";\n } else if (Number.isNaN(Number(rangeValue?.to))) {\n rightValidation = \"invalid\";\n } else if (Number(rangeValue?.from) > Number(rangeValue?.to)) {\n rightValidation = \"greaterThan\";\n } else if (Number(rangeValue?.from) === Number(rangeValue?.to)) {\n rightValidation = \"equal\";\n }\n }\n }\n\n const numericStatus = numericValidation != null ? \"invalid\" : \"valid\";\n const rightStatus = rightValidation != null ? \"invalid\" : \"valid\";\n\n const renderRangeInputs = (rangeValue: HvQueryBuilderNumericRange) => (\n <div\n className={cx(classes.rangeContainer, { [classes.isMdDown]: isMdDown })}\n >\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.leftLabel}\n className={classes.input}\n id={`${elementId}-numeric-from`}\n name={`${elementId}-numeric-from`}\n value={rangeValue?.from?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data)}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.range.rightLabel}\n className={classes.input}\n id={`${elementId}-numeric-to`}\n name={`${elementId}-numeric-to`}\n value={rangeValue?.to?.toString() || \"\"}\n onChange={(event, data) => onRangeValueChange(event, data, false)}\n onBlur={() => {\n setTouchedNumericTo(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumericTo ? \"standBy\" : rightStatus}\n statusMessage={\n rightValidation\n ? labels.rule.value.numeric.validation[rightValidation]\n : \"\"\n }\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n readOnly={readOnly}\n />\n </div>\n </div>\n );\n\n return (\n <div className={classes.root}>\n {isRange && renderRangeInputs(value || {})}\n {!isRange && (\n <div className={classes.inputContainer}>\n <HvInput\n label={labels.rule.value.numeric.label}\n className={classes.input}\n id={`${elementId}-numeric`}\n name={`${elementId}-numeric`}\n value={value?.toString() || \"\"}\n onChange={onSingleValueChange}\n onBlur={() => {\n setTouchedNumeric(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n status={!touchedNumeric ? \"standBy\" : numericStatus}\n required\n inputProps={{\n autoComplete: \"off\",\n }}\n placeholder={labels.rule.value.numeric.placeholder}\n statusMessage={\n numericValidation\n ? labels.rule.value.numeric.validation[numericValidation]\n : \"\"\n }\n readOnly={readOnly}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default memo(NumericValue);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/TextValue/TextValue.tsx"],"sourcesContent":["import { memo, useState } from \"react\";\n\nimport { HvFormStatus } from \"../../../../Forms\";\nimport { HvInput } from \"../../../../Input\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./TextValue.styles\";\n\nexport interface TextValueProps {\n id: React.Key;\n value?: any;\n initialTouched?: boolean;\n}\n\nexport const TextValue = ({\n id,\n value = \"\",\n initialTouched = false,\n}: TextValueProps) => {\n const { classes } = useClasses();\n\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const [touched, setTouched] = useState(initialTouched);\n\n const isValid = value != null && value.toString().trim() !== \"\";\n\n let status: HvFormStatus = isValid ? \"valid\" : \"invalid\";\n status = !touched ? \"standBy\" : status;\n\n return (\n <HvInput\n className={classes.location}\n label={labels.rule.value.text.label}\n required\n status={status}\n statusMessage={labels.rule.value.text.validation.required}\n value={value}\n inputProps={{\n autoComplete: \"off\",\n }}\n onChange={(t, v) => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: v,\n });\n }}\n onBlur={() => {\n setTouched(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n placeholder=\"—\"\n readOnly={readOnly}\n />\n );\n};\n\nexport default memo(TextValue);\n"],"names":[],"mappings":";;;;;AAaO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,EACR,iBAAiB;AACnB,MAAsB;AACd,QAAA,EAAE,
|
|
1
|
+
{"version":3,"file":"TextValue.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/TextValue/TextValue.tsx"],"sourcesContent":["import { memo, useState } from \"react\";\n\nimport { HvFormStatus } from \"../../../../Forms\";\nimport { HvInput } from \"../../../../Input\";\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./TextValue.styles\";\n\nexport interface TextValueProps {\n id: React.Key;\n value?: any;\n initialTouched?: boolean;\n}\n\nexport const TextValue = ({\n id,\n value = \"\",\n initialTouched = false,\n}: TextValueProps) => {\n const { classes } = useClasses();\n\n const { labels, dispatchAction, readOnly } = useQueryBuilderContext();\n\n const [touched, setTouched] = useState(initialTouched);\n\n const isValid = value != null && value.toString().trim() !== \"\";\n\n let status: HvFormStatus = isValid ? \"valid\" : \"invalid\";\n status = !touched ? \"standBy\" : status;\n\n return (\n <HvInput\n className={classes.location}\n label={labels.rule.value.text.label}\n required\n status={status}\n statusMessage={labels.rule.value.text.validation.required}\n value={value}\n inputProps={{\n autoComplete: \"off\",\n }}\n onChange={(t, v) => {\n dispatchAction({\n type: \"set-value\",\n id,\n value: v,\n });\n }}\n onBlur={() => {\n setTouched(true);\n }}\n onKeyDown={(e: any) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n }}\n placeholder=\"—\"\n readOnly={readOnly}\n />\n );\n};\n\nexport default memo(TextValue);\n"],"names":[],"mappings":";;;;;AAaO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,EACR,iBAAiB;AACnB,MAAsB;AACd,QAAA,EAAE,QAAQ,IAAI,WAAW;AAE/B,QAAM,EAAE,QAAQ,gBAAgB,SAAA,IAAa,uBAAuB;AAEpE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,cAAc;AAErD,QAAM,UAAU,SAAS,QAAQ,MAAM,SAAS,EAAE,WAAW;AAEzD,MAAA,SAAuB,UAAU,UAAU;AACtC,WAAA,CAAC,UAAU,YAAY;AAG9B,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,QAAQ;AAAA,MACnB,OAAO,OAAO,KAAK,MAAM,KAAK;AAAA,MAC9B,UAAQ;AAAA,MACR;AAAA,MACA,eAAe,OAAO,KAAK,MAAM,KAAK,WAAW;AAAA,MACjD;AAAA,MACA,YAAY;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,MACA,UAAU,CAAC,GAAG,MAAM;AACH,uBAAA;AAAA,UACb,MAAM;AAAA,UACN;AAAA,UACA,OAAO;AAAA,QAAA,CACR;AAAA,MACH;AAAA,MACA,QAAQ,MAAM;AACZ,mBAAW,IAAI;AAAA,MACjB;AAAA,MACA,WAAW,CAAC,MAAW;AACjB,YAAA,EAAE,QAAQ,SAAS;AACrB,YAAE,eAAe;AAAA,QAAA;AAAA,MAErB;AAAA,MACA,aAAY;AAAA,MACZ;AAAA,IAAA;AAAA,EACF;AAEJ;AAEe,KAAK,SAAS;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextValue.styles.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/TextValue/TextValue.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-TextValue\",\n {\n location: {\n flexGrow: 1,\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,
|
|
1
|
+
{"version":3,"file":"TextValue.styles.js","sources":["../../../../../../src/QueryBuilder/Rule/Value/TextValue/TextValue.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { useClasses, staticClasses } = createClasses(\n \"HvQueryBuilder-TextValue\",\n {\n location: {\n flexGrow: 1,\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,YAAY,cAAA,IAAkB;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,IAAA;AAAA,EACZ;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Value.js","sources":["../../../../../src/QueryBuilder/Rule/Value/Value.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { useQueryBuilderContext } from \"../../Context\";\nimport {\n defaultRendererKey,\n HvQueryBuilderRendererProps,\n ValueRenderer,\n} from \"../../types\";\nimport { BooleanValue } from \"./BooleanValue\";\nimport { DateTimeValue } from \"./DateTimeValue\";\nimport { EmptyValue } from \"./EmptyValue\";\nimport { NumericValue } from \"./NumericValue\";\nimport { TextValue } from \"./TextValue\";\n\nexport interface ValueProps {\n id: React.Key;\n attribute: string;\n operator?: string;\n value?: any;\n}\n\nconst getRenderer = (renderer: ValueRenderer, operator?: string) =>\n // 1. Custom renderer\n (typeof renderer === \"function\" && renderer) ||\n // 2. Custom operator renderer\n (typeof renderer === \"object\" && operator && renderer[operator]) ||\n // 3. Custom DEFAULT renderer\n (typeof renderer === \"object\" && renderer[defaultRendererKey]);\n\nexport const Value = ({\n id,\n attribute,\n operator,\n value: valueProp,\n}: ValueProps) => {\n const { attributes, initialTouched, renderers, emptyRenderer } =\n useQueryBuilderContext();\n\n const attrType = attributes?.[attribute]?.type;\n\n // Empty value renderer\n if (emptyRenderer?.find((op) => op === operator)) {\n return <EmptyValue id={id} />;\n }\n\n // Custom renderer\n if (attrType && renderers?.[attrType]) {\n // Renderer to be used by order:\n // 1. Custom attribute renderer\n // 2. Custom attribute-operator renderer\n // 3. Custom attribute-DEFAULT renderer\n // 4. Custom master DEFAULT renderer\n // 5. Custom master DEFAULT-operator renderer\n // 6. Custom master DEFAULT-DEFAULT renderer\n const Renderer: React.FC<HvQueryBuilderRendererProps> | undefined =\n getRenderer(renderers[attrType], operator) ||\n getRenderer(renderers[defaultRendererKey], operator) ||\n undefined;\n\n if (Renderer) {\n return (\n <Renderer\n id={id}\n attribute={attribute}\n operator={operator}\n value={valueProp}\n />\n );\n }\n }\n\n // Built-in attributes\n switch (attrType) {\n case \"boolean\": {\n return <BooleanValue id={id} value={!!valueProp} />;\n }\n case \"numeric\": {\n return (\n <NumericValue\n id={id}\n operator={operator}\n value={valueProp}\n initialTouched={initialTouched}\n />\n );\n }\n case \"dateandtime\": {\n return (\n <DateTimeValue\n id={id}\n operator={operator}\n value={valueProp}\n initialTouched={initialTouched}\n />\n );\n }\n case \"text\":\n case \"textarea\":\n default:\n return (\n <TextValue id={id} value={valueProp} initialTouched={initialTouched} />\n );\n }\n};\n\nexport default memo(Value);\n"],"names":[],"mappings":";;;;;;;;;AAqBA,MAAM,cAAc,CAAC,UAAyB;AAAA;AAAA,EAE3C,OAAO,aAAa,cAAc;AAAA,EAElC,OAAO,aAAa,YAAY,YAAY,SAAS,QAAQ;AAAA,EAE7D,OAAO,aAAa,YAAY,SAAS,kBAAkB;AAAA;AAEvD,MAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAAkB;AAChB,QAAM,EAAE,YAAY,gBAAgB,WAAW,cAAA,IAC7C;
|
|
1
|
+
{"version":3,"file":"Value.js","sources":["../../../../../src/QueryBuilder/Rule/Value/Value.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { useQueryBuilderContext } from \"../../Context\";\nimport {\n defaultRendererKey,\n HvQueryBuilderRendererProps,\n ValueRenderer,\n} from \"../../types\";\nimport { BooleanValue } from \"./BooleanValue\";\nimport { DateTimeValue } from \"./DateTimeValue\";\nimport { EmptyValue } from \"./EmptyValue\";\nimport { NumericValue } from \"./NumericValue\";\nimport { TextValue } from \"./TextValue\";\n\nexport interface ValueProps {\n id: React.Key;\n attribute: string;\n operator?: string;\n value?: any;\n}\n\nconst getRenderer = (renderer: ValueRenderer, operator?: string) =>\n // 1. Custom renderer\n (typeof renderer === \"function\" && renderer) ||\n // 2. Custom operator renderer\n (typeof renderer === \"object\" && operator && renderer[operator]) ||\n // 3. Custom DEFAULT renderer\n (typeof renderer === \"object\" && renderer[defaultRendererKey]);\n\nexport const Value = ({\n id,\n attribute,\n operator,\n value: valueProp,\n}: ValueProps) => {\n const { attributes, initialTouched, renderers, emptyRenderer } =\n useQueryBuilderContext();\n\n const attrType = attributes?.[attribute]?.type;\n\n // Empty value renderer\n if (emptyRenderer?.find((op) => op === operator)) {\n return <EmptyValue id={id} />;\n }\n\n // Custom renderer\n if (attrType && renderers?.[attrType]) {\n // Renderer to be used by order:\n // 1. Custom attribute renderer\n // 2. Custom attribute-operator renderer\n // 3. Custom attribute-DEFAULT renderer\n // 4. Custom master DEFAULT renderer\n // 5. Custom master DEFAULT-operator renderer\n // 6. Custom master DEFAULT-DEFAULT renderer\n const Renderer: React.FC<HvQueryBuilderRendererProps> | undefined =\n getRenderer(renderers[attrType], operator) ||\n getRenderer(renderers[defaultRendererKey], operator) ||\n undefined;\n\n if (Renderer) {\n return (\n <Renderer\n id={id}\n attribute={attribute}\n operator={operator}\n value={valueProp}\n />\n );\n }\n }\n\n // Built-in attributes\n switch (attrType) {\n case \"boolean\": {\n return <BooleanValue id={id} value={!!valueProp} />;\n }\n case \"numeric\": {\n return (\n <NumericValue\n id={id}\n operator={operator}\n value={valueProp}\n initialTouched={initialTouched}\n />\n );\n }\n case \"dateandtime\": {\n return (\n <DateTimeValue\n id={id}\n operator={operator}\n value={valueProp}\n initialTouched={initialTouched}\n />\n );\n }\n case \"text\":\n case \"textarea\":\n default:\n return (\n <TextValue id={id} value={valueProp} initialTouched={initialTouched} />\n );\n }\n};\n\nexport default memo(Value);\n"],"names":[],"mappings":";;;;;;;;;AAqBA,MAAM,cAAc,CAAC,UAAyB;AAAA;AAAA,EAE3C,OAAO,aAAa,cAAc;AAAA,EAElC,OAAO,aAAa,YAAY,YAAY,SAAS,QAAQ;AAAA,EAE7D,OAAO,aAAa,YAAY,SAAS,kBAAkB;AAAA;AAEvD,MAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAAkB;AAChB,QAAM,EAAE,YAAY,gBAAgB,WAAW,cAAA,IAC7C,uBAAuB;AAEnB,QAAA,WAAW,aAAa,SAAS,GAAG;AAG1C,MAAI,eAAe,KAAK,CAAC,OAAO,OAAO,QAAQ,GAAG;AACzC,WAAA,oBAAC,cAAW,IAAQ;AAAA,EAAA;AAIzB,MAAA,YAAY,YAAY,QAAQ,GAAG;AAQrC,UAAM,WACJ,YAAY,UAAU,QAAQ,GAAG,QAAQ,KACzC,YAAY,UAAU,kBAAkB,GAAG,QAAQ,KACnD;AAEF,QAAI,UAAU;AAEV,aAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IAAA;AAAA,EAEJ;AAIF,UAAQ,UAAU;AAAA,IAChB,KAAK,WAAW;AACd,iCAAQ,cAAa,EAAA,IAAQ,OAAO,CAAC,CAAC,WAAW;AAAA,IAAA;AAAA,IAEnD,KAAK,WAAW;AAEZ,aAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAGJ,KAAK,eAAe;AAEhB,aAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAGJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AACE,aACG,oBAAA,WAAA,EAAU,IAAQ,OAAO,WAAW,gBAAgC;AAAA,EAAA;AAG7E;AAEe,KAAK,KAAK;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleGroup.js","sources":["../../../../src/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\nimport { type ExtractNames } from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvButton } from \"../../Button\";\nimport { HvEmptyState } from \"../../EmptyState\";\nimport { HvIconButton } from \"../../IconButton\";\nimport { HvMultiButton } from \"../../MultiButton\";\nimport { HvTypography } from \"../../Typography\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { Rule } from \"../Rule\";\nimport { HvQueryBuilderQueryCombinator, Query } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: Query[\"rules\"];\n classes?: ExtractNames<typeof useClasses>;\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp,\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const {\n dispatchAction,\n askAction,\n maxDepth,\n combinators,\n labels,\n readOnly,\n disableConfirmation,\n allowRepeatedAttributes,\n } = useQueryBuilderContext();\n\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const onClickCombinator = useCallback(\n (item: HvQueryBuilderQueryCombinator) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id],\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level > 0,\n })}\n >\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n aria-disabled={readOnly}\n >\n {combinators?.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n <div className={cx(classes.buttonBackground, classes.topRemoveButton)}>\n <HvIconButton\n className={classes.removeButton}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n })\n }\n title={\n (level === 0 && labels.query?.delete?.tooltip) ||\n labels.group.delete.tooltip ||\n (level === 0 && labels.query?.delete?.ariaLabel) ||\n labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <Delete\n className={cx({ [classes.topRemoveButtonDisabled]: readOnly })}\n />\n </HvIconButton>\n </div>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid = allowRepeatedAttributes\n ? false\n : combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n className={classes.createConditionButton}\n disabled={readOnly}\n aria-disabled={readOnly}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n className={classes.createGroupButton}\n disabled={readOnly}\n aria-disabled={readOnly}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <div\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer,\n )}\n >\n {actionButtons}\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuleGroup.js","sources":["../../../../src/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\nimport { type ExtractNames } from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvButton } from \"../../Button\";\nimport { HvEmptyState } from \"../../EmptyState\";\nimport { HvIconButton } from \"../../IconButton\";\nimport { HvMultiButton } from \"../../MultiButton\";\nimport { HvTypography } from \"../../Typography\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { Rule } from \"../Rule\";\nimport { HvQueryBuilderQueryCombinator, Query } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: Query[\"rules\"];\n classes?: ExtractNames<typeof useClasses>;\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp,\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const {\n dispatchAction,\n askAction,\n maxDepth,\n combinators,\n labels,\n readOnly,\n disableConfirmation,\n allowRepeatedAttributes,\n } = useQueryBuilderContext();\n\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const onClickCombinator = useCallback(\n (item: HvQueryBuilderQueryCombinator) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id],\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: level > 0,\n })}\n >\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n aria-disabled={readOnly}\n >\n {combinators?.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n <div className={cx(classes.buttonBackground, classes.topRemoveButton)}>\n <HvIconButton\n className={classes.removeButton}\n onClick={() =>\n disableConfirmation\n ? dispatchAction({ type: \"remove-node\", id })\n : askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n })\n }\n title={\n (level === 0 && labels.query?.delete?.tooltip) ||\n labels.group.delete.tooltip ||\n (level === 0 && labels.query?.delete?.ariaLabel) ||\n labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <Delete\n className={cx({ [classes.topRemoveButtonDisabled]: readOnly })}\n />\n </HvIconButton>\n </div>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid = allowRepeatedAttributes\n ? false\n : combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n className={classes.createConditionButton}\n disabled={readOnly}\n aria-disabled={readOnly}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n link\n component=\"button\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n className={classes.createGroupButton}\n disabled={readOnly}\n aria-disabled={readOnly}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <div\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer,\n )}\n >\n {actionButtons}\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|