{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/checkbox-group/index.tsx","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,uCAAuC,CAAC;AA+B7D,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;KAC9C,UAAU,EAA2B;KACrC,QAAQ,EAAqC,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,aAAa,CAAC,EAC3D,QAAQ,EACR,UAAU,EACV,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,EACpC;IACA,MAAM,EACL,IAAI,EACJ,OAAO,EACP,OAAO,EACP,YAAY,EACZ,KAAK,EACL,OAAO,EACP,KAAK,EAAE,SAAS,EAChB,OAAO,EACP,QAAQ,EACR,GAAG,UAAU,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC;IAEzF,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5C,SAAS,gBAAgB;QACxB,IAAI,UAAU,EAAE;YACf,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACvC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CACN,IAAC,QAAQ,IACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,IAEjB,KAAK,IAAI,KAAK,CACL,CACX,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CACN,kBAAU,GAAG,EAAC,MAAM,EAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI;QAC/D,KAAK,IAAI,gBAAQ,OAAO,EAAE,MAAM,IAAG,KAAK,CAAU;QAClD,gBAAgB,EAAE,CACT,CACX,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC","sourcesContent":["import { create, tsx } from '@dojo/framework/core/vdom';\nimport { checkboxGroup } from './middleware';\nimport { Checkbox } from '../checkbox/index';\nimport { RenderResult } from '@dojo/framework/core/interfaces';\nimport theme from '../middleware/theme';\nimport * as css from '../theme/default/checkbox-group.m.css';\n\ntype CheckboxOptions = { value: string; label?: string }[];\n\nexport interface CheckboxGroupProperties {\n\t/** The name attribute for this form group */\n\tname: string;\n\t/** Object containing the values / labels to create checkboxes for */\n\toptions: CheckboxOptions;\n\t/** Callback for the current value */\n\tonValue(value: string[]): void;\n\t/** Initial value of the checkbox group */\n\tinitialValue?: string[];\n\t/** A controlled value for the checkbox group */\n\tvalue?: string[];\n\t/** Disabled all inputs within this group */\n\tdisabled?: boolean;\n}\n\nexport interface CheckboxGroupChildren {\n\t/** Custom renderer for the checkboxes, receives the checkbox group middleware and options */\n\tcheckboxes?(\n\t\tname: string,\n\t\tmiddleware: ReturnType<ReturnType<typeof checkboxGroup>['api']>,\n\t\toptions: CheckboxOptions,\n\t\tdisabled: boolean\n\t): RenderResult;\n\t/** A label for the checkbox group */\n\tlabel?: RenderResult;\n}\n\nconst factory = create({ checkboxGroup, theme })\n\t.properties<CheckboxGroupProperties>()\n\t.children<CheckboxGroupChildren | undefined>();\n\nexport const CheckboxGroup = factory(function CheckboxGroup({\n\tchildren,\n\tproperties,\n\tmiddleware: { checkboxGroup, theme }\n}) {\n\tconst {\n\t\tname,\n\t\toptions,\n\t\tonValue,\n\t\tinitialValue,\n\t\tvalue,\n\t\tclasses,\n\t\ttheme: themeProp,\n\t\tvariant,\n\t\tdisabled\n\t} = properties();\n\tconst [{ checkboxes, label } = { checkboxes: undefined, label: undefined }] = children();\n\n\tconst checkbox = checkboxGroup(onValue, initialValue, value);\n\tconst { root, legend } = theme.classes(css);\n\n\tfunction renderCheckboxes() {\n\t\tif (checkboxes) {\n\t\t\treturn checkboxes(name, checkbox, options, !!disabled);\n\t\t}\n\t\treturn options.map(({ value, label }) => {\n\t\t\tconst { checked } = checkbox(value);\n\t\t\treturn (\n\t\t\t\t<Checkbox\n\t\t\t\t\tname={name}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tchecked={checked()}\n\t\t\t\t\tonValue={checked}\n\t\t\t\t\tclasses={classes}\n\t\t\t\t\ttheme={themeProp}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t>\n\t\t\t\t\t{label || value}\n\t\t\t\t</Checkbox>\n\t\t\t);\n\t\t});\n\t}\n\n\treturn (\n\t\t<fieldset key=\"root\" classes={[theme.variant(), root]} name={name}>\n\t\t\t{label && <legend classes={legend}>{label}</legend>}\n\t\t\t{renderCheckboxes()}\n\t\t</fieldset>\n\t);\n});\n\nexport default CheckboxGroup;\n"]}