@ethlete/components 1.0.0-next.78 → 1.0.0-next.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -0
- package/design/accordion.ts +73 -0
- package/design/anchored-dialog.ts +92 -0
- package/design/avatar.ts +90 -0
- package/design/badge.ts +48 -0
- package/design/banner.ts +77 -0
- package/design/bracket.ts +457 -0
- package/design/breadcrumb.ts +145 -0
- package/design/button.ts +62 -1
- package/design/calendar.ts +306 -0
- package/design/card.ts +92 -0
- package/design/carousel.ts +240 -0
- package/design/chart.ts +512 -0
- package/design/checkbox.ts +275 -0
- package/design/chip.ts +64 -0
- package/design/config.json +8 -0
- package/design/control.ts +19 -0
- package/design/copy-button.ts +59 -0
- package/design/description-list.ts +41 -0
- package/design/dialog.ts +216 -0
- package/design/divider.ts +27 -0
- package/design/empty-state.ts +45 -0
- package/design/floating-action.ts +55 -0
- package/design/form-field.ts +3 -0
- package/design/grid.ts +148 -0
- package/design/input.ts +86 -0
- package/design/kbd.ts +19 -0
- package/design/loader.ts +152 -0
- package/design/masonry.ts +115 -0
- package/design/match.ts +131 -0
- package/design/menu.ts +147 -0
- package/design/notification.ts +133 -0
- package/design/otp-input.ts +107 -0
- package/design/pagination.ts +120 -0
- package/design/picture.ts +80 -0
- package/design/progress-steps.ts +79 -0
- package/design/query-error.ts +60 -0
- package/design/radio-group.ts +132 -0
- package/design/scheduler.ts +369 -0
- package/design/scrollable.ts +218 -0
- package/design/scrollbar.ts +47 -0
- package/design/sdk/assets/fallback.svg +1 -0
- package/design/sdk/assets/tall.svg +1 -0
- package/design/sdk/assets/wide.svg +1 -0
- package/design/sdk/components/accent-on-light/accent-on-light.css +35 -0
- package/design/sdk/components/accent-on-light/accent-on-light.ts +10 -0
- package/design/sdk/components/accent-on-light/shared/controls.ts +46 -0
- package/design/sdk/components/accordion/accordion.css +17 -0
- package/design/sdk/components/accordion/accordion.ts +68 -0
- package/design/sdk/components/anchored-dialog/anchored-dialog.css +63 -0
- package/design/sdk/components/anchored-dialog/anchored-dialog.ts +65 -0
- package/design/sdk/components/avatar/avatar.css +14 -0
- package/design/sdk/components/avatar/avatar.ts +79 -0
- package/design/sdk/components/badge/badge.css +13 -0
- package/design/sdk/components/badge/badge.ts +53 -0
- package/design/sdk/components/banner/banner.css +18 -0
- package/design/sdk/components/banner/banner.ts +88 -0
- package/design/sdk/components/bracket/bracket.css +59 -0
- package/design/sdk/components/bracket/bracket.ts +144 -0
- package/design/sdk/components/breadcrumb/breadcrumb.css +25 -0
- package/design/sdk/components/breadcrumb/breadcrumb.ts +82 -0
- package/design/sdk/components/button/button.css +41 -0
- package/design/sdk/components/button/button.ts +59 -7
- package/design/sdk/components/calendar/calendar.css +33 -0
- package/design/sdk/components/calendar/calendar.ts +97 -0
- package/design/sdk/components/card/card.css +19 -0
- package/design/sdk/components/card/card.ts +62 -0
- package/design/sdk/components/carousel/carousel.css +44 -0
- package/design/sdk/components/carousel/carousel.ts +75 -0
- package/design/sdk/components/chart/chart.css +56 -0
- package/design/sdk/components/chart/chart.ts +99 -0
- package/design/sdk/components/checkbox/checkbox.css +65 -0
- package/design/sdk/components/checkbox/checkbox.ts +180 -0
- package/design/sdk/components/chip/chip.css +18 -0
- package/design/sdk/components/chip/chip.ts +77 -0
- package/design/sdk/components/copy-button/copy-button.css +14 -0
- package/design/sdk/components/copy-button/copy-button.ts +60 -0
- package/design/sdk/components/description-list/description-list.css +7 -0
- package/design/sdk/components/description-list/description-list.ts +54 -0
- package/design/sdk/components/dialog/dialog.css +29 -0
- package/design/sdk/components/dialog/dialog.ts +79 -0
- package/design/sdk/components/divider/divider.css +26 -0
- package/design/sdk/components/divider/divider.ts +44 -0
- package/design/sdk/components/empty-state/empty-state.css +15 -0
- package/design/sdk/components/empty-state/empty-state.ts +57 -0
- package/design/sdk/components/floating-action/floating-action.css +51 -0
- package/design/sdk/components/floating-action/floating-action.ts +63 -0
- package/design/sdk/components/form-field/form-field.ts +23 -5
- package/design/sdk/components/grid/grid.css +17 -0
- package/design/sdk/components/grid/grid.ts +81 -0
- package/design/sdk/components/input/input.css +75 -0
- package/design/sdk/components/input/input.ts +80 -0
- package/design/sdk/components/kbd/kbd.css +25 -0
- package/design/sdk/components/kbd/kbd.ts +58 -0
- package/design/sdk/components/loader/loader.css +37 -0
- package/design/sdk/components/loader/loader.ts +69 -0
- package/design/sdk/components/masonry/masonry.css +7 -0
- package/design/sdk/components/masonry/masonry.ts +43 -0
- package/design/sdk/components/match/match.css +25 -0
- package/design/sdk/components/match/match.ts +77 -0
- package/design/sdk/components/menu/menu.css +22 -0
- package/design/sdk/components/menu/menu.ts +103 -0
- package/design/sdk/components/notification/notification.css +32 -0
- package/design/sdk/components/notification/notification.ts +107 -0
- package/design/sdk/components/otp-input/otp-input.css +35 -0
- package/design/sdk/components/otp-input/otp-input.ts +65 -0
- package/design/sdk/components/pagination/pagination.css +14 -0
- package/design/sdk/components/pagination/pagination.ts +76 -0
- package/design/sdk/components/picture/picture.css +37 -0
- package/design/sdk/components/picture/picture.ts +97 -0
- package/design/sdk/components/progress-steps/progress-steps.css +37 -0
- package/design/sdk/components/progress-steps/progress-steps.ts +92 -0
- package/design/sdk/components/query-error/query-error.css +33 -0
- package/design/sdk/components/query-error/query-error.ts +121 -0
- package/design/sdk/components/radio-group/radio-group.css +46 -0
- package/design/sdk/components/radio-group/radio-group.ts +167 -0
- package/design/sdk/components/scheduler/scheduler.css +55 -0
- package/design/sdk/components/scheduler/scheduler.ts +240 -0
- package/design/sdk/components/scrollable/scrollable.css +58 -0
- package/design/sdk/components/scrollable/scrollable.ts +133 -0
- package/design/sdk/components/scrollbar/scrollbar.css +78 -0
- package/design/sdk/components/scrollbar/scrollbar.ts +124 -0
- package/design/sdk/components/select/select.ts +1 -1
- package/design/sdk/components/select/shared/select-part.ts +25 -3
- package/design/sdk/components/select-panel/select-panel.css +3 -0
- package/design/sdk/components/select-panel/select-panel.ts +125 -0
- package/design/sdk/components/skeleton/skeleton.css +22 -0
- package/design/sdk/components/skeleton/skeleton.ts +51 -0
- package/design/sdk/components/slider/slider.css +52 -0
- package/design/sdk/components/slider/slider.ts +87 -0
- package/design/sdk/components/standings/standings.css +33 -0
- package/design/sdk/components/standings/standings.ts +131 -0
- package/design/sdk/components/stat-tile/stat-tile.css +15 -0
- package/design/sdk/components/stat-tile/stat-tile.ts +85 -0
- package/design/sdk/components/stream/stream.css +48 -0
- package/design/sdk/components/stream/stream.ts +43 -0
- package/design/sdk/components/switch/switch.css +37 -0
- package/design/sdk/components/switch/switch.ts +63 -0
- package/design/sdk/components/table/table.css +67 -0
- package/design/sdk/components/table/table.ts +161 -0
- package/design/sdk/components/tabs/tabs.css +13 -0
- package/design/sdk/components/tabs/tabs.ts +74 -0
- package/design/sdk/components/textarea/textarea.css +116 -0
- package/design/sdk/components/textarea/textarea.ts +65 -0
- package/design/sdk/components/timeline/timeline.css +30 -0
- package/design/sdk/components/timeline/timeline.ts +87 -0
- package/design/sdk/components/toolbar/toolbar.css +24 -0
- package/design/sdk/components/toolbar/toolbar.ts +88 -0
- package/design/sdk/components/tooltip/tooltip.css +15 -0
- package/design/sdk/components/tooltip/tooltip.ts +28 -0
- package/design/sdk/components/tree/selected-tint.css +15 -0
- package/design/sdk/components/tree/tree.ts +70 -0
- package/design/sdk/foundations/colors/colors.css +124 -4
- package/design/sdk/foundations/colors/colors.ts +1 -1
- package/design/sdk/foundations/colors/shared/contrast.ts +1 -1
- package/design/sdk/foundations/elevation/elevation.css +6 -0
- package/design/sdk/foundations/elevation/elevation.ts +11 -0
- package/design/sdk/foundations/elevation/shared/elevation/scene.css +101 -0
- package/design/sdk/foundations/elevation/shared/elevation/scene.ts +74 -0
- package/design/sdk/foundations/icons/icons.ts +119 -0
- package/design/sdk/pictures.json +1183 -0
- package/design/select.ts +5 -4
- package/design/skeleton.ts +67 -0
- package/design/slider.ts +155 -0
- package/design/standings.ts +161 -0
- package/design/stat-tile.ts +109 -0
- package/design/stream.ts +92 -0
- package/design/switch.ts +83 -0
- package/design/table.ts +302 -0
- package/design/tabs.ts +75 -0
- package/design/textarea.ts +94 -0
- package/design/timeline.ts +52 -0
- package/design/toolbar.ts +95 -0
- package/design/tooltip.ts +87 -0
- package/fesm2022/ethlete-components.mjs +1440 -1209
- package/fesm2022/ethlete-components.mjs.map +1 -1
- package/generators/generators.json +2 -0
- package/package.json +1 -1
- package/src/lib/accordion/accordion.component.css +2 -1
- package/src/lib/avatar/avatar.component.css +10 -0
- package/src/lib/badge/badge.component.css +2 -2
- package/src/lib/banner/banner.component.css +3 -1
- package/src/lib/breadcrumb/breadcrumb-outlet.component.css +5 -0
- package/src/lib/breadcrumb/breadcrumb.component.css +5 -1
- package/src/lib/button/button-properties-styles.component.css +6 -6
- package/src/lib/button/button.component.css +27 -4
- package/src/lib/button/button.types.ts +33 -0
- package/src/lib/button/icon-button.component.css +21 -22
- package/src/lib/button/split-button.component.css +5 -1
- package/src/lib/button/window-control-button.component.css +43 -3
- package/src/lib/calendar/calendar.component.css +15 -5
- package/src/lib/card/card.component.css +4 -0
- package/src/lib/carousel/carousel-autoplay-styles.component.css +1 -1
- package/src/lib/carousel/carousel.component.css +2 -2
- package/src/lib/chart/chart-axis.component.css +3 -3
- package/src/lib/chip/chip.component.css +12 -6
- package/src/lib/description-list/description-list.component.css +2 -1
- package/src/lib/empty-state/empty-state.component.css +4 -0
- package/src/lib/floating-action/floating-action-styles.component.css +27 -0
- package/src/lib/focus-ring/focus-ring-styles.component.css +4 -1
- package/src/lib/forms/checkbox/checkbox.component.css +31 -5
- package/src/lib/forms/color-input/color-input.component.css +3 -1
- package/src/lib/forms/color-input/color-picker-panel.component.css +6 -2
- package/src/lib/forms/date-time/date-input/date-input.component.css +1 -1
- package/src/lib/forms/date-time/date-time-input/date-time-input.component.css +1 -1
- package/src/lib/forms/date-time/duration-input/duration-input.component.css +1 -1
- package/src/lib/forms/date-time/range-input-shell-styles.component.css +1 -1
- package/src/lib/forms/date-time/time-input/time-input.component.css +1 -1
- package/src/lib/forms/description/description.component.css +7 -0
- package/src/lib/forms/dropzone/dropzone.component.css +26 -0
- package/src/lib/forms/form-field/form-field-control-suffix-styles.component.css +4 -2
- package/src/lib/forms/form-field/form-field-text-shell-styles.component.css +54 -5
- package/src/lib/forms/form-field/form-field-textarea-styles.component.css +62 -0
- package/src/lib/forms/form-field/form-field.component.css +6 -0
- package/src/lib/forms/form-field/headless/label.directive.css +1 -1
- package/src/lib/forms/input/input.component.css +6 -2
- package/src/lib/forms/input/number-input.component.css +2 -2
- package/src/lib/forms/input/password-input.component.css +4 -3
- package/src/lib/forms/otp-input/otp-input.component.css +23 -4
- package/src/lib/forms/phone-input/phone-input.component.css +4 -3
- package/src/lib/forms/rating/rating.component.css +2 -1
- package/src/lib/forms/rich-text-editor/rich-text-editor.component.css +1 -1
- package/src/lib/forms/selection-card-styles.component.css +3 -2
- package/src/lib/forms/selection-list/checkbox-group/checkbox-group-select-all.component.css +4 -2
- package/src/lib/forms/selection-list/checkbox-group/checkbox-option.component.css +4 -2
- package/src/lib/forms/selection-list/radio-group/radio.component.css +5 -2
- package/src/lib/forms/selection-list/segmented-button-group/segmented-button.component.css +2 -1
- package/src/lib/forms/slider/range-slider.component.css +98 -6
- package/src/lib/forms/slider/slider.component.css +96 -4
- package/src/lib/forms/switch/switch.component.css +45 -15
- package/src/lib/forms/tag-input/tag-input.component.css +2 -2
- package/src/lib/forms/textarea/textarea-autosize-styles.component.css +2 -3
- package/src/lib/forms/textarea/textarea.component.css +7 -2
- package/src/lib/grid/grid-item-toolbar.component.css +10 -0
- package/src/lib/grid/grid-item.component.css +6 -1
- package/src/lib/kbd/kbd.component.css +1 -1
- package/src/lib/loader/brand-loader/brand-loader.component.css +4 -1
- package/src/lib/loader/progress-bar/progress-bar.component.css +1 -1
- package/src/lib/loader/spinner/spinner-styles.component.css +1 -1
- package/src/lib/match/match-card.component.css +9 -3
- package/src/lib/match/match-score.component.css +4 -1
- package/src/lib/menu/menu-selection-item.component.css +1 -1
- package/src/lib/menu/menu.component.css +6 -1
- package/src/lib/notification/notification.component.css +3 -3
- package/src/lib/overlay/overlay-container.component.css +4 -0
- package/src/lib/pagination/pagination.component.css +4 -0
- package/src/lib/progress-steps/progress-step.component.css +4 -4
- package/src/lib/query-error/query-error.component.css +4 -0
- package/src/lib/scheduler/scheduler-appointment-styles.component.css +21 -5
- package/src/lib/scheduler/scheduler-month-view.component.css +4 -2
- package/src/lib/scheduler/scheduler-time-grid-view.component.css +8 -2
- package/src/lib/scrollable/headless/scrollable-navigation.component.css +1 -1
- package/src/lib/standings/standings-pick.component.css +1 -1
- package/src/lib/standings/standings.component.css +10 -10
- package/src/lib/stat-tile/stat-tile-sparkline.component.css +1 -1
- package/src/lib/stream/consent/stream-consent.component.css +99 -0
- package/src/lib/stream/error/stream-player-error.component.css +100 -0
- package/src/lib/stream/loading/stream-player-loading.component.css +16 -0
- package/src/lib/stream/pip/pip-slot-placeholder.component.css +68 -0
- package/src/lib/stream/stream-player-slot-styles.component.css +4 -0
- package/src/lib/table/table-resize-grip.component.css +2 -1
- package/src/lib/table/table-select-cell.component.css +45 -15
- package/src/lib/table/table.component.css +15 -5
- package/src/lib/tabs/tab-bar-styles.component.css +1 -1
- package/src/lib/tabs/tabs/tab-group.component.css +111 -0
- package/src/lib/time-picker/time-picker.component.css +2 -1
- package/src/lib/timeline/timeline-item.component.css +5 -1
- package/src/lib/toolbar/toolbar.component.css +4 -0
- package/src/lib/tooltip/tooltip.component.css +14 -0
- package/types/ethlete-components.d.ts +156 -128
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import iconButtonBase from '../src/lib/button/icon-button.component.css?inline';
|
|
2
|
+
import { IconDefinition } from '../src/lib/icon/headless/icon-definition';
|
|
3
|
+
import iconBase from '../src/lib/icon/headless/icon-styles.component.css?inline';
|
|
4
|
+
import toolbarBase from '../src/lib/toolbar/toolbar.component.css?inline';
|
|
5
|
+
import { buttonStyles } from './button';
|
|
6
|
+
import { divider, dividerStyles } from './divider';
|
|
7
|
+
import { iconMarkup } from './icon';
|
|
8
|
+
|
|
9
|
+
export type ToolbarMockItem =
|
|
10
|
+
| {
|
|
11
|
+
type: 'button';
|
|
12
|
+
icon: IconDefinition;
|
|
13
|
+
/** The button's `aria-label`. */
|
|
14
|
+
label: string;
|
|
15
|
+
/** Makes the button a toggle: `false` draws it unpressed, left out it is no toggle. */
|
|
16
|
+
pressed?: boolean;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
/** Extra attributes on the button, e.g. design markers. */
|
|
19
|
+
attributes?: string;
|
|
20
|
+
}
|
|
21
|
+
| { type: 'divider' };
|
|
22
|
+
|
|
23
|
+
export type ToolbarMockOptions = {
|
|
24
|
+
items: ToolbarMockItem[];
|
|
25
|
+
orientation?: 'horizontal' | 'vertical';
|
|
26
|
+
/** The `aria-label` naming what the toolbar acts on. */
|
|
27
|
+
label?: string;
|
|
28
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
29
|
+
/**
|
|
30
|
+
* The index into `items` of the button holding the toolbar's one tab stop. Left out, the first enabled
|
|
31
|
+
* button, as `[etToolbar]` picks it.
|
|
32
|
+
*/
|
|
33
|
+
tabStop?: number;
|
|
34
|
+
/** Extra attributes on the toolbar, e.g. design markers. */
|
|
35
|
+
attributes?: string;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/** The stylesheets `toolbar()` draws with: the real toolbar, icon-button, button, icon and divider CSS. */
|
|
39
|
+
export const toolbarStyles = /* @__PURE__ */ [buttonStyles, iconBase, iconButtonBase, dividerStyles, toolbarBase].join(
|
|
40
|
+
'\n',
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const control = (item: Extract<ToolbarMockItem, { type: 'button' }>, options: { size: string; tabStop: boolean }) => {
|
|
44
|
+
const classes = [
|
|
45
|
+
'et-icon-button',
|
|
46
|
+
'et-color-interactive',
|
|
47
|
+
'et-focus-ring',
|
|
48
|
+
item.pressed ? 'et-color--inherited' : 'et-color--surface',
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const attributes = [
|
|
52
|
+
item.attributes,
|
|
53
|
+
`class="${classes.join(' ')}"`,
|
|
54
|
+
'type="button"',
|
|
55
|
+
`aria-label="${item.label}"`,
|
|
56
|
+
item.disabled && 'disabled aria-disabled="true"',
|
|
57
|
+
item.pressed && 'data-pressed="true"',
|
|
58
|
+
item.pressed !== undefined && `aria-pressed="${item.pressed}"`,
|
|
59
|
+
'data-variant="transparent"',
|
|
60
|
+
`data-size="${options.size}"`,
|
|
61
|
+
item.pressed && 'data-pressed-variant="tonal"',
|
|
62
|
+
'data-et-toolbar-control=""',
|
|
63
|
+
`tabindex="${options.tabStop ? 0 : -1}"`,
|
|
64
|
+
].filter(Boolean);
|
|
65
|
+
|
|
66
|
+
return `<button ${attributes.join(' ')}><div class="et-icon-button-icon">${iconMarkup(item.icon)}</div></button>`;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Draws `<et-toolbar>` composed as its story shows it - transparent `et-icon-button`s in the surface's neutral
|
|
71
|
+
* colors that take the surrounding color theme while pressed, grouped by decorative `et-divider`s - as HTML,
|
|
72
|
+
* with the roving tab stop `[etToolbar]` sets.
|
|
73
|
+
*/
|
|
74
|
+
export const toolbar = (options: ToolbarMockOptions) => {
|
|
75
|
+
const { items, orientation = 'horizontal', size = 'sm' } = options;
|
|
76
|
+
const tabStop = options.tabStop ?? items.findIndex((item) => item.type === 'button' && !item.disabled);
|
|
77
|
+
|
|
78
|
+
const contents = items
|
|
79
|
+
.map((item, index) =>
|
|
80
|
+
item.type === 'divider'
|
|
81
|
+
? divider({ orientation: orientation === 'horizontal' ? 'vertical' : 'horizontal', decorative: true })
|
|
82
|
+
: control(item, { size, tabStop: index === tabStop }),
|
|
83
|
+
)
|
|
84
|
+
.join('');
|
|
85
|
+
|
|
86
|
+
const attributes = [
|
|
87
|
+
options.attributes,
|
|
88
|
+
'class="et-toolbar"',
|
|
89
|
+
'role="toolbar"',
|
|
90
|
+
`aria-orientation="${orientation}"`,
|
|
91
|
+
`aria-label="${options.label ?? 'Text formatting'}"`,
|
|
92
|
+
].filter(Boolean);
|
|
93
|
+
|
|
94
|
+
return `<et-toolbar ${attributes.join(' ')}>${contents}</et-toolbar>`;
|
|
95
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Placement } from '@floating-ui/dom';
|
|
2
|
+
import overlayContainer from '../src/lib/overlay/overlay-container.component.css?inline';
|
|
3
|
+
import floatingTip from '../src/lib/overlay/floating-tip-styles.component.css?inline';
|
|
4
|
+
import overlayArrow from '../src/lib/overlay/strategies/overlay-arrow-styles.component.css?inline';
|
|
5
|
+
import tooltipBase from '../src/lib/tooltip/tooltip.component.css?inline';
|
|
6
|
+
|
|
7
|
+
export type TooltipMockOptions = {
|
|
8
|
+
/** The tooltip text, as HTML. Drawn like a string `etTooltip`. */
|
|
9
|
+
text?: string;
|
|
10
|
+
/** Template content, as HTML. Drawn like a `TemplateRef` `etTooltip`; wins over `text`. */
|
|
11
|
+
content?: string;
|
|
12
|
+
/** The side the pane opened on; the arrow points back at the trigger. Defaults to `top`. */
|
|
13
|
+
placement?: Placement;
|
|
14
|
+
/** A surface theme name the app registers. Left out, the pane takes the surface one elevation above its parent. */
|
|
15
|
+
surface?: string;
|
|
16
|
+
/** The tooltip id, which the trigger's `aria-describedby` points at. */
|
|
17
|
+
id?: string;
|
|
18
|
+
/** Extra attributes on the `<et-tooltip>`, e.g. design markers. */
|
|
19
|
+
attributes?: string;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** The stylesheets `tooltip()` draws with: the real `et-tooltip`, floating tip, overlay pane and arrow CSS. */
|
|
23
|
+
export const tooltipStyles = /* @__PURE__ */ [
|
|
24
|
+
overlayContainer,
|
|
25
|
+
overlayArrow,
|
|
26
|
+
floatingTip,
|
|
27
|
+
tooltipBase,
|
|
28
|
+
`@layer components {
|
|
29
|
+
.et-tooltip-mock-frame > .et-tooltip-panel {
|
|
30
|
+
--_et-overlay-arrow-pane-border-width: 1px;
|
|
31
|
+
inline-size: max-content;
|
|
32
|
+
}
|
|
33
|
+
.et-tooltip-mock-frame > .et-tooltip-panel:is([data-overlay-placement^='top'], [data-overlay-placement^='bottom']) > .et-overlay-arrow {
|
|
34
|
+
left: calc(50% - 10px);
|
|
35
|
+
}
|
|
36
|
+
.et-tooltip-mock-frame > .et-tooltip-panel:is([data-overlay-placement^='left'], [data-overlay-placement^='right']) > .et-overlay-arrow {
|
|
37
|
+
top: calc(50% - 10px);
|
|
38
|
+
}
|
|
39
|
+
.et-tooltip-mock-frame > .et-tooltip-panel:is([data-overlay-placement^='top-start'], [data-overlay-placement^='bottom-start']) > .et-overlay-arrow {
|
|
40
|
+
left: 20px;
|
|
41
|
+
}
|
|
42
|
+
.et-tooltip-mock-frame > .et-tooltip-panel:is([data-overlay-placement^='top-end'], [data-overlay-placement^='bottom-end']) > .et-overlay-arrow {
|
|
43
|
+
left: calc(100% - 40px);
|
|
44
|
+
}
|
|
45
|
+
.et-tooltip-mock-frame > .et-tooltip-panel:is([data-overlay-placement^='left-start'], [data-overlay-placement^='right-start']) > .et-overlay-arrow {
|
|
46
|
+
top: 20px;
|
|
47
|
+
}
|
|
48
|
+
.et-tooltip-mock-frame > .et-tooltip-panel:is([data-overlay-placement^='left-end'], [data-overlay-placement^='right-end']) > .et-overlay-arrow {
|
|
49
|
+
top: calc(100% - 40px);
|
|
50
|
+
}
|
|
51
|
+
}`,
|
|
52
|
+
].join('\n');
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Draws an open `et-tooltip` in its overlay pane, with the arrow, as HTML. The pane sits in flow,
|
|
56
|
+
* wrapped in a frame that centers the arrow on its side, instead of where the overlay runtime would
|
|
57
|
+
* position it, so place it next to the drawn trigger.
|
|
58
|
+
*/
|
|
59
|
+
export const tooltip = (options: TooltipMockOptions = {}) => {
|
|
60
|
+
const { placement = 'top', id = 'et-tooltip-1' } = options;
|
|
61
|
+
const surface = options.surface && `et-surface--${options.surface}`;
|
|
62
|
+
const hasTemplate = options.content !== undefined;
|
|
63
|
+
|
|
64
|
+
const paneClasses = [
|
|
65
|
+
'et-overlay',
|
|
66
|
+
'et-overlay-runtime-pane',
|
|
67
|
+
'et-tooltip-panel',
|
|
68
|
+
'et-overlay--tooltip',
|
|
69
|
+
'et-floating-panel',
|
|
70
|
+
'et-color--inherited',
|
|
71
|
+
surface,
|
|
72
|
+
'et-with-default-animation',
|
|
73
|
+
'et-animation-enter-done',
|
|
74
|
+
].filter(Boolean);
|
|
75
|
+
|
|
76
|
+
const tooltipAttributes = [
|
|
77
|
+
options.attributes,
|
|
78
|
+
'role="tooltip"',
|
|
79
|
+
`class="et-tooltip et-color--inherited ${surface ?? 'et-surface--inherited'}"`,
|
|
80
|
+
`id="${id}"`,
|
|
81
|
+
hasTemplate && 'data-has-template="true"',
|
|
82
|
+
].filter(Boolean);
|
|
83
|
+
|
|
84
|
+
const body = hasTemplate ? options.content : `<p class="et-tooltip__text">${options.text ?? ''}</p>`;
|
|
85
|
+
|
|
86
|
+
return `<div class="et-tooltip-mock-frame"><div class="${paneClasses.join(' ')}" data-overlay-placement="${placement}"${surface ? '' : ' data-et-auto-surface'}><et-tooltip ${tooltipAttributes.join(' ')}><div class="et-tooltip__surface"><div class="et-tooltip__content">${body}</div></div></et-tooltip><div et-floating-arrow class="et-overlay-arrow"></div></div></div>`;
|
|
87
|
+
};
|