|
174 | 174 | </p> |
175 | 175 | <pre class="shiki monokai" style="background-color:#272822;color:#F8F8F2" tabindex="0"><code><span class="line"><span style="color:#F92672">import</span><span style="color:#F8F8F2"> { setProperty, UIElement } </span><span style="color:#F92672">from</span><span style="color:#E6DB74"> "../../../"</span><span style="color:#F8F8F2">;</span></span> |
176 | 176 | <span class="line"><span style="color:#F92672">import</span><span style="color:#F8F8F2"> { InputButton } </span><span style="color:#F92672">from</span><span style="color:#E6DB74"> "../input-button/input-button"</span><span style="color:#F8F8F2">;</span></span> |
177 | | -<span class="line"><span style="color:#F92672">import</span><span style="color:#F8F8F2"> { RatingStars } </span><span style="color:#F92672">from</span><span style="color:#E6DB74"> "../rating-stars/rating-stars"</span><span style="color:#F8F8F2">;</span></span> |
178 | 177 | <span class="line"></span> |
179 | 178 | <span class="line"><span style="color:#F92672">export</span><span style="color:#66D9EF;font-style:italic"> class</span><span> </span><span style="color:#A6E22E;text-decoration:underline">RatingFeedback</span><span style="color:#F92672"> extends</span><span style="color:#A6E22E"> UIElement</span><span style="color:#F8F8F2"><{</span></span> |
| 179 | +<span class="line"><span style="color:#F8F8F2"> rating</span><span style="color:#F92672">:</span><span style="color:#66D9EF;font-style:italic"> number</span><span style="color:#F8F8F2">,</span></span> |
180 | 180 | <span class="line"><span style="color:#F8F8F2"> empty</span><span style="color:#F92672">:</span><span style="color:#66D9EF;font-style:italic"> boolean</span><span style="color:#F8F8F2">,</span></span> |
181 | 181 | <span class="line"><span style="color:#F8F8F2"> submitted</span><span style="color:#F92672">:</span><span style="color:#66D9EF;font-style:italic"> boolean</span></span> |
182 | 182 | <span class="line"><span style="color:#F8F8F2">}> {</span></span> |
183 | 183 | <span class="line"><span style="color:#F92672"> static</span><span style="color:#F8F8F2"> localName </span><span style="color:#F92672">=</span><span style="color:#E6DB74"> 'rating-feedback'</span></span> |
184 | 184 | <span class="line"></span> |
185 | 185 | <span class="line"><span style="color:#F8F8F2"> states </span><span style="color:#F92672">=</span><span style="color:#F8F8F2"> {</span></span> |
| 186 | +<span class="line"><span style="color:#F8F8F2"> rating: </span><span style="color:#AE81FF">0</span><span style="color:#F8F8F2">,</span></span> |
186 | 187 | <span class="line"><span style="color:#F8F8F2"> empty: </span><span style="color:#AE81FF">true</span><span style="color:#F8F8F2">,</span></span> |
187 | 188 | <span class="line"><span style="color:#F8F8F2"> submitted: </span><span style="color:#AE81FF">false</span><span style="color:#F8F8F2">,</span></span> |
188 | 189 | <span class="line"><span style="color:#F8F8F2"> }</span></span> |
189 | 190 | <span class="line"></span> |
190 | 191 | <span class="line"><span style="color:#A6E22E"> connectedCallback</span><span style="color:#F8F8F2">() {</span></span> |
191 | 192 | <span class="line"><span style="color:#FD971F"> super</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">connectedCallback</span><span style="color:#F8F8F2">()</span></span> |
192 | 193 | <span class="line"></span> |
193 | | -<span class="line"><span style="color:#66D9EF;font-style:italic"> const</span><span style="color:#F8F8F2"> stars </span><span style="color:#F92672">=</span><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">querySelector</span><span style="color:#F8F8F2"><</span><span style="color:#A6E22E;text-decoration:underline">RatingStars</span><span style="color:#F8F8F2">>(</span><span style="color:#E6DB74">'rating-stars'</span><span style="color:#F8F8F2">)</span></span> |
194 | | -<span class="line"></span> |
195 | 194 | <span class="line"><span style="color:#88846F"> // Event listeners for rating changes and form submission</span></span> |
196 | 195 | <span class="line"><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.self</span></span> |
197 | 196 | <span class="line"><span style="color:#F8F8F2"> .</span><span style="color:#A6E22E">on</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'change-rating'</span><span style="color:#F8F8F2">, (</span><span style="color:#FD971F;font-style:italic">e</span><span style="color:#F92672">:</span><span> </span><span style="color:#A6E22E;text-decoration:underline">Event</span><span style="color:#F8F8F2">) </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#F8F8F2"> {</span></span> |
198 | | -<span class="line"><span style="color:#66D9EF;font-style:italic"> const</span><span style="color:#F8F8F2"> rating </span><span style="color:#F92672">=</span><span style="color:#F8F8F2"> (e </span><span style="color:#F92672">as</span><span> </span><span style="color:#A6E22E;text-decoration:underline">CustomEvent</span><span style="color:#F8F8F2"><</span><span style="color:#66D9EF;font-style:italic">number</span><span style="color:#F8F8F2">>).detail</span></span> |
199 | | -<span class="line"><span style="color:#F8F8F2"> console.</span><span style="color:#A6E22E">log</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">`Rating changed to </span><span style="color:#F92672">${</span><span style="color:#F8F8F2">rating</span><span style="color:#F92672">}</span><span style="color:#E6DB74">`</span><span style="color:#F8F8F2">)</span></span> |
| 197 | +<span class="line"><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">set</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'rating'</span><span style="color:#F8F8F2">, (e </span><span style="color:#F92672">as</span><span> </span><span style="color:#A6E22E;text-decoration:underline">CustomEvent</span><span style="color:#F8F8F2"><</span><span style="color:#66D9EF;font-style:italic">number</span><span style="color:#F8F8F2">>).detail)</span></span> |
200 | 198 | <span class="line"><span style="color:#F8F8F2"> })</span></span> |
201 | 199 | <span class="line"><span style="color:#F8F8F2"> .</span><span style="color:#A6E22E">on</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'submit'</span><span style="color:#F8F8F2">, (</span><span style="color:#FD971F;font-style:italic">e</span><span style="color:#F92672">:</span><span> </span><span style="color:#A6E22E;text-decoration:underline">Event</span><span style="color:#F8F8F2">) </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#F8F8F2"> {</span></span> |
202 | 200 | <span class="line"><span style="color:#F8F8F2"> e.</span><span style="color:#A6E22E">preventDefault</span><span style="color:#F8F8F2">()</span></span> |
|
221 | 219 | <span class="line"><span style="color:#88846F"> // Effects on rating changes</span></span> |
222 | 220 | <span class="line"><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">first</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'.feedback'</span><span style="color:#F8F8F2">).</span><span style="color:#A6E22E">sync</span><span style="color:#F8F8F2">(</span><span style="color:#A6E22E">setProperty</span><span style="color:#F8F8F2">(</span></span> |
223 | 221 | <span class="line"><span style="color:#E6DB74"> 'hidden'</span><span style="color:#F8F8F2">,</span></span> |
224 | | -<span class="line"><span style="color:#F8F8F2"> () </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">get</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'submitted'</span><span style="color:#F8F8F2">) </span><span style="color:#F92672">||</span><span style="color:#F92672"> !</span><span style="color:#F8F8F2">(stars?.</span><span style="color:#A6E22E">get</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'value'</span><span style="color:#F8F8F2">) </span><span style="color:#F92672">??</span><span style="color:#AE81FF"> 0</span><span style="color:#F8F8F2">)</span></span> |
| 222 | +<span class="line"><span style="color:#F8F8F2"> () </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">get</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'submitted'</span><span style="color:#F8F8F2">) </span><span style="color:#F92672">||</span><span style="color:#F92672"> !</span><span style="color:#F8F8F2">(</span><span style="color:#FD971F">this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">get</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'rating'</span><span style="color:#F8F8F2">) </span><span style="color:#F92672">??</span><span style="color:#AE81FF"> 0</span><span style="color:#F8F8F2">)</span></span> |
225 | 223 | <span class="line"><span style="color:#F8F8F2"> ))</span></span> |
226 | 224 | <span class="line"><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">all</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'.feedback p'</span><span style="color:#F8F8F2">).</span><span style="color:#A6E22E">sync</span><span style="color:#F8F8F2">((</span><span style="color:#FD971F;font-style:italic">host</span><span style="color:#F8F8F2">, </span><span style="color:#FD971F;font-style:italic">target</span><span style="color:#F8F8F2">, </span><span style="color:#FD971F;font-style:italic">index</span><span style="color:#F8F8F2">) </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#F8F8F2"> {</span></span> |
227 | 225 | <span class="line"><span style="color:#A6E22E"> setProperty</span><span style="color:#F8F8F2"><</span><span style="color:#A6E22E;text-decoration:underline">HTMLElement</span><span style="color:#F8F8F2">, </span><span style="color:#E6DB74">'hidden'</span><span style="color:#F8F8F2">>(</span></span> |
228 | 226 | <span class="line"><span style="color:#E6DB74"> 'hidden'</span><span style="color:#F8F8F2">,</span></span> |
229 | | -<span class="line"><span style="color:#F8F8F2"> () </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#F8F8F2"> stars?.</span><span style="color:#A6E22E">get</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'value'</span><span style="color:#F8F8F2">) </span><span style="color:#F92672">!==</span><span style="color:#F8F8F2"> index </span><span style="color:#F92672">+</span><span style="color:#AE81FF"> 1</span></span> |
| 227 | +<span class="line"><span style="color:#F8F8F2"> () </span><span style="color:#66D9EF;font-style:italic">=></span><span style="color:#FD971F"> this</span><span style="color:#F8F8F2">.</span><span style="color:#A6E22E">get</span><span style="color:#F8F8F2">(</span><span style="color:#E6DB74">'rating'</span><span style="color:#F8F8F2">) </span><span style="color:#F92672">!==</span><span style="color:#F8F8F2"> index </span><span style="color:#F92672">+</span><span style="color:#AE81FF"> 1</span></span> |
230 | 228 | <span class="line"><span style="color:#F8F8F2"> )(host, target)</span></span> |
231 | 229 | <span class="line"><span style="color:#F8F8F2"> })</span></span> |
232 | 230 | <span class="line"></span> |
|
0 commit comments