11<template >
22 <div :class =" rootClass" >
3- <ul :class =" rootClass + ' __wrapper' " >
4- <li v-for =" (dataImage, index) in dataImagesLocal" :key =" index" :class =" rootClass + ' __item' " >
3+ <ul :class =" `${ rootClass} __wrapper` " >
4+ <li v-for =" (dataImage, index) in dataImagesLocal" :key =" index" :class =" `${ rootClass} __item` " >
55 <div
6- :class =" classThumbnail(singleSelected.id, dataImage.id)"
6+ :class =" classThumbnail(singleSelected.id, dataImage.id, dataImage.disabled )"
77 @click =" onSelectImage(dataImage)"
88 v-if =" !isMultiple"
99 >
1313 :id =" dataImage.id"
1414 :height =" h"
1515 :width =" w"
16- :class =" rootClass + ' __img' "
16+ :class =" `${ rootClass} __img` "
1717 />
1818
19- <label :for =" dataImage.id" v-if =" useLabel" :class =" rootClass + ' __lbl' " >{{dataImage.alt}}</label >
19+ <label :for =" dataImage.id" v-if =" useLabel" :class =" `${ rootClass} __lbl` " >{{dataImage.alt}}</label >
2020 </div >
2121
2222 <div
23- :class =" classThumbnailMultiple(dataImage.id)"
23+ :class =" classThumbnailMultiple(dataImage.id, dataImage.disabled )"
2424 @click =" onSelectMultipleImage(dataImage)"
2525 v-if =" isMultiple"
2626 >
3030 :id =" dataImage.id"
3131 :height =" h"
3232 :width =" w"
33- :class =" rootClass + ' __img' "
33+ :class =" `${ rootClass} __img` "
3434 />
3535
36- <label :for =" dataImage.id" v-if =" useLabel" :class =" rootClass + ' __lbl' " >{{dataImage.alt}}</label >
36+ <label :for =" dataImage.id" v-if =" useLabel" :class =" `${ rootClass} __lbl` " >{{dataImage.alt}}</label >
3737 </div >
3838 </li >
3939 </ul >
@@ -75,6 +75,10 @@ export default {
7575 w: {
7676 type: String ,
7777 default: " auto"
78+ },
79+ limit: {
80+ type: Number ,
81+ default: 0
7882 }
7983 },
8084 data () {
@@ -95,24 +99,32 @@ export default {
9599 this .setInitialSelection ();
96100 },
97101 methods: {
98- classThumbnail (selectedId , imageId ) {
102+ classThumbnail (selectedId , imageId , isDisabled ) {
99103 const baseClass = ` ${ this .rootClass } __thumbnail` ;
104+ if (isDisabled) {
105+ return ` ${ baseClass} ${ baseClass} --disabled` ;
106+ }
100107 if (selectedId === imageId) {
101108 return ` ${ baseClass} ${ baseClass}${ this .activeClass } ` ;
102109 }
103110 return ` ${ baseClass} ` ;
104111 },
105- classThumbnailMultiple (id ) {
112+ classThumbnailMultiple (id , isDisabled ) {
106113 const baseClass = ` ${ this .rootClass } __thumbnail` ;
107114 const baseMultipleClass = ` ${ baseClass} is--multiple` ;
115+ if (isDisabled) {
116+ return ` ${ baseMultipleClass} ${ baseClass} --disabled` ;
117+ }
108118 if (this .isExistInArray (id)) {
109119 return ` ${ baseMultipleClass} ${ baseClass}${ this .activeClass } ` ;
110120 }
111121 return ` ${ baseMultipleClass} ` ;
112122 },
113123 onSelectImage (objectImage ) {
114- this .singleSelected = Object .assign ({}, this .singleSelected , objectImage);
115- this .$emit (" onselectimage" , objectImage);
124+ if (! objectImage .disabled ) {
125+ this .singleSelected = Object .assign ({}, this .singleSelected , objectImage);
126+ this .$emit (" onselectimage" , objectImage);
127+ }
116128 },
117129 isExistInArray (id ) {
118130 return this .multipleSelected .find (item => {
@@ -135,13 +147,24 @@ export default {
135147 this .multipleSelected = [];
136148 },
137149 onSelectMultipleImage (objectImage ) {
138- if (! this .isExistInArray (objectImage .id )) {
139- this .multipleSelected .push (objectImage);
140- } else {
141- this .removeFromMultipleSelected (objectImage .id , true );
150+ if (! objectImage .disabled ) {
151+ if (! this .isExistInArray (objectImage .id )) {
152+ if (this .limit > 0 ) {
153+ if (this .multipleSelected .length < this .limit ) {
154+ this .multipleSelected .push (objectImage);
155+ this .$emit (" onselectmultipleimage" , this .multipleSelected );
156+ } else {
157+ this .$emit (" onreachlimit" , this .limit );
158+ }
159+ } else {
160+ this .multipleSelected .push (objectImage);
161+ this .$emit (" onselectmultipleimage" , this .multipleSelected );
162+ }
163+ } else {
164+ this .removeFromMultipleSelected (objectImage .id , true );
165+ this .$emit (" onselectmultipleimage" , this .multipleSelected );
166+ }
142167 }
143-
144- this .$emit (" onselectmultipleimage" , this .multipleSelected );
145168 },
146169 setInitialSelection () {
147170 if (this .selectedImages ) {
0 commit comments