{"version":3,"file":"react-querybuilder_bootstrap.production.mjs","names":["React","BootstrapNotToggle","id","useId","className","handleOnChange","checked","label","RadioButton","props","BootstrapValueEditor","useValueEditor","listItemClasses","ValueEditor","valueListItemClassName","standardClassnames","v","bootstrapControlElements","bootstrapControlClassnames","bootstrapTranslations","QueryBuilderBootstrap","getCompatContextProvider"],"sources":["../src/BootstrapNotToggle.tsx","../src/BootstrapValueEditor.tsx","../src/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useId } from 'react';\nimport type { NotToggleProps } from 'react-querybuilder';\n\n/**\n * @group Components\n */\nexport const BootstrapNotToggle = ({\n  className,\n  handleOnChange,\n  title,\n  label,\n  checked,\n  disabled,\n}: NotToggleProps): React.JSX.Element => {\n  const id = useId();\n\n  return (\n    <div className={`form-check-inline form-switch ${className}`}>\n      <input\n        id={id}\n        className=\"form-check-input\"\n        type=\"checkbox\"\n        onChange={e => handleOnChange(e.target.checked)}\n        checked={!!checked}\n        disabled={disabled}\n      />\n      <label title={title} htmlFor={id} className=\"form-check-label\">\n        {label}\n      </label>\n    </div>\n  );\n};\n","import * as React from 'react';\nimport type { ValueEditorProps } from 'react-querybuilder';\nimport { standardClassnames, useValueEditor, ValueEditor } from 'react-querybuilder';\n\n// Extracted from callback so we can use `useId`\nconst RadioButton = (props: {\n  name: string;\n  disabled?: boolean;\n  checked: boolean;\n  handleOnChange: (v: string) => void;\n  label: string;\n}) => {\n  const id = React.useId();\n  return (\n    <div className=\"form-check form-check-inline\">\n      <input\n        className=\"form-check-input\"\n        type=\"radio\"\n        id={id}\n        value={props.name}\n        checked={props.checked}\n        disabled={props.disabled}\n        onChange={e => props.handleOnChange(e.target.value)}\n      />\n      <label className=\"form-check-label\" htmlFor={id}>\n        {props.label}\n      </label>\n    </div>\n  );\n};\n\n/**\n * @group Components\n */\nexport const BootstrapValueEditor = (props: ValueEditorProps): React.JSX.Element | null => {\n  const { valueListItemClassName } = useValueEditor(props);\n\n  if (props.operator === 'null' || props.operator === 'notNull') {\n    return null;\n  }\n\n  if (\n    (props.operator === 'between' || props.operator === 'notBetween') &&\n    (props.type === 'select' || props.type === 'text')\n  ) {\n    const listItemClasses =\n      props.type === 'text' ? 'form-control form-control-sm' : 'form-select form-select-sm';\n    return (\n      <ValueEditor\n        {...props}\n        skipHook\n        schema={{\n          ...props.schema,\n          classNames: {\n            ...props.schema.classNames,\n            valueListItem: `${valueListItemClassName} ${listItemClasses}`,\n          },\n        }}\n      />\n    );\n  }\n\n  switch (props.type) {\n    case 'select':\n    case 'multiselect':\n      return (\n        <ValueEditor\n          {...props}\n          skipHook\n          className={`${props.className} form-select form-select-sm`}\n        />\n      );\n\n    case 'switch':\n      return (\n        <span className={`${props.className} custom-control custom-switch`}>\n          <input\n            type=\"checkbox\"\n            className=\"form-check-input custom-control-input\"\n            title={props.title}\n            disabled={props.disabled}\n            onChange={e => props.handleOnChange(e.target.checked)}\n            checked={!!props.value}\n          />\n        </span>\n      );\n\n    case 'checkbox':\n      return <ValueEditor {...props} skipHook className={`${props.className} form-check-input`} />;\n\n    case 'radio':\n      return (\n        <span title={props.title} className={standardClassnames.value}>\n          {props.values?.map(v => (\n            <RadioButton\n              key={v.name}\n              name={v.name}\n              disabled={props.disabled}\n              checked={props.value === v.name}\n              handleOnChange={props.handleOnChange}\n              label={v.label}\n            />\n          ))}\n        </span>\n      );\n  }\n\n  return (\n    <ValueEditor\n      {...props}\n      skipHook\n      className={`${props.className} form-control form-control-sm`}\n    />\n  );\n};\n","import * as React from 'react';\nimport type {\n  Classnames,\n  ControlElementsProp,\n  FullField,\n  QueryBuilderContextProvider,\n  Translations,\n} from 'react-querybuilder';\nimport { getCompatContextProvider } from 'react-querybuilder';\nimport { BootstrapNotToggle } from './BootstrapNotToggle';\nimport { BootstrapValueEditor } from './BootstrapValueEditor';\n\nexport * from './BootstrapNotToggle';\nexport * from './BootstrapValueEditor';\n\n/**\n * @group Props\n */\nexport const bootstrapControlElements: ControlElementsProp<FullField, string> = {\n  notToggle: BootstrapNotToggle,\n  valueEditor: BootstrapValueEditor,\n};\n\n/**\n * @group Props\n */\nexport const bootstrapControlClassnames: Partial<Classnames> = {\n  actionElement: 'btn btn-sm',\n  addGroup: 'btn-secondary',\n  addRule: 'btn-primary',\n  cloneGroup: 'btn-secondary',\n  cloneRule: 'btn-secondary',\n  ungroup: 'btn-secondary',\n  lockGroup: 'btn-secondary',\n  lockRule: 'btn-secondary',\n  removeGroup: 'btn-danger',\n  removeRule: 'btn-danger',\n  undoAction: 'btn-secondary',\n  redoAction: 'btn-secondary',\n  // BootstrapValueEditor adds its own classnames\n  // value: '',\n  valueSelector: 'form-select form-select-sm',\n};\n\n/**\n * @group Props\n */\nexport const bootstrapTranslations: Partial<Translations> = {\n  removeGroup: { label: <i className=\"bi bi-x\" /> },\n  removeRule: { label: <i className=\"bi bi-x\" /> },\n  cloneRule: { label: <i className=\"bi bi-copy\" /> },\n  cloneRuleGroup: { label: <i className=\"bi bi-copy\" /> },\n  ungroupRuleGroup: { label: <i className=\"bi bi-box-arrow-up-left\" /> },\n  dragHandle: { label: <i className=\"bi bi-grip-vertical\" /> },\n  lockGroup: { label: <i className=\"bi bi-unlock\" /> },\n  lockRule: { label: <i className=\"bi bi-unlock\" /> },\n  lockGroupDisabled: { label: <i className=\"bi bi-lock\" /> },\n  lockRuleDisabled: { label: <i className=\"bi bi-lock\" /> },\n  shiftActionUp: { label: <i className=\"bi bi-chevron-compact-up\" /> },\n  shiftActionDown: { label: <i className=\"bi bi-chevron-compact-down\" /> },\n  undo: { label: <i className=\"bi bi-arrow-counterclockwise\" /> },\n  redo: { label: <i className=\"bi bi-arrow-clockwise\" /> },\n};\n\n/**\n * @group Components\n */\nexport const QueryBuilderBootstrap: QueryBuilderContextProvider = getCompatContextProvider({\n  controlClassnames: bootstrapControlClassnames,\n  controlElements: bootstrapControlElements,\n  translations: bootstrapTranslations,\n});\n"],"mappings":"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"}