{"version":3,"sources":["webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/mixins/selectable/index.ts","webpack:///../../../src/components/VCheckbox/VCheckbox.ts"],"names":["extend","name","directives","ripple","props","type","Boolean","Object","default","methods","genRipple","data","this","staticClass","push","value","center","$createElement","prevent","e","preventDefault","mixins","VInput","model","prop","event","id","String","inputValue","falseValue","trueValue","multiple","label","hasColor","lazyValue","computed","computedColor","isActive","color","isDark","appIsDark","isMultiple","Array","isArray","internalValue","input","some","item","valueComparator","undefined","isDirty","rippleState","isDisabled","validationState","watch","val","genLabel","options","call","on","click","genInput","attrs","assign","toString","disabled","computedId","role","domProps","checked","blur","onBlur","change","onChange","focus","onFocus","keydown","onKeydown","ref","isFocused","onClick","$emit","isInteractive","length","filter","validate","indeterminate","indeterminateIcon","offIcon","onIcon","inputIndeterminate","classes","computedIcon","hasError","shouldValidate","hasSuccess","$nextTick","genCheckbox","VIcon","setTextColor","dense","dark","light","attrs$","genDefaultSlot"],"mappings":"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","file":"js/chunk-51f3c090.b41fbc55.js","sourcesContent":["// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onBlur () {\n this.isFocused = false\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus () {\n this.isFocused = true\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...this.attrs$,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n"],"sourceRoot":""}