{"version":3,"file":"radioButtonList.js","sources":["../../../Framework/Controls/radioButtonList.ts"],"sourcesContent":["// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { Guid } from \"@Obsidian/Types\";\r\nimport { computed, defineComponent, PropType, ref, watch } from \"vue\";\r\nimport { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\r\nimport RockFormField from \"./rockFormField\";\r\nimport { updateRefValue } from \"@Obsidian/Utility/component\";\r\nimport { defaultControlCompareValue } from \"@Obsidian/Utility/stringUtils\";\r\n\r\nexport default defineComponent({\r\n name: \"RadioButtonList\",\r\n components: {\r\n RockFormField\r\n },\r\n props: {\r\n items: {\r\n type: Array as PropType,\r\n default: []\r\n },\r\n\r\n modelValue: {\r\n type: String as PropType,\r\n default: \"\"\r\n },\r\n\r\n disabled: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false\r\n },\r\n\r\n formGroupClasses: {\r\n type: String as PropType,\r\n default: \"\"\r\n },\r\n\r\n repeatColumns: {\r\n type: Number as PropType,\r\n default: 0\r\n },\r\n\r\n horizontal: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n showBlankItem: {\r\n type: Boolean as PropType,\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 emits: {\r\n \"update:modelValue\": (_value: string) => true\r\n },\r\n\r\n setup(props, { emit }) {\r\n const internalValue = ref(props.modelValue);\r\n\r\n const containerClasses = computed((): string => {\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 if (props.horizontal) {\r\n classes.push(\"rockradiobuttonlist-horizontal\");\r\n }\r\n else {\r\n classes.push(\"rockradiobuttonlist-vertical\");\r\n }\r\n\r\n return classes.join(\" \");\r\n });\r\n\r\n const actualItems = computed((): ListItemBag[] => {\r\n const items = [...props.items];\r\n\r\n if (props.showBlankItem) {\r\n items.splice(0, 0, {\r\n value: \"\",\r\n text: \"None\"\r\n });\r\n }\r\n\r\n return items;\r\n });\r\n\r\n function isItemDisabled(item: ListItemBag): boolean {\r\n return item.category === \"disabled\" || props.disabled;\r\n }\r\n\r\n const getItemUniqueId = (uniqueId: Guid, item: ListItemBag): string => {\r\n const key = (item.value ?? \"\").replace(\" \", \"-\");\r\n\r\n return `${uniqueId}-${key}`;\r\n };\r\n\r\n const syncInternalValue = (): void => {\r\n let value = props.modelValue;\r\n\r\n if (value) {\r\n // Ensure it is a valid value, if not then set it to blank.\r\n const selectedOption = props.items.find(o => props.compareValue(value as string, o.value ?? \"\")) || null;\r\n\r\n if (!selectedOption) {\r\n value = \"\";\r\n }\r\n else {\r\n value = selectedOption.value ?? \"\";\r\n }\r\n }\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\r\n return {\r\n actualItems,\r\n containerClasses,\r\n getItemUniqueId,\r\n internalValue,\r\n isItemDisabled\r\n };\r\n },\r\n\r\n template: `\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n`\r\n});\r\n"],"names":["defineComponent","name","components","RockFormField","props","items","type","Array","default","modelValue","String","disabled","Boolean","required","formGroupClasses","repeatColumns","Number","horizontal","showBlankItem","compareValue","Function","defaultControlCompareValue","emits","_value","setup","_ref","emit","internalValue","ref","containerClasses","computed","classes","push","concat","join","actualItems","splice","value","text","isItemDisabled","item","category","getItemUniqueId","uniqueId","_item$value","key","replace","syncInternalValue","selectedOption","find","o","_o$value","_selectedOption$value","updateRefValue","watch","template"],"mappings":"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"}