78 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {{#if delegateKey}}
 | |
|   <button type="button"
 | |
|           aria-label="{{label}}"
 | |
|           aria-pressed="{{pressable ? !!pressed : ''}}"
 | |
|           class="{{computedClass}}"
 | |
|           :disabled
 | |
|           delegate-key="{{delegateKey}}" >
 | |
|     <svg>
 | |
|       <use xlink:href="{{href}}" />
 | |
|     </svg>
 | |
|   </button>
 | |
| {{else}}
 | |
|   <button type="button"
 | |
|           aria-label="{{label}}"
 | |
|           aria-pressed="{{pressable ? !!pressed : ''}}"
 | |
|           class="{{computedClass}}"
 | |
|           :disabled
 | |
|           on:click >
 | |
|     <svg>
 | |
|       <use xlink:href="{{href}}" />
 | |
|     </svg>
 | |
|   </button>
 | |
| {{/if}}
 | |
| <style>
 | |
|   button.icon-button {
 | |
|     padding: 6px 10px;
 | |
|     background: none;
 | |
|     border: none;
 | |
|   }
 | |
| 
 | |
|   button.icon-button svg {
 | |
|     width: 24px;
 | |
|     height: 24px;
 | |
|     fill: var(--action-button-fill-color);
 | |
|   }
 | |
| 
 | |
|   button.icon-button.big-icon svg {
 | |
|     width: 32px;
 | |
|     height: 32px;
 | |
|   }
 | |
| 
 | |
|   button.icon-button:hover svg {
 | |
|     fill: var(--action-button-fill-color-hover);
 | |
|   }
 | |
| 
 | |
|   button.icon-button.not-pressable:active svg {
 | |
|     fill: var(--action-button-fill-color-active);
 | |
|   }
 | |
| 
 | |
|   button.icon-button.pressed svg {
 | |
|     fill: var(--action-button-fill-color-pressed)
 | |
|   }
 | |
| 
 | |
|   button.icon-button.pressed:hover svg {
 | |
|     fill: var(--action-button-fill-color-pressed-hover);
 | |
|   }
 | |
| 
 | |
|   button.icon-button.pressed:active svg {
 | |
|     fill: var(--action-button-fill-color-pressed-active);
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import identity from 'lodash/identity'
 | |
| 
 | |
|   export default {
 | |
|     computed: {
 | |
|       computedClass: (pressable, pressed, big, className) => {
 | |
|         return [
 | |
|           'icon-button',
 | |
|           !pressable && 'not-pressable',
 | |
|           pressed && 'pressed',
 | |
|           big && 'big-icon',
 | |
|           className
 | |
|         ].filter(identity).join(' ')
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| </script> |