@hitachivantara/uikit-react-core 5.36.11 → 5.37.0
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/components/Dropdown/Dropdown.cjs +4 -1
- package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Context.cjs +5 -0
- package/dist/cjs/components/QueryBuilder/Context.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs +6 -2
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs +2 -3
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Operator/Operator.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Operator/Operator.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +16 -14
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs +1 -2
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs +8 -3
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +13 -12
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/utils/reducer.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/providers/Provider.cjs +11 -3
- package/dist/cjs/providers/Provider.cjs.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +5 -2
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Context.js +7 -2
- package/dist/esm/components/QueryBuilder/Context.js.map +1 -1
- package/dist/esm/components/QueryBuilder/QueryBuilder.js +6 -2
- package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Operator/Operator.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Operator/Operator.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.js +18 -16
- package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js +3 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js +10 -5
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +15 -14
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/components/QueryBuilder/utils/reducer.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/providers/Provider.js +11 -3
- package/dist/esm/providers/Provider.js.map +1 -1
- package/dist/types/index.d.ts +65 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeValue.cjs","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.tsx"],"sourcesContent":["import { memo, useCallback, useContext, useMemo, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport dayjs from \"dayjs\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvWarningText } from \"@core/components/Forms\";\nimport { HvTimePicker, HvTimePickerValue } from \"@core/components/TimePicker\";\nimport { HvDatePicker } from \"@core/components/DatePicker\";\n\nimport { HvQueryBuilderContext } from \"../../../Context\";\nimport { padTime, parseDate, parseTime } from \"./utils\";\nimport { useClasses } from \"./DateTimeValue.styles\";\n\nfunction valueIsRange(operator) {\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 context = useContext(HvQueryBuilderContext);\n const { labels, dispatchAction, readOnly } = context;\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":["valueIsRange","operator","DateTimeValue","id","value","valueProp","initialTouched","classes","cx","useClasses","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","isRange","context","useContext","HvQueryBuilderContext","labels","dispatchAction","readOnly","elementId","uniqueId","touchedDate","setTouchedDate","useState","touchedTime","setTouchedTime","touchedEndDate","setTouchedEndDate","touchedEndTime","setTouchedEndTime","onDateChange","useCallback","data","date","dayjs","format","oldValue","start","time","end","type","onTimeChange","padTime","hours","minutes","seconds","onEndDateChange","onEndTimeChange","startDate","datePickerValue","useMemo","parseDate","datePickerStatus","startTime","timePickerValue","parseTime","timePickerStatus","endDate","endDatePickerValue","endTime","endTimePickerValue","dateStatus","timeStatus","endDateIsBefore","endTimeIsBeforeOrSame","endDateTimeIsBefore","endDatePickerStatus","endDateStatus","endTimePickerStatus","endTimeStatus","jsxs","root","row","horizontal","jsx","HvDatePicker","datePicker","rule","datetime","validation","required","startDateLabel","dateLabel","startDatePlaceholder","datePlaceholder","HvTimePicker","timePicker","startTimeLabel","timeLabel","startTimePlaceholder","timePlaceholder","undefined","_evt","open","vertical","endDateLabel","endDatePlaceholder","endTimeLabel","endTimePlaceholder","HvWarningText","invalidInterval","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimeValue.cjs","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport dayjs from \"dayjs\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvWarningText } from \"@core/components/Forms\";\nimport { HvTimePicker, HvTimePickerValue } from \"@core/components/TimePicker\";\nimport { HvDatePicker } from \"@core/components/DatePicker\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { padTime, parseDate, parseTime } from \"./utils\";\nimport { useClasses } from \"./DateTimeValue.styles\";\n\nfunction valueIsRange(operator) {\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":["valueIsRange","operator","DateTimeValue","id","value","valueProp","initialTouched","classes","cx","useClasses","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","isRange","labels","dispatchAction","readOnly","useQueryBuilderContext","elementId","uniqueId","touchedDate","setTouchedDate","useState","touchedTime","setTouchedTime","touchedEndDate","setTouchedEndDate","touchedEndTime","setTouchedEndTime","onDateChange","useCallback","data","date","dayjs","format","oldValue","start","time","end","type","onTimeChange","padTime","hours","minutes","seconds","onEndDateChange","onEndTimeChange","startDate","datePickerValue","useMemo","parseDate","datePickerStatus","startTime","timePickerValue","parseTime","timePickerStatus","endDate","endDatePickerValue","endTime","endTimePickerValue","dateStatus","timeStatus","endDateIsBefore","endTimeIsBeforeOrSame","endDateTimeIsBefore","endDatePickerStatus","endDateStatus","endTimePickerStatus","endTimeStatus","jsxs","root","row","horizontal","jsx","HvDatePicker","datePicker","rule","datetime","validation","required","startDateLabel","dateLabel","startDatePlaceholder","datePlaceholder","HvTimePicker","timePicker","startTimeLabel","timeLabel","startTimePlaceholder","timePlaceholder","undefined","_evt","open","vertical","endDateLabel","endDatePlaceholder","endTimeLabel","endTimePlaceholder","HvWarningText","invalidInterval","memo"],"mappings":"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"}
|
|
@@ -22,12 +22,11 @@ const NumericValue = ({
|
|
|
22
22
|
cx
|
|
23
23
|
} = Numeric_styles.useClasses();
|
|
24
24
|
const isRange = operator === "range";
|
|
25
|
-
const context = React.useContext(Context.HvQueryBuilderContext);
|
|
26
25
|
const {
|
|
27
26
|
labels,
|
|
28
27
|
dispatchAction,
|
|
29
28
|
readOnly
|
|
30
|
-
} =
|
|
29
|
+
} = Context.useQueryBuilderContext();
|
|
31
30
|
const theme = material.useTheme();
|
|
32
31
|
const isMdDown = material.useMediaQuery(theme.breakpoints.down("md"));
|
|
33
32
|
const onSingleValueChange = React.useCallback((_, data) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumericValue.cjs","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.tsx"],"sourcesContent":["import { memo, useCallback, useContext, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvInput } from \"@core/components/Input\";\n\nimport { HvQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./Numeric.styles\";\nimport { HvQueryBuilderNumericRange } from \"../../../types\";\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 context = useContext(HvQueryBuilderContext);\n const { labels, dispatchAction, readOnly } = context;\n\n const theme = useTheme();\n\n const isMdDown = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const onSingleValueChange = useCallback(\n (_, data: string) => {\n const numericData = isEmpty(data) ? null : Number(data);\n dispatchAction({\n type: \"set-value\",\n id,\n value: Number.isNaN(numericData) ? data : numericData,\n });\n },\n [dispatchAction, id]\n );\n\n const onRangeValueChange = useCallback(\n (_, data: string, from = true) => {\n const numericData = isEmpty(data) ? null : Number(data);\n const currentValue = value;\n const numericRange = {\n from: currentValue?.from,\n to: currentValue?.to,\n };\n if (from) {\n numericRange.from = Number.isNaN(numericData) ? data : numericData;\n } else {\n numericRange.to = Number.isNaN(numericData) ? data : numericData;\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":["NumericValue","id","value","operator","initialTouched","classes","cx","useClasses","isRange","context","useContext","HvQueryBuilderContext","labels","dispatchAction","readOnly","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","onSingleValueChange","useCallback","_","data","numericData","isEmpty","Number","type","isNaN","onRangeValueChange","from","currentValue","numericRange","to","touchedNumeric","setTouchedNumeric","useState","touchedNumericTo","setTouchedNumericTo","elementId","uniqueId","numericValidation","rightValidation","undefined","toString","rangeValue","numericStatus","rightStatus","renderRangeInputs","jsxs","rangeContainer","jsx","inputContainer","HvInput","rule","numeric","range","leftLabel","input","event","e","key","preventDefault","validation","autoComplete","placeholder","rightLabel","root","label","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NumericValue.cjs","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.tsx"],"sourcesContent":["import { memo, useCallback, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { useMediaQuery, useTheme } from \"@mui/material\";\n\nimport { HvInput } from \"@core/components/Input\";\n\nimport { useQueryBuilderContext } from \"../../../Context\";\nimport { useClasses } from \"./Numeric.styles\";\nimport { HvQueryBuilderNumericRange } from \"../../../types\";\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 (_, data: string) => {\n const numericData = isEmpty(data) ? null : Number(data);\n dispatchAction({\n type: \"set-value\",\n id,\n value: Number.isNaN(numericData) ? data : numericData,\n });\n },\n [dispatchAction, id]\n );\n\n const onRangeValueChange = useCallback(\n (_, data: string, from = true) => {\n const numericData = isEmpty(data) ? null : Number(data);\n const currentValue = value;\n const numericRange = {\n from: currentValue?.from,\n to: currentValue?.to,\n };\n if (from) {\n numericRange.from = Number.isNaN(numericData) ? data : numericData;\n } else {\n numericRange.to = Number.isNaN(numericData) ? data : numericData;\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":["NumericValue","id","value","operator","initialTouched","classes","cx","useClasses","isRange","labels","dispatchAction","readOnly","useQueryBuilderContext","theme","useTheme","isMdDown","useMediaQuery","breakpoints","down","onSingleValueChange","useCallback","_","data","numericData","isEmpty","Number","type","isNaN","onRangeValueChange","from","currentValue","numericRange","to","touchedNumeric","setTouchedNumeric","useState","touchedNumericTo","setTouchedNumericTo","elementId","uniqueId","numericValidation","rightValidation","undefined","toString","rangeValue","numericStatus","rightStatus","renderRangeInputs","jsxs","rangeContainer","jsx","inputContainer","HvInput","rule","numeric","range","leftLabel","input","event","e","key","preventDefault","validation","autoComplete","placeholder","rightLabel","root","label","memo"],"mappings":"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"}
|
|
@@ -13,12 +13,11 @@ const TextValue = ({
|
|
|
13
13
|
const {
|
|
14
14
|
classes
|
|
15
15
|
} = TextValue_styles.useClasses();
|
|
16
|
-
const context = React.useContext(Context.HvQueryBuilderContext);
|
|
17
16
|
const {
|
|
18
17
|
labels,
|
|
19
18
|
dispatchAction,
|
|
20
19
|
readOnly
|
|
21
|
-
} =
|
|
20
|
+
} = Context.useQueryBuilderContext();
|
|
22
21
|
const [touched, setTouched] = React.useState(initialTouched);
|
|
23
22
|
const isValid = value != null && value.toString().trim() !== "";
|
|
24
23
|
let status = isValid ? "valid" : "invalid";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextValue.cjs","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/TextValue/TextValue.tsx"],"sourcesContent":["import { memo,
|
|
1
|
+
{"version":3,"file":"TextValue.cjs","sources":["../../../../../../../src/components/QueryBuilder/Rule/Value/TextValue/TextValue.tsx"],"sourcesContent":["import { memo, useState } from \"react\";\n\nimport { HvFormStatus } from \"@core/components/Forms\";\nimport { HvInput } from \"@core/components/Input\";\n\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":["TextValue","id","value","initialTouched","classes","useClasses","labels","dispatchAction","readOnly","useQueryBuilderContext","touched","setTouched","useState","isValid","toString","trim","status","jsx","HvInput","location","rule","text","label","validation","required","autoComplete","t","v","type","e","key","preventDefault","memo"],"mappings":";;;;;;;AAcO,MAAMA,YAAYA,CAAC;AAAA,EACxBC;AAAAA,EACAC,QAAQ;AAAA,EACRC,iBAAiB;AACH,MAAM;AACd,QAAA;AAAA,IAAEC;AAAAA,MAAYC,iBAAW,WAAA;AAEzB,QAAA;AAAA,IAAEC;AAAAA,IAAQC;AAAAA,IAAgBC;AAAAA,MAAaC,QAAuB,uBAAA;AAEpE,QAAM,CAACC,SAASC,UAAU,IAAIC,eAAST,cAAc;AAErD,QAAMU,UAAUX,SAAS,QAAQA,MAAMY,WAAWC,KAAW,MAAA;AAEzDC,MAAAA,SAAuBH,UAAU,UAAU;AACtC,WAAA,CAACH,UAAU,YAAYM;AAG9B,SAAAC,+BAACC,MAAAA,WACC,WAAWd,QAAQe,UACnB,OAAOb,OAAOc,KAAKlB,MAAMmB,KAAKC,OAC9B,UAAQ,MACR,QACA,eAAehB,OAAOc,KAAKlB,MAAMmB,KAAKE,WAAWC,UACjD,OACA,YAAY;AAAA,IACVC,cAAc;AAAA,EAAA,GAEhB,UAAU,CAACC,GAAGC,MAAM;AACH,mBAAA;AAAA,MACbC,MAAM;AAAA,MACN3B;AAAAA,MACAC,OAAOyB;AAAAA,IAAAA,CACR;AAAA,EACH,GACA,QAAQ,MAAM;AACZhB,eAAW,IAAI;AAAA,EAAA,GAEjB,WAAW,CAACkB,MAAW;AACjBA,QAAAA,EAAEC,QAAQ,SAAS;AACrBD,QAAEE,eAAe;AAAA,IACnB;AAAA,EACF,GACA,aAAY,KACZ,SACA,CAAA;AAEN;AAEeC,WAAKhC,SAAS;;"}
|
|
@@ -13,11 +13,11 @@ const Value = ({
|
|
|
13
13
|
operator,
|
|
14
14
|
value: valueProp
|
|
15
15
|
}) => {
|
|
16
|
-
const context = React.useContext(Context.HvQueryBuilderContext);
|
|
17
16
|
const {
|
|
18
17
|
attributes,
|
|
19
|
-
initialTouched
|
|
20
|
-
|
|
18
|
+
initialTouched,
|
|
19
|
+
renderers
|
|
20
|
+
} = Context.useQueryBuilderContext();
|
|
21
21
|
const value = attribute && attributes ? {
|
|
22
22
|
...attributes[attribute]
|
|
23
23
|
} : {
|
|
@@ -38,7 +38,12 @@ const Value = ({
|
|
|
38
38
|
}
|
|
39
39
|
case "text":
|
|
40
40
|
case "textarea":
|
|
41
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TextValue.TextValue, { id, value: valueProp, initialTouched });
|
|
41
42
|
default: {
|
|
43
|
+
if (type && renderers?.[type]) {
|
|
44
|
+
const Renderer = renderers[type];
|
|
45
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Renderer, { id, attribute, operator, value: valueProp });
|
|
46
|
+
}
|
|
42
47
|
return /* @__PURE__ */ jsxRuntime.jsx(TextValue.TextValue, { id, value: valueProp, initialTouched });
|
|
43
48
|
}
|
|
44
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Value.cjs","sources":["../../../../../../src/components/QueryBuilder/Rule/Value/Value.tsx"],"sourcesContent":["import { memo
|
|
1
|
+
{"version":3,"file":"Value.cjs","sources":["../../../../../../src/components/QueryBuilder/Rule/Value/Value.tsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport { useQueryBuilderContext } from \"../../Context\";\nimport { BooleanValue } from \"./BooleanValue\";\nimport { NumericValue } from \"./NumericValue\";\nimport { TextValue } from \"./TextValue\";\nimport { DateTimeValue } from \"./DateTimeValue\";\n\nexport interface ValueProps {\n id: React.Key;\n attribute: string;\n operator?: string;\n value?: any;\n}\n\nexport const Value = ({\n id,\n attribute,\n operator,\n value: valueProp,\n}: ValueProps) => {\n const { attributes, initialTouched, renderers } = useQueryBuilderContext();\n\n const value =\n attribute && attributes ? { ...attributes[attribute] } : { type: null };\n const { type } = value;\n\n switch (type) {\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 return (\n <TextValue id={id} value={valueProp} initialTouched={initialTouched} />\n );\n default: {\n if (type && renderers?.[type]) {\n const Renderer = renderers[type];\n\n return (\n <Renderer\n id={id}\n attribute={attribute}\n operator={operator}\n value={valueProp}\n />\n );\n }\n\n return (\n <TextValue id={id} value={valueProp} initialTouched={initialTouched} />\n );\n }\n }\n};\n\nexport default memo(Value);\n"],"names":["Value","id","attribute","operator","value","valueProp","attributes","initialTouched","renderers","useQueryBuilderContext","type","BooleanValue","NumericValue","DateTimeValue","jsx","TextValue","Renderer","memo"],"mappings":";;;;;;;;;AAeO,MAAMA,QAAQA,CAAC;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,OAAOC;AACG,MAAM;AACV,QAAA;AAAA,IAAEC;AAAAA,IAAYC;AAAAA,IAAgBC;AAAAA,MAAcC,QAAuB,uBAAA;AAEnEL,QAAAA,QACJF,aAAaI,aAAa;AAAA,IAAE,GAAGA,WAAWJ,SAAS;AAAA,EAAA,IAAM;AAAA,IAAEQ,MAAM;AAAA,EAAA;AAC7D,QAAA;AAAA,IAAEA;AAAAA,EAASN,IAAAA;AAEjB,UAAQM,MAAI;AAAA,IACV,KAAK,WAAW;AACd,4CAAQC,aAAAA,cAAa,EAAA,IAAQ,OAAO,CAAC,CAACN,UAAa,CAAA;AAAA,IACrD;AAAA,IACA,KAAK,WAAW;AACd,4CACGO,aACC,cAAA,EAAA,IACA,UACA,OAAOP,WACP,eACA,CAAA;AAAA,IAEN;AAAA,IACA,KAAK,eAAe;AAClB,4CACGQ,cACC,eAAA,EAAA,IACA,UACA,OAAOR,WACP,eACA,CAAA;AAAA,IAEN;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AACH,aACGS,2BAAAA,IAAAC,UAAAA,WAAA,EAAU,IAAQ,OAAOV,WAAW,eAAkC,CAAA;AAAA,IAE3E,SAAS;AACHK,UAAAA,QAAQF,YAAYE,IAAI,GAAG;AACvBM,cAAAA,WAAWR,UAAUE,IAAI;AAE/B,8CACG,UACC,EAAA,IACA,WACA,UACA,OAAOL,UACP,CAAA;AAAA,MAEN;AAEA,aACGS,2BAAAA,IAAAC,UAAAA,WAAA,EAAU,IAAQ,OAAOV,WAAW,eAAkC,CAAA;AAAA,IAE3E;AAAA,EACF;AACF;AAEeY,WAAKjB,KAAK;;"}
|
|
@@ -23,15 +23,15 @@ const RuleGroup = ({
|
|
|
23
23
|
classes,
|
|
24
24
|
cx
|
|
25
25
|
} = QueryBuilder_styles.useClasses(classesProp);
|
|
26
|
-
const context = React.useContext(Context.HvQueryBuilderContext);
|
|
27
26
|
const {
|
|
28
27
|
dispatchAction,
|
|
29
28
|
askAction,
|
|
30
29
|
maxDepth,
|
|
31
30
|
combinators,
|
|
32
31
|
labels,
|
|
33
|
-
readOnly
|
|
34
|
-
|
|
32
|
+
readOnly,
|
|
33
|
+
disableConfirmation
|
|
34
|
+
} = Context.useQueryBuilderContext();
|
|
35
35
|
const normalizedMaxDepth = maxDepth - 1;
|
|
36
36
|
const actionButtons = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
37
37
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.buttonBackground, children: /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { variant: "secondarySubtle", onClick: () => {
|
|
@@ -63,15 +63,16 @@ const RuleGroup = ({
|
|
|
63
63
|
}), children: [
|
|
64
64
|
/* @__PURE__ */ jsxRuntime.jsxs(Grid.HvGrid, { container: true, children: [
|
|
65
65
|
/* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, children: /* @__PURE__ */ jsxRuntime.jsx(MultiButton.HvMultiButton, { className: cx(classes.combinator, classes.topCombinator), disabled: readOnly, children: combinators && combinators.map((item) => /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { className: classes.combinatorButton, selected: item.operand === combinator, onClick: () => item.operand && onClickCombinator(item), disabled: readOnly, size: "xs", children: item.label }, item.operand)) }) }),
|
|
66
|
-
/* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.buttonBackground, classes.topRemoveButton), children: /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { icon: true, className: classes.removeButton, onClick: () => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid.HvGrid, { item: true, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.buttonBackground, classes.topRemoveButton), children: /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { icon: true, className: classes.removeButton, onClick: () => disableConfirmation ? dispatchAction({
|
|
67
|
+
type: "remove-node",
|
|
68
|
+
id
|
|
69
|
+
}) : askAction({
|
|
70
|
+
actions: [{
|
|
71
|
+
type: "remove-node",
|
|
72
|
+
id
|
|
73
|
+
}],
|
|
74
|
+
dialog: level === 0 && labels.query?.delete != null ? labels.query.delete : labels.group.delete
|
|
75
|
+
}), "aria-label": level === 0 && labels.query?.delete?.ariaLabel ? labels.query?.delete?.ariaLabel : labels.group.delete.ariaLabel, disabled: readOnly, children: /* @__PURE__ */ jsxRuntime.jsx(DeleteIcon, {}) }) }) })
|
|
75
76
|
] }),
|
|
76
77
|
rules?.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.rulesContainer, {
|
|
77
78
|
[classes.subRulesContainer]: level > 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleGroup.cjs","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback, useContext } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvButton } from \"@core/components/Button\";\nimport { HvEmptyState } from \"@core/components/EmptyState\";\nimport { HvGrid } from \"@core/components/Grid\";\nimport { HvMultiButton } from \"@core/components/MultiButton\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { withTooltip } from \"@core/hocs/withTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { Rule } from \"../Rule\";\nimport { HvQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { HvQueryBuilderQuery, HvQueryBuilderQueryCombinator } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: HvQueryBuilderQuery[\"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 context = useContext(HvQueryBuilderContext);\n\n const { dispatchAction, askAction, maxDepth, combinators, labels, readOnly } =\n context;\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 DeleteIcon = withTooltip(\n () => (\n <Delete className={cx({ [classes.topRemoveButtonDisabled]: readOnly })} />\n ),\n level === 0 && labels.query?.delete?.tooltip\n ? labels.query?.delete?.tooltip\n : labels.group.delete.tooltip,\n \"top\"\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 <HvGrid container>\n <HvGrid item>\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators &&\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 </HvGrid>\n <HvGrid item>\n <div\n className={cx(classes.buttonBackground, classes.topRemoveButton)}\n >\n <HvButton\n icon\n className={classes.removeButton}\n onClick={() => {\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 aria-label={\n level === 0 && labels.query?.delete?.ariaLabel\n ? labels.query?.delete?.ariaLabel\n : labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <DeleteIcon />\n </HvButton>\n </div>\n </HvGrid>\n </HvGrid>\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 =\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 >\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 >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <HvGrid container>\n <HvGrid\n item\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </HvGrid>\n </HvGrid>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","context","useContext","HvQueryBuilderContext","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","normalizedMaxDepth","actionButtons","jsxs","Fragment","jsx","buttonBackground","HvButton","type","Add","query","addRule","label","group","addGroup","DeleteIcon","withTooltip","Delete","topRemoveButtonDisabled","delete","tooltip","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","HvGrid","HvMultiButton","topCombinator","map","combinatorButton","topRemoveButton","removeButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","Rule","HvEmptyState","empty","title","HvTypography","createConditionButton","createCondition","spacer","createGroupButton","createGroup","Info","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuleGroup.cjs","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvButton } from \"@core/components/Button\";\nimport { HvEmptyState } from \"@core/components/EmptyState\";\nimport { HvGrid } from \"@core/components/Grid\";\nimport { HvMultiButton } from \"@core/components/MultiButton\";\nimport { HvTypography } from \"@core/components/Typography\";\nimport { withTooltip } from \"@core/hocs/withTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { Rule } from \"../Rule\";\nimport { useQueryBuilderContext } from \"../Context\";\nimport { useClasses } from \"../QueryBuilder.styles\";\nimport { HvQueryBuilderQuery, HvQueryBuilderQueryCombinator } from \"../types\";\n\nexport interface RuleGroupProps {\n id: React.Key;\n level?: number;\n combinator?: string;\n rules?: HvQueryBuilderQuery[\"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 } = 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 DeleteIcon = withTooltip(\n () => (\n <Delete className={cx({ [classes.topRemoveButtonDisabled]: readOnly })} />\n ),\n level === 0 && labels.query?.delete?.tooltip\n ? labels.query?.delete?.tooltip\n : labels.group.delete.tooltip,\n \"top\"\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 <HvGrid container>\n <HvGrid item>\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators &&\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 </HvGrid>\n <HvGrid item>\n <div\n className={cx(classes.buttonBackground, classes.topRemoveButton)}\n >\n <HvButton\n icon\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 aria-label={\n level === 0 && labels.query?.delete?.ariaLabel\n ? labels.query?.delete?.ariaLabel\n : labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n >\n <DeleteIcon />\n </HvButton>\n </div>\n </HvGrid>\n </HvGrid>\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 =\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 >\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 >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <HvGrid container>\n <HvGrid\n item\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </HvGrid>\n </HvGrid>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","disableConfirmation","useQueryBuilderContext","normalizedMaxDepth","actionButtons","jsxs","Fragment","jsx","buttonBackground","HvButton","type","Add","query","addRule","label","group","addGroup","DeleteIcon","withTooltip","Delete","topRemoveButtonDisabled","delete","tooltip","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","HvGrid","HvMultiButton","topCombinator","map","combinatorButton","topRemoveButton","removeButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","Rule","HvEmptyState","empty","title","HvTypography","createConditionButton","createCondition","spacer","createGroupButton","createGroup","Info","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.cjs","sources":["../../../../../src/components/QueryBuilder/utils/reducer.tsx"],"sourcesContent":["import { emptyRule, emptyGroup, findNodeById, findParentById } from \"./index\";\nimport { HvQueryBuilderQuery, QueryAction } from \"../types\";\n\nconst reducer = (state
|
|
1
|
+
{"version":3,"file":"reducer.cjs","sources":["../../../../../src/components/QueryBuilder/utils/reducer.tsx"],"sourcesContent":["import { Reducer } from \"react\";\n\nimport { emptyRule, emptyGroup, findNodeById, findParentById } from \"./index\";\nimport { HvQueryBuilderQuery, QueryAction } from \"../types\";\n\nconst reducer: Reducer<HvQueryBuilderQuery, QueryAction> = (state, action) => {\n const query = { ...state };\n\n switch (action.type) {\n case \"reset-query\": {\n return emptyGroup();\n }\n case \"reset-group\": {\n const group = findNodeById(action.id, query);\n if (group && \"rules\" in group) {\n group.rules = [emptyRule()];\n\n return query;\n }\n break;\n }\n case \"add-rule\": {\n const group = findNodeById(action.id, query);\n if (group && \"rules\" in group) {\n const rule = emptyRule();\n\n group.rules.push(rule);\n\n return query;\n }\n break;\n }\n case \"add-group\": {\n const group = findNodeById(action.id, query);\n if (group && \"rules\" in group) {\n group.rules.push(emptyGroup(true));\n\n return query;\n }\n break;\n }\n case \"remove-node\": {\n const parent = findParentById(action.id, query);\n if (parent) {\n parent.rules = parent.rules.filter((rule) => rule.id !== action.id);\n\n return query;\n }\n\n // reset query if deleting top node\n return emptyGroup();\n }\n case \"set-combinator\": {\n const node = findNodeById(action.id, query);\n if (node && \"combinator\" in node) {\n if (node.combinator !== action.combinator) {\n node.combinator = action.combinator;\n\n return query;\n }\n }\n break;\n }\n case \"set-attribute\": {\n const node = findNodeById(action.id, query);\n if (node && node.attribute !== action.attribute) {\n node.attribute = action.attribute ?? undefined;\n\n // we keep the operator and value unless the operator is explicitly null (or set)\n if (action.operator !== undefined) {\n node.operator = action.operator ?? undefined;\n node.value = action.value ?? undefined;\n }\n\n return query;\n }\n break;\n }\n case \"set-operator\": {\n const node = findNodeById(action.id, query);\n if (node && \"attribute\" in node) {\n if (node.operator !== action.operator) {\n node.operator = action.operator;\n if (action.value !== undefined) {\n node.value = action.value ?? undefined;\n }\n\n return query;\n }\n }\n break;\n }\n case \"set-value\": {\n const node = findNodeById(action.id, query);\n if (node && \"operator\" in node) {\n node.value = action.value ?? undefined;\n\n return query;\n }\n break;\n }\n\n default:\n }\n\n // Return existing state if nothing changed\n return query;\n};\n\nexport default reducer;\n"],"names":["reducer","state","action","query","type","emptyGroup","group","findNodeById","id","rules","emptyRule","rule","push","parent","findParentById","filter","node","combinator","attribute","undefined","operator","value"],"mappings":";;;AAKA,MAAMA,UAAqDA,CAACC,OAAOC,WAAW;AAC5E,QAAMC,QAAQ;AAAA,IAAE,GAAGF;AAAAA,EAAAA;AAEnB,UAAQC,OAAOE,MAAI;AAAA,IACjB,KAAK,eAAe;AAClB,aAAOC,MAAW,WAAA;AAAA,IACpB;AAAA,IACA,KAAK,eAAe;AAClB,YAAMC,QAAQC,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AACvCG,UAAAA,SAAS,WAAWA,OAAO;AACvBG,cAAAA,QAAQ,CAACC,MAAAA,UAAAA,CAAW;AAEnBP,eAAAA;AAAAA,MACT;AACA;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAMG,QAAQC,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AACvCG,UAAAA,SAAS,WAAWA,OAAO;AAC7B,cAAMK,OAAOD,MAAAA;AAEPD,cAAAA,MAAMG,KAAKD,IAAI;AAEdR,eAAAA;AAAAA,MACT;AACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,YAAMG,QAAQC,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AACvCG,UAAAA,SAAS,WAAWA,OAAO;AAC7BA,cAAMG,MAAMG,KAAKP,MAAAA,WAAW,IAAI,CAAC;AAE1BF,eAAAA;AAAAA,MACT;AACA;AAAA,IACF;AAAA,IACA,KAAK,eAAe;AAClB,YAAMU,SAASC,MAAAA,eAAeZ,OAAOM,IAAIL,KAAK;AAC9C,UAAIU,QAAQ;AACHJ,eAAAA,QAAQI,OAAOJ,MAAMM,OAAQJ,UAASA,KAAKH,OAAON,OAAOM,EAAE;AAE3DL,eAAAA;AAAAA,MACT;AAGA,aAAOE,MAAW,WAAA;AAAA,IACpB;AAAA,IACA,KAAK,kBAAkB;AACrB,YAAMW,OAAOT,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AACtCa,UAAAA,QAAQ,gBAAgBA,MAAM;AAC5BA,YAAAA,KAAKC,eAAef,OAAOe,YAAY;AACzCD,eAAKC,aAAaf,OAAOe;AAElBd,iBAAAA;AAAAA,QACT;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,YAAMa,OAAOT,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AAC1C,UAAIa,QAAQA,KAAKE,cAAchB,OAAOgB,WAAW;AAC1CA,aAAAA,YAAYhB,OAAOgB,aAAaC;AAGjCjB,YAAAA,OAAOkB,aAAaD,QAAW;AAC5BC,eAAAA,WAAWlB,OAAOkB,YAAYD;AAC9BE,eAAAA,QAAQnB,OAAOmB,SAASF;AAAAA,QAC/B;AAEOhB,eAAAA;AAAAA,MACT;AACA;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,YAAMa,OAAOT,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AACtCa,UAAAA,QAAQ,eAAeA,MAAM;AAC3BA,YAAAA,KAAKI,aAAalB,OAAOkB,UAAU;AACrCJ,eAAKI,WAAWlB,OAAOkB;AACnBlB,cAAAA,OAAOmB,UAAUF,QAAW;AACzBE,iBAAAA,QAAQnB,OAAOmB,SAASF;AAAAA,UAC/B;AAEOhB,iBAAAA;AAAAA,QACT;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,YAAMa,OAAOT,MAAAA,aAAaL,OAAOM,IAAIL,KAAK;AACtCa,UAAAA,QAAQ,cAAcA,MAAM;AACzBK,aAAAA,QAAQnB,OAAOmB,SAASF;AAEtBhB,eAAAA;AAAAA,MACT;AACA;AAAA,IACF;AAAA,EAGF;AAGOA,SAAAA;AACT;AAEA,MAAA,YAAeH;;"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -618,6 +618,7 @@ exports.HvTimeAgo = TimeAgo.HvTimeAgo;
|
|
|
618
618
|
exports.hvQueryBuilderDefaultCombinators = Context.defaultCombinators;
|
|
619
619
|
exports.hvQueryBuilderDefaultLabels = Context.defaultLabels;
|
|
620
620
|
exports.hvQueryBuilderDefaultOperators = Context.defaultOperators;
|
|
621
|
+
exports.useQueryBuilderContext = Context.useQueryBuilderContext;
|
|
621
622
|
exports.queryBuilderClasses = QueryBuilder_styles.staticClasses;
|
|
622
623
|
exports.HvQueryBuilder = QueryBuilder.HvQueryBuilder;
|
|
623
624
|
exports.colorPickerClasses = ColorPicker_styles.staticClasses;
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -30,7 +30,11 @@ const HvProvider = ({
|
|
|
30
30
|
prepend: true
|
|
31
31
|
}), [classNameKey]);
|
|
32
32
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.CacheProvider, { value: emotionCache, children: [
|
|
33
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Global, { styles: /* @__PURE__ */ react.css(cssBaseline === "global" &&
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Global, { styles: /* @__PURE__ */ react.css(cssBaseline === "global" && {
|
|
34
|
+
[`@layer hv-uikit-baseline`]: {
|
|
35
|
+
...uikitStyles.CssBaseline
|
|
36
|
+
}
|
|
37
|
+
}, " ", uikitStyles.getThemesVars(themesList), ";" + (process.env.NODE_ENV === "production" ? "" : ";label:HvProvider;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL3Byb3ZpZGVycy9Qcm92aWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0h3QiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9wcm92aWRlcnMvUHJvdmlkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gXCJAZW1vdGlvbi9jYWNoZVwiO1xuaW1wb3J0IHtcbiAgY3NzIGFzIGNzc1JlYWN0LFxuICBHbG9iYWwsXG4gIENhY2hlUHJvdmlkZXIsXG4gIENsYXNzTmFtZXMsXG59IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQge1xuICBDc3NCYXNlbGluZSxcbiAgQ3NzU2NvcGVkQmFzZWxpbmUsXG4gIGdldFRoZW1lc1ZhcnMsXG4gIEh2VGhlbWVTdHJ1Y3R1cmUsXG59IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtc3R5bGVzXCI7XG5cbmltcG9ydCB7IGdldEVsZW1lbnRCeUlkIH0gZnJvbSBcIkBjb3JlL3V0aWxzL2RvY3VtZW50XCI7XG5pbXBvcnQgeyBwcm9jZXNzVGhlbWVzIH0gZnJvbSBcIkBjb3JlL3V0aWxzL3RoZW1lXCI7XG5pbXBvcnQgeyBIdlRoZW1lIH0gZnJvbSBcIkBjb3JlL3R5cGVzL3RoZW1lXCI7XG5pbXBvcnQgeyB1c2VVbmlxdWVJZCB9IGZyb20gXCJAY29yZS9ob29rcy91c2VVbmlxdWVJZFwiO1xuXG5pbXBvcnQge1xuICBIdlRoZW1lUHJvdmlkZXIsXG4gIGRlZmF1bHRDYWNoZUtleSxcbiAgZGVmYXVsdEVtb3Rpb25DYWNoZSxcbn0gZnJvbSBcIi4vVGhlbWVQcm92aWRlclwiO1xuXG4vLyBQcm92aWRlciBwcm9wc1xuZXhwb3J0IGludGVyZmFjZSBIdlByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogWW91ciBjb21wb25lbnQgdHJlZS5cbiAgICovXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogSWQgb2YgeW91ciByb290IGVsZW1lbnQuXG4gICAqL1xuICByb290RWxlbWVudElkPzogc3RyaW5nO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgYmFzZWxpbmUgc3R5bGVzIGFyZSBhcHBsaWVkIGdsb2JhbGx5LCBgZ2xvYmFsYCwgdG8gdGhlIGFwcGxpY2F0aW9uIGZvciB0aGUgVUkgS2l0IGNvbXBvbmVudHMgdG8gd29yayBwcm9wZXJseS5cbiAgICogSWYgeW91IG5lZWQgdG8gc2NvcGUgdGhlIGJhc2VsaW5lIHN0eWxlcyB0byBhdm9pZCBzdHlsaW5nIGNvbmZsaWN0cywgeW91IGNhbiBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgc2NvcGVkYC5cbiAgICogVG8gc2NvcGUgdGhlIGJhc2VsaW5lIHRvIHlvdXIgcm9vdCwgeW91IG5lZWQgdG8gYWRkIHRoZSBgcm9vdEVsZW1lbnRJZGAgcHJvcGVydHkuXG4gICAqIElmIHRoZSBgcm9vdEVsZW1lbnRJZGAgcHJvcGVydHkgaXMgbm90IHNldCwgdGhlIGJhc2VsaW5lIHdpbGwgYmUgc2NvcGVkIHRvIGEgbmV3IGNvbnRhaW5lciwgYGh2LXVpa2l0LXNjb3BlZC1yb290KmAsIGNyZWF0ZWQgYXJvdW5kIHlvdXIgY29udGVudC5cbiAgICogSWYgeW91IGFyZSBwcm92aWRpbmcgeW91ciBvd24gYmFzZWxpbmUgc3R5bGVzLCB5b3UgY2FuIHNldCB0aGlzIHByb3BlcnR5IHRvIGBub25lYCB0byBkaXNhYmxlIHRoZSBiYXNlbGluZSBzdHlsZXMuXG4gICAqL1xuICBjc3NCYXNlbGluZT86IFwiZ2xvYmFsXCIgfCBcInNjb3BlZFwiIHwgXCJub25lXCI7XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSB0aGVtZSBzdHlsZXMgYXJlIGFwcGxpZWQgZ2xvYmFsbHksIGBnbG9iYWxgLCB0byB0aGUgYXBwbGljYXRpb24uXG4gICAqIElmIHlvdSBuZWVkIHRvIHNjb3BlIHRoZSB0aGVtZSBzdHlsZXMgdG8gYXZvaWQgc3R5bGluZyBjb25mbGljdHMsIHlvdSBjYW4gc2V0IHRoaXMgcHJvcGVydHkgdG8gYHNjb3BlZGAuXG4gICAqIFRvIHNjb3BlIHRoZSB0aGVtZSB0byB5b3VyIHJvb3QsIHlvdSBuZWVkIHRvIGFkZCB0aGUgYHJvb3RFbGVtZW50SWRgIHByb3BlcnR5LlxuICAgKiBJZiB0aGUgYHJvb3RFbGVtZW50SWRgIHByb3BlcnR5IGlzIG5vdCBzZXQsIHRoZSB0aGVtZSB3aWxsIGJlIHNjb3BlZCB0byBhIG5ldyBjb250YWluZXIsIGBodi11aWtpdC1zY29wZWQtcm9vdCpgLCBjcmVhdGVkIGFyb3VuZCB5b3VyIGNvbnRlbnQuXG4gICAqL1xuICBjc3NUaGVtZT86IFwiZ2xvYmFsXCIgfCBcInNjb3BlZFwiO1xuICAvKipcbiAgICogVGhlIHN0cmluZyB1c2VkIHRvIHByZWZpeCB0aGUgY2xhc3MgbmFtZXMgYW5kIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZW0uIFRoZSBrZXkgY2FuIG9ubHkgY29udGFpbiBsb3dlciBjYXNlIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB0byBhdm9pZCBjbGFzcyBuYW1lIGNvbGxpc2lvbnMuXG4gICAqXG4gICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpcyBgaHZgLlxuICAgKi9cbiAgY2xhc3NOYW1lS2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogTGlzdCBvZiB0aGVtZXMgdG8gYmUgdXNlZCBieSBVSSBLaXQuXG4gICAqIFlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biB0aGVtZXMgY3JlYXRlZCB3aXRoIHRoZSBgY3JlYXRlVGhlbWVgIHV0aWxpdHkgYW5kL29yIHRoZSBkZWZhdWx0IHRoZW1lcyBgZHMzYCBhbmQgYGRzNWAgcHJvdmlkZWQgYnkgVUkgS2l0LlxuICAgKlxuICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgdGhlIGBkczVgIHRoZW1lIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHRoZW1lcz86IChIdlRoZW1lIHwgSHZUaGVtZVN0cnVjdHVyZSlbXTtcbiAgLyoqXG4gICAqIFRoZSBhY3RpdmUgdGhlbWUuIEl0IG11c3QgYmUgb25lIG9mIHRoZSB0aGVtZXMgcGFzc2VkIHRvIGB0aGVtZXNgLlxuICAgKlxuICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgdGhlIGZpcnN0IHRoZW1lIGZyb20gdGhlIGB0aGVtZXNgIGxpc3QgaXMgdXNlZC4gSWYgbm8gYHRoZW1lc2AgbGlzdCBpcyBwcm92aWRlZCwgdGhlIGBkczVgIHRoZW1lIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHRoZW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFjdGl2ZSBjb2xvciBtb2RlLiBJdCBtdXN0IGJlIG9uZSBvZiB0aGUgY29sb3IgbW9kZXMgb2YgdGhlIGFjdGl2ZSB0aGVtZS5cbiAgICpcbiAgICogSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSBmaXJzdCBjb2xvciBtb2RlIGRlZmluZWQgaW4gdGhlIGFjdGl2ZSB0aGVtZSBpcyB1c2VkLlxuICAgKiBGb3IgdGhlIGRlZmF1bHQgdGhlbWVzIGBkczNgIGFuZCBgZHM1YCwgdGhlIGBkYXduYCBjb2xvciBtb2RlIGlzIHRoZSBvbmUgdXNlZC5cbiAgICovXG4gIGNvbG9yTW9kZT86IHN0cmluZztcbn1cblxuY29uc3Qgc2NvcGVkUm9vdFByZWZpeCA9IFwiaHYtdWlraXQtc2NvcGVkLXJvb3RcIiBhcyBjb25zdDtcblxuLyoqXG4gKiBFbmFibGVzIHRoZW1pbmcgY2FwYWJpbGl0aWVzIGFuZCBtYWtlcyBjcm9zcy1jb21wb25lbnQgdGhlbWUgcHJvcGVydGllcyBhdmFpbGFibGUgZG93biB0aGUgdHJlZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEh2UHJvdmlkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgcm9vdEVsZW1lbnRJZCxcbiAgY3NzQmFzZWxpbmUgPSBcImdsb2JhbFwiLFxuICBjc3NUaGVtZSA9IFwiZ2xvYmFsXCIsXG4gIHRoZW1lcyxcbiAgdGhlbWUsXG4gIGNvbG9yTW9kZSxcbiAgY2xhc3NOYW1lS2V5ID0gZGVmYXVsdENhY2hlS2V5LFxufTogSHZQcm92aWRlclByb3BzKSA9PiB7XG4gIGNvbnN0IHNjb3BlZFJvb3RJZCA9IHVzZVVuaXF1ZUlkKHVuZGVmaW5lZCwgc2NvcGVkUm9vdFByZWZpeCk7XG5cbiAgLy8gVGhlbWVzXG4gIGNvbnN0IHRoZW1lc0xpc3Q6IChIdlRoZW1lIHwgSHZUaGVtZVN0cnVjdHVyZSlbXSA9IHByb2Nlc3NUaGVtZXModGhlbWVzKTtcblxuICAvLyBFbW90aW9uIGNhY2hlXG4gIC8vIE1vdmVzIFVJIEtpdCBzdHlsZXMgdG8gdGhlIHRvcCBvZiB0aGUgPGhlYWQ+IHNvIHRoZXkncmUgbG9hZGVkIGZpcnN0XG4gIC8vIFRoaXMgZW5hYmxlcyB1c2VycyB0byBvdmVycmlkZSB0aGUgVUkgS2l0IHN0eWxlcyBpZiBuZWNlc3NhcnlcbiAgY29uc3QgZW1vdGlvbkNhY2hlID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgY2xhc3NOYW1lS2V5ID09PSBkZWZhdWx0Q2FjaGVLZXlcbiAgICAgICAgPyBkZWZhdWx0RW1vdGlvbkNhY2hlXG4gICAgICAgIDogY3JlYXRlQ2FjaGUoeyBrZXk6IGNsYXNzTmFtZUtleSwgcHJlcGVuZDogdHJ1ZSB9KSxcbiAgICBbY2xhc3NOYW1lS2V5XVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENhY2hlUHJvdmlkZXIgdmFsdWU9e2Vtb3Rpb25DYWNoZX0+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzUmVhY3RgXG4gICAgICAgICAgJHtcbiAgICAgICAgICAgIGNzc0Jhc2VsaW5lID09PSBcImdsb2JhbFwiICYmIHtcbiAgICAgICAgICAgICAgW2BAbGF5ZXIgaHYtdWlraXQtYmFzZWxpbmVgXToge1xuICAgICAgICAgICAgICAgIC4uLkNzc0Jhc2VsaW5lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAke2dldFRoZW1lc1ZhcnModGhlbWVzTGlzdCl9XG4gICAgICAgIGB9XG4gICAgICAvPlxuICAgICAgPEh2VGhlbWVQcm92aWRlclxuICAgICAgICB0aGVtZXM9e3RoZW1lc0xpc3R9XG4gICAgICAgIHRoZW1lPXt0aGVtZSB8fCB0aGVtZXNMaXN0WzBdLm5hbWV9XG4gICAgICAgIGVtb3Rpb25DYWNoZT17ZW1vdGlvbkNhY2hlfVxuICAgICAgICBjb2xvck1vZGU9e2NvbG9yTW9kZSB8fCBPYmplY3Qua2V5cyh0aGVtZXNMaXN0WzBdLmNvbG9ycy5tb2RlcylbMF19XG4gICAgICAgIHRoZW1lUm9vdElkPXtcbiAgICAgICAgICBjc3NUaGVtZSA9PT0gXCJzY29wZWRcIiA/IHJvb3RFbGVtZW50SWQgfHwgc2NvcGVkUm9vdElkIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgPENsYXNzTmFtZXM+XG4gICAgICAgICAgeyh7IGNzcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoY3NzQmFzZWxpbmUgPT09IFwic2NvcGVkXCIpIHtcbiAgICAgICAgICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBnZXRFbGVtZW50QnlJZChyb290RWxlbWVudElkKTtcblxuICAgICAgICAgICAgICBpZiAocm9vdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByb290RWxlbWVudC5jbGFzc0xpc3QuYWRkKFxuICAgICAgICAgICAgICAgICAgY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgW2BAbGF5ZXIgJHtyb290RWxlbWVudElkfS1iYXNlbGluZWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uQ3NzU2NvcGVkQmFzZWxpbmUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIChjc3NUaGVtZSA9PT0gXCJzY29wZWRcIiB8fCBjc3NCYXNlbGluZSA9PT0gXCJzY29wZWRcIikgJiZcbiAgICAgICAgICAgICAgIXJvb3RFbGVtZW50SWQgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBpZD17c2NvcGVkUm9vdElkfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgICAgICBjc3NCYXNlbGluZSA9PT0gXCJzY29wZWRcIlxuICAgICAgICAgICAgICAgICAgICA/IGNzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBbYEBsYXllciAke3Jvb3RFbGVtZW50SWR9LWJhc2VsaW5lYF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uQ3NzU2NvcGVkQmFzZWxpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH19XG4gICAgICAgIDwvQ2xhc3NOYW1lcz5cbiAgICAgIDwvSHZUaGVtZVByb3ZpZGVyPlxuICAgIDwvQ2FjaGVQcm92aWRlcj5cbiAgKTtcbn07XG4iXX0= */") }),
|
|
34
38
|
/* @__PURE__ */ jsxRuntime.jsx(ThemeProvider.HvThemeProvider, { themes: themesList, theme: theme$1 || themesList[0].name, emotionCache, colorMode: colorMode || Object.keys(themesList[0].colors.modes)[0], themeRootId: cssTheme === "scoped" ? rootElementId || scopedRootId : void 0, children: /* @__PURE__ */ jsxRuntime.jsx(react.ClassNames, { children: ({
|
|
35
39
|
css
|
|
36
40
|
}) => {
|
|
@@ -38,12 +42,16 @@ const HvProvider = ({
|
|
|
38
42
|
const rootElement = document.getElementById(rootElementId);
|
|
39
43
|
if (rootElement) {
|
|
40
44
|
rootElement.classList.add(css({
|
|
41
|
-
|
|
45
|
+
[`@layer ${rootElementId}-baseline`]: {
|
|
46
|
+
...uikitStyles.CssScopedBaseline
|
|
47
|
+
}
|
|
42
48
|
}));
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
51
|
return (cssTheme === "scoped" || cssBaseline === "scoped") && !rootElementId ? /* @__PURE__ */ jsxRuntime.jsx("div", { id: scopedRootId, className: cssBaseline === "scoped" ? css({
|
|
46
|
-
|
|
52
|
+
[`@layer ${rootElementId}-baseline`]: {
|
|
53
|
+
...uikitStyles.CssScopedBaseline
|
|
54
|
+
}
|
|
47
55
|
}) : void 0, children }) : children;
|
|
48
56
|
} }) })
|
|
49
57
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.cjs","sources":["../../../src/providers/Provider.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\n\nimport createCache from \"@emotion/cache\";\nimport {\n css as cssReact,\n Global,\n CacheProvider,\n ClassNames,\n} from \"@emotion/react\";\n\nimport {\n CssBaseline,\n CssScopedBaseline,\n getThemesVars,\n HvThemeStructure,\n} from \"@hitachivantara/uikit-styles\";\n\nimport { getElementById } from \"@core/utils/document\";\nimport { processThemes } from \"@core/utils/theme\";\nimport { HvTheme } from \"@core/types/theme\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\n\nimport {\n HvThemeProvider,\n defaultCacheKey,\n defaultEmotionCache,\n} from \"./ThemeProvider\";\n\n// Provider props\nexport interface HvProviderProps {\n /**\n * Your component tree.\n */\n children?: React.ReactNode;\n /**\n * Id of your root element.\n */\n rootElementId?: string;\n /**\n * By default the baseline styles are applied globally, `global`, to the application for the UI Kit components to work properly.\n * If you need to scope the baseline styles to avoid styling conflicts, you can set this property to `scoped`.\n * To scope the baseline to your root, you need to add the `rootElementId` property.\n * If the `rootElementId` property is not set, the baseline will be scoped to a new container, `hv-uikit-scoped-root*`, created around your content.\n * If you are providing your own baseline styles, you can set this property to `none` to disable the baseline styles.\n */\n cssBaseline?: \"global\" | \"scoped\" | \"none\";\n /**\n * By default the theme styles are applied globally, `global`, to the application.\n * If you need to scope the theme styles to avoid styling conflicts, you can set this property to `scoped`.\n * To scope the theme to your root, you need to add the `rootElementId` property.\n * If the `rootElementId` property is not set, the theme will be scoped to a new container, `hv-uikit-scoped-root*`, created around your content.\n */\n cssTheme?: \"global\" | \"scoped\";\n /**\n * The string used to prefix the class names and uniquely identify them. The key can only contain lower case alphabetical characters.\n * This is useful to avoid class name collisions.\n *\n * If no value is provided, the default is `hv`.\n */\n classNameKey?: string;\n /**\n * List of themes to be used by UI Kit.\n * You can provide your own themes created with the `createTheme` utility and/or the default themes `ds3` and `ds5` provided by UI Kit.\n *\n * If no value is provided, the `ds5` theme will be used.\n */\n themes?: (HvTheme | HvThemeStructure)[];\n /**\n * The active theme. It must be one of the themes passed to `themes`.\n *\n * If no value is provided, the first theme from the `themes` list is used. If no `themes` list is provided, the `ds5` theme will be used.\n */\n theme?: string;\n /**\n * The active color mode. It must be one of the color modes of the active theme.\n *\n * If no value is provided, the first color mode defined in the active theme is used.\n * For the default themes `ds3` and `ds5`, the `dawn` color mode is the one used.\n */\n colorMode?: string;\n}\n\nconst scopedRootPrefix = \"hv-uikit-scoped-root\" as const;\n\n/**\n * Enables theming capabilities and makes cross-component theme properties available down the tree.\n */\nexport const HvProvider = ({\n children,\n rootElementId,\n cssBaseline = \"global\",\n cssTheme = \"global\",\n themes,\n theme,\n colorMode,\n classNameKey = defaultCacheKey,\n}: HvProviderProps) => {\n const scopedRootId = useUniqueId(undefined, scopedRootPrefix);\n\n // Themes\n const themesList: (HvTheme | HvThemeStructure)[] = processThemes(themes);\n\n // Emotion cache\n // Moves UI Kit styles to the top of the <head> so they're loaded first\n // This enables users to override the UI Kit styles if necessary\n const emotionCache = useMemo(\n () =>\n classNameKey === defaultCacheKey\n ? defaultEmotionCache\n : createCache({ key: classNameKey, prepend: true }),\n [classNameKey]\n );\n\n return (\n <CacheProvider value={emotionCache}>\n <Global\n styles={cssReact`\n ${cssBaseline === \"global\" && CssBaseline}\n ${getThemesVars(themesList)}\n `}\n />\n <HvThemeProvider\n themes={themesList}\n theme={theme || themesList[0].name}\n emotionCache={emotionCache}\n colorMode={colorMode || Object.keys(themesList[0].colors.modes)[0]}\n themeRootId={\n cssTheme === \"scoped\" ? rootElementId || scopedRootId : undefined\n }\n >\n <ClassNames>\n {({ css }) => {\n if (cssBaseline === \"scoped\") {\n const rootElement = getElementById(rootElementId);\n\n if (rootElement) {\n rootElement.classList.add(\n css({\n ...CssScopedBaseline,\n })\n );\n }\n }\n\n return (cssTheme === \"scoped\" || cssBaseline === \"scoped\") &&\n !rootElementId ? (\n <div\n id={scopedRootId}\n className={\n cssBaseline === \"scoped\"\n ? css({ ...CssScopedBaseline
|
|
1
|
+
{"version":3,"file":"Provider.cjs","sources":["../../../src/providers/Provider.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\n\nimport createCache from \"@emotion/cache\";\nimport {\n css as cssReact,\n Global,\n CacheProvider,\n ClassNames,\n} from \"@emotion/react\";\n\nimport {\n CssBaseline,\n CssScopedBaseline,\n getThemesVars,\n HvThemeStructure,\n} from \"@hitachivantara/uikit-styles\";\n\nimport { getElementById } from \"@core/utils/document\";\nimport { processThemes } from \"@core/utils/theme\";\nimport { HvTheme } from \"@core/types/theme\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\n\nimport {\n HvThemeProvider,\n defaultCacheKey,\n defaultEmotionCache,\n} from \"./ThemeProvider\";\n\n// Provider props\nexport interface HvProviderProps {\n /**\n * Your component tree.\n */\n children?: React.ReactNode;\n /**\n * Id of your root element.\n */\n rootElementId?: string;\n /**\n * By default the baseline styles are applied globally, `global`, to the application for the UI Kit components to work properly.\n * If you need to scope the baseline styles to avoid styling conflicts, you can set this property to `scoped`.\n * To scope the baseline to your root, you need to add the `rootElementId` property.\n * If the `rootElementId` property is not set, the baseline will be scoped to a new container, `hv-uikit-scoped-root*`, created around your content.\n * If you are providing your own baseline styles, you can set this property to `none` to disable the baseline styles.\n */\n cssBaseline?: \"global\" | \"scoped\" | \"none\";\n /**\n * By default the theme styles are applied globally, `global`, to the application.\n * If you need to scope the theme styles to avoid styling conflicts, you can set this property to `scoped`.\n * To scope the theme to your root, you need to add the `rootElementId` property.\n * If the `rootElementId` property is not set, the theme will be scoped to a new container, `hv-uikit-scoped-root*`, created around your content.\n */\n cssTheme?: \"global\" | \"scoped\";\n /**\n * The string used to prefix the class names and uniquely identify them. The key can only contain lower case alphabetical characters.\n * This is useful to avoid class name collisions.\n *\n * If no value is provided, the default is `hv`.\n */\n classNameKey?: string;\n /**\n * List of themes to be used by UI Kit.\n * You can provide your own themes created with the `createTheme` utility and/or the default themes `ds3` and `ds5` provided by UI Kit.\n *\n * If no value is provided, the `ds5` theme will be used.\n */\n themes?: (HvTheme | HvThemeStructure)[];\n /**\n * The active theme. It must be one of the themes passed to `themes`.\n *\n * If no value is provided, the first theme from the `themes` list is used. If no `themes` list is provided, the `ds5` theme will be used.\n */\n theme?: string;\n /**\n * The active color mode. It must be one of the color modes of the active theme.\n *\n * If no value is provided, the first color mode defined in the active theme is used.\n * For the default themes `ds3` and `ds5`, the `dawn` color mode is the one used.\n */\n colorMode?: string;\n}\n\nconst scopedRootPrefix = \"hv-uikit-scoped-root\" as const;\n\n/**\n * Enables theming capabilities and makes cross-component theme properties available down the tree.\n */\nexport const HvProvider = ({\n children,\n rootElementId,\n cssBaseline = \"global\",\n cssTheme = \"global\",\n themes,\n theme,\n colorMode,\n classNameKey = defaultCacheKey,\n}: HvProviderProps) => {\n const scopedRootId = useUniqueId(undefined, scopedRootPrefix);\n\n // Themes\n const themesList: (HvTheme | HvThemeStructure)[] = processThemes(themes);\n\n // Emotion cache\n // Moves UI Kit styles to the top of the <head> so they're loaded first\n // This enables users to override the UI Kit styles if necessary\n const emotionCache = useMemo(\n () =>\n classNameKey === defaultCacheKey\n ? defaultEmotionCache\n : createCache({ key: classNameKey, prepend: true }),\n [classNameKey]\n );\n\n return (\n <CacheProvider value={emotionCache}>\n <Global\n styles={cssReact`\n ${\n cssBaseline === \"global\" && {\n [`@layer hv-uikit-baseline`]: {\n ...CssBaseline,\n },\n }\n }\n ${getThemesVars(themesList)}\n `}\n />\n <HvThemeProvider\n themes={themesList}\n theme={theme || themesList[0].name}\n emotionCache={emotionCache}\n colorMode={colorMode || Object.keys(themesList[0].colors.modes)[0]}\n themeRootId={\n cssTheme === \"scoped\" ? rootElementId || scopedRootId : undefined\n }\n >\n <ClassNames>\n {({ css }) => {\n if (cssBaseline === \"scoped\") {\n const rootElement = getElementById(rootElementId);\n\n if (rootElement) {\n rootElement.classList.add(\n css({\n [`@layer ${rootElementId}-baseline`]: {\n ...CssScopedBaseline,\n },\n })\n );\n }\n }\n\n return (cssTheme === \"scoped\" || cssBaseline === \"scoped\") &&\n !rootElementId ? (\n <div\n id={scopedRootId}\n className={\n cssBaseline === \"scoped\"\n ? css({\n [`@layer ${rootElementId}-baseline`]: {\n ...CssScopedBaseline,\n },\n })\n : undefined\n }\n >\n {children}\n </div>\n ) : (\n children\n );\n }}\n </ClassNames>\n </HvThemeProvider>\n </CacheProvider>\n );\n};\n"],"names":["scopedRootPrefix","HvProvider","children","rootElementId","cssBaseline","cssTheme","themes","theme","colorMode","classNameKey","defaultCacheKey","scopedRootId","useUniqueId","undefined","themesList","processThemes","emotionCache","useMemo","defaultEmotionCache","createCache","key","prepend","jsxs","CacheProvider","jsx","Global","CssBaseline","getThemesVars","process","env","NODE_ENV","HvThemeProvider","name","Object","keys","colors","modes","ClassNames","css","rootElement","getElementById","classList","add","CssScopedBaseline"],"mappings":";;;;;;;;;;;;;;AAkFA,MAAMA,mBAAmB;AAKlB,MAAMC,aAAaA,CAAC;AAAA,EACzBC;AAAAA,EACAC;AAAAA,EACAC,cAAc;AAAA,EACdC,WAAW;AAAA,EACXC;AAAAA,EAAAA,OACAC;AAAAA,EACAC;AAAAA,EACAC,eAAeC,iBAAAA;AACA,MAAM;AACfC,QAAAA,eAAeC,YAAYC,YAAAA,QAAWb,gBAAgB;AAGtDc,QAAAA,aAA6CC,oBAAcT,MAAM;AAKvE,QAAMU,eAAeC,MAAAA,QACnB,MACER,iBAAiBC,iBAAAA,kBACbQ,uCACAC,6BAAY;AAAA,IAAEC,KAAKX;AAAAA,IAAcY,SAAS;AAAA,EAAA,CAAM,GACtD,CAACZ,YAAY,CACf;AAGE,SAAAa,2BAAA,KAACC,MAAc,eAAA,EAAA,OAAOP,cACpB,UAAA;AAAA,IAAAQ,2BAAA,IAACC,MACC,QAAA,EAAA,QAEIrB,sBAAAA,IAAAA,gBAAgB,YAAY;AAAA,MAC1B,CAAE,0BAAyB,GAAG;AAAA,QAC5B,GAAGsB,YAAAA;AAAAA,MACL;AAAA,IAAA,QAGFC,YAAAA,cAAcb,UAAU,UAACc,QAAAC,IAAAC,aAAAF,eAAAA,KAAAA,uBAAAA,QAAAC,IAAAC,aAC3B,eAAA,KAAA,ypQAAA,GAAA;AAAA,IAEHN,2BAAA,IAAAO,cAAA,iBAAA,EACC,QAAQjB,YACR,OAAOP,WAASO,WAAW,CAAC,EAAEkB,MAC9B,cACA,WAAWxB,aAAayB,OAAOC,KAAKpB,WAAW,CAAC,EAAEqB,OAAOC,KAAK,EAAE,CAAC,GACjE,aACE/B,aAAa,WAAWF,iBAAiBQ,eAAeE,QAG1D,UAAAW,2BAAA,IAACa,oBACE,UAAC,CAAA;AAAA,MAAEC;AAAAA,IAAAA,MAAU;AACZ,UAAIlC,gBAAgB,UAAU;AACtBmC,cAAAA,cAAcC,wBAAerC,aAAa;AAEhD,YAAIoC,aAAa;AACHE,sBAAAA,UAAUC,IACpBJ,IAAI;AAAA,YACF,CAAE,UAASnC,aAAc,WAAU,GAAG;AAAA,cACpC,GAAGwC,YAAAA;AAAAA,YACL;AAAA,UACD,CAAA,CACH;AAAA,QACF;AAAA,MACF;AAEA,cAAQtC,aAAa,YAAYD,gBAAgB,aAC/C,CAACD,gBACAqB,2BAAAA,IAAA,OAAA,EACC,IAAIb,cACJ,WACEP,gBAAgB,WACZkC,IAAI;AAAA,QACF,CAAE,UAASnC,aAAc,WAAU,GAAG;AAAA,UACpC,GAAGwC,YAAAA;AAAAA,QACL;AAAA,MACD,CAAA,IACD9B,QAGLX,SACH,CAAA,IAEAA;AAAAA,OAGN,EACF,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { forwardRef, useState,
|
|
2
|
+
import { forwardRef, useState, useRef, useEffect } from "react";
|
|
3
3
|
import { useForkRef } from "@mui/material";
|
|
4
4
|
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
5
5
|
import { setId } from "../../utils/setId.js";
|
|
@@ -80,8 +80,10 @@ const HvDropdown = forwardRef((props, ref) => {
|
|
|
80
80
|
const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));
|
|
81
81
|
const [selectionLabel, setSelectionLabel] = useState(getSelectionLabel(labels, placeholder, multiSelect, values));
|
|
82
82
|
const [internalValues, setInternalValues] = useState(values);
|
|
83
|
+
const internalValuesRef = useRef(values);
|
|
83
84
|
useEffect(() => {
|
|
84
85
|
setInternalValues(values);
|
|
86
|
+
internalValuesRef.current = values;
|
|
85
87
|
}, [values]);
|
|
86
88
|
useEffect(() => {
|
|
87
89
|
setSelectionLabel(getSelectionLabel(labels, placeholder, multiSelect, values));
|
|
@@ -100,7 +102,7 @@ const HvDropdown = forwardRef((props, ref) => {
|
|
|
100
102
|
if (!open) {
|
|
101
103
|
setValidationState(() => {
|
|
102
104
|
if (required) {
|
|
103
|
-
const hasSelection = getSelected(
|
|
105
|
+
const hasSelection = getSelected(internalValuesRef.current).length > 0;
|
|
104
106
|
if (!hasSelection) {
|
|
105
107
|
return "invalid";
|
|
106
108
|
}
|
|
@@ -113,6 +115,7 @@ const HvDropdown = forwardRef((props, ref) => {
|
|
|
113
115
|
const selected = getSelected(listValues);
|
|
114
116
|
if (commitChanges) {
|
|
115
117
|
setInternalValues(listValues);
|
|
118
|
+
internalValuesRef.current = listValues;
|
|
116
119
|
setSelectionLabel(getSelectionLabel(labels, placeholder, multiSelect, listValues));
|
|
117
120
|
setValidationState(() => {
|
|
118
121
|
if (required && selected.length === 0) {
|