{"version":3,"file":"checkbox.cjs","names":[],"sources":["../../../components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"rootClass\"\n    v-bind=\"addClassStyleAttrs($attrs)\"\n  >\n    <label :class=\"['d-checkbox-group', { 'd-checkbox-group--disabled': internalDisabled }]\">\n      <div class=\"d-checkbox__input\">\n        <input\n          type=\"checkbox\"\n          :checked=\"internalChecked\"\n          :name=\"internalName\"\n          :value=\"value\"\n          :disabled=\"internalDisabled\"\n          :class=\"['d-checkbox', inputValidationClass, inputClass]\"\n          v-bind=\"removeClassStyleAttrs($attrs)\"\n          :indeterminate.prop=\"internalIndeterminate\"\n          v-on=\"inputListeners\"\n        >\n      </div>\n      <div\n        v-if=\"hasLabel\"\n        :class=\"[labelClass, 'd-checkbox__copy d-checkbox__label']\"\n        v-bind=\"labelChildProps\"\n        data-qa=\"checkbox-label\"\n      >\n        <!-- @slot slot for Checkbox Label -->\n        <slot>{{ label }}</slot>\n      </div>\n    </label>\n    <div\n      v-if=\"$slots.description || description || hasMessages\"\n      class=\"d-checkbox__messages\"\n      data-qa=\"checkbox-description-messages\"\n    >\n      <div\n        v-if=\"$slots.description || description\"\n        :class=\"['d-description', descriptionClass]\"\n        v-bind=\"descriptionChildProps\"\n        data-qa=\"checkbox-description\"\n      >\n        <!-- @slot slot for Checkbox Description -->\n        <slot name=\"description\">\n          {{ description }}\n        </slot>\n      </div>\n      <dt-validation-messages\n        :validation-messages=\"formattedMessages\"\n        :show-messages=\"showMessages\"\n        :class=\"messagesClass\"\n        v-bind=\"messagesChildProps\"\n        data-qa=\"dt-checkbox-validation-messages\"\n      />\n    </div>\n  </div>\n</template>\n\n<script>\n// Imports\nimport {\n  InputMixin,\n  CheckableMixin,\n  GroupableMixin,\n  MessagesMixin,\n} from '@/common/mixins/input';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { CHECKBOX_INPUT_VALIDATION_CLASSES } from './checkbox_constants';\nimport { DtValidationMessages } from '../validation_messages';\n\n/**\n * Checkboxes are control elements that allow the user to make a selection.They are typically used in a\n * Checkbox Group which allows the user to make one or more selections from a list of options.\n * @see https://dialtone.dialpad.com/components/checkbox.html\n */\nexport default {\n  compatConfig: { MODE: 3 },\n  name: 'DtCheckbox',\n\n  components: { DtValidationMessages },\n\n  mixins: [InputMixin, CheckableMixin, GroupableMixin, MessagesMixin],\n\n  inheritAttrs: false,\n\n  emits: [\n    /**\n     * Native input event\n     *\n     * @event input\n     * @type {Boolean}\n     */\n    'input',\n    /**\n     * Event fired to sync the modelValue prop with the parent component\n     *\n     * @event update:modelValue\n     * @type {Boolean}\n     */\n    'update:modelValue',\n\n    /**\n     * Native input focusin event\n     *\n     * @event focusin\n     * @type {FocusEvent}\n     */\n    'focusin',\n\n    /**\n     * Native input focusout event\n     *\n     * @event focusout\n     * @type {FocusEvent}\n     */\n    'focusout',\n  ],\n\n  computed: {\n    inputValidationClass () {\n      return CHECKBOX_INPUT_VALIDATION_CLASSES[this.internalValidationState];\n    },\n\n    checkboxGroupValueChecked () {\n      return this.groupContext?.selectedValues?.includes(this.value) ?? false;\n    },\n\n    hasLabel () {\n      return !!(this.$slots.default || this.label);\n    },\n\n    hasMessages () {\n      return this.formattedMessages.length && this.showMessages;\n    },\n\n    inputListeners () {\n      return {\n        /*\n         * Override input listener to as no-op. Prevents parent input listeners from being passed through\n         * onto the input element which will result in the handler being called twice\n         * (once on the input element and once by the emitted input event by the change listener).\n        */\n        input: () => {},\n        focusin: event => this.$emit('focusin', event),\n        focusout: event => this.$emit('focusout', event),\n        change: event => this.emitValue(event.target),\n      };\n    },\n  },\n\n  watch: {\n    checkboxGroupValueChecked: {\n      immediate: true,\n      handler (newCheckboxGroupValueChecked) {\n        if (this.hasGroup) {\n          // update internal value when the checkbox group value changes\n          this.internalChecked = newCheckboxGroupValueChecked;\n        }\n      },\n    },\n  },\n\n  mounted () {\n    this.runValidations();\n  },\n\n  methods: {\n    removeClassStyleAttrs,\n    addClassStyleAttrs,\n\n    emitValue (target) {\n      let { value, checked } = target;\n      // Expected: Indeterminate -> unchecked. We need to manually set DOM property `checked` to false\n      // and update this.internalIndeterminate.\n      if (this.internalIndeterminate) {\n        checked = false;\n        this.internalIndeterminate = false;\n        target.checked = false;\n      }\n      // update provided value if injected\n      this.setGroupValue(value, checked);\n\n      // emit the state of the checkbox\n      this.$emit('input', checked);\n      this.$emit('update:modelValue', checked);\n    },\n\n    runValidations () {\n      this.validateInputLabels(this.hasLabel, this.$attrs['aria-label']);\n    },\n  },\n};\n</script>\n"],"mappings":"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"}