@dialpad/dialtone
Version:
Dialpad's Dialtone design system monorepo
1 lines • 8.52 kB
Source Map (JSON)
{"version":3,"file":"checkbox.cjs","sources":["../../../components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <div\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"],"names":["_sfc_main","DtValidationMessages","InputMixin","CheckableMixin","GroupableMixin","MessagesMixin","CHECKBOX_INPUT_VALIDATION_CLASSES","_b","_a","event","newCheckboxGroupValueChecked","removeClassStyleAttrs","addClassStyleAttrs","target","value","checked","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_normalizeProps","_guardReactiveProps","$options","_ctx","_createElementVNode","_normalizeClass","_mergeProps","_toHandlers","_renderSlot","_createTextVNode","_toDisplayString","_createCommentVNode","_hoisted_3","_createVNode","_component_dt_validation_messages"],"mappings":"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"}