set even/odd class based on html { --columns: # } variable
This commit is contained in:
		
							parent
							
								
									1d0ca613f9
								
							
						
					
					
						commit
						349c33b478
					
				| 
						 | 
				
			
			@ -50,7 +50,13 @@ function onRuntimeMessage(msg) {
 | 
			
		|||
    case 'styleDeleted':
 | 
			
		||||
      handleDelete(msg.id);
 | 
			
		||||
      break;
 | 
			
		||||
    case 'styleApply':
 | 
			
		||||
    case 'styleReplaceAll':
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      return;
 | 
			
		||||
  }
 | 
			
		||||
  setTimeout(sorter.updateStripes, 0, {onlyWhenColumnsChanged: true});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -117,9 +123,6 @@ function showStyles(styles = [], matchUrlIds) {
 | 
			
		|||
      style,
 | 
			
		||||
      name: style.name.toLocaleLowerCase() + '\n' + style.name,
 | 
			
		||||
    })),
 | 
			
		||||
  }).map((info, index) => {
 | 
			
		||||
    info.index = index;
 | 
			
		||||
    return info;
 | 
			
		||||
  });
 | 
			
		||||
  let index = 0;
 | 
			
		||||
  let firstRun = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +152,7 @@ function showStyles(styles = [], matchUrlIds) {
 | 
			
		|||
      }
 | 
			
		||||
      renderBin.appendChild(entry);
 | 
			
		||||
    }
 | 
			
		||||
    filterAndAppend({container: renderBin});
 | 
			
		||||
    filterAndAppend({container: renderBin}).then(sorter.updateStripes);
 | 
			
		||||
    if (index < sorted.length) {
 | 
			
		||||
      requestAnimationFrame(renderStyles);
 | 
			
		||||
      if (firstRun) setTimeout(recreateStyleTargets, 0, {styles, iconsOnly: true});
 | 
			
		||||
| 
						 | 
				
			
			@ -174,7 +177,7 @@ function showStyles(styles = [], matchUrlIds) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function createStyleElement({style, name, index}) {
 | 
			
		||||
function createStyleElement({style, name}) {
 | 
			
		||||
  // query the sub-elements just once, then reuse the references
 | 
			
		||||
  if ((createStyleElement.parts || {}).newUI !== newUI.enabled) {
 | 
			
		||||
    const entry = template[`style${newUI.enabled ? 'Compact' : ''}`];
 | 
			
		||||
| 
						 | 
				
			
			@ -227,7 +230,6 @@ function createStyleElement({style, name, index}) {
 | 
			
		|||
    (style.enabled ? 'enabled' : 'disabled') +
 | 
			
		||||
    (style.updateUrl ? ' updatable' : '') +
 | 
			
		||||
    (style.usercssData ? ' usercss' : '');
 | 
			
		||||
  if (index !== undefined) entry.classList.add(index % 2 ? 'odd' : 'even');
 | 
			
		||||
 | 
			
		||||
  if (style.url) {
 | 
			
		||||
    $('.homepage', entry).appendChild(parts.homepageIcon.cloneNode(true));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,8 @@ const sorter = (() => {
 | 
			
		|||
 | 
			
		||||
  const splitRegex = /\s*,\s*/;
 | 
			
		||||
 | 
			
		||||
  let columns = 1;
 | 
			
		||||
 | 
			
		||||
  function addOptions() {
 | 
			
		||||
    let container;
 | 
			
		||||
    const select = $('#manage.newUI.sort');
 | 
			
		||||
| 
						 | 
				
			
			@ -140,15 +142,37 @@ const sorter = (() => {
 | 
			
		|||
    updateStripes();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function updateStripes() {
 | 
			
		||||
  function updateStripes({onlyWhenColumnsChanged} = {}) {
 | 
			
		||||
    if (onlyWhenColumnsChanged && !updateColumnCount()) return;
 | 
			
		||||
    let index = 0;
 | 
			
		||||
    [...installed.children].forEach(entry => {
 | 
			
		||||
      const list = entry.classList;
 | 
			
		||||
      if (!list.contains('hidden')) {
 | 
			
		||||
        list.add(index % 2 ? 'odd' : 'even');
 | 
			
		||||
        list.remove(index++ % 2 ? 'even' : 'odd');
 | 
			
		||||
    let isOdd = false;
 | 
			
		||||
    const flipRows = columns % 2 === 0;
 | 
			
		||||
    for (const {classList} of installed.children) {
 | 
			
		||||
      if (classList.contains('hidden')) continue;
 | 
			
		||||
      classList.toggle('odd', isOdd);
 | 
			
		||||
      classList.toggle('even', !isOdd);
 | 
			
		||||
      if (flipRows && ++index >= columns) {
 | 
			
		||||
        index = 0;
 | 
			
		||||
      } else {
 | 
			
		||||
        isOdd = !isOdd;
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function updateColumnCount() {
 | 
			
		||||
    let newValue = 1;
 | 
			
		||||
    for (let el = document.documentElement.lastElementChild;
 | 
			
		||||
         el.localName === 'style';
 | 
			
		||||
         el = el.previousElementSibling) {
 | 
			
		||||
      if (el.textContent.includes('--columns:')) {
 | 
			
		||||
        newValue = Math.max(1, getComputedStyle(document.documentElement).getPropertyValue('--columns') | 0);
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (columns !== newValue) {
 | 
			
		||||
      columns = newValue;
 | 
			
		||||
      return true;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function showHelp(event) {
 | 
			
		||||
| 
						 | 
				
			
			@ -168,6 +192,7 @@ const sorter = (() => {
 | 
			
		|||
    prefs.subscribe(['manage.newUI.sort'], update);
 | 
			
		||||
    $('#sorter-help').onclick = showHelp;
 | 
			
		||||
    addOptions();
 | 
			
		||||
    updateColumnCount();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return {init, update, sort, updateStripes};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user