@hawiyah/vue 0.0.0-stage → 0.2.1

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.
Files changed (81) hide show
  1. package/LICENSE +73 -0
  2. package/NOTICE +19 -0
  3. package/PORTAL.md +70 -0
  4. package/README.md +388 -2
  5. package/dist/calendar.d.ts +183 -0
  6. package/dist/calendar.d.ts.map +1 -0
  7. package/dist/calendar.js +448 -0
  8. package/dist/calendar.js.map +1 -0
  9. package/dist/content-navigation.d.ts +61 -0
  10. package/dist/content-navigation.d.ts.map +1 -0
  11. package/dist/content-navigation.js +31 -0
  12. package/dist/content-navigation.js.map +1 -0
  13. package/dist/content.d.ts +392 -0
  14. package/dist/content.d.ts.map +1 -0
  15. package/dist/content.js +310 -0
  16. package/dist/content.js.map +1 -0
  17. package/dist/controls.d.ts +657 -0
  18. package/dist/controls.d.ts.map +1 -0
  19. package/dist/controls.js +679 -0
  20. package/dist/controls.js.map +1 -0
  21. package/dist/display.d.ts +387 -0
  22. package/dist/display.d.ts.map +1 -0
  23. package/dist/display.js +293 -0
  24. package/dist/display.js.map +1 -0
  25. package/dist/expansion-interactive.d.ts +476 -0
  26. package/dist/expansion-interactive.d.ts.map +1 -0
  27. package/dist/expansion-interactive.js +613 -0
  28. package/dist/expansion-interactive.js.map +1 -0
  29. package/dist/file-upload-list.d.ts +54 -0
  30. package/dist/file-upload-list.d.ts.map +1 -0
  31. package/dist/file-upload-list.js +21 -0
  32. package/dist/file-upload-list.js.map +1 -0
  33. package/dist/forms.d.ts +388 -0
  34. package/dist/forms.d.ts.map +1 -0
  35. package/dist/forms.js +156 -0
  36. package/dist/forms.js.map +1 -0
  37. package/dist/index.d.ts +26 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +16 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/interactive.d.ts +240 -0
  42. package/dist/interactive.d.ts.map +1 -0
  43. package/dist/interactive.js +341 -0
  44. package/dist/interactive.js.map +1 -0
  45. package/dist/layout.d.ts +755 -0
  46. package/dist/layout.d.ts.map +1 -0
  47. package/dist/layout.js +101 -0
  48. package/dist/layout.js.map +1 -0
  49. package/dist/mobile-top-bar.d.ts +47 -0
  50. package/dist/mobile-top-bar.d.ts.map +1 -0
  51. package/dist/mobile-top-bar.js +18 -0
  52. package/dist/mobile-top-bar.js.map +1 -0
  53. package/dist/native-attributes.d.ts +38 -0
  54. package/dist/native-attributes.d.ts.map +1 -0
  55. package/dist/native-attributes.js +27 -0
  56. package/dist/native-attributes.js.map +1 -0
  57. package/dist/navigation-drawer.d.ts +87 -0
  58. package/dist/navigation-drawer.d.ts.map +1 -0
  59. package/dist/navigation-drawer.js +56 -0
  60. package/dist/navigation-drawer.js.map +1 -0
  61. package/dist/patterns.d.ts +455 -0
  62. package/dist/patterns.d.ts.map +1 -0
  63. package/dist/patterns.js +355 -0
  64. package/dist/patterns.js.map +1 -0
  65. package/dist/portal.d.ts +174 -0
  66. package/dist/portal.d.ts.map +1 -0
  67. package/dist/portal.js +36 -0
  68. package/dist/portal.js.map +1 -0
  69. package/dist/search-field.d.ts +87 -0
  70. package/dist/search-field.d.ts.map +1 -0
  71. package/dist/search-field.js +123 -0
  72. package/dist/search-field.js.map +1 -0
  73. package/dist/shared.d.ts +46 -0
  74. package/dist/shared.d.ts.map +1 -0
  75. package/dist/shared.js +40 -0
  76. package/dist/shared.js.map +1 -0
  77. package/dist/site-verification.d.ts +63 -0
  78. package/dist/site-verification.d.ts.map +1 -0
  79. package/dist/site-verification.js +34 -0
  80. package/dist/site-verification.js.map +1 -0
  81. package/package.json +53 -3
@@ -0,0 +1,341 @@
1
+ import { cloneVNode, computed, defineComponent, h, isVNode, mergeProps, nextTick, onBeforeUnmount, onMounted, ref, useId, watch, watchEffect } from 'vue';
2
+ import { createComboboxState, getComboboxOptions, getDirection, getNextEnabledIndex, isDisabled, observeTabOverflow, restoreFocus, transitionCombobox } from '@hawiyah/core';
3
+ import { Button, decorate } from './forms.js';
4
+ import { decorationProps, joinIds, useField, useFormReset, useValue } from './shared.js';
5
+ export const Tabs = defineComponent({
6
+ name: 'HwTabs', inheritAttrs: false,
7
+ props: { items: { type: Array, required: true }, label: { type: String, required: true }, modelValue: String, defaultValue: String,
8
+ orientation: { type: String, default: 'horizontal' }, activationMode: { type: String, default: 'automatic' },
9
+ overflow: { type: String, default: 'menu' }, overflowLabel: { type: String, default: 'المزيد من التبويبات' } },
10
+ emits: { 'update:modelValue': (_value) => true },
11
+ setup(props, { attrs, slots, emit }) {
12
+ const id = `hw-${useId()}`;
13
+ const model = useValue(() => props.modelValue, props.defaultValue ?? props.items.find(item => !item.disabled)?.value ?? '', value => emit('update:modelValue', value));
14
+ const focused = ref();
15
+ const active = computed(() => props.items.find(item => item.value === model.value.value && !item.disabled)?.value ?? props.items.find(item => !item.disabled)?.value);
16
+ const buttons = new Map();
17
+ const bar = ref();
18
+ const disclosure = ref();
19
+ const hidden = ref([]);
20
+ let observer;
21
+ let alive = true;
22
+ const visible = computed(() => props.items.filter((item, index) => !hidden.value.includes(index) && !item.disabled));
23
+ const focusValue = computed(() => visible.value.find(item => item.value === focused.value)?.value ?? visible.value.find(item => item.value === active.value)?.value ?? visible.value[0]?.value);
24
+ const close = () => { if (disclosure.value)
25
+ disclosure.value.open = false; };
26
+ const outside = (event) => { if (!bar.value?.contains(event.target))
27
+ close(); };
28
+ onMounted(() => {
29
+ const node = bar.value;
30
+ observer = observeTabOverflow({ container: node, tabs: () => props.items.map(item => buttons.get(item.value)).filter(Boolean), enabled: () => props.overflow === 'menu' && props.orientation === 'horizontal', onChange: next => {
31
+ const focusedElement = node.ownerDocument.activeElement;
32
+ const menuValue = focusedElement?.dataset.hwOverflowValue;
33
+ const itemIndex = props.items.findIndex(item => item.value === menuValue);
34
+ const toMenu = menuValue !== undefined && itemIndex >= 0 && next.includes(itemIndex);
35
+ const toOriginal = menuValue !== undefined && itemIndex >= 0 && !toMenu;
36
+ const toSummary = next.some(index => buttons.get(props.items[index]?.value ?? '') === focusedElement) || (!toMenu && !toOriginal && !!next.length && !!disclosure.value?.contains(focusedElement));
37
+ const toTab = !next.length && disclosure.value?.contains(focusedElement);
38
+ if (!toMenu)
39
+ close();
40
+ hidden.value = next;
41
+ void nextTick(() => { if (!alive)
42
+ return; if (toMenu)
43
+ [...(disclosure.value?.querySelectorAll('[data-hw-overflow-value]') ?? [])].find(button => button.dataset.hwOverflowValue === menuValue)?.focus();
44
+ else if (toOriginal)
45
+ buttons.get(menuValue)?.focus();
46
+ else if (toSummary)
47
+ disclosure.value?.querySelector('summary')?.focus();
48
+ else if (toTab && focusValue.value)
49
+ buttons.get(focusValue.value)?.focus(); });
50
+ } });
51
+ node.ownerDocument.addEventListener('click', outside);
52
+ });
53
+ watch(() => [props.items, props.overflow, props.orientation], () => { observer?.refresh(); const focusedElement = bar.value?.ownerDocument.activeElement; if (focusedElement?.getAttribute('data-hw-overflow-hidden') === 'true' && bar.value?.contains(focusedElement))
54
+ disclosure.value?.querySelector('summary')?.focus(); }, { deep: true, flush: 'post' });
55
+ watch(active, close);
56
+ onBeforeUnmount(() => { alive = false; observer?.destroy(); bar.value?.ownerDocument.removeEventListener('click', outside); });
57
+ return () => h('div', mergeProps(attrs, { class: 'hw-tabs' }), [
58
+ h('div', { class: 'hw-tab-bar', ref: bar, 'data-hw-overflow': props.overflow, 'data-orientation': props.orientation }, [
59
+ h('div', { class: 'hw-tab-list', 'data-hw-overflow': props.overflow, role: 'tablist', 'aria-label': props.label, 'aria-orientation': props.orientation, 'aria-hidden': hidden.value.length === props.items.length || undefined }, props.items.map((item, index) => h('button', {
60
+ key: item.value, ref: (element) => { if (element)
61
+ buttons.set(item.value, element);
62
+ else
63
+ buttons.delete(item.value); },
64
+ class: 'hw-tab', type: 'button', role: 'tab', id: `${id}-tab-${index}`, 'aria-controls': `${id}-panel-${index}`, 'aria-selected': active.value === item.value,
65
+ 'data-hw-overflow-hidden': hidden.value.includes(index) ? 'true' : undefined, 'aria-hidden': hidden.value.includes(index) || undefined,
66
+ tabindex: !hidden.value.includes(index) && focusValue.value === item.value ? 0 : -1, disabled: item.disabled,
67
+ onFocus: () => { focused.value = item.value; }, onClick: () => { if (!item.disabled)
68
+ model.set(item.value); },
69
+ onKeydown: (event) => {
70
+ if (event.altKey || event.ctrlKey || event.metaKey || event.isComposing)
71
+ return;
72
+ const keys = props.orientation === 'vertical' ? ['ArrowDown', 'ArrowUp', 'Home', 'End'] : ['ArrowLeft', 'ArrowRight', 'Home', 'End'];
73
+ if (!keys.includes(event.key))
74
+ return;
75
+ event.preventDefault();
76
+ const next = props.items[getNextEnabledIndex(index, event.key, props.items.map((candidate, i) => ({ disabled: candidate.disabled || hidden.value.includes(i) })), getDirection(event.currentTarget), props.orientation)];
77
+ if (!next)
78
+ return;
79
+ focused.value = next.value;
80
+ buttons.get(next.value)?.focus();
81
+ if (props.activationMode === 'automatic')
82
+ model.set(next.value);
83
+ },
84
+ }, slots[`tab:${item.value}`]?.({ item }) ?? item.label))),
85
+ h('details', { class: 'hw-tabs-overflow', ref: disclosure, hidden: !hidden.value.length, onKeydown: (event) => { if (event.key === 'Escape' && disclosure.value?.open) {
86
+ event.preventDefault();
87
+ close();
88
+ disclosure.value.querySelector('summary')?.focus();
89
+ } } }, [
90
+ h('summary', { class: 'hw-tab-overflow-trigger', 'aria-label': props.overflowLabel, 'data-active': hidden.value.some(index => props.items[index]?.value === active.value) ? 'true' : undefined }, '…'),
91
+ h('div', { class: 'hw-tab-overflow-menu' }, hidden.value.map(index => { const item = props.items[index]; return item && h('button', { key: item.value, type: 'button', class: 'hw-tab-overflow-item', 'data-hw-overflow-value': item.value, disabled: item.disabled, 'aria-pressed': item.value === active.value, onClick: () => { if (item.disabled)
92
+ return; model.set(item.value); close(); disclosure.value?.querySelector('summary')?.focus(); } }, slots[`tab:${item.value}`]?.({ item }) ?? item.label); })),
93
+ ]),
94
+ ]),
95
+ ...props.items.map((item, index) => h('section', { key: item.value, class: 'hw-tab-panel', id: `${id}-panel-${index}`, role: 'tabpanel', 'aria-labelledby': `${id}-tab-${index}`, tabindex: 0, hidden: active.value !== item.value }, [slots[item.value]?.() ?? item.content])),
96
+ ]);
97
+ },
98
+ });
99
+ export const Dialog = defineComponent({
100
+ name: 'HwDialog', inheritAttrs: false,
101
+ props: { open: { type: Boolean, default: undefined }, defaultOpen: Boolean, title: { type: String, required: true }, description: String, closeLabel: { type: String, default: 'Close' }, closeOnBackdrop: { type: Boolean, default: true } },
102
+ emits: { 'update:open': (_open) => true },
103
+ setup(props, { attrs, slots, emit, expose }) {
104
+ const id = `hw-${useId()}`;
105
+ const element = ref();
106
+ const model = useValue(() => props.open, props.defaultOpen, value => emit('update:open', value));
107
+ let previousFocus = null;
108
+ let backdropStarted = false;
109
+ const close = () => { backdropStarted = false; model.set(false); };
110
+ const show = () => { backdropStarted = false; model.set(true); };
111
+ watchEffect(() => {
112
+ const dialog = element.value;
113
+ if (!dialog)
114
+ return;
115
+ if (model.value.value && !dialog.open) {
116
+ backdropStarted = false;
117
+ previousFocus = dialog.ownerDocument.activeElement;
118
+ dialog.showModal();
119
+ }
120
+ else if (!model.value.value && dialog.open) {
121
+ backdropStarted = false;
122
+ dialog.close();
123
+ restoreFocus(previousFocus);
124
+ }
125
+ }, { flush: 'post' });
126
+ onBeforeUnmount(() => { if (element.value?.open) {
127
+ element.value.close();
128
+ restoreFocus(previousFocus);
129
+ } });
130
+ expose({ element, show, close });
131
+ return () => [slots.trigger?.({ open: show }), h('dialog', mergeProps(attrs, {
132
+ ref: element, class: 'hw-dialog', 'aria-labelledby': attrs['aria-labelledby'] ?? `${id}-title`, 'aria-describedby': attrs['aria-describedby'] ?? (props.description ? `${id}-description` : undefined),
133
+ onCancel: (event) => { backdropStarted = false; if (!event.defaultPrevented) {
134
+ event.preventDefault();
135
+ close();
136
+ } },
137
+ onClose: () => { backdropStarted = false; if (model.value.value)
138
+ close(); restoreFocus(previousFocus); },
139
+ onPointerdown: (event) => {
140
+ const bounds = element.value.getBoundingClientRect();
141
+ backdropStarted = !event.defaultPrevented && event.button === 0 && event.target === event.currentTarget &&
142
+ (event.clientX < bounds.left || event.clientX > bounds.right || event.clientY < bounds.top || event.clientY > bounds.bottom);
143
+ },
144
+ onPointercancel: () => { backdropStarted = false; },
145
+ onClick: (event) => {
146
+ const started = backdropStarted;
147
+ backdropStarted = false;
148
+ if (event.defaultPrevented || !props.closeOnBackdrop || !started || event.target !== event.currentTarget)
149
+ return;
150
+ const bounds = element.value.getBoundingClientRect();
151
+ if (event.clientX < bounds.left || event.clientX > bounds.right || event.clientY < bounds.top || event.clientY > bounds.bottom)
152
+ close();
153
+ },
154
+ }), [
155
+ h('header', { class: 'hw-dialog-header' }, [h('h2', { id: `${id}-title` }, props.title), h(Button, { variant: 'ghost', 'aria-label': props.closeLabel, onClick: close }, () => h('span', { class: 'hw-icon', 'data-icon': 'cancel-01', 'data-size': 'md', 'aria-hidden': 'true' }))]),
156
+ h('div', { class: 'hw-dialog-body' }, [props.description && h('p', { id: `${id}-description` }, props.description), slots.default?.({ close })]),
157
+ slots.footer && h('footer', { class: 'hw-dialog-footer' }, slots.footer({ close })),
158
+ ])];
159
+ },
160
+ });
161
+ export const Combobox = defineComponent({
162
+ name: 'HwCombobox', inheritAttrs: false,
163
+ props: { ...decorationProps, options: { type: Array, required: true }, modelValue: String, defaultValue: { type: String, default: '' }, disabled: Boolean, readonly: Boolean,
164
+ emptyMessage: { type: String, default: 'No options found' }, resultsMessage: { type: Function, default: (count) => `${count} results available` }, requiredMessage: { type: String, default: 'Choose an option from the list.' } },
165
+ emits: { 'update:modelValue': (_value) => true, 'update:open': (_open) => true, 'update:query': (_query) => true },
166
+ setup(props, { attrs, emit, expose }) {
167
+ const field = useField(props, attrs);
168
+ const element = ref();
169
+ const root = ref();
170
+ const state = ref(createComboboxState(props.options, props.modelValue ?? props.defaultValue));
171
+ const ancestorDisabled = ref(false);
172
+ const blocked = () => props.disabled || props.readonly || !!(element.value && isDisabled(element.value));
173
+ let disabledObserver;
174
+ onMounted(() => {
175
+ const input = element.value;
176
+ if (!input)
177
+ return;
178
+ const refresh = () => { ancestorDisabled.value = isDisabled(input); };
179
+ const Observer = input.ownerDocument.defaultView?.MutationObserver;
180
+ if (Observer)
181
+ disabledObserver = new Observer(refresh);
182
+ for (let ancestor = input.parentElement; ancestor; ancestor = ancestor.parentElement) {
183
+ if (ancestor.localName === 'fieldset')
184
+ disabledObserver?.observe(ancestor, { attributes: true, attributeFilter: ['disabled'] });
185
+ }
186
+ refresh();
187
+ });
188
+ onBeforeUnmount(() => disabledObserver?.disconnect());
189
+ watch(() => props.disabled || props.readonly || ancestorDisabled.value, unavailable => {
190
+ if (unavailable)
191
+ state.value = { ...state.value, open: false, activeIndex: -1 };
192
+ });
193
+ const effective = computed(() => ({ ...state.value, value: props.modelValue ?? state.value.value,
194
+ query: props.modelValue !== undefined && props.modelValue !== state.value.value ? createComboboxState(props.options, props.modelValue).query : state.value.query,
195
+ open: !props.disabled && !ancestorDisabled.value && !props.readonly && state.value.open }));
196
+ const results = computed(() => getComboboxOptions(effective.value, props.options));
197
+ let lastEmitted;
198
+ function dispatch(event) {
199
+ if (blocked() && event.type !== 'close' && event.type !== 'reset')
200
+ return;
201
+ const previous = effective.value;
202
+ const next = transitionCombobox(previous, event, props.options);
203
+ state.value = next;
204
+ if (next.value !== previous.value) {
205
+ lastEmitted = next.value;
206
+ emit('update:modelValue', next.value);
207
+ }
208
+ if (next.open !== previous.open)
209
+ emit('update:open', next.open);
210
+ }
211
+ watch(() => props.modelValue, value => {
212
+ if (value === undefined)
213
+ return;
214
+ if (value === lastEmitted) {
215
+ lastEmitted = undefined;
216
+ state.value = { ...state.value, value };
217
+ }
218
+ else
219
+ state.value = { ...createComboboxState(props.options, value), open: state.value.open };
220
+ });
221
+ watch(() => props.options, options => {
222
+ if (effective.value.value)
223
+ state.value = { ...createComboboxState(options, effective.value.value), open: state.value.open };
224
+ });
225
+ watchEffect(() => element.value?.setCustomValidity(field.controlAttrs.value.required && !effective.value.value ? props.requiredMessage : ''));
226
+ useFormReset(element, () => dispatch({ type: 'reset', value: props.defaultValue }));
227
+ const outside = (event) => { if (!root.value?.contains(event.target))
228
+ dispatch({ type: 'close' }); };
229
+ onMounted(() => element.value?.ownerDocument.addEventListener('pointerdown', outside));
230
+ onBeforeUnmount(() => element.value?.ownerDocument.removeEventListener('pointerdown', outside));
231
+ expose({ element, focus: () => element.value?.focus(), close: () => dispatch({ type: 'close' }) });
232
+ return () => {
233
+ const { name, form, ...inputAttrs } = attrs;
234
+ const listId = `${field.id.value}-listbox`;
235
+ const active = results.value[state.value.activeIndex];
236
+ const open = effective.value.open;
237
+ const query = effective.value.query;
238
+ return decorate(props, field.id.value, h('div', { ref: root, class: 'hw-combobox', onFocusout: (event) => { if (!root.value?.contains(event.relatedTarget))
239
+ dispatch({ type: 'close' }); } }, [
240
+ h('input', mergeProps(inputAttrs, field.controlAttrs.value, { ref: element, form, disabled: props.disabled, readonly: props.readonly, class: 'hw-input', type: 'text', role: 'combobox', autocomplete: 'off', 'aria-autocomplete': 'list', 'aria-readonly': props.readonly || undefined, 'aria-expanded': open, 'aria-controls': listId,
241
+ 'aria-activedescendant': open && active && !active.disabled ? `${field.id.value}-option-${state.value.activeIndex}` : undefined, value: query,
242
+ onInput: (event) => { const input = event.target; if (blocked()) {
243
+ input.value = query;
244
+ return;
245
+ } const nextQuery = input.value; dispatch({ type: 'input', query: nextQuery }); emit('update:query', nextQuery); },
246
+ onFocus: (event) => { if (!event.defaultPrevented)
247
+ dispatch({ type: 'open' }); },
248
+ onClick: (event) => { if (!event.defaultPrevented && !open)
249
+ dispatch({ type: 'open' }); },
250
+ onKeydown: (event) => {
251
+ if (event.defaultPrevented || event.isComposing || blocked())
252
+ return;
253
+ if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
254
+ if (!open && (event.key === 'Home' || event.key === 'End'))
255
+ return;
256
+ event.preventDefault();
257
+ dispatch({ type: 'navigate', key: event.key });
258
+ }
259
+ else if (event.key === 'Enter' && open && active && !active.disabled) {
260
+ event.preventDefault();
261
+ dispatch({ type: 'select', value: active.value });
262
+ }
263
+ else if (event.key === 'Escape' && open) {
264
+ event.preventDefault();
265
+ event.stopPropagation();
266
+ dispatch({ type: 'close' });
267
+ }
268
+ else if (event.key === 'Tab')
269
+ dispatch({ type: 'close' });
270
+ },
271
+ })),
272
+ h('input', { type: 'hidden', name, form, disabled: props.disabled, value: effective.value.value }),
273
+ h('ul', { id: listId, role: 'listbox', class: 'hw-listbox', 'aria-label': attrs['aria-label'], 'aria-labelledby': field.controlAttrs.value['aria-labelledby'], hidden: !open }, [
274
+ ...results.value.map((option, index) => h('li', { key: option.value, id: `${field.id.value}-option-${index}`, role: 'option', class: 'hw-option', 'aria-selected': effective.value.value === option.value, 'aria-disabled': option.disabled || undefined,
275
+ 'data-active': state.value.activeIndex === index ? 'true' : undefined, 'data-state': state.value.activeIndex === index ? 'active' : undefined,
276
+ onPointerdown: (event) => event.preventDefault(), onClick: () => { if (!option.disabled) {
277
+ dispatch({ type: 'select', value: option.value });
278
+ element.value?.focus();
279
+ } }, }, option.label)), !results.value.length && h('li', { role: 'presentation', class: 'hw-hint' }, props.emptyMessage),
280
+ ]),
281
+ h('span', { class: 'hw-sr-only', role: 'status', 'aria-live': 'polite', 'aria-atomic': 'true' }, open ? props.resultsMessage(results.value.length) : ''),
282
+ ]));
283
+ };
284
+ },
285
+ });
286
+ export const Tooltip = defineComponent({
287
+ name: 'HwTooltip', inheritAttrs: false, props: { content: { type: String, required: true }, placement: { type: String, default: 'top' }, align: { type: String, default: 'start' } },
288
+ setup(props, { attrs, slots }) {
289
+ const id = `hw-${useId()}`;
290
+ const open = ref(false);
291
+ const root = ref();
292
+ let hovered = false, focused = false;
293
+ let hideTimer;
294
+ const show = () => { clearTimeout(hideTimer); open.value = true; };
295
+ const hide = () => { clearTimeout(hideTimer); open.value = false; };
296
+ const leave = () => {
297
+ hovered = false;
298
+ if (!focused)
299
+ hideTimer = setTimeout(hide, 120);
300
+ };
301
+ const escape = (event) => {
302
+ if (!open.value || event.key !== 'Escape' || event.defaultPrevented)
303
+ return;
304
+ event.preventDefault();
305
+ event.stopPropagation();
306
+ hide();
307
+ };
308
+ watch(open, (visible, _, cleanup) => {
309
+ const element = root.value;
310
+ if (!visible || !element)
311
+ return;
312
+ const doc = element.ownerDocument;
313
+ const outside = (event) => { if (!element.contains(event.target))
314
+ hide(); };
315
+ doc.addEventListener('keydown', escape);
316
+ doc.addEventListener('pointerdown', outside);
317
+ cleanup(() => { doc.removeEventListener('keydown', escape); doc.removeEventListener('pointerdown', outside); });
318
+ }, { flush: 'sync' });
319
+ onBeforeUnmount(() => clearTimeout(hideTimer));
320
+ return () => {
321
+ const children = slots.default?.() ?? [];
322
+ return h('span', mergeProps(attrs, {
323
+ ref: root, 'data-hw': 'tooltip',
324
+ onMouseenter: () => { hovered = true; show(); }, onMouseleave: leave,
325
+ onFocusin: () => { focused = true; show(); },
326
+ onFocusout: (event) => {
327
+ if (root.value?.contains(event.relatedTarget))
328
+ return;
329
+ focused = false;
330
+ if (!hovered)
331
+ hide();
332
+ },
333
+ onKeydown: escape,
334
+ }), [
335
+ ...children.map(child => isVNode(child) ? cloneVNode(child, { 'aria-describedby': joinIds(child.props?.['aria-describedby'], id) }) : child),
336
+ h('span', { id, role: 'tooltip', class: 'hw-tooltip', 'data-placement': props.placement, 'data-align': props.align, hidden: !open.value }, props.content),
337
+ ]);
338
+ };
339
+ },
340
+ });
341
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}