, but this code // executes before the first paint, when

ÃÛÌÒapp

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); In Defense of Parties, and in Choosing the More Limited One - News & Stories | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Publications

In Defense of Parties, and in Choosing the More Limited One

Mon, Jan 01, 2018
Doug Koopman

Leading Questions:ÌýWhat are the political priorities and values of the Republican and Democratic parties in the early 21ÌýstÌýcentury? How well do these values and priorities comport, or not, with Christian values? If not, what changes in priorities and values need to be made? Should Republicans and Democrats transcend their particular ideologies?Ìý If so, how?

Conversation Partners:Ìý

  • , Professor of Political Science, ÃÛÌÒapp CollegeÌý
  • , Executive Director, Henry Institute for the Study of Religion and Politics, ÃÛÌÒapp CollegeÌý
  • , Professor of the Sociology of Religion, Garrett-Evangelical Theological SeminaryÌý
  • , Kent County (MI) Commissioner

Authors: