{"version":3,"sources":["webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/components/VCheckbox/VCheckbox.ts","webpack:///../../../src/mixins/selectable/index.ts"],"names":["Vue","extend","name","directives","ripple","props","type","Boolean","Object","default","methods","genRipple","data","this","staticClass","push","value","center","$createElement","Selectable","indeterminate","indeterminateIcon","String","offIcon","onIcon","inputIndeterminate","computed","classes","VInput","options","call","computedIcon","isActive","validationState","isDisabled","hasError","shouldValidate","hasSuccess","hasColor","computedColor","watch","val","$nextTick","$emit","genCheckbox","attrs$","checkboxAttrs","title","VIcon","setTextColor","dense","dark","light","genInput","toString","rippleState","genDefaultSlot","genLabel","prevent","e","preventDefault","mixins","Rippleable","Comparable","model","prop","event","id","inputValue","falseValue","trueValue","multiple","label","lazyValue","color","isDark","appIsDark","isMultiple","Array","isArray","internalValue","input","some","item","valueComparator","undefined","isDirty","on","click","attrs","assign","disabled","computedId","role","domProps","checked","blur","onBlur","change","onChange","focus","onFocus","keydown","onKeydown","ref","onClick","isInteractive","length","filter","validate","isFocused"],"mappings":"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","file":"assets/js/chunk-f120ec20.4ce4bd47.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","// 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 const { title, ...checkboxAttrs } = this.attrs$\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 ...checkboxAttrs,\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","// 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 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 (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}