Merge pull request #169 from Conor-Mack/feature/slider
Complete Material Slider Component
This commit is contained in:
commit
629e60b795
|
@ -24,6 +24,7 @@
|
||||||
"@material/menu": "4.0.0",
|
"@material/menu": "4.0.0",
|
||||||
"@material/radio": "^4.0.0",
|
"@material/radio": "^4.0.0",
|
||||||
"@material/select": "4.0.0",
|
"@material/select": "4.0.0",
|
||||||
|
"@material/slider": "4.0.0",
|
||||||
"@material/switch": "4.0.0",
|
"@material/switch": "4.0.0",
|
||||||
"@material/textfield": "^4.0.0",
|
"@material/textfield": "^4.0.0",
|
||||||
"@nx-js/compiler-util": "^2.0.0",
|
"@nx-js/compiler-util": "^2.0.0",
|
||||||
|
|
|
@ -0,0 +1,119 @@
|
||||||
|
<script>
|
||||||
|
import { MDCSlider } from "@material/slider"
|
||||||
|
import { onMount } from "svelte"
|
||||||
|
import ClassBuilder from "../ClassBuilder.js"
|
||||||
|
|
||||||
|
const cb = new ClassBuilder("slider", ["continuous"])
|
||||||
|
|
||||||
|
let slider
|
||||||
|
let instance
|
||||||
|
|
||||||
|
export let variant = "continuous" //or discrete
|
||||||
|
export let showTicks = false
|
||||||
|
export let min = "0"
|
||||||
|
export let max = "100"
|
||||||
|
export let value = "1"
|
||||||
|
export let step = "1"
|
||||||
|
export let label = ""
|
||||||
|
export let disabled = false
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
let s = MDCSlider.attachTo(slider)
|
||||||
|
return () => instance.destroy()
|
||||||
|
})
|
||||||
|
|
||||||
|
$: {
|
||||||
|
if (instance) {
|
||||||
|
instance.value = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$: instance && console.log("instance dot value: ", instance.value)
|
||||||
|
|
||||||
|
$: isDiscrete = variant === "discrete"
|
||||||
|
$: displayMarkers = isDiscrete && showTicks
|
||||||
|
|
||||||
|
$: modifiers = { variant, displayMarkers }
|
||||||
|
$: props = { modifiers }
|
||||||
|
$: sliderCls = cb.build({ props })
|
||||||
|
|
||||||
|
$: console.log("VALUE", value)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div
|
||||||
|
bind:this={slider}
|
||||||
|
class="mdc-slider mdc-slider--discrete"
|
||||||
|
tabindex="0"
|
||||||
|
role="slider"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100"
|
||||||
|
aria-valuenow="0"
|
||||||
|
aria-label="Select Value"
|
||||||
|
on:MDCSlider:change={e => console.log('SLIDER VAL', e.detail.value)}>
|
||||||
|
<div class="mdc-slider__track-container">
|
||||||
|
<div class="mdc-slider__track" />
|
||||||
|
</div>
|
||||||
|
<div class="mdc-slider__thumb-container">
|
||||||
|
<div class="mdc-slider__pin">
|
||||||
|
<span class="mdc-slider__pin-value-marker" />
|
||||||
|
</div>
|
||||||
|
<svg class="mdc-slider__thumb" width="21" height="21">
|
||||||
|
<circle cx="10.5" cy="10.5" r="7.875" />
|
||||||
|
</svg>
|
||||||
|
<div class="mdc-slider__focus-ring" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<div
|
||||||
|
bind:this={slider}
|
||||||
|
class={sliderCls}
|
||||||
|
tabindex="0"
|
||||||
|
role="slider"
|
||||||
|
aria-valuemin={min}
|
||||||
|
aria-valuemax={max}
|
||||||
|
aria-valuenow={value}
|
||||||
|
data-step={step}
|
||||||
|
aria-label={label}
|
||||||
|
on:MDCSlider:input={e => console.log('INPUT', e.detail.value)}
|
||||||
|
on:MDCSlider:change={e => console.log('CHANGE', e.detail.value)}
|
||||||
|
aria-disabled={disabled}>
|
||||||
|
<div class="mdc-slider__track-container">
|
||||||
|
{#if displayMarkers}
|
||||||
|
<div class="mdc-slider__track-container">
|
||||||
|
<div class="mdc-slider__track" />
|
||||||
|
<div class="mdc-slider__track-marker-container" />
|
||||||
|
</div>
|
||||||
|
{:else}
|
||||||
|
<div class="mdc-slider__track" />
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<div class="mdc-slider__thumb-container">
|
||||||
|
{#if isDiscrete}
|
||||||
|
<div class="mdc-slider__pin">
|
||||||
|
<span class="mdc-slider__pin-value-marker" />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
<svg class="mdc-slider__thumb" width="21" height="21">
|
||||||
|
<circle cx="10.5" cy="10.5" r="7.875" />
|
||||||
|
</svg>
|
||||||
|
<div class="mdc-slider__focus-ring" />
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
|
<!-- <div class="mdc-slider mdc-slider--discrete" tabindex="0" role="slider"
|
||||||
|
aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"
|
||||||
|
aria-label="Select Value">
|
||||||
|
<div class="mdc-slider__track-container">
|
||||||
|
<div class="mdc-slider__track"></div>
|
||||||
|
</div>
|
||||||
|
<div class="mdc-slider__thumb-container">
|
||||||
|
<div class="mdc-slider__pin">
|
||||||
|
<span class="mdc-slider__pin-value-marker"></span>
|
||||||
|
</div>
|
||||||
|
<svg class="mdc-slider__thumb" width="21" height="21">
|
||||||
|
<circle cx="10.5" cy="10.5" r="7.875"></circle>
|
||||||
|
</svg>
|
||||||
|
<div class="mdc-slider__focus-ring"></div>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
|
@ -0,0 +1 @@
|
||||||
|
@import "@material/slider/mdc-slider.scss"
|
|
@ -0,0 +1,2 @@
|
||||||
|
import "./_style.scss"
|
||||||
|
export {default as Slider} from "./Slider.svelte"
|
|
@ -22,6 +22,7 @@
|
||||||
Card,
|
Card,
|
||||||
Dialog,
|
Dialog,
|
||||||
Switch,
|
Switch,
|
||||||
|
Slider,
|
||||||
} = props
|
} = props
|
||||||
|
|
||||||
let currentComponent
|
let currentComponent
|
||||||
|
@ -41,6 +42,7 @@
|
||||||
DatePicker,
|
DatePicker,
|
||||||
IconButton,
|
IconButton,
|
||||||
Switch,
|
Switch,
|
||||||
|
Slider,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,5 +313,9 @@ export const props = {
|
||||||
checked: true,
|
checked: true,
|
||||||
onChange: () => console.log("Switch Changed"),
|
onChange: () => console.log("Switch Changed"),
|
||||||
_children: [],
|
_children: [],
|
||||||
}
|
},
|
||||||
|
Slider: {
|
||||||
|
_component: "@budibase/materialdesign-components/Slider",
|
||||||
|
_children: [],
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,3 +24,4 @@ export { IconButton } from "./IconButton"
|
||||||
export { Card, CardHeader, CardImage, CardBody, CardFooter } from "./Card"
|
export { Card, CardHeader, CardImage, CardBody, CardFooter } from "./Card"
|
||||||
export { Dialog, DialogHeader, DialogContent, DialogActions } from "./Dialog"
|
export { Dialog, DialogHeader, DialogContent, DialogActions } from "./Dialog"
|
||||||
export { Switch } from "./Switch"
|
export { Switch } from "./Switch"
|
||||||
|
export { Slider } from "./Slider"
|
||||||
|
|
Loading…
Reference in New Issue