Skip to content

Commit 51d4a1c

Browse files
committed
fix: issue with bad package.json of MDC segmented button
Fixes #500
1 parent 9193e7d commit 51d4a1c

File tree

2 files changed

+60
-48
lines changed

2 files changed

+60
-48
lines changed

packages/segmented-button/src/Segment.svelte

+29-23
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@
3535
>
3636

3737
<script lang="ts">
38-
import { MDCSegmentedButtonSegmentFoundation } from '@material/segmented-button';
38+
import type { MDCSegmentedButtonSegmentFoundation as MDCSegmentedButtonSegmentFoundationType } from '@material/segmented-button';
39+
// TODO: Remove this when MDC's segmented button is fixed.
40+
// @ts-ignore
41+
import { MDCSegmentedButtonSegmentFoundation } from '@material/segmented-button/dist/mdc.segmentedButton.js';
3942
import { onMount, getContext } from 'svelte';
4043
import { get_current_component } from 'svelte/internal';
4144
import type { SmuiAttrs } from '@smui/common';
@@ -117,28 +120,31 @@
117120
}
118121
119122
onMount(() => {
120-
instance = new MDCSegmentedButtonSegmentFoundation({
121-
isSingleSelect: () => {
122-
return $singleSelect;
123-
},
124-
getAttr,
125-
setAttr: addAttr,
126-
addClass,
127-
removeClass,
128-
hasClass,
129-
notifySelectedChange: (value) => {
130-
selected = value;
131-
132-
dispatch(getElement(), 'selected', {
133-
index: $index,
134-
selected,
135-
segmentId,
136-
});
137-
},
138-
getRootBoundingClientRect: () => {
139-
return getElement().getBoundingClientRect();
140-
},
141-
});
123+
instance =
124+
new (MDCSegmentedButtonSegmentFoundation as typeof MDCSegmentedButtonSegmentFoundationType)(
125+
{
126+
isSingleSelect: () => {
127+
return $singleSelect;
128+
},
129+
getAttr,
130+
setAttr: addAttr,
131+
addClass,
132+
removeClass,
133+
hasClass,
134+
notifySelectedChange: (value) => {
135+
selected = value;
136+
137+
dispatch(getElement(), 'selected', {
138+
index: $index,
139+
selected,
140+
segmentId,
141+
});
142+
},
143+
getRootBoundingClientRect: () => {
144+
return getElement().getBoundingClientRect();
145+
},
146+
}
147+
);
142148
143149
const accessor: SMUISegmentedButtonSegmentAccessor = {
144150
segmentId,

packages/segmented-button/src/SegmentedButton.svelte

+31-25
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727

2828
<script lang="ts">
2929
import type { SegmentDetail } from '@material/segmented-button';
30-
import { MDCSegmentedButtonFoundation } from '@material/segmented-button';
30+
import type { MDCSegmentedButtonFoundation as MDCSegmentedButtonFoundationType } from '@material/segmented-button';
31+
// TODO: Remove this when MDC's segmented button is fixed.
32+
// @ts-ignore
33+
import { MDCSegmentedButtonFoundation } from '@material/segmented-button/dist/mdc.segmentedButton.js';
3134
import { onMount, setContext } from 'svelte';
3235
import { writable } from 'svelte/store';
3336
import { get_current_component } from 'svelte/internal';
@@ -125,31 +128,34 @@
125128
}
126129
127130
onMount(() => {
128-
instance = new MDCSegmentedButtonFoundation({
129-
hasClass: (className) => {
130-
return getElement().classList.contains(className);
131-
},
132-
getSegments: () => {
133-
return segments.map((segment, index) => ({
134-
index,
135-
selected: singleSelect
136-
? selected === segment
137-
: selected.indexOf(segment) !== -1,
138-
// segmentId: segment, // Not necessarily a string.
139-
}));
140-
},
141-
selectSegment,
142-
unselectSegment,
143-
notifySelectedChange: (detail) => {
144-
if (detail.selected) {
145-
selectSegment(detail.index);
146-
} else {
147-
unselectSegment(detail.index);
148-
}
131+
instance =
132+
new (MDCSegmentedButtonFoundation as typeof MDCSegmentedButtonFoundationType)(
133+
{
134+
hasClass: (className) => {
135+
return getElement().classList.contains(className);
136+
},
137+
getSegments: () => {
138+
return segments.map((segment, index) => ({
139+
index,
140+
selected: singleSelect
141+
? selected === segment
142+
: selected.indexOf(segment) !== -1,
143+
// segmentId: segment, // Not necessarily a string.
144+
}));
145+
},
146+
selectSegment,
147+
unselectSegment,
148+
notifySelectedChange: (detail) => {
149+
if (detail.selected) {
150+
selectSegment(detail.index);
151+
} else {
152+
unselectSegment(detail.index);
153+
}
149154
150-
dispatch(getElement(), 'change', detail);
151-
},
152-
});
155+
dispatch(getElement(), 'change', detail);
156+
},
157+
}
158+
);
153159
154160
instance.init();
155161

0 commit comments

Comments
 (0)