HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux vm8 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: afleverb (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/drakkar_site_dev/wp-content/themes/blocksy/static/js/options/options/ct-checkboxes.js
import {
	createElement,
	Component,
	createContext,
	Fragment,
} from '@wordpress/element'
import { maybeTransformUnorderedChoices } from '../helpers/parse-choices.js'
import classnames from 'classnames'

import _ from 'underscore'

const Checkboxes = ({
	option,
	value,
	onChange,
	option: { view = 'checkboxes' },
}) => {
	const orderedChoices = maybeTransformUnorderedChoices(option.choices)

	const { inline = false } = option

	if (view === 'checkboxes') {
		return (
			<div
				className="ct-option-checkbox"
				{...(inline ? { ['data-inline']: '' } : {})}
				{...(option.attr || {})}>
				{orderedChoices.map(({ key, value: choiceValue }) => (
					<label key={key}>
						<input
							type="checkbox"
							checked={
								typeof value[key] === 'boolean'
									? value[key]
									: value[key] === 'true'
							}
							data-id={key}
							onChange={({ target: { checked } }) =>
								onChange({
									...value,
									[key]: value[key]
										? Object.values(value).filter((v) => v)
												.length === 1 &&
										  !option.allow_empty
											? true
											: false
										: true,
								})
							}
						/>

						{choiceValue}
					</label>
				))}
			</div>
		)
	}

	return (
		<ul
			className="ct-option-checkbox ct-buttons-group"
			{...(inline ? { ['data-inline']: '' } : {})}
			{...(option.attr || {})}>
			{orderedChoices.map(({ key, value: choiceValue }) => (
				<li
					className={classnames({
						active:
							typeof value[key] === 'boolean'
								? value[key]
								: value[key] === 'true',
					})}
					data-id={key}
					key={key}
					onClick={({ target: { checked } }) =>
						onChange({
							...value,
							[key]: value[key]
								? Object.values(value).filter((v) => v)
										.length === 1 && !option.allow_empty
									? true
									: false
								: true,
						})
					}>
					{choiceValue}
				</li>
			))}
		</ul>
	)
}

export default Checkboxes