Skip to content

Commit 601d4fd

Browse files
committed
fix: working on fixing dialog. wip
1 parent 98af5de commit 601d4fd

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

packages/dialog/Dialog.svelte

+10-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
class="mdc-dialog {className}"
66
role="alertdialog"
77
aria-modal="true"
8+
on:MDCDialog:opened={handleDialogOpened}
89
{...exclude($$props, ['use', 'class'])}
910
>
1011
<div class="mdc-dialog__container">
@@ -17,7 +18,7 @@
1718

1819
<script>
1920
import {MDCDialog} from '@material/dialog';
20-
import {onMount, onDestroy} from 'svelte';
21+
import {onMount, onDestroy, setContext} from 'svelte';
2122
import {current_component} from 'svelte/internal';
2223
import {forwardEventsBuilder} from '@smui/common/forwardEvents.js';
2324
import {exclude} from '@smui/common/exclude.js';
@@ -34,6 +35,10 @@
3435
3536
let element;
3637
let dialog;
38+
let layoutListeners = [];
39+
let addLayoutListener = listener => layoutListeners.push(listener);
40+
41+
setContext('SMUI:addLayoutListener', addLayoutListener);
3742
3843
$: dialog && (dialog.escapeKeyAction = escapeKeyAction);
3944
$: dialog && (dialog.scrimClickAction = scrimClickAction);
@@ -47,6 +52,10 @@
4752
dialog && dialog.destroy()
4853
});
4954
55+
function handleDialogOpened() {
56+
layoutListeners.forEach(listener => listener());
57+
}
58+
5059
export function open(...args) {
5160
return dialog.open(...args);
5261
}

packages/slider/Slider.svelte

+5
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
let slider;
6262
let formField = getContext('SMUI:form-field');
6363
let inputProps = getContext('SMUI:generic:input:props') || {};
64+
let addLayoutListener = getContext('SMUI:addLayoutListener');
6465
6566
$: if (slider && slider.disabled !== disabled) {
6667
slider.disabled = disabled;
@@ -82,6 +83,10 @@
8283
slider.value = value;
8384
}
8485
86+
if (addLayoutListener) {
87+
addLayoutListener(layout);
88+
}
89+
8590
onMount(() => {
8691
slider = new MDCSlider(element);
8792

site/src/routes/demo/dialog.svelte

+41
Original file line numberDiff line numberDiff line change
@@ -110,23 +110,64 @@
110110
</div>
111111

112112
<pre class="status">Selected: {selected}</pre>
113+
114+
<div>
115+
A dialog with sliders: <br />
116+
117+
<Dialog bind:this={sliderDialog} aria-labelledby="slider-title" aria-describedby="slider-content">
118+
<Title id="slider-title">Volumes</Title>
119+
<Content id="slider-content">
120+
<div>
121+
<FormField align="end" style="display: flex; flex-direction: column;">
122+
<Slider bind:value={volumeMedia} use={[InitialFocus]} />
123+
<span slot="label">Media Volume</span>
124+
</FormField>
125+
</div>
126+
<div>
127+
<FormField align="end" style="display: flex; flex-direction: column;">
128+
<Slider bind:value={volumeRingtone} />
129+
<span slot="label">Ringtone Volume</span>
130+
</FormField>
131+
</div>
132+
<div>
133+
<FormField align="end" style="display: flex; flex-direction: column;">
134+
<Slider bind:value={volumeAlarm} />
135+
<span slot="label">Alarm Volume</span>
136+
</FormField>
137+
</div>
138+
</Content>
139+
<Actions>
140+
<Button action="accept">
141+
<Label>Done</Label>
142+
</Button>
143+
</Actions>
144+
</Dialog>
145+
146+
<Button on:click={() => sliderDialog.open()}><Label>Open Dialog</Label></Button>
147+
</div>
113148
</section>
114149

115150
<script>
116151
import Dialog, {Title, Content, Actions, InitialFocus} from '@smui/dialog';
117152
import Button, {Label} from '@smui/button';
118153
import List, {Item, Graphic, Text} from '@smui/list';
119154
import Radio from '@smui/radio';
155+
import Slider from '@smui/slider';
156+
import FormField from '@smui/form-field';
120157
121158
let simpleDialog;
122159
let eventDialog;
123160
let listDialog;
124161
let listSelectionDialog;
162+
let sliderDialog;
125163
let clicked = 'Nothing yet.';
126164
let response = 'Nothing yet.';
127165
let clickedList = 'Nothing yet.';
128166
let selection = 'Radishes';
129167
let selected = 'Nothing yet.';
168+
let volumeMedia = 100;
169+
let volumeRingtone = 80;
170+
let volumeAlarm = 80;
130171
131172
function closeHandler(e) {
132173
switch (e.detail.action) {

0 commit comments

Comments
 (0)