Calendar complet în Solid JS

<div class=highlight><pre tabindex=0 style=color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-tsx data-lang=tsx><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 1</span><span><span style=color:#6ab825;font-weight:700>import</span> { Component, For } <span style=color:#6ab825;font-weight:700>from</span> <span style=color:#ed9d13>&#34;solid-js&#34;</span>; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 2</span><span><span style=color:#6ab825;font-weight:700>import</span> moment <span style=color:#6ab825;font-weight:700>from</span> <span style=color:#ed9d13>&#34;moment&#34;</span>; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 3</span><span><span style=color:#999;font-style:italic>// import &#34;moment/dist/locale/ro&#34;; // if you need to change the locale </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 4</span><span><span style=color:#999;font-style:italic>// moment.locale(&#34;ro&#34;); </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 5</span><span><span style=color:#999;font-style:italic></span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 6</span><span><span style=color:#6ab825;font-weight:700>const</span> FullCalendar: <span style=color:#6ab825;font-weight:700>Component</span> = () =&gt; { </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 7</span><span> <span style=color:#6ab825;font-weight:700>const</span> weekdays = moment.weekdaysMin(); </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 8</span><span> <span style=color:#6ab825;font-weight:700>const</span> months = moment.months(); </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868"> 9</span><span> <span style=color:#6ab825;font-weight:700>const</span> fullYear = <span style=color:#24909d>Object</span>.fromEntries( </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">10</span><span> months.map((monthName, monthIndex) =&gt; { </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">11</span><span> <span style=color:#6ab825;font-weight:700>return</span> [ </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">12</span><span> monthName, </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">13</span><span> <span style=color:#6ab825;font-weight:700>new</span> <span style=color:#24909d>Array</span>(<span style=color:#3677a9>6</span>).fill(<span style=color:#3677a9>1</span>).map((i, rowIndex) =&gt; { </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">14</span><span> <span style=color:#6ab825;font-weight:700>return</span> weekdays.map((dayName, colIndex) =&gt; { </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">15</span><span> <span style=color:#6ab825;font-weight:700>const</span> day = moment() </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">16</span><span> <span style=color:#999;font-style:italic>// .year(2024) // if you need to change the year </span></span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">17</span><span><span style=color:#999;font-style:italic></span> .month(monthIndex) </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">18</span><span> .date(rowIndex * <span style=color:#3677a9>7</span>) </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">19</span><span> .weekday(colIndex); </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">20</span><span> <span style=color:#6ab825;font-weight:700>return</span> day.month() == monthIndex ? day.format(<span style=color:#ed9d13>&#34;D&#34;</span>) : <span style=color:#ed9d13>&#34;&#34;</span>; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">21</span><span> }); </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">22</span><span> }), </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">23</span><span> ]; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">24</span><span> }) </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">25</span><span> ); </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">26</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">27</span><span> <span style=color:#6ab825;font-weight:700>return</span> ( </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">28</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-container&#34;</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">29</span><span> &lt;<span style=color:#6ab825;font-weight:700>For</span> <span style=color:#bbb>each</span>={<span style=color:#24909d>Object</span>.keys(fullYear)}&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">30</span><span> {(monthName) =&gt; ( </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">31</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-month&#34;</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">32</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-monthname&#34;</span>&gt;{monthName}&lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">33</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-weekdays&#34;</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">34</span><span> &lt;<span style=color:#6ab825;font-weight:700>For</span> <span style=color:#bbb>each</span>={weekdays}&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">35</span><span> {(weekDayName) =&gt; ( </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">36</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-weekday solidcalendar-column&#34;</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">37</span><span> {weekDayName} </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">38</span><span> &lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">39</span><span> )} </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">40</span><span> &lt;/<span style=color:#6ab825;font-weight:700>For</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">41</span><span> &lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">42</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">43</span><span> &lt;<span style=color:#6ab825;font-weight:700>For</span> <span style=color:#bbb>each</span>={fullYear[monthName]}&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">44</span><span> {(days) =&gt; ( </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">45</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-week&#34;</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">46</span><span> &lt;<span style=color:#6ab825;font-weight:700>For</span> <span style=color:#bbb>each</span>={days}&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">47</span><span> {(day) =&gt; ( </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">48</span><span> &lt;<span style=color:#6ab825;font-weight:700>div</span> <span style=color:#bbb>class</span>=<span style=color:#ed9d13>&#34;solidcalendar-weekday solidcalendar-column&#34;</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">49</span><span> {day} </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">50</span><span> &lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">51</span><span> )} </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">52</span><span> &lt;/<span style=color:#6ab825;font-weight:700>For</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">53</span><span> &lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">54</span><span> )} </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">55</span><span> &lt;/<span style=color:#6ab825;font-weight:700>For</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">56</span><span> &lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">57</span><span> )} </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">58</span><span> &lt;/<span style=color:#6ab825;font-weight:700>For</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">59</span><span> &lt;/<span style=color:#6ab825;font-weight:700>div</span>&gt; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">60</span><span> ); </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">61</span><span>}; </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">62</span><span> </span></span><span style=display:flex><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#686868">63</span><span><span style=color:#6ab825;font-weight:700>export</span> <span style=color:#6ab825;font-weight:700>default</span> FullCalendar; </span></span></code></pre></div><hr width=100% id=EOF><p style=color:#777>Ultima modificare la 2024-11-18</p>