Skip to content

Commit

Permalink
feat: forward all events, and only forward when bound, and allow modi…
Browse files Browse the repository at this point in the history
…fiers
  • Loading branch information
hperrin committed Apr 15, 2021
1 parent d119304 commit 50a0db3
Show file tree
Hide file tree
Showing 70 changed files with 261 additions and 478 deletions.
15 changes: 13 additions & 2 deletions README.md
Expand Up @@ -84,12 +84,23 @@ Check out the [Webpack template](https://github.com/hperrin/smui-example-webpack
</script>
```

# Features

Here are some features you should know about:

- You can add arbitrary properties to all of the components and many of the elements within them.
- You can add arbitrary attributes to all of the components and many of the elements within them.
- You can add actions to the components with `use={[Action1, [Action2, action2Props], Action3]}`.
- You can add props to lower components and elements with "$" props, like `input$maxlength="15"`.
- All [standard UI and transition events](packages/common/forwardEventsBuilder.js#L4) are forwarded on components, input events ("input" and "change") are forwarded on input components, and all MDC events are forwarded.
- **All** events are forwarded. This includes DOM events, MDC events, and custom events.
- You can add event modifiers with the `on:click:preventDefault:capture={handler}` syntax.
- If you use Svelte's native `on:click|preventDefault={handler}` syntax, it will not compile. You have to use ":" instead of "|".
- Supported modifiers are:
- preventDefault
- stopPropagation
- passive
- nonpassive
- capture
- once
- Labels and icons are named exports in the components that use them, or you can use the 'Label' and 'Icon' exports from '@smui/common'. (Except for chips labels and icons, textfield icons, and select icons, because they are special snowflakes.)
- SMUI [supports RTL languages](https://svelte.dev/repl/c2ff2d5dd5404eccb901ba04ef0161be?version=3.37.0).

Expand Down
7 changes: 1 addition & 6 deletions packages/banner/Banner.svelte
Expand Up @@ -80,12 +80,7 @@
} from '@smui/common/internal.js';
import Fixed from './Fixed.svelte';
const forwardEvents = forwardEventsBuilder(get_current_component(), [
'MDCBanner:closed',
'MDCBanner:closing',
'MDCBanner:opened',
'MDCBanner:opening',
]);
const forwardEvents = forwardEventsBuilder(get_current_component());
export let use = [];
let className = '';
Expand Down
5 changes: 1 addition & 4 deletions packages/button/Button.svelte
Expand Up @@ -61,10 +61,7 @@
import A from '@smui/common/A.svelte';
import Button from '@smui/common/Button.svelte';
const forwardEvents = forwardEventsBuilder(get_current_component(), [
'SMUI:banner:button:primaryActionClick',
'SMUI:banner:button:secondaryActionClick',
]);
const forwardEvents = forwardEventsBuilder(get_current_component());
export let use = [];
let className = '';
Expand Down
7 changes: 1 addition & 6 deletions packages/checkbox/Checkbox.svelte
Expand Up @@ -76,12 +76,7 @@
} from '@smui/common/internal.js';
import Ripple from '@smui/ripple/bare.js';
const forwardEvents = forwardEventsBuilder(get_current_component(), [
'SMUI:generic:input:mount',
'SMUI:generic:input:unmount',
'SMUI:checkbox:mount',
'SMUI:checkbox:unmount',
]);
const forwardEvents = forwardEventsBuilder(get_current_component());
let uninitializedValue = () => {};
export let use = [];
Expand Down
22 changes: 1 addition & 21 deletions packages/chips/Chip.svelte
Expand Up @@ -15,14 +15,6 @@
forwardEvents,
...use,
]}
forwardEvents={[
'MDCChipTrailingAction:interaction',
'MDCChipTrailingAction:navigation',
'SMUI:chip:primary-action:mount',
'SMUI:chip:primary-action:unmount',
'SMUI:chip:trailing-action:mount',
...forwardedEvents,
]}
class={classMap({
[className]: true,
'mdc-chip': true,
Expand Down Expand Up @@ -74,19 +66,7 @@
import Ripple from '@smui/ripple/bare.js';
import Div from '@smui/common/Div.svelte';
const forwardedEvents = [
'MDCChip:interaction',
'MDCChip:selection',
'MDCChip:removal',
'MDCChip:trailingIconInteraction',
'MDCChip:navigation',
'SMUI:chip:mount',
'SMUI:chip:unmount',
];
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardedEvents
);
const forwardEvents = forwardEventsBuilder(get_current_component());
export let use = [];
let className = '';
Expand Down
5 changes: 1 addition & 4 deletions packages/chips/Text.svelte
Expand Up @@ -32,10 +32,7 @@
} from '@smui/common/internal.js';
import Checkmark from './Checkmark.svelte';
const forwardEvents = forwardEventsBuilder(get_current_component(), [
'SMUI:chip:primary-action:mount',
'SMUI:chip:primary-action:unmount',
]);
const forwardEvents = forwardEventsBuilder(get_current_component());
export let use = [];
let className = '';
Expand Down
7 changes: 1 addition & 6 deletions packages/chips/TrailingAction.svelte
Expand Up @@ -53,12 +53,7 @@
} from '@smui/common/internal.js';
import Ripple from '@smui/ripple/bare.js';
const forwardEvents = forwardEventsBuilder(get_current_component(), [
'MDCChipTrailingAction:interaction',
'MDCChipTrailingAction:navigation',
'SMUI:chip:trailing-action:mount',
'SMUI:chip:trailing-action:unmount',
]);
const forwardEvents = forwardEventsBuilder(get_current_component());
export let use = [];
let className = '';
Expand Down
7 changes: 1 addition & 6 deletions packages/common/A.svelte
Expand Up @@ -12,13 +12,8 @@
export let href = 'javascript:void(0);';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Aside.svelte
Expand Up @@ -12,13 +12,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Button.svelte
Expand Up @@ -10,13 +10,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
8 changes: 1 addition & 7 deletions packages/common/ClassAdder.svelte
Expand Up @@ -21,7 +21,6 @@
classMap: {},
contexts: {},
props: {},
forwardEvents: [],
};
</script>

Expand All @@ -34,8 +33,6 @@
export let use = [];
let className = '';
export { className as class };
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
let element;
const smuiClass = internals.class;
Expand All @@ -58,10 +55,7 @@
}
});
const forwardEvents = forwardEventsBuilder(get_current_component(), [
...internals.forwardEvents,
...forwardEventsAdditional,
]);
const forwardEvents = forwardEventsBuilder(get_current_component());
for (let context in contexts) {
if (contexts.hasOwnProperty(context)) {
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Div.svelte
Expand Up @@ -12,13 +12,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Footer.svelte
Expand Up @@ -12,13 +12,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/H1.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/H2.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/H3.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/H4.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/H5.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/H6.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Header.svelte
Expand Up @@ -12,13 +12,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Hr.svelte
Expand Up @@ -10,13 +10,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/I.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Img.svelte
Expand Up @@ -12,13 +12,8 @@
export let alt = '';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down
7 changes: 1 addition & 6 deletions packages/common/Li.svelte
Expand Up @@ -7,13 +7,8 @@
import { forwardEventsBuilder, useActions } from './internal.js';
export let use = [];
let forwardEventsAdditional = [];
export { forwardEventsAdditional as forwardEvents };
const forwardEvents = forwardEventsBuilder(
get_current_component(),
forwardEventsAdditional
);
const forwardEvents = forwardEventsBuilder(get_current_component());
let element = null;
Expand Down

0 comments on commit 50a0db3

Please sign in to comment.