{"version":3,"file":"index.mjs","sources":["../../src/selectbutton/BaseSelectButton.vue","../../src/selectbutton/SelectButton.vue","../../src/selectbutton/SelectButton.vue?vue&type=template&id=08bb3c0a&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport SelectButtonStyle from 'primevue/selectbutton/style';\n\nexport default {\n    name: 'BaseSelectButton',\n    extends: BaseComponent,\n    props: {\n        modelValue: null,\n        options: Array,\n        optionLabel: null,\n        optionValue: null,\n        optionDisabled: null,\n        multiple: Boolean,\n        allowEmpty: {\n            type: Boolean,\n            default: true\n        },\n        invalid: {\n            type: Boolean,\n            default: false\n        },\n        disabled: Boolean,\n        dataKey: null,\n        ariaLabelledby: {\n            type: String,\n            default: null\n        }\n    },\n    style: SelectButtonStyle,\n    provide() {\n        return {\n            $pcSelectButton: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" role=\"group\" :aria-labelledby=\"ariaLabelledby\" v-bind=\"ptmi('root')\">\n        <template v-for=\"(option, index) of options\" :key=\"getOptionRenderKey(option)\">\n            <ToggleButton\n                :modelValue=\"isSelected(option)\"\n                :onLabel=\"getOptionLabel(option)\"\n                :offLabel=\"getOptionLabel(option)\"\n                :disabled=\"disabled || isOptionDisabled(option)\"\n                :unstyled=\"unstyled\"\n                @change=\"onOptionSelect($event, option, index)\"\n                :pt=\"ptm('pcButton')\"\n            >\n                <template v-if=\"$slots.option\" #default>\n                    <slot name=\"option\" :option=\"option\" :index=\"index\">\n                        <span v-bind=\"ptm('pcButton')['label']\">{{ getOptionLabel(option) }}</span>\n                    </slot>\n                </template>\n            </ToggleButton>\n        </template>\n    </div>\n</template>\n\n<script>\nimport { resolveFieldData, equals } from '@primeuix/utils/object';\nimport Ripple from 'primevue/ripple';\nimport ToggleButton from 'primevue/togglebutton';\nimport BaseSelectButton from './BaseSelectButton.vue';\n\nexport default {\n    name: 'SelectButton',\n    extends: BaseSelectButton,\n    inheritAttrs: false,\n    emits: ['update:modelValue', 'change'],\n    methods: {\n        getOptionLabel(option) {\n            return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n        },\n        getOptionValue(option) {\n            return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n        },\n        getOptionRenderKey(option) {\n            return this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option);\n        },\n        getPTOptions(option, key) {\n            return this.ptm(key, {\n                context: {\n                    active: this.isSelected(option),\n                    disabled: this.isOptionDisabled(option),\n                    option\n                }\n            });\n        },\n        isOptionDisabled(option) {\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        onOptionSelect(event, option, index) {\n            if (this.disabled || this.isOptionDisabled(option)) {\n                return;\n            }\n\n            let selected = this.isSelected(option);\n\n            if (selected && !this.allowEmpty) {\n                return;\n            }\n\n            let optionValue = this.getOptionValue(option);\n            let newValue;\n\n            if (this.multiple) {\n                if (selected) newValue = this.modelValue.filter((val) => !equals(val, optionValue, this.equalityKey));\n                else newValue = this.modelValue ? [...this.modelValue, optionValue] : [optionValue];\n            } else {\n                newValue = selected ? null : optionValue;\n            }\n\n            this.focusedIndex = index;\n            this.$emit('update:modelValue', newValue);\n            this.$emit('change', { event: event, value: newValue });\n        },\n        isSelected(option) {\n            let selected = false;\n            let optionValue = this.getOptionValue(option);\n\n            if (this.multiple) {\n                if (this.modelValue) {\n                    for (let val of this.modelValue) {\n                        if (equals(val, optionValue, this.equalityKey)) {\n                            selected = true;\n                            break;\n                        }\n                    }\n                }\n            } else {\n                selected = equals(this.modelValue, optionValue, this.equalityKey);\n            }\n\n            return selected;\n        }\n    },\n    computed: {\n        equalityKey() {\n            return this.optionValue ? null : this.dataKey;\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        ToggleButton\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" role=\"group\" :aria-labelledby=\"ariaLabelledby\" v-bind=\"ptmi('root')\">\n        <template v-for=\"(option, index) of options\" :key=\"getOptionRenderKey(option)\">\n            <ToggleButton\n                :modelValue=\"isSelected(option)\"\n                :onLabel=\"getOptionLabel(option)\"\n                :offLabel=\"getOptionLabel(option)\"\n                :disabled=\"disabled || isOptionDisabled(option)\"\n                :unstyled=\"unstyled\"\n                @change=\"onOptionSelect($event, option, index)\"\n                :pt=\"ptm('pcButton')\"\n            >\n                <template v-if=\"$slots.option\" #default>\n                    <slot name=\"option\" :option=\"option\" :index=\"index\">\n                        <span v-bind=\"ptm('pcButton')['label']\">{{ getOptionLabel(option) }}</span>\n                    </slot>\n                </template>\n            </ToggleButton>\n        </template>\n    </div>\n</template>\n\n<script>\nimport { resolveFieldData, equals } from '@primeuix/utils/object';\nimport Ripple from 'primevue/ripple';\nimport ToggleButton from 'primevue/togglebutton';\nimport BaseSelectButton from './BaseSelectButton.vue';\n\nexport default {\n    name: 'SelectButton',\n    extends: BaseSelectButton,\n    inheritAttrs: false,\n    emits: ['update:modelValue', 'change'],\n    methods: {\n        getOptionLabel(option) {\n            return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n        },\n        getOptionValue(option) {\n            return this.optionValue ? resolveFieldData(option, this.optionValue) : option;\n        },\n        getOptionRenderKey(option) {\n            return this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option);\n        },\n        getPTOptions(option, key) {\n            return this.ptm(key, {\n                context: {\n                    active: this.isSelected(option),\n                    disabled: this.isOptionDisabled(option),\n                    option\n                }\n            });\n        },\n        isOptionDisabled(option) {\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        onOptionSelect(event, option, index) {\n            if (this.disabled || this.isOptionDisabled(option)) {\n                return;\n            }\n\n            let selected = this.isSelected(option);\n\n            if (selected && !this.allowEmpty) {\n                return;\n            }\n\n            let optionValue = this.getOptionValue(option);\n            let newValue;\n\n            if (this.multiple) {\n                if (selected) newValue = this.modelValue.filter((val) => !equals(val, optionValue, this.equalityKey));\n                else newValue = this.modelValue ? [...this.modelValue, optionValue] : [optionValue];\n            } else {\n                newValue = selected ? null : optionValue;\n            }\n\n            this.focusedIndex = index;\n            this.$emit('update:modelValue', newValue);\n            this.$emit('change', { event: event, value: newValue });\n        },\n        isSelected(option) {\n            let selected = false;\n            let optionValue = this.getOptionValue(option);\n\n            if (this.multiple) {\n                if (this.modelValue) {\n                    for (let val of this.modelValue) {\n                        if (equals(val, optionValue, this.equalityKey)) {\n                            selected = true;\n                            break;\n                        }\n                    }\n                }\n            } else {\n                selected = equals(this.modelValue, optionValue, this.equalityKey);\n            }\n\n            return selected;\n        }\n    },\n    computed: {\n        equalityKey() {\n            return this.optionValue ? null : this.dataKey;\n        }\n    },\n    directives: {\n        ripple: Ripple\n    },\n    components: {\n        ToggleButton\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","modelValue","options","Array","optionLabel","optionValue","optionDisabled","multiple","Boolean","allowEmpty","type","invalid","disabled","dataKey","ariaLabelledby","String","style","SelectButtonStyle","provide","$pcSelectButton","$parentInstance","BaseSelectButton","inheritAttrs","emits","methods","getOptionLabel","option","resolveFieldData","getOptionValue","getOptionRenderKey","getPTOptions","key","ptm","context","active","isSelected","isOptionDisabled","onOptionSelect","event","index","_this","selected","newValue","filter","val","equals","equalityKey","concat","_toConsumableArray","focusedIndex","$emit","value","_iterator","_createForOfIteratorHelper","_step","s","n","done","err","e","f","computed","directives","ripple","Ripple","components","ToggleButton","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","role","ptmi","_Fragment","_renderList","_createBlock","_component_ToggleButton","$options","onLabel","offLabel","unstyled","onChange","$event","pt","$slots","_renderSlot","_createElementVNode","ref_for","_toDisplayString"],"mappings":"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"}