{"version":3,"file":"checkBoxList.obs.js","sources":["../../../Framework/Controls/checkBoxList.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\r\n<template>\r\n    <RockFormField :modelValue=\"internalValue\"\r\n                   formGroupClasses=\"check-box-list\"\r\n                   name=\"check-box-list\">\r\n        <template #default=\"{ uniqueId }\">\r\n            <div class=\"control-wrapper\">\r\n                <slot name=\"prepend\" :isInputGroupSupported=\"false\" />\r\n                <div class=\"controls rockcheckboxlist\" :class=\"containerClasses\">\r\n                    <template v-if=\"horizontal\">\r\n                        <label v-for=\"item in items\" class=\"checkbox-inline\" :for=\"uniqueIdForItem(uniqueId, item)\">\r\n                            <input :disabled=\"disabled\" :id=\"uniqueIdForItem(uniqueId, item)\" :name=\"uniqueId\" type=\"checkbox\" :value=\"valueForItem(item)\" v-model=\"internalValue\" />\r\n                            <span class=\"label-text\">{{ textForItem(item) }}</span>\r\n                        </label>\r\n                    </template>\r\n                    <template v-else>\r\n                        <div v-for=\"item in items\" class=\"checkbox\">\r\n                            <label :for=\"uniqueIdForItem(uniqueId, item)\" :class=\"labelClasses(item)\">\r\n                                <input :disabled=\"disabled\" :id=\"uniqueIdForItem(uniqueId, item)\" :name=\"uniqueId\" type=\"checkbox\" :value=\"valueForItem(item)\" v-model=\"internalValue\" />\r\n                                <span class=\"label-text\">{{ textForItem(item) }}</span>\r\n                            </label>\r\n                        </div>\r\n                    </template>\r\n                </div>\r\n                <slot name=\"append\" :isInputGroupSupported=\"false\" />\r\n            </div>\r\n        </template>\r\n    </RockFormField>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n    import { computed, PropType, ref, watch } from \"vue\";\r\n    import { updateRefValue } from \"@Obsidian/Utility/component\";\r\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\n    import RockFormField from \"./rockFormField.obs\";\r\n    import { defaultControlCompareValue } from \"@Obsidian/Utility/stringUtils\";\r\n\r\n    const props = defineProps({\r\n        modelValue: {\r\n            type: Array as PropType<string[]>,\r\n            default: []\r\n        },\r\n\r\n        disabled: {\r\n            type: Boolean as PropType<boolean>,\r\n            required: false,\r\n            default: false\r\n        },\r\n\r\n        items: {\r\n            type: Array as PropType<Array<ListItemBag>>,\r\n            required: true\r\n        },\r\n\r\n        repeatColumns: {\r\n            type: Number as PropType<number>,\r\n            default: 0\r\n        },\r\n\r\n        horizontal: {\r\n            type: Boolean as PropType<boolean>,\r\n            default: false\r\n        },\r\n\r\n        displayAsCheckList: {\r\n            type: Boolean as PropType<boolean>,\r\n            default: false\r\n        },\r\n\r\n        compareValue: {\r\n            type: Function as PropType<((value: string, itemValue: string) => boolean)>,\r\n            default: defaultControlCompareValue\r\n        }\r\n    });\r\n\r\n    const emit = defineEmits<{\r\n        (e: \"update:modelValue\", value: string[]): void;\r\n    }>();\r\n\r\n    const internalValue = ref([...props.modelValue]);\r\n\r\n    const valueForItem = (item: ListItemBag): string => item.value ?? \"\";\r\n    const textForItem = (item: ListItemBag): string => item.text ?? \"\";\r\n\r\n    const uniqueIdForItem = (uniqueId: string, item: ListItemBag): string => `${uniqueId}-${(item.value ?? \"\").replace(\" \", \"-\")}`;\r\n\r\n    const containerClasses = computed(() => {\r\n        const classes: string[] = [];\r\n\r\n        if (props.repeatColumns > 0) {\r\n            classes.push(`in-columns in-columns-${props.repeatColumns}`);\r\n        }\r\n\r\n        return classes.join(\" \");\r\n    });\r\n\r\n    const labelClasses = (item: ListItemBag): string => {\r\n        const classes: string[] = [];\r\n        if (props.displayAsCheckList && internalValue.value.includes(item.value ?? \"\")) {\r\n            classes.push(\"text-linethrough\");\r\n        }\r\n\r\n        return classes.join(\" \");\r\n    };\r\n\r\n    const syncInternalValue = (): void => {\r\n        let value = [...props.modelValue];\r\n\r\n        // Ensure they are all valid values and make sure they are the\r\n        // correct matching value from the item rather than what was\r\n        // originally provided.\r\n        value = props.items\r\n            .filter(o => value.some(v => props.compareValue(v, o.value ?? \"\")))\r\n            .map(o => o.value ?? \"\");\r\n\r\n        updateRefValue(internalValue, value);\r\n    };\r\n\r\n    watch([() => props.modelValue, () => props.items], () => {\r\n        syncInternalValue();\r\n    });\r\n\r\n    watch(internalValue, () => {\r\n        emit(\"update:modelValue\", internalValue.value);\r\n    });\r\n\r\n    syncInternalValue();\r\n</script>\r\n"],"names":["internalValue","ref","props","modelValue","valueForItem","item","_item$value","value","textForItem","_item$text","text","uniqueIdForItem","uniqueId","_item$value2","concat","replace","containerClasses","computed","classes","repeatColumns","push","join","labelClasses","_item$value3","displayAsCheckList","includes","syncInternalValue","items","filter","o","some","v","_o$value","compareValue","map","_o$value2","updateRefValue","watch","emit"],"mappings":"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"}