aboutsummaryrefslogtreecommitdiff
path: root/node_modules/vue/src/platforms/web/compiler/modules/class.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/vue/src/platforms/web/compiler/modules/class.js')
-rw-r--r--node_modules/vue/src/platforms/web/compiler/modules/class.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/node_modules/vue/src/platforms/web/compiler/modules/class.js b/node_modules/vue/src/platforms/web/compiler/modules/class.js
new file mode 100644
index 00000000..ffdca250
--- /dev/null
+++ b/node_modules/vue/src/platforms/web/compiler/modules/class.js
@@ -0,0 +1,48 @@
+/* @flow */
+
+import { parseText } from 'compiler/parser/text-parser'
+import {
+ getAndRemoveAttr,
+ getBindingAttr,
+ baseWarn
+} from 'compiler/helpers'
+
+function transformNode (el: ASTElement, options: CompilerOptions) {
+ const warn = options.warn || baseWarn
+ const staticClass = getAndRemoveAttr(el, 'class')
+ if (process.env.NODE_ENV !== 'production' && staticClass) {
+ const res = parseText(staticClass, options.delimiters)
+ if (res) {
+ warn(
+ `class="${staticClass}": ` +
+ 'Interpolation inside attributes has been removed. ' +
+ 'Use v-bind or the colon shorthand instead. For example, ' +
+ 'instead of <div class="{{ val }}">, use <div :class="val">.'
+ )
+ }
+ }
+ if (staticClass) {
+ el.staticClass = JSON.stringify(staticClass)
+ }
+ const classBinding = getBindingAttr(el, 'class', false /* getStatic */)
+ if (classBinding) {
+ el.classBinding = classBinding
+ }
+}
+
+function genData (el: ASTElement): string {
+ let data = ''
+ if (el.staticClass) {
+ data += `staticClass:${el.staticClass},`
+ }
+ if (el.classBinding) {
+ data += `class:${el.classBinding},`
+ }
+ return data
+}
+
+export default {
+ staticKeys: ['staticClass'],
+ transformNode,
+ genData
+}