mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-18 11:36:36 +00:00
feat(tooltip): add TooltipFooter component
This commit is contained in:
parent
ca25720226
commit
3718f3e867
9 changed files with 98 additions and 8 deletions
|
@ -1,6 +1,6 @@
|
||||||
# Component Index
|
# Component Index
|
||||||
|
|
||||||
> 166 components exported from carbon-components-svelte@0.31.1.
|
> 167 components exported from carbon-components-svelte@0.31.1.
|
||||||
|
|
||||||
## Components
|
## Components
|
||||||
|
|
||||||
|
@ -167,6 +167,7 @@
|
||||||
- [`ToolbarSearch`](#toolbarsearch)
|
- [`ToolbarSearch`](#toolbarsearch)
|
||||||
- [`Tooltip`](#tooltip)
|
- [`Tooltip`](#tooltip)
|
||||||
- [`TooltipDefinition`](#tooltipdefinition)
|
- [`TooltipDefinition`](#tooltipdefinition)
|
||||||
|
- [`TooltipFooter`](#tooltipfooter)
|
||||||
- [`TooltipIcon`](#tooltipicon)
|
- [`TooltipIcon`](#tooltipicon)
|
||||||
- [`Truncate`](#truncate)
|
- [`Truncate`](#truncate)
|
||||||
- [`UnorderedList`](#unorderedlist)
|
- [`UnorderedList`](#unorderedlist)
|
||||||
|
@ -4470,6 +4471,24 @@ None.
|
||||||
| mouseleave | forwarded | -- |
|
| mouseleave | forwarded | -- |
|
||||||
| focus | forwarded | -- |
|
| focus | forwarded | -- |
|
||||||
|
|
||||||
|
## `TooltipFooter`
|
||||||
|
|
||||||
|
### Props
|
||||||
|
|
||||||
|
| Prop name | Kind | Reactive | Type | Default value | Description |
|
||||||
|
| :------------------- | :--------------- | :------- | :------------------ | ---------------------------------------------- | --------------------------------------------------------------------------- |
|
||||||
|
| selectorPrimaryFocus | <code>let</code> | No | <code>string</code> | <code>"a[href], button:not([disabled])"</code> | Specify a selector to be focused inside the footer when opening the tooltip |
|
||||||
|
|
||||||
|
### Slots
|
||||||
|
|
||||||
|
| Slot name | Default | Props | Fallback |
|
||||||
|
| :-------- | :------ | :---- | :------- |
|
||||||
|
| -- | Yes | -- | -- |
|
||||||
|
|
||||||
|
### Events
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
## `TooltipIcon`
|
## `TooltipIcon`
|
||||||
|
|
||||||
### Props
|
### Props
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"total": 166,
|
"total": 167,
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
"moduleName": "Accordion",
|
"moduleName": "Accordion",
|
||||||
|
@ -11202,6 +11202,25 @@
|
||||||
"typedefs": [],
|
"typedefs": [],
|
||||||
"rest_props": { "type": "Element", "name": "div" }
|
"rest_props": { "type": "Element", "name": "div" }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "TooltipFooter",
|
||||||
|
"filePath": "src/Tooltip/TooltipFooter.svelte",
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"name": "selectorPrimaryFocus",
|
||||||
|
"kind": "let",
|
||||||
|
"description": "Specify a selector to be focused inside the footer when opening the tooltip",
|
||||||
|
"type": "string",
|
||||||
|
"value": "\"a[href], button:not([disabled])\"",
|
||||||
|
"isFunction": false,
|
||||||
|
"constant": false,
|
||||||
|
"reactive": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"slots": [{ "name": "__default__", "default": true, "slot_props": "{}" }],
|
||||||
|
"events": [],
|
||||||
|
"typedefs": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "TooltipIcon",
|
"moduleName": "TooltipIcon",
|
||||||
"filePath": "src/TooltipIcon/TooltipIcon.svelte",
|
"filePath": "src/TooltipIcon/TooltipIcon.svelte",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script>
|
<script>
|
||||||
import { Tooltip, Link, Button } from "carbon-components-svelte";
|
import { Tooltip, TooltipFooter, Link, Button } from "carbon-components-svelte";
|
||||||
import Catalog16 from "carbon-icons-svelte/lib/Catalog16";
|
import Catalog16 from "carbon-icons-svelte/lib/Catalog16";
|
||||||
import Preview from "../../components/Preview.svelte";
|
import Preview from "../../components/Preview.svelte";
|
||||||
</script>
|
</script>
|
||||||
|
@ -45,10 +45,10 @@ By default, the tooltip is triggered by an information icon.
|
||||||
<p>
|
<p>
|
||||||
Resources are provisioned based on your account's organization.
|
Resources are provisioned based on your account's organization.
|
||||||
</p>
|
</p>
|
||||||
<div class="bx--tooltip__footer">
|
<TooltipFooter selectorPrimaryFocus="#d">
|
||||||
<Link href="/">Learn more</Link>
|
<Link href="/">Learn more</Link>
|
||||||
<Button size="small">Manage</Button>
|
<Button id="d" size="small">Manage</Button>
|
||||||
</div>
|
</TooltipFooter>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
### Custom icon (component)
|
### Custom icon (component)
|
||||||
|
|
|
@ -63,10 +63,14 @@
|
||||||
/** Obtain a reference to the icon HTML element */
|
/** Obtain a reference to the icon HTML element */
|
||||||
export let refIcon = null;
|
export let refIcon = null;
|
||||||
|
|
||||||
import { createEventDispatcher, afterUpdate } from "svelte";
|
import { createEventDispatcher, afterUpdate, setContext } from "svelte";
|
||||||
|
import { writable } from "svelte/store";
|
||||||
import Information16 from "carbon-icons-svelte/lib/Information16/Information16.svelte";
|
import Information16 from "carbon-icons-svelte/lib/Information16/Information16.svelte";
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
const tooltipOpen = writable(open);
|
||||||
|
|
||||||
|
setContext("Tooltip", { tooltipOpen });
|
||||||
|
|
||||||
function onKeydown(e) {
|
function onKeydown(e) {
|
||||||
if (e.key === "Escape") {
|
if (e.key === "Escape") {
|
||||||
|
@ -143,6 +147,7 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$: tooltipOpen.set(open);
|
||||||
$: dispatch(open ? "open" : "close");
|
$: dispatch(open ? "open" : "close");
|
||||||
$: buttonProps = {
|
$: buttonProps = {
|
||||||
role: "button",
|
role: "button",
|
||||||
|
|
29
src/Tooltip/TooltipFooter.svelte
Normal file
29
src/Tooltip/TooltipFooter.svelte
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<script>
|
||||||
|
/** Specify a selector to be focused inside the footer when opening the tooltip */
|
||||||
|
export let selectorPrimaryFocus = "a[href], button:not([disabled])";
|
||||||
|
|
||||||
|
import { getContext, onMount } from "svelte";
|
||||||
|
|
||||||
|
let ref = null;
|
||||||
|
let open = false;
|
||||||
|
|
||||||
|
const ctx = getContext("Tooltip");
|
||||||
|
const unsubscribe = ctx.tooltipOpen.subscribe((tooltipOpen) => {
|
||||||
|
open = tooltipOpen;
|
||||||
|
});
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
return () => {
|
||||||
|
unsubscribe();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
$: if (open && ref) {
|
||||||
|
const node = ref.querySelector(selectorPrimaryFocus);
|
||||||
|
if (node) node.focus();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div bind:this="{ref}" class:bx--tooltip__footer="{true}">
|
||||||
|
<slot />
|
||||||
|
</div>
|
|
@ -1 +1,2 @@
|
||||||
export { default as Tooltip } from "./Tooltip.svelte";
|
export { default as Tooltip } from "./Tooltip.svelte";
|
||||||
|
export { default as TooltipFooter } from "./TooltipFooter.svelte";
|
||||||
|
|
|
@ -121,7 +121,7 @@ export {
|
||||||
export { TimePicker, TimePickerSelect } from "./TimePicker";
|
export { TimePicker, TimePickerSelect } from "./TimePicker";
|
||||||
export { Toggle, ToggleSkeleton } from "./Toggle";
|
export { Toggle, ToggleSkeleton } from "./Toggle";
|
||||||
export { ToggleSmall, ToggleSmallSkeleton } from "./ToggleSmall";
|
export { ToggleSmall, ToggleSmallSkeleton } from "./ToggleSmall";
|
||||||
export { Tooltip } from "./Tooltip";
|
export { Tooltip, TooltipFooter } from "./Tooltip";
|
||||||
export { TooltipDefinition } from "./TooltipDefinition";
|
export { TooltipDefinition } from "./TooltipDefinition";
|
||||||
export { TooltipIcon } from "./TooltipIcon";
|
export { TooltipIcon } from "./TooltipIcon";
|
||||||
export { Truncate } from "./Truncate";
|
export { Truncate } from "./Truncate";
|
||||||
|
|
16
types/Tooltip/TooltipFooter.d.ts
vendored
Normal file
16
types/Tooltip/TooltipFooter.d.ts
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
/// <reference types="svelte" />
|
||||||
|
import { SvelteComponentTyped } from "svelte";
|
||||||
|
|
||||||
|
export interface TooltipFooterProps {
|
||||||
|
/**
|
||||||
|
* Specify a selector to be focused inside the footer when opening the tooltip
|
||||||
|
* @default "a[href], button:not([disabled])"
|
||||||
|
*/
|
||||||
|
selectorPrimaryFocus?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class TooltipFooter extends SvelteComponentTyped<
|
||||||
|
TooltipFooterProps,
|
||||||
|
{},
|
||||||
|
{ default: {} }
|
||||||
|
> {}
|
1
types/index.d.ts
vendored
1
types/index.d.ts
vendored
|
@ -139,6 +139,7 @@ export { default as ToggleSkeleton } from "./Toggle/ToggleSkeleton";
|
||||||
export { default as ToggleSmall } from "./ToggleSmall/ToggleSmall";
|
export { default as ToggleSmall } from "./ToggleSmall/ToggleSmall";
|
||||||
export { default as ToggleSmallSkeleton } from "./ToggleSmall/ToggleSmallSkeleton";
|
export { default as ToggleSmallSkeleton } from "./ToggleSmall/ToggleSmallSkeleton";
|
||||||
export { default as Tooltip } from "./Tooltip/Tooltip";
|
export { default as Tooltip } from "./Tooltip/Tooltip";
|
||||||
|
export { default as TooltipFooter } from "./Tooltip/TooltipFooter";
|
||||||
export { default as TooltipDefinition } from "./TooltipDefinition/TooltipDefinition";
|
export { default as TooltipDefinition } from "./TooltipDefinition/TooltipDefinition";
|
||||||
export { default as TooltipIcon } from "./TooltipIcon/TooltipIcon";
|
export { default as TooltipIcon } from "./TooltipIcon/TooltipIcon";
|
||||||
export { default as Truncate } from "./Truncate/Truncate";
|
export { default as Truncate } from "./Truncate/Truncate";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue