Update spectrum tabs, add tooltip to icon, add size option to tabs
This commit is contained in:
parent
e91ca2af22
commit
aad7b45441
|
@ -70,7 +70,7 @@
|
||||||
"@spectrum-css/stepper": "^3.0.3",
|
"@spectrum-css/stepper": "^3.0.3",
|
||||||
"@spectrum-css/switch": "^1.0.2",
|
"@spectrum-css/switch": "^1.0.2",
|
||||||
"@spectrum-css/table": "^3.0.1",
|
"@spectrum-css/table": "^3.0.1",
|
||||||
"@spectrum-css/tabs": "^3.0.1",
|
"@spectrum-css/tabs": "^3.2.12",
|
||||||
"@spectrum-css/tags": "^3.0.2",
|
"@spectrum-css/tags": "^3.0.2",
|
||||||
"@spectrum-css/textfield": "^3.0.1",
|
"@spectrum-css/textfield": "^3.0.1",
|
||||||
"@spectrum-css/toast": "^3.0.1",
|
"@spectrum-css/toast": "^3.0.1",
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import Tooltip from "../Tooltip/Tooltip.svelte"
|
||||||
|
import { fade } from "svelte/transition"
|
||||||
|
|
||||||
export let direction = "n"
|
export let direction = "n"
|
||||||
export let name = "Add"
|
export let name = "Add"
|
||||||
export let hidden = false
|
export let hidden = false
|
||||||
|
@ -10,30 +13,50 @@
|
||||||
export let hoverable = false
|
export let hoverable = false
|
||||||
export let disabled = false
|
export let disabled = false
|
||||||
export let color
|
export let color
|
||||||
|
export let tooltip
|
||||||
|
|
||||||
$: rotation = getRotation(direction)
|
$: rotation = getRotation(direction)
|
||||||
|
|
||||||
|
let showTooltip = false
|
||||||
|
|
||||||
const getRotation = direction => {
|
const getRotation = direction => {
|
||||||
return directions.indexOf(direction) * 45
|
return directions.indexOf(direction) * 45
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svg
|
<div
|
||||||
on:click
|
on:mouseover={() => (showTooltip = true)}
|
||||||
class:hoverable
|
on:focus={() => (showTooltip = true)}
|
||||||
class:disabled
|
on:mouseleave={() => (showTooltip = false)}
|
||||||
class="spectrum-Icon spectrum-Icon--size{size}"
|
|
||||||
focusable="false"
|
|
||||||
aria-hidden={hidden}
|
|
||||||
aria-label={name}
|
|
||||||
style={`transform: rotate(${rotation}deg); ${
|
|
||||||
color ? `color: ${color};` : ""
|
|
||||||
}`}
|
|
||||||
>
|
>
|
||||||
<use xlink:href="#spectrum-icon-18-{name}" />
|
<svg
|
||||||
</svg>
|
on:click
|
||||||
|
class:hoverable
|
||||||
|
class:disabled
|
||||||
|
class="spectrum-Icon spectrum-Icon--size{size}"
|
||||||
|
focusable="false"
|
||||||
|
aria-hidden={hidden}
|
||||||
|
aria-label={name}
|
||||||
|
style={`transform: rotate(${rotation}deg); ${
|
||||||
|
color ? `color: ${color};` : ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<use style="pointer-events: none;" xlink:href="#spectrum-icon-18-{name}" />
|
||||||
|
</svg>
|
||||||
|
{#if tooltip && showTooltip}
|
||||||
|
<div class="tooltip" in:fade={{ duration: 130, delay: 250 }}>
|
||||||
|
<Tooltip textWrapping={true} direction={"bottom"} text={tooltip} />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
div {
|
||||||
|
position: relative;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
svg.hoverable {
|
svg.hoverable {
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
transition: color var(--spectrum-global-animation-duration-100, 130ms);
|
transition: color var(--spectrum-global-animation-duration-100, 130ms);
|
||||||
|
@ -47,4 +70,13 @@
|
||||||
color: var(--spectrum-global-color-gray-500) !important;
|
color: var(--spectrum-global-color-gray-500) !important;
|
||||||
pointer-events: none !important;
|
pointer-events: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tooltip {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
left: 50%;
|
||||||
|
top: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -63,4 +63,10 @@
|
||||||
.emphasized {
|
.emphasized {
|
||||||
color: var(--spectrum-global-color-blue-600);
|
color: var(--spectrum-global-color-blue-600);
|
||||||
}
|
}
|
||||||
|
.spectrum-Tabs-item {
|
||||||
|
color: var(--spectrum-global-color-gray-600);
|
||||||
|
}
|
||||||
|
.spectrum-Tabs-item.is-selected {
|
||||||
|
color: var(--spectrum-global-color-gray-900);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -10,8 +10,7 @@
|
||||||
export let noHorizPadding = false
|
export let noHorizPadding = false
|
||||||
export let quiet = false
|
export let quiet = false
|
||||||
export let emphasized = false
|
export let emphasized = false
|
||||||
// overlay content from the tab bar onto tabs e.g. for a dropdown
|
export let size = "M"
|
||||||
export let onTop = false
|
|
||||||
|
|
||||||
let thisSelected = undefined
|
let thisSelected = undefined
|
||||||
|
|
||||||
|
@ -74,20 +73,18 @@
|
||||||
|
|
||||||
<div
|
<div
|
||||||
bind:this={container}
|
bind:this={container}
|
||||||
class:quiet
|
class:spectrum-Tabs--quiet={quiet}
|
||||||
class:noHorizPadding
|
class:noHorizPadding
|
||||||
class="selected-border spectrum-Tabs {quiet &&
|
class:spectrum-Tabs--vertical={vertical}
|
||||||
'spectrum-Tabs--quiet'} spectrum-Tabs--{vertical
|
class:spectrum-Tabs--horizontal={!vertical}
|
||||||
? 'vertical'
|
class="spectrum-Tabs spectrum-Tabs--size{size}"
|
||||||
: 'horizontal'}"
|
|
||||||
class:onTop
|
|
||||||
>
|
>
|
||||||
<slot />
|
<slot />
|
||||||
{#if $tab.info}
|
{#if $tab.info}
|
||||||
<div
|
<div
|
||||||
class="spectrum-Tabs-selectionIndicator indicator-transition"
|
class="spectrum-Tabs-selectionIndicator"
|
||||||
style="{emphasized &&
|
class:emphasized
|
||||||
'background-color: var(--spectrum-global-color-blue-400)'}; width: {width}; height: {height}; left: {left}; top: {top};"
|
style="width: {width}; height: {height}; left: {left}; top: {top};"
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
@ -98,26 +95,29 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.quiet {
|
.spectrum-Tabs--quiet {
|
||||||
border-bottom: none !important;
|
border-bottom: none !important;
|
||||||
}
|
}
|
||||||
.onTop {
|
.onTop {
|
||||||
z-index: 20;
|
|
||||||
}
|
}
|
||||||
.spectrum-Tabs {
|
.spectrum-Tabs {
|
||||||
padding-left: var(--spacing-xl);
|
padding-left: var(--spacing-xl);
|
||||||
padding-right: var(--spacing-xl);
|
padding-right: var(--spacing-xl);
|
||||||
position: relative;
|
position: relative;
|
||||||
border-bottom: var(--border-light);
|
z-index: 20;
|
||||||
|
border-bottom-color: var(--spectrum-global-color-gray-200);
|
||||||
}
|
}
|
||||||
.spectrum-Tabs-content {
|
.spectrum-Tabs-content {
|
||||||
margin-top: var(--spectrum-global-dimension-static-size-150);
|
margin-top: var(--spectrum-global-dimension-static-size-150);
|
||||||
}
|
}
|
||||||
.indicator-transition {
|
.spectrum-Tabs-selectionIndicator {
|
||||||
transition: all 200ms;
|
transition: all 200ms;
|
||||||
|
background-color: var(--spectrum-global-color-gray-900);
|
||||||
|
}
|
||||||
|
.spectrum-Tabs-selectionIndicator.emphasized {
|
||||||
|
background-color: var(--spectrum-global-color-blue-400);
|
||||||
}
|
}
|
||||||
.spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator {
|
.spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator {
|
||||||
bottom: 0 !important;
|
|
||||||
}
|
}
|
||||||
.noHorizPadding {
|
.noHorizPadding {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<!-- Showing / Hiding a text wrapped tooltip should be handled outside the component -->
|
<!-- Showing / Hiding a text wrapped tooltip should be handled outside the component -->
|
||||||
{#if textWrapping}
|
{#if textWrapping}
|
||||||
<span class="spectrum-Tooltip spectrum-Tooltip--{direction} is-open">
|
<span class="spectrum-Tooltip spectrum-Tooltip--{direction} is-open tooltip">
|
||||||
<span class="spectrum-Tooltip-label">{text}</span>
|
<span class="spectrum-Tooltip-label">{text}</span>
|
||||||
<span class="spectrum-Tooltip-tip" />
|
<span class="spectrum-Tooltip-tip" />
|
||||||
</span>
|
</span>
|
||||||
|
@ -22,3 +22,9 @@
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.tooltip {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue