remove all instances of string coercion (#240)
This commit is contained in:
		
							parent
							
								
									40a9ff957a
								
							
						
					
					
						commit
						9629a55a9f
					
				
					 67 changed files with 235 additions and 232 deletions
				
			
		|  | @ -1,6 +1,6 @@ | |||
| <video | ||||
|   class="autoplay-video {{className || ''}}" | ||||
|   aria-label="{{ariaLabel || ''}}" | ||||
|   aria-label={{ariaLabel || ''}} | ||||
|   style="background-image: url({{poster}});" | ||||
|   :poster | ||||
|   :width | ||||
|  |  | |||
|  | @ -1,22 +1,22 @@ | |||
| {{#if error}} | ||||
| <svg class="{{computedClass}}" aria-hidden="true"> | ||||
| <svg class={{computedClass}} aria-hidden="true"> | ||||
|   <use xlink:href="#fa-user" /> | ||||
| </svg> | ||||
| {{elseif $autoplayGifs}} | ||||
|   <img | ||||
|     class="{{computedClass}}" | ||||
|     class={{computedClass}} | ||||
|     aria-hidden="true" | ||||
|     alt="" | ||||
|     src="{{account.avatar}}" | ||||
|     src={{account.avatar}} | ||||
|     on:imgLoad="set({loaded: true})" | ||||
|     on:imgLoadError="set({error: true})" /> | ||||
| {{else}} | ||||
|   <NonAutoplayImg | ||||
|     className="{{computedClass}}" | ||||
|     className={{computedClass}} | ||||
|     ariaHidden="true" | ||||
|     alt="" | ||||
|     src="{{account.avatar}}" | ||||
|     staticSrc="{{account.avatar_static}}" | ||||
|     src={{account.avatar}} | ||||
|     staticSrc={{account.avatar_static}} | ||||
|     :isLink | ||||
|     on:imgLoad="set({loaded: true})" | ||||
|     on:imgLoadError="set({error: true})" | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <div class="dynamic-page-banner {{icon ? 'dynamic-page-with-icon' : ''}}"> | ||||
|   {{#if icon}} | ||||
|   <svg class="dynamic-page-banner-svg"> | ||||
|     <use xlink:href="{{icon}}" /> | ||||
|     <use xlink:href={{icon}} /> | ||||
|   </svg> | ||||
|   {{/if}} | ||||
|   <h1 class="dynamic-page-title">{{title}}</h1> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <a rel="nofollow noopener" | ||||
|    target="_blank" | ||||
|    href="{{href}}" | ||||
|    aria-label="{{ariaLabel || ''}}" | ||||
|    href={{href}} | ||||
|    aria-label={{ariaLabel || ''}} | ||||
|    class="{{className || ''}} {{showIcon ? 'external-link-with-icon' : ''}} {{normalIconColor ? 'normal-icon-color' : ''}}"> | ||||
|   <slot></slot>{{#if showIcon}} | ||||
|     <svg class="external-link-svg"> | ||||
|  |  | |||
|  | @ -1,27 +1,27 @@ | |||
| {{#if delegateKey}} | ||||
|   <button type="button" | ||||
|           title="{{label}}" | ||||
|           aria-label="{{label}}" | ||||
|           aria-pressed="{{pressable ? !!pressed : ''}}" | ||||
|           class="{{computedClass}}" | ||||
|           title={{label}} | ||||
|           aria-label={{label}} | ||||
|           aria-pressed={{pressable ? !!pressed : ''}} | ||||
|           class={{computedClass}} | ||||
|           :disabled | ||||
|           delegate-key="{{delegateKey}}" | ||||
|           focus-key="{{focusKey || ''}}" > | ||||
|           delegate-key={{delegateKey}} | ||||
|           focus-key={{focusKey || ''}} > | ||||
|     <svg class="icon-button-svg {{svgClassName || ''}}" ref:svg> | ||||
|       <use xlink:href="{{href}}" /> | ||||
|       <use xlink:href={{href}} /> | ||||
|     </svg> | ||||
|   </button> | ||||
| {{else}} | ||||
|   <button type="button" | ||||
|           title="{{label}}" | ||||
|           aria-label="{{label}}" | ||||
|           aria-pressed="{{pressable ? !!pressed : ''}}" | ||||
|           class="{{computedClass}}" | ||||
|           focus-key="{{focusKey || ''}}" | ||||
|           title={{label}} | ||||
|           aria-label={{label}} | ||||
|           aria-pressed={{pressable ? !!pressed : ''}} | ||||
|           class={{computedClass}} | ||||
|           focus-key={{focusKey || ''}} | ||||
|           :disabled | ||||
|           on:click > | ||||
|     <svg class="icon-button-svg {{svgClassName || ''}}" ref:svg> | ||||
|       <use xlink:href="{{href}}" /> | ||||
|       <use xlink:href={{href}} /> | ||||
|     </svg> | ||||
|   </button> | ||||
| {{/if}} | ||||
|  |  | |||
|  | @ -3,10 +3,10 @@ | |||
|   {{#if displaySrc}} | ||||
|     <img | ||||
|       class="{{hidden ? 'hidden' : ''}} {{className || ''}}" | ||||
|       aria-hidden="{{ariaHidden || ''}}" | ||||
|       alt="{{alt || ''}}" | ||||
|       title="{{alt || ''}}" | ||||
|       src="{{displaySrc}}" | ||||
|       aria-hidden={{ariaHidden || ''}} | ||||
|       alt={{alt || ''}} | ||||
|       title={{alt || ''}} | ||||
|       src={{displaySrc}} | ||||
|       :width | ||||
|       :height | ||||
|     /> | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ | |||
|       </li> | ||||
|     {{elseif $pinnedPage.startsWith('/lists/')}} | ||||
|       <li class="main-nav-li"> | ||||
|         <NavItem :page name="lists" href="{{$pinnedPage}}" svg="#fa-bars" label="{{$pinnedListTitle}}" /> | ||||
|         <NavItem :page name="lists" href={{$pinnedPage}} svg="#fa-bars" label={{$pinnedListTitle}} /> | ||||
|       </li> | ||||
|     {{/if}} | ||||
| 		<li class="main-nav-li"> | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| <a class='main-nav-link {{selected ? "selected" : ""}}' | ||||
|    aria-label='{{ariaLabel}}' | ||||
|    aria-current="{{selected}}" | ||||
|    aria-label={{ariaLabel}} | ||||
|    aria-current={{selected}} | ||||
|    on:click="onClick(event)" | ||||
|    :href > | ||||
|   {{#if name === 'notifications'}} | ||||
|     <div class="nav-link-svg-wrapper"> | ||||
|       <svg class="nav-link-svg"> | ||||
|         <use xlink:href="{{svg}}" /> | ||||
|         <use xlink:href={{svg}} /> | ||||
|       </svg> | ||||
|       {{#if $hasNotifications}} | ||||
|         <span class="nav-link-notifications" aria-hidden="true"> | ||||
|  | @ -16,7 +16,7 @@ | |||
|     </div> | ||||
|   {{else}} | ||||
|     <svg class="nav-link-svg"> | ||||
|       <use xlink:href="{{svg}}" /> | ||||
|       <use xlink:href={{svg}} /> | ||||
|     </svg> | ||||
|   {{/if}} | ||||
|   <span class="nav-link-label">{{label}}</span> | ||||
|  |  | |||
|  | @ -4,8 +4,8 @@ | |||
| > | ||||
|   {{#if playing}} | ||||
|     <AutoplayVideo | ||||
|       className="{{class}}" | ||||
|       ariaLabel="{{label}}" | ||||
|       className={{class}} | ||||
|       ariaLabel={{label}} | ||||
|       :poster | ||||
|       :src | ||||
|       :width | ||||
|  | @ -13,17 +13,17 @@ | |||
|       /> | ||||
|   {{else}} | ||||
|     <LazyImage | ||||
|       alt="{{label || ''}}" | ||||
|       title="{{label || ''}}" | ||||
|       src="{{staticSrc}}" | ||||
|       fallback="{{oneTransparentPixel}}" | ||||
|       alt={{label || ''}} | ||||
|       title={{label || ''}} | ||||
|       src={{staticSrc}} | ||||
|       fallback={{oneTransparentPixel}} | ||||
|       :width | ||||
|       :height | ||||
|       background="var(--loading-bg)" | ||||
|       className="{{class}}" | ||||
|       className={{class}} | ||||
|     /> | ||||
|   {{/if}} | ||||
|   <PlayVideoIcon className="{{playing ? 'hidden' : ''}}"/> | ||||
|   <PlayVideoIcon className={{playing ? 'hidden' : ''}}/> | ||||
| </div> | ||||
| <style> | ||||
|   .non-autoplay-gifv { | ||||
|  |  | |||
|  | @ -1,17 +1,17 @@ | |||
| {{#if staticSrc === src}} | ||||
|   <img class="{{className || ''}}" | ||||
|        aria-hidden="{{ariaHidden}}" | ||||
|        alt="{{alt || ''}}" | ||||
|        title="{{alt || ''}}" | ||||
|        src="{{src}}" | ||||
|   <img class={{className || ''}} | ||||
|        aria-hidden={{ariaHidden}} | ||||
|        alt={{alt || ''}} | ||||
|        title={{alt || ''}} | ||||
|        src={{src}} | ||||
|        on:imgLoad | ||||
|        on:imgLoadError /> | ||||
| {{else}} | ||||
|   <img class="{{className || ''}} non-autoplay-zoom-in {{isLink ? 'is-link' : ''}}" | ||||
|        aria-hidden="{{ariaHidden}}" | ||||
|        alt="{{alt || ''}}" | ||||
|        title="{{alt || ''}}" | ||||
|        src="{{staticSrc}}" | ||||
|        aria-hidden={{ariaHidden}} | ||||
|        alt={{alt || ''}} | ||||
|        title={{alt || ''}} | ||||
|        src={{staticSrc}} | ||||
|        on:imgLoad | ||||
|        on:imgLoadError | ||||
|        on:mouseover="onMouseOver(event)" | ||||
|  |  | |||
|  | @ -3,12 +3,12 @@ | |||
|      without a div wrapper due to sticky-positioned compose button. | ||||
|      TODO: this is a bit hacky due to code duplication | ||||
|  --> | ||||
| <div class="timeline-home-page" aria-busy="{{hideTimeline}}"> | ||||
| <div class="timeline-home-page" aria-busy={{hideTimeline}}> | ||||
|   {{#if hidePage}} | ||||
|     <LoadingPage /> | ||||
|   {{/if}} | ||||
|   {{#if $currentVerifyCredentials }} | ||||
|     <ComposeBox realm="home" hidden="{{hidePage}}"/> | ||||
|     <ComposeBox realm="home" hidden={{hidePage}}/> | ||||
|   {{/if}} | ||||
|   <div class="timeline-home-anchor-container"> | ||||
|     {{#if !hidePage && hideTimeline}} | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| <div class="timeline-page" aria-busy="{{hideTimeline}}"> | ||||
| <div class="timeline-page" aria-busy={{hideTimeline}}> | ||||
|   {{#if hidePage}} | ||||
|     <LoadingPage /> | ||||
|   {{/if}} | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| <div class="toast-modal {{shown ? 'shown' : ''}}" role="alert" aria-hidden="{{shown}}"> | ||||
| <div class="toast-modal {{shown ? 'shown' : ''}}" role="alert" aria-hidden={{shown}}> | ||||
|   <div class="toast-container"> | ||||
|     {{text}} | ||||
|   </div> | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <div class="page-list-wrapper"> | ||||
|   {{#if label}} | ||||
|   <ul class="page-list" aria-label="{{label}}"> | ||||
|   <ul class="page-list" aria-label={{label}}> | ||||
|     <slot></slot> | ||||
|   </ul> | ||||
|   {{else}} | ||||
|  |  | |||
|  | @ -1,15 +1,15 @@ | |||
| <li class="page-list-item"> | ||||
|   <a :href> | ||||
|     <svg class="page-list-item-svg"> | ||||
|       <use xlink:href="{{icon}}" /> | ||||
|       <use xlink:href={{icon}} /> | ||||
|     </svg> | ||||
|     <span aria-label="{{label}} {{$pinnedPage === href ? 'Pinned page' : 'Unpinned page'}}"> | ||||
|       {{label}} | ||||
|     </span> | ||||
|     {{#if pinnable}} | ||||
|       <IconButton pressable="true" | ||||
|                   pressed="{{$pinnedPage === href}}" | ||||
|                   label="{{$pinnedPage === href ? 'Unpin timeline' : 'Pin timeline'}}" | ||||
|                   pressed={{$pinnedPage === href}} | ||||
|                   label={{$pinnedPage === href ? 'Unpin timeline' : 'Pin timeline'}} | ||||
|                   href="#fa-thumb-tack" | ||||
|                   on:click="onPinClick(event)" /> | ||||
|     {{/if}} | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <a href="/accounts/{{verifyCredentials.id}}" | ||||
|    class="compose-box-avatar" | ||||
|    aria-label="Profile for {{verifyCredentials.display_name || verifyCredentials.acct}}"> | ||||
|   <Avatar account="{{verifyCredentials}}" size="small"/> | ||||
|   <Avatar account={{verifyCredentials}} size="small"/> | ||||
| </a> | ||||
| <a class="compose-box-display-name" href="/accounts/{{verifyCredentials.id}}"> | ||||
|   {{verifyCredentials.display_name || verifyCredentials.acct}} | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <div class="compose-autosuggest {{shown ? 'shown' : ''}} {{realm === 'dialog' ? 'is-dialog' : ''}}" | ||||
|        aria-hidden="true" > | ||||
|   <ComposeAutosuggestionList | ||||
|     items="{{searchResults}}" | ||||
|     items={{searchResults}} | ||||
|     on:click="onClick(event)" | ||||
|     :type | ||||
|     :selected | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
|         <Avatar | ||||
|           className="compose-autosuggest-list-item-avatar" | ||||
|           size="small" | ||||
|           account="{{item}}" | ||||
|           account={{item}} | ||||
|         /> | ||||
|         <span class="compose-autosuggest-list-display-name"> | ||||
|             {{item.display_name || item.acct}} | ||||
|  | @ -18,7 +18,7 @@ | |||
|             {{'@' + item.acct}} | ||||
|         </span> | ||||
|         {{else}} | ||||
|           <img src="{{$autoplayGifs ? item.url : item.static_url}}" | ||||
|           <img src={{$autoplayGifs ? item.url : item.static_url}} | ||||
|                class="compose-autosuggest-list-item-icon" | ||||
|                alt="{{':' + item.shortcode + ':'}}" | ||||
|           /> | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| <div class="compose-box-button-halo"> | ||||
|   <button class="primary compose-box-button" | ||||
|           :disabled | ||||
|           aria-label="{{sticky ? 'Compose' : 'Toot!'}}" | ||||
|           aria-label={{sticky ? 'Compose' : 'Toot!'}} | ||||
|           on:click> | ||||
|     <span class="{{$postingStatus || sticky ? 'hidden' : ''}}"> | ||||
|     <span class={{$postingStatus || sticky ? 'hidden' : ''}}> | ||||
|       Toot! | ||||
|     </span> | ||||
|     <div class="compose-box-button-spinner" | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <span class="compose-box-length {{overLimit ? 'over-char-limit' : ''}}" | ||||
|       aria-label="{{lengthLabel}}"> | ||||
|       aria-label={{lengthLabel}}> | ||||
|       {{lengthToDisplayDeferred || '0'}} | ||||
|     </span> | ||||
| <style> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <div class="compose-media"> | ||||
|   <img src="{{mediaItem.data.preview_url}}" alt="{{mediaItem.file.name}}"/> | ||||
|   <img src={{mediaItem.data.preview_url}} alt={{mediaItem.file.name}}/> | ||||
|   <div class="compose-media-delete"> | ||||
|     <button class="compose-media-delete-button" | ||||
|             aria-label="Delete {{mediaItem.file.name}}" | ||||
|  |  | |||
|  | @ -6,23 +6,23 @@ | |||
|       on:click="onEmojiClick()" | ||||
|     /> | ||||
|     <IconButton | ||||
|       svgClassName="{{$uploadingMedia ? 'spin' : ''}}" | ||||
|       svgClassName={{$uploadingMedia ? 'spin' : ''}} | ||||
|       label="Add media" | ||||
|       href="{{$uploadingMedia ? '#fa-spinner' : '#fa-camera'}}" | ||||
|       href={{$uploadingMedia ? '#fa-spinner' : '#fa-camera'}} | ||||
|       on:click="onMediaClick()" | ||||
|       disabled="{{$uploadingMedia || (media.length === 4)}}" | ||||
|       disabled={{$uploadingMedia || (media.length === 4)}} | ||||
|     /> | ||||
|     <IconButton | ||||
|       label="Adjust privacy (currently {{postPrivacy.label}})" | ||||
|       href="{{postPrivacy.icon}}" | ||||
|       href={{postPrivacy.icon}} | ||||
|       on:click="onPostPrivacyClick()" | ||||
|     /> | ||||
|     <IconButton | ||||
|       label="{{contentWarningShown ? 'Remove content warning' : 'Add content warning'}}" | ||||
|       label={{contentWarningShown ? 'Remove content warning' : 'Add content warning'}} | ||||
|       href="#fa-exclamation-triangle" | ||||
|       on:click="onContentWarningClick()" | ||||
|       pressable="true" | ||||
|       pressed="{{contentWarningShown}}" | ||||
|       pressed={{contentWarningShown}} | ||||
|     /> | ||||
|   </div> | ||||
|   <input ref:input | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ | |||
|         {{#each emojis as emoji}} | ||||
|           <li class="custom-emoji"> | ||||
|             <button type="button" on:click="onClickEmoji(emoji)"> | ||||
|               <img src="{{$autoplayGifs ? emoji.url : emoji.static_url}}" | ||||
|               <img src={{$autoplayGifs ? emoji.url : emoji.static_url}} | ||||
|                    alt=":{{emoji.shortcode}}:" | ||||
|                    title=":{{emoji.shortcode}}:" | ||||
|               /> | ||||
|  |  | |||
|  | @ -3,12 +3,12 @@ | |||
|   <li class="generic-dialog-list-item"> | ||||
|     <button class="generic-dialog-list-button" on:click="fire('click', item)"> | ||||
|       <svg class="generic-dialog-list-item-svg"> | ||||
|         <use xlink:href="{{item.icon}}" /> | ||||
|         <use xlink:href={{item.icon}} /> | ||||
|       </svg> | ||||
|       <span> | ||||
|             {{item.label}} | ||||
|           </span> | ||||
|       <svg class="generic-dialog-list-item-svg {{item.selected ? '' : 'hidden'}}" aria-hidden="{{!item.selected}}"> | ||||
|       <svg class="generic-dialog-list-item-svg {{item.selected ? '' : 'hidden'}}" aria-hidden={{!item.selected}}> | ||||
|         <use xlink:href="#fa-check" /> | ||||
|       </svg> | ||||
|     </button> | ||||
|  |  | |||
|  | @ -15,11 +15,11 @@ | |||
|     /> | ||||
|   {{else}} | ||||
|     <img | ||||
|       src="{{src}}" | ||||
|       width="{{width}}" | ||||
|       height="{{height}}" | ||||
|       alt="{{description || ''}}" | ||||
|       title="{{description || ''}}" | ||||
|       src={{src}} | ||||
|       width={{width}} | ||||
|       height={{height}} | ||||
|       alt={{description || ''}} | ||||
|       title={{description || ''}} | ||||
|     /> | ||||
|   {{/if}} | ||||
| </ModalDialog> | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| <div class="{{backdropClass}}" | ||||
| <div class={{backdropClass}} | ||||
|      tabindex="-1" | ||||
|      data-a11y-dialog-hide | ||||
| ></div> | ||||
| <div class="{{contentsClass}}" | ||||
| <div class={{contentsClass}} | ||||
|      role="dialog" | ||||
|      aria-label="{{label || ''}}" | ||||
|      aria-label={{label || ''}} | ||||
|      ref:node | ||||
| > | ||||
|   <div class="modal-dialog-document" role="document" style="background: {{background || '#000'}};"> | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
|   </div> | ||||
|   <a class="account-profile-details-item" | ||||
|      href='/accounts/{{account.id}}/follows' | ||||
|      aria-label="{{followingLabel}}" | ||||
|      aria-label={{followingLabel}} | ||||
|   > | ||||
|     <span class="account-profile-details-item-title"> | ||||
|       Follows | ||||
|  | @ -20,7 +20,7 @@ | |||
|   </a> | ||||
|   <a class="account-profile-details-item" | ||||
|      href='/accounts/{{account.id}}/followers' | ||||
|      aria-label="{{followersLabel}}" | ||||
|      aria-label={{followersLabel}} | ||||
|   > | ||||
|     <span class="account-profile-details-item-title"> | ||||
|       Followers | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| <div class="account-profile-follow {{shown ? 'shown' : ''}}"> | ||||
|   <IconButton | ||||
|     label="{{followLabel}}" | ||||
|     href="{{followIcon}}" | ||||
|     label={{followLabel}} | ||||
|     href={{followIcon}} | ||||
|     pressable="true" | ||||
|     pressed="{{following}}" | ||||
|     pressed={{following}} | ||||
|     big="true" | ||||
|     on:click="onFollowButtonClick(event)" | ||||
|     ref:icon | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
|   <Avatar :account size="big" /> | ||||
| </div> | ||||
| <div class="account-profile-name"> | ||||
|   <ExternalLink href="{{account.url}}" | ||||
|   <ExternalLink href={{account.url}} | ||||
|                 showIcon="true" | ||||
|                 normalIconColor="true" | ||||
|                 ariaLabel="{{account.display_name || account.acct}} (opens in new window)" | ||||
|  |  | |||
|  | @ -1,15 +1,15 @@ | |||
| <div class="pseudo-virtual-list" on:initialized ref:node> | ||||
|   {{#each wrappedItems as wrappedItem, i @item}} | ||||
|     <PseudoVirtualListLazyItem | ||||
|       component="{{component}}" | ||||
|       index="{{i}}" | ||||
|       length="{{wrappedItems.length}}" | ||||
|       makeProps="{{makeProps}}" | ||||
|       key="{{wrappedItem.item}}" | ||||
|       intersectionObserver="{{intersectionObserver}}" | ||||
|       isIntersecting="{{isIntersecting(wrappedItem.item, $intersectionStates)}}" | ||||
|       isCached="{{isCached(wrappedItem.item, $intersectionStates)}}" | ||||
|       height="{{getHeight(wrappedItem.item, $intersectionStates)}}" | ||||
|       component={{component}} | ||||
|       index={{i}} | ||||
|       length={{wrappedItems.length}} | ||||
|       makeProps={{makeProps}} | ||||
|       key={{wrappedItem.item}} | ||||
|       intersectionObserver={{intersectionObserver}} | ||||
|       isIntersecting={{isIntersecting(wrappedItem.item, $intersectionStates)}} | ||||
|       isCached={{isCached(wrappedItem.item, $intersectionStates)}} | ||||
|       height={{getHeight(wrappedItem.item, $intersectionStates)}} | ||||
|     /> | ||||
|   {{/each}} | ||||
| </div> | ||||
|  |  | |||
|  | @ -1,13 +1,13 @@ | |||
| <div class="pseudo-virtual-list-item" | ||||
|      aria-hidden="{{hide}}" | ||||
|      pseudo-virtual-list-key="{{key}}" | ||||
|      aria-hidden={{hide}} | ||||
|      pseudo-virtual-list-key={{key}} | ||||
|      style="height: {{shouldHide ? `${height}px` : ''}};" | ||||
|      ref:node> | ||||
|   {{#if !shouldHide}} | ||||
|     <:Component {component} | ||||
|                 virtualProps="{{props}}" | ||||
|                 virtualIndex="{{index}}" | ||||
|                 virtualLength="{{length}}" | ||||
|                 virtualProps={{props}} | ||||
|                 virtualIndex={{index}} | ||||
|                 virtualLength={{length}} | ||||
|     /> | ||||
|   {{/if}} | ||||
| </div> | ||||
|  |  | |||
|  | @ -11,9 +11,9 @@ | |||
|       <div class="search-result-account-buttons"> | ||||
|         {{#each actions as action}} | ||||
|           <IconButton | ||||
|             label="{{action.label}}" | ||||
|             label={{action.label}} | ||||
|             on:click="onButtonClick(event, action, account.id)" | ||||
|             href="{{action.icon}}" | ||||
|             href={{action.icon}} | ||||
|             big="true" | ||||
|           /> | ||||
|         {{/each}} | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ | |||
|            required | ||||
|            bind:value="$queryInSearch"> | ||||
|   </div> | ||||
|   <button type="submit" class="primary search-button" aria-label="Search" disabled="{{$searchLoading}}"> | ||||
|   <button type="submit" class="primary search-button" aria-label="Search" disabled={{$searchLoading}}> | ||||
|     <svg class="search-button-svg"> | ||||
|       <use xlink:href="#fa-search" /> | ||||
|     </svg> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <li class="search-result"> | ||||
|   <a href="{{href}}" class="search-result-anchor"> | ||||
|   <a href={{href}} class="search-result-anchor"> | ||||
|     <slot></slot> | ||||
|   </a> | ||||
| </li> | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
|     <AccountSearchResult :account /> | ||||
|   {{/each}} | ||||
|   {{#each $searchResults.statuses as status, index}} | ||||
|   <StatusSearchResult :status :index length="{{$searchResults.statuses.length}}"/> | ||||
|   <StatusSearchResult :status :index length={{$searchResults.statuses.length}}/> | ||||
|   {{/each}} | ||||
| </ul> | ||||
| <style> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <SearchResult href="/statuses/{{status.id}}"> | ||||
|   <Status :index :length | ||||
|           timelineType="search" timelineValue="search" | ||||
|           status="{{status}}" /> | ||||
|           status={{status}} /> | ||||
| </SearchResult> | ||||
| <style> | ||||
| </style> | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <div class="settings-list-wrapper"> | ||||
|   {{#if label}} | ||||
|   <ul class="settings-list" aria-label="{{label}}"> | ||||
|   <ul class="settings-list" aria-label={{label}}> | ||||
|     <slot></slot> | ||||
|   </ul> | ||||
|   {{else}} | ||||
|  |  | |||
|  | @ -2,15 +2,15 @@ | |||
|   <a :href> | ||||
|     {{#if icon}} | ||||
|     <svg class="settings-list-item-svg"> | ||||
|       <use xlink:href="{{icon}}" /> | ||||
|       <use xlink:href={{icon}} /> | ||||
|     </svg> | ||||
|     {{/if}} | ||||
|     {{#if ariaLabel}} | ||||
|     <span aria-label="{{ariaLabel}}" class="{{offsetForIcon ? 'offset-for-icon' : ''}}"> | ||||
|     <span aria-label={{ariaLabel}} class={{offsetForIcon ? 'offset-for-icon' : ''}}> | ||||
|       {{label}} | ||||
|     </span> | ||||
|     {{else}} | ||||
|     <span class="{{offsetForIcon ? 'offset-for-icon' : ''}}"> | ||||
|     <span class={{offsetForIcon ? 'offset-for-icon' : ''}}> | ||||
|       {{label}} | ||||
|     </span> | ||||
|     {{/if}} | ||||
|  |  | |||
|  | @ -2,11 +2,11 @@ | |||
|   <ul> | ||||
|     {{#each navItems as navItem}} | ||||
|     <li> | ||||
|       <SettingsNavItem :page name="{{navItem.name}}" href="{{navItem.href}}" label="{{navItem.label}}" /> | ||||
|       <SettingsNavItem :page name={{navItem.name}} href={{navItem.href}} label={{navItem.label}} /> | ||||
|     </li> | ||||
|     {{/each}} | ||||
|     <li> | ||||
|       <SettingsNavItem :page name="{{page}}" href="/{{page}}" :label /> | ||||
|       <SettingsNavItem :page name={{page}} href="/{{page}}" :label /> | ||||
|     </li> | ||||
|   </ul> | ||||
| </nav> | ||||
|  |  | |||
|  | @ -1,4 +1,7 @@ | |||
| <a class='settings-nav-item {{getCurrentClass(page, name)}}' aria-label='{{getAriaLabel(page, name, label)}}' href='{{href}}'> | ||||
| <a class="settings-nav-item {{getCurrentClass(page, name)}}" | ||||
|    aria-label={{getAriaLabel(page, name, label)}} | ||||
|    :href | ||||
| > | ||||
|   {{label}} | ||||
| </a> | ||||
| <style> | ||||
|  |  | |||
|  | @ -2,59 +2,59 @@ | |||
|   <button type="button" | ||||
|           class="play-video-button" | ||||
|           aria-label="Play video: {{description}}" | ||||
|           delegate-key="{{delegateKey}}" | ||||
|           delegate-key={{delegateKey}} | ||||
|           style="width: {{inlineWidth}}px; height: {{inlineHeight}}px;"> | ||||
|     <PlayVideoIcon /> | ||||
|     <LazyImage | ||||
|       alt="{{description}}" | ||||
|       title="{{description}}" | ||||
|       src="{{previewUrl}}" | ||||
|       fallback="{{oneTransparentPixel}}" | ||||
|       width="{{inlineWidth}}" | ||||
|       height="{{inlineHeight}}" | ||||
|       alt={{description}} | ||||
|       title={{description}} | ||||
|       src={{previewUrl}} | ||||
|       fallback={{oneTransparentPixel}} | ||||
|       width={{inlineWidth}} | ||||
|       height={{inlineHeight}} | ||||
|       background="var(--loading-bg)" | ||||
|       className="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | ||||
|       className={{noNativeWidthHeight ? 'no-native-width-height' : ''}} | ||||
|     /> | ||||
|   </button> | ||||
| {{else}} | ||||
|   <button type="button" | ||||
|           class="show-image-button" | ||||
|           aria-label="Show image: {{description}}" | ||||
|           title="{{description}}" | ||||
|           delegate-key="{{delegateKey}}" | ||||
|           title={{description}} | ||||
|           delegate-key={{delegateKey}} | ||||
|           on:mouseover="set({mouseover: event})" | ||||
|           style="width: {{inlineWidth}}px; height: {{inlineHeight}}px;" | ||||
|   > | ||||
|   {{#if type === 'gifv' && $autoplayGifs}} | ||||
|     <AutoplayVideo | ||||
|       className="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | ||||
|       className={{noNativeWidthHeight ? 'no-native-width-height' : ''}} | ||||
|       ariaLabel="Animated GIF: {{description}}" | ||||
|       poster="{{previewUrl}}" | ||||
|       src="{{url}}" | ||||
|       width="{{inlineWidth}}" | ||||
|       height="{{inlineHeight}}" | ||||
|       poster={{previewUrl}} | ||||
|       src={{url}} | ||||
|       width={{inlineWidth}} | ||||
|       height={{inlineHeight}} | ||||
|     /> | ||||
|   {{elseif type === 'gifv' && !$autoplayGifs}} | ||||
|     <NonAutoplayGifv | ||||
|       class="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | ||||
|       class={{noNativeWidthHeight ? 'no-native-width-height' : ''}} | ||||
|       label="Animated GIF: {{description}}" | ||||
|       poster="{{previewUrl}}" | ||||
|       src="{{url}}" | ||||
|       staticSrc="{{previewUrl}}" | ||||
|       width="{{inlineWidth}}" | ||||
|       height="{{inlineHeight}}" | ||||
|       playing="{{mouseover}}" | ||||
|       poster={{previewUrl}} | ||||
|       src={{url}} | ||||
|       staticSrc={{previewUrl}} | ||||
|       width={{inlineWidth}} | ||||
|       height={{inlineHeight}} | ||||
|       playing={{mouseover}} | ||||
|     /> | ||||
|   {{else}} | ||||
|     <LazyImage | ||||
|       alt="{{description}}" | ||||
|       title="{{description}}" | ||||
|       src="{{previewUrl}}" | ||||
|       fallback="{{oneTransparentPixel}}" | ||||
|       width="{{inlineWidth}}" | ||||
|       height="{{inlineHeight}}" | ||||
|       alt={{description}} | ||||
|       title={{description}} | ||||
|       src={{previewUrl}} | ||||
|       fallback={{oneTransparentPixel}} | ||||
|       width={{inlineWidth}} | ||||
|       height={{inlineHeight}} | ||||
|       background="var(--loading-bg)" | ||||
|       className="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | ||||
|       className={{noNativeWidthHeight ? 'no-native-width-height' : ''}} | ||||
|     /> | ||||
|   {{/if}} | ||||
| </button> | ||||
|  |  | |||
|  | @ -1,13 +1,13 @@ | |||
| {{#if notification.type === 'mention' || notification.type === 'reblog' || notification.type === 'favourite'}} | ||||
|   <Status :index :length :timelineType :timelineValue :focusSelector | ||||
|           status="{{notification.status}}" | ||||
|           status={{notification.status}} | ||||
|           :notification | ||||
|           on:recalculateHeight | ||||
|   /> | ||||
| {{else}} | ||||
|   <article class="notification-article" | ||||
|            tabindex="0" | ||||
|            aria-posinset="{{index}}" aria-setsize="{{length}}" > | ||||
|            aria-posinset={{index}} aria-setsize={{length}} > | ||||
|     <StatusHeader :notification :notificationId :status :statusId :timelineType | ||||
|                   :account :accountId :uuid isStatusInNotification="true" /> | ||||
|   </article> | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| <article class="{{className}}" | ||||
| <article class={{className}} | ||||
|          tabindex="0" | ||||
|          delegate-key="{{delegateKey}}" | ||||
|          focus-key="{{delegateKey}}" | ||||
|          aria-posinset="{{index}}" | ||||
|          aria-setsize="{{length}}" | ||||
|          aria-label="{{ariaLabel}}" | ||||
|          delegate-key={{delegateKey}} | ||||
|          focus-key={{delegateKey}} | ||||
|          aria-posinset={{index}} | ||||
|          aria-setsize={{length}} | ||||
|          aria-label={{ariaLabel}} | ||||
|          on:recalculateHeight> | ||||
|   {{#if showHeader}} | ||||
|     <StatusHeader {{...params}} /> | ||||
|  | @ -19,7 +19,7 @@ | |||
|     <StatusSpoiler {{...params}} on:recalculateHeight /> | ||||
|   {{/if}} | ||||
|   {{#if showContent || contentPreloaded}} | ||||
|     <StatusContent {{...params}} shown="{{showContent}}"/> | ||||
|     <StatusContent {{...params}} shown={{showContent}}/> | ||||
|   {{/if}} | ||||
|   {{#if showMedia }} | ||||
|     <StatusMediaAttachments {{...params}} on:recalculateHeight /> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <a class="status-author-name {{isStatusInNotification ? 'status-in-notification' : '' }} {{isStatusInOwnThread ? 'status-in-own-thread' : ''}}" | ||||
|    href="/accounts/{{originalAccountId}}" | ||||
|    title="{{'@' + originalAccount.acct}}" | ||||
|    focus-key="{{focusKey}}" | ||||
|    focus-key={{focusKey}} | ||||
| > | ||||
|   {{originalAccount.display_name || originalAccount.username}} | ||||
| </a> | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| <div class="status-article-compose-box"> | ||||
|   <ComposeBox realm="{{originalStatusId}}" | ||||
|   <ComposeBox realm={{originalStatusId}} | ||||
|               size="slim" | ||||
|               autoFocus="true" | ||||
|               hideBottomBorder="true" | ||||
|               isReply="true" | ||||
|               replyVisibility="{{visibility}}" | ||||
|               replySpoiler="{{spoilerText}}" | ||||
|               inReplyToUuid="{{uuid}}" | ||||
|               replyVisibility={{visibility}} | ||||
|               replySpoiler={{spoilerText}} | ||||
|               inReplyToUuid={{uuid}} | ||||
|   /> | ||||
| </div> | ||||
| <style> | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| <div class="{{computedClass}}" ref:node> | ||||
| <div class={{computedClass}} ref:node> | ||||
|     {{{massagedContent}}} | ||||
| </div> | ||||
| <style> | ||||
|  |  | |||
|  | @ -1,14 +1,14 @@ | |||
| <div class="status-details"> | ||||
|   <ExternalLink className="status-absolute-date" | ||||
|                 href="{{originalStatus.url}}" | ||||
|                 href={{originalStatus.url}} | ||||
|                 showIcon="true" | ||||
|                 ariaLabel="{{formattedDate}} (opens in new window)" | ||||
|   > | ||||
|     <time datetime={{createdAtDate}} title="{{formattedDate}}">{{formattedDate}}</time> | ||||
|     <time datetime={{createdAtDate}} title={{formattedDate}}>{{formattedDate}}</time> | ||||
|   </ExternalLink> | ||||
|   <a class="status-favs-reblogs" | ||||
|      href="/statuses/{{originalStatusId}}/reblogs" | ||||
|      aria-label="{{reblogsLabel}}"> | ||||
|      aria-label={{reblogsLabel}}> | ||||
|     <svg class="status-favs-reblogs-svg"> | ||||
|       <use xlink:href="#fa-retweet"/> | ||||
|     </svg> | ||||
|  | @ -16,7 +16,7 @@ | |||
|   </a> | ||||
|   <a class="status-favs-reblogs" | ||||
|      href="/statuses/{{originalStatusId}}/favorites" | ||||
|      aria-label="{{favoritesLabel}}"> | ||||
|      aria-label={{favoritesLabel}}> | ||||
|     <svg class="status-favs-reblogs-svg"> | ||||
|       <use xlink:href="#fa-star" /> | ||||
|     </svg> | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ | |||
|     <Avatar :account size="extra-small"/> | ||||
|   </div> | ||||
|   <svg class="status-header-svg"> | ||||
|     <use xlink:href="{{icon}}"/> | ||||
|     <use xlink:href={{icon}}/> | ||||
|   </svg> | ||||
|   <span class="status-header-span"> | ||||
|     {{#if timelineType === 'pinned'}} | ||||
|  | @ -12,7 +12,7 @@ | |||
|       <a href="/accounts/{{accountId}}" | ||||
|          class="status-header-a" | ||||
|          title="{{'@' + account.acct}}" | ||||
|          focus-key="{{focusKey}}" > | ||||
|          focus-key={{focusKey}} > | ||||
|         {{account.display_name || account.username}} | ||||
|       </a> | ||||
|       {{#if notification && notification.type === 'reblog'}} | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
|   <button type="button" | ||||
|           class="status-sensitive-media-button" | ||||
|           aria-label="Hide sensitive media" | ||||
|           delegate-key="{{delegateKey}}" > | ||||
|           delegate-key={{delegateKey}} > | ||||
|     <div class="svg-wrapper"> | ||||
|       <svg class="status-sensitive-media-svg"> | ||||
|         <use xlink:href="#fa-eye-slash" /> | ||||
|  | @ -17,7 +17,7 @@ | |||
|     <button type="button" | ||||
|             class="status-sensitive-media-button" | ||||
|             aria-label="Show sensitive media" | ||||
|             delegate-key="{{delegateKey}}" > | ||||
|             delegate-key={{delegateKey}} > | ||||
| 
 | ||||
|       <div class="status-sensitive-media-warning"> | ||||
|         <span>Sensitive content. Click to show.</span> | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| <a class="status-relative-date {{isStatusInNotification ? 'status-in-notification' : '' }}" | ||||
|    href="/statuses/{{originalStatusId}}" | ||||
|    focus-key="{{focusKey}}" | ||||
|    focus-key={{focusKey}} | ||||
| > | ||||
|   <time datetime={{createdAtDate}} title="{{relativeDate}}" | ||||
|   <time datetime={{createdAtDate}} title={{relativeDate}} | ||||
|         aria-label="{{relativeDate}} – click to show thread"> | ||||
|     {{relativeDate}} | ||||
|   </time> | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <a class="status-sidebar size-{{size}}" | ||||
|    href="/accounts/{{originalAccountId}}" | ||||
|    focus-key="{{focusKey}}" | ||||
|    focus-key={{focusKey}} | ||||
|    aria-hidden="true" | ||||
| > | ||||
|   <Avatar account={{originalAccount}} | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
|   <p>{{{massagedSpoilerText}}}</p> | ||||
| </div> | ||||
| <div class="status-spoiler-button {{isStatusInOwnThread ? 'status-in-own-thread' : ''}}"> | ||||
|   <button type="button" delegate-key="{{delegateKey}}"> | ||||
|   <button type="button" delegate-key={{delegateKey}}> | ||||
|     {{spoilerShown ? 'Show less' : 'Show more'}} | ||||
|   </button> | ||||
| </div> | ||||
|  |  | |||
|  | @ -1,34 +1,34 @@ | |||
| <div class="status-toolbar {{isStatusInOwnThread ? 'status-in-own-thread' : ''}}" ref:node> | ||||
|   <IconButton | ||||
|     className="status-toolbar-reply-button" | ||||
|     label="{{replyLabel}}" | ||||
|     label={{replyLabel}} | ||||
|     pressable="true" | ||||
|     pressed="{{replyShown}}" | ||||
|     pressed={{replyShown}} | ||||
|     href="#fa-reply" | ||||
|     delegateKey="{{replyKey}}" | ||||
|     focusKey="{{replyKey}}" | ||||
|     delegateKey={{replyKey}} | ||||
|     focusKey={{replyKey}} | ||||
|     /> | ||||
|   <IconButton | ||||
|     label="{{reblogLabel}}" | ||||
|     pressable="{{!reblogDisabled}}" | ||||
|     pressed="{{reblogged}}" | ||||
|     disabled="{{reblogDisabled}}" | ||||
|     href="{{reblogIcon}}" | ||||
|     delegateKey="{{reblogKey}}" | ||||
|     label={{reblogLabel}} | ||||
|     pressable={{!reblogDisabled}} | ||||
|     pressed={{reblogged}} | ||||
|     disabled={{reblogDisabled}} | ||||
|     href={{reblogIcon}} | ||||
|     delegateKey={{reblogKey}} | ||||
|     ref:reblogIcon | ||||
|   /> | ||||
|   <IconButton | ||||
|     label="Favorite" | ||||
|     pressable="true" | ||||
|     pressed="{{favorited}}" | ||||
|     pressed={{favorited}} | ||||
|     href="#fa-star" | ||||
|     delegateKey="{{favoriteKey}}" | ||||
|     delegateKey={{favoriteKey}} | ||||
|     ref:favoriteIcon | ||||
|   /> | ||||
|   <IconButton | ||||
|     label="Show more options" | ||||
|     href="#fa-ellipsis-h" | ||||
|     delegateKey="{{optionsKey}}" | ||||
|     delegateKey={{optionsKey}} | ||||
|   /> | ||||
| </div> | ||||
| <style> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <MoreHeader count="{{virtualProps.count}}" | ||||
|             onClick="{{virtualProps.onClick}}" | ||||
| <MoreHeader count={{virtualProps.count}} | ||||
|             onClick={{virtualProps.onClick}} | ||||
| /> | ||||
| <script> | ||||
|   import MoreHeader from './MoreHeader.html' | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| <Notification | ||||
|   notification="{{virtualProps.notification}}" | ||||
|   timelineType="{{virtualProps.timelineType}}" | ||||
|   timelineValue="{{virtualProps.timelineValue}}" | ||||
|   focusSelector="{{virtualProps.focusSelector}}" | ||||
|   index="{{virtualIndex}}" | ||||
|   length="{{virtualLength}}" | ||||
|   notification={{virtualProps.notification}} | ||||
|   timelineType={{virtualProps.timelineType}} | ||||
|   timelineValue={{virtualProps.timelineValue}} | ||||
|   focusSelector={{virtualProps.focusSelector}} | ||||
|   index={{virtualIndex}} | ||||
|   length={{virtualLength}} | ||||
|   on:recalculateHeight /> | ||||
| <script> | ||||
|   import Notification from '../status/Notification.html' | ||||
|  |  | |||
|  | @ -2,9 +2,9 @@ | |||
|   {{#each pinnedStatuses as status, index @id}} | ||||
|     <Status :status | ||||
|             timelineType="pinned" | ||||
|             timelineValue="{{accountId}}" | ||||
|             timelineValue={{accountId}} | ||||
|             :index | ||||
|             length="{{pinnedStatuses.length}}" | ||||
|             length={{pinnedStatuses.length}} | ||||
|     /> | ||||
|   {{/each}} | ||||
| </div> | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| <Status status="{{virtualProps.status}}" | ||||
|         timelineType="{{virtualProps.timelineType}}" | ||||
|         timelineValue="{{virtualProps.timelineValue}}" | ||||
|         focusSelector="{{virtualProps.focusSelector}}" | ||||
|         index="{{virtualIndex}}" | ||||
|         length="{{virtualLength}}" | ||||
| <Status status={{virtualProps.status}} | ||||
|         timelineType={{virtualProps.timelineType}} | ||||
|         timelineValue={{virtualProps.timelineValue}} | ||||
|         focusSelector={{virtualProps.focusSelector}} | ||||
|         index={{virtualIndex}} | ||||
|         length={{virtualLength}} | ||||
|         on:recalculateHeight /> | ||||
| <script> | ||||
|   import Status from '../status/Status.html' | ||||
|  |  | |||
|  | @ -7,15 +7,15 @@ | |||
|   {{#await componentsPromise}} | ||||
|   {{then result}} | ||||
|     <:Component {result.listComponent} | ||||
|                 component="{{result.listItemComponent}}" | ||||
|                 component={{result.listItemComponent}} | ||||
|                 realm="{{$currentInstance + '/' + timeline}}" | ||||
|                 containerQuery=".container" | ||||
|                 :makeProps | ||||
|                 items="{{$timelineItemIds}}" | ||||
|                 showFooter="{{$timelineInitialized && $runningUpdate}}" | ||||
|                 footerComponent="{{LoadingFooter}}" | ||||
|                 showHeader="{{$showHeader}}" | ||||
|                 headerComponent="{{MoreHeaderVirtualWrapper}}" | ||||
|                 items={{$timelineItemIds}} | ||||
|                 showFooter={{$timelineInitialized && $runningUpdate}} | ||||
|                 footerComponent={{LoadingFooter}} | ||||
|                 showHeader={{$showHeader}} | ||||
|                 headerComponent={{MoreHeaderVirtualWrapper}} | ||||
|                 :headerProps | ||||
|                 :scrollToItem | ||||
|                 on:scrollToBottom="onScrollToBottom()" | ||||
|  |  | |||
|  | @ -2,19 +2,19 @@ | |||
|   <div class="virtual-list" | ||||
|        style="height: {{$height}}px;" | ||||
|        ref:node > | ||||
|     <VirtualListHeader component="{{headerComponent}}" virtualProps="{{headerProps}}" shown="{{$showHeader}}"/> | ||||
|     <VirtualListHeader component={{headerComponent}} virtualProps={{headerProps}} shown={{$showHeader}}/> | ||||
|     {{#if $visibleItems}} | ||||
|       {{#each $visibleItems as visibleItem @key}} | ||||
|         <VirtualListLazyItem :component | ||||
|                              offset="{{visibleItem.offset}}" | ||||
|                              makeProps="{{makeProps}}" | ||||
|                              key="{{visibleItem.key}}" | ||||
|                              index="{{visibleItem.index}}" | ||||
|                              offset={{visibleItem.offset}} | ||||
|                              makeProps={{makeProps}} | ||||
|                              key={{visibleItem.key}} | ||||
|                              index={{visibleItem.index}} | ||||
|         /> | ||||
|       {{/each}} | ||||
|     {{/if}} | ||||
|     {{#if $showFooter}} | ||||
|       <VirtualListFooter component="{{footerComponent}}" /> | ||||
|       <VirtualListFooter component={{footerComponent}} /> | ||||
|     {{/if}} | ||||
|   </div> | ||||
| </VirtualListContainer> | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| <div class="virtual-list-item {{shown ? 'shown' : ''}}" | ||||
|      aria-hidden="{{!shown}}" | ||||
|      virtual-list-key="{{key}}" | ||||
|      aria-hidden={{!shown}} | ||||
|      virtual-list-key={{key}} | ||||
|      ref:node | ||||
|      style="transform: translateY({{offset}}px);" > | ||||
|   <:Component {component} | ||||
|               virtualProps="{{props}}" | ||||
|               virtualIndex="{{index}}" | ||||
|               virtualLength="{{$length}}" | ||||
|               virtualProps={{props}} | ||||
|               virtualIndex={{index}} | ||||
|               virtualLength={{$length}} | ||||
|               on:recalculateHeight="doRecalculateHeight()"/> | ||||
| </div> | ||||
| <style> | ||||
|  |  | |||
|  | @ -2,12 +2,12 @@ | |||
|   <TimelinePage timeline="account/{{params.accountId}}"> | ||||
|     <DynamicPageBanner title="" /> | ||||
|     {{#if $currentAccountProfile && $currentVerifyCredentials}} | ||||
|     <AccountProfile account="{{$currentAccountProfile}}" | ||||
|                     relationship="{{$currentAccountRelationship}}" | ||||
|                     verifyCredentials="{{$currentVerifyCredentials}}" | ||||
|     <AccountProfile account={{$currentAccountProfile}} | ||||
|                     relationship={{$currentAccountRelationship}} | ||||
|                     verifyCredentials={{$currentVerifyCredentials}} | ||||
|     /> | ||||
|     {{/if}} | ||||
|     <PinnedStatuses accountId="{{params.accountId}}" /> | ||||
|     <PinnedStatuses accountId={{params.accountId}} /> | ||||
|   </TimelinePage> | ||||
| {{else}} | ||||
|   <HiddenFromSSR> | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
|     <PageList label="Lists"> | ||||
|       {{#each $lists as list}} | ||||
|       <PageListItem href="/lists/{{list.id}}" | ||||
|                     label="{{list.title}}" | ||||
|                     label={{list.title}} | ||||
|                     icon="#fa-bars" | ||||
|                     pinnable="true" | ||||
|       /> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| {{#if $isUserLoggedIn}} | ||||
|   <TimelinePage timeline="list/{{params.listId}}"> | ||||
|     {{#if $pinnedPage !== `/lists/${params.listId}`}} | ||||
|       <DynamicPageBanner title="{{listTitle}}" icon="#fa-bars"/> | ||||
|       <DynamicPageBanner title={{listTitle}} icon="#fa-bars"/> | ||||
|     {{/if}} | ||||
|   </TimelinePage> | ||||
| {{else}} | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
|   {{elseif statuses && statuses.length}} | ||||
|   <ul class="pinned-toots-results"> | ||||
|     {{#each statuses as status, index}} | ||||
|     <StatusSearchResult :status :index length="{{statuses.length}}" /> | ||||
|     <StatusSearchResult :status :index length={{statuses.length}} /> | ||||
|     {{/each}} | ||||
|   </ul> | ||||
|   {{/if}} | ||||
|  |  | |||
|  | @ -1,12 +1,12 @@ | |||
| <SettingsLayout page='settings/instances/{{params.instanceName}}' label="{{params.instanceName}}"> | ||||
| <SettingsLayout page='settings/instances/{{params.instanceName}}' label={{params.instanceName}}> | ||||
|   <h1 class="instance-name-h1">{{params.instanceName}}</h1> | ||||
| 
 | ||||
|   {{#if verifyCredentials}} | ||||
|     <h2>Logged in as:</h2> | ||||
|     <div class="acct-current-user"> | ||||
|       <Avatar account="{{verifyCredentials}}" className="acct-avatar" size="big"/> | ||||
|       <Avatar account={{verifyCredentials}} className="acct-avatar" size="big"/> | ||||
|       <ExternalLink className="acct-handle" | ||||
|                     href="{{verifyCredentials.url}}"> | ||||
|                     href={{verifyCredentials.url}}> | ||||
|         {{'@' + verifyCredentials.acct}} | ||||
|       </ExternalLink> | ||||
|       <span class="acct-display-name">{{verifyCredentials.display_name || verifyCredentials.acct}}</span> | ||||
|  | @ -16,7 +16,7 @@ | |||
|       {{#each themes as theme}} | ||||
|         <div class="theme-group"> | ||||
|           <input type="radio" id="choice-theme-{{theme.name}}" | ||||
|                  value="{{theme.name}}" checked="$currentTheme === theme.name" | ||||
|                  value={{theme.name}} checked="$currentTheme === theme.name" | ||||
|                  bind:group="selectedTheme" on:change="onThemeChange()"> | ||||
|           <label for="choice-theme-{{theme.name}}">{{theme.label}}</label> | ||||
|         </div> | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ | |||
|            bind:value='$instanceNameInSearch' placeholder='' required | ||||
|     > | ||||
|     <button class="primary" type="submit" id="submitButton" | ||||
|             disabled="{{!$instanceNameInSearch || $logInToInstanceLoading}}"> | ||||
|             disabled={{!$instanceNameInSearch || $logInToInstanceLoading}}> | ||||
|       Add instance | ||||
|     </button> | ||||
|   </form> | ||||
|  |  | |||
|  | @ -5,10 +5,10 @@ | |||
|   <p>Instances you've logged in to:</p> | ||||
|   <SettingsList label="Instances"> | ||||
|     {{#each $loggedInInstancesAsList as instance}} | ||||
|       <SettingsListItem offsetForIcon="{{instance.name !== $currentInstance}}" | ||||
|                         icon="{{instance.name === $currentInstance ? '#fa-star' : ''}}" | ||||
|       <SettingsListItem offsetForIcon={{instance.name !== $currentInstance}} | ||||
|                         icon={{instance.name === $currentInstance ? '#fa-star' : ''}} | ||||
|                         href="/settings/instances/{{instance.name}}" | ||||
|                         label="{{instance.name}}" | ||||
|                         label={{instance.name}} | ||||
|                         ariaLabel="{{instance.name}} {{instance.name === $currentInstance ? '(current instance)' : ''}}" /> | ||||
|     {{/each}} | ||||
|   </SettingsList> | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue