@refrakt-md/behaviors 0.8.0 → 0.8.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/behaviors/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAqP3E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/behaviors/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CA0P3E"}
@@ -89,11 +89,9 @@ export function searchBehavior(container) {
89
89
  };
90
90
  d.addEventListener('keydown', onKeydown);
91
91
  cleanups.push(() => d.removeEventListener('keydown', onKeydown));
92
- // Close on backdrop click
92
+ // Close on backdrop click (target is the dialog itself, not a child)
93
93
  const onClick = (e) => {
94
- const rect = d.getBoundingClientRect();
95
- if (e.clientX < rect.left || e.clientX > rect.right ||
96
- e.clientY < rect.top || e.clientY > rect.bottom) {
94
+ if (e.target === d) {
97
95
  d.close();
98
96
  }
99
97
  };
@@ -117,8 +115,9 @@ export function searchBehavior(container) {
117
115
  // Dynamic path prevents TypeScript from resolving the module at compile time.
118
116
  // Pagefind generates this file at build time in the site's output directory.
119
117
  const path = '/pagefind/pagefind.js';
120
- pagefind = await (Function('p', 'return import(p)')(path));
121
- await pagefind.init();
118
+ const pf = await (Function('p', 'return import(p)')(path));
119
+ await pf.init();
120
+ pagefind = pf;
122
121
  return pagefind;
123
122
  }
124
123
  catch {
@@ -146,32 +145,41 @@ export function searchBehavior(container) {
146
145
  }
147
146
  return;
148
147
  }
149
- const search = await pf.debouncedSearch(query);
150
- if (!search || !search.results)
151
- return;
152
- // Load first 8 results
153
- const results = await Promise.all(search.results.slice(0, 8).map((r) => r.data()));
154
- if (results.length === 0) {
148
+ try {
149
+ const search = await pf.search(query);
150
+ if (!search || !search.results)
151
+ return;
152
+ // Load first 8 results
153
+ const results = await Promise.all(search.results.slice(0, 8).map((r) => r.data()));
154
+ if (results.length === 0) {
155
+ resultsContainer.innerHTML = '';
156
+ if (emptyEl) {
157
+ emptyEl.textContent = 'No results found.';
158
+ emptyEl.hidden = false;
159
+ }
160
+ activeIndex = -1;
161
+ return;
162
+ }
163
+ if (emptyEl)
164
+ emptyEl.hidden = true;
165
+ activeIndex = -1;
166
+ resultsContainer.innerHTML = results
167
+ .map((r) => {
168
+ const url = r.url.replace(/\/index\.html$/, '/').replace(/\.html$/, '');
169
+ return `<a class="rf-search-result" href="${escapeAttr(url)}">
170
+ <span class="rf-search-result__title">${escapeHtml(r.meta?.title ?? url)}</span>
171
+ <span class="rf-search-result__excerpt">${r.excerpt ?? ''}</span>
172
+ </a>`;
173
+ })
174
+ .join('');
175
+ }
176
+ catch {
155
177
  resultsContainer.innerHTML = '';
156
178
  if (emptyEl) {
157
- emptyEl.textContent = 'No results found.';
179
+ emptyEl.textContent = 'Search is not available.';
158
180
  emptyEl.hidden = false;
159
181
  }
160
- activeIndex = -1;
161
- return;
162
182
  }
163
- if (emptyEl)
164
- emptyEl.hidden = true;
165
- activeIndex = -1;
166
- resultsContainer.innerHTML = results
167
- .map((r) => {
168
- const url = r.url.replace(/\/index\.html$/, '/').replace(/\.html$/, '');
169
- return `<a class="rf-search-result" href="${escapeAttr(url)}">
170
- <span class="rf-search-result__title">${escapeHtml(r.meta?.title ?? url)}</span>
171
- <span class="rf-search-result__excerpt">${r.excerpt ?? ''}</span>
172
- </a>`;
173
- })
174
- .join('');
175
183
  }
176
184
  function navigateResults(direction) {
177
185
  if (!resultsContainer)
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/behaviors/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/behaviors/search.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,15 @@ import type { CleanupFn } from '../types.js';
2
2
  /**
3
3
  * Tabs behavior for `[data-rune="tab-group"]` and `[data-rune="code-group"]`.
4
4
  *
5
- * Discovers Tab/TabPanel items in the identity-transformed HTML structure,
6
- * creates a tablist bar with buttons, and toggles panel visibility.
5
+ * The rune schemas produce the correct accessible structure:
6
+ * `<div role="tablist">` with `<button role="tab">` children, and
7
+ * `<div data-name="panels">` with `<div role="tabpanel">` children.
8
+ *
9
+ * This behavior adds ARIA wiring, click/keyboard handlers, and panel switching.
7
10
  *
8
11
  * - ArrowLeft/ArrowRight keyboard navigation (with wrapping)
9
12
  * - Home/End jump to first/last tab
10
- * - ARIA: role="tablist", role="tab", role="tabpanel", aria-selected, aria-controls
13
+ * - ARIA: aria-selected, aria-controls, aria-labelledby
11
14
  */
12
15
  export declare function tabsBehavior(el: HTMLElement): CleanupFn;
13
16
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/behaviors/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,SAAS,CAqJvD"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/behaviors/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,SAAS,CA6GvD"}
@@ -2,83 +2,49 @@ import { uniqueId } from '../utils.js';
2
2
  /**
3
3
  * Tabs behavior for `[data-rune="tab-group"]` and `[data-rune="code-group"]`.
4
4
  *
5
- * Discovers Tab/TabPanel items in the identity-transformed HTML structure,
6
- * creates a tablist bar with buttons, and toggles panel visibility.
5
+ * The rune schemas produce the correct accessible structure:
6
+ * `<div role="tablist">` with `<button role="tab">` children, and
7
+ * `<div data-name="panels">` with `<div role="tabpanel">` children.
8
+ *
9
+ * This behavior adds ARIA wiring, click/keyboard handlers, and panel switching.
7
10
  *
8
11
  * - ArrowLeft/ArrowRight keyboard navigation (with wrapping)
9
12
  * - Home/End jump to first/last tab
10
- * - ARIA: role="tablist", role="tab", role="tabpanel", aria-selected, aria-controls
13
+ * - ARIA: aria-selected, aria-controls, aria-labelledby
11
14
  */
12
15
  export function tabsBehavior(el) {
13
- // The rune schema produces two <ul> elements:
14
- // <ul data-name="tabs"> for Tab items, <ul data-name="panels"> for TabPanel items.
15
- // Fall back to positional lookup for compatibility with single-<ul> structures.
16
- const allUls = el.querySelectorAll('ul');
17
- const tabsUl = el.querySelector('ul[data-name="tabs"]') || allUls[0];
18
- const panelsUl = el.querySelector('ul[data-name="panels"]') || allUls[1] || tabsUl;
19
- if (!tabsUl)
16
+ const tabBar = el.querySelector('[data-name="tabs"]');
17
+ const panelsContainer = el.querySelector('[data-name="panels"]');
18
+ if (!tabBar || !panelsContainer)
20
19
  return () => { };
21
- const tabItems = Array.from(tabsUl.children).filter((c) => c instanceof HTMLElement && c.tagName === 'LI' &&
22
- c.getAttribute('data-rune') === 'tab');
23
- const panelItems = Array.from(panelsUl.children).filter((c) => c instanceof HTMLElement && c.tagName === 'LI' &&
24
- c.getAttribute('data-rune') === 'tab-panel');
25
- if (tabItems.length === 0 || panelItems.length === 0)
20
+ const buttons = Array.from(tabBar.children).filter((c) => c instanceof HTMLElement && c.tagName === 'BUTTON');
21
+ const panelItems = Array.from(panelsContainer.children).filter((c) => c instanceof HTMLElement);
22
+ if (buttons.length === 0 || panelItems.length === 0)
26
23
  return () => { };
27
- // Extract tab names from Tab items
28
- const tabNames = tabItems.map((item) => {
29
- const nameEl = item.querySelector('[data-field="name"]');
30
- return nameEl?.textContent?.trim() || item.textContent?.trim() || '';
31
- });
32
24
  // Generate IDs for ARIA wiring
33
- const tabIds = tabNames.map(() => uniqueId('rf-tab'));
25
+ const tabIds = buttons.map(() => uniqueId('rf-tab'));
34
26
  const panelIds = panelItems.map(() => uniqueId('rf-tabpanel'));
35
- // Create tab bar
36
- const tabBar = document.createElement('div');
37
- tabBar.setAttribute('role', 'tablist');
38
- tabBar.className = el.getAttribute('data-rune') === 'code-group'
39
- ? 'rf-codegroup__tabs'
40
- : 'rf-tabs__bar';
41
- const buttonClass = el.getAttribute('data-rune') === 'code-group'
42
- ? 'rf-codegroup__tab'
43
- : 'rf-tabs__button';
44
- const buttons = tabNames.map((name, i) => {
45
- const btn = document.createElement('button');
46
- btn.className = buttonClass;
47
- btn.setAttribute('role', 'tab');
48
- btn.setAttribute('aria-selected', String(i === 0));
49
- btn.id = tabIds[i];
27
+ // Wire up ARIA attributes
28
+ for (let i = 0; i < buttons.length; i++) {
29
+ buttons[i].id = tabIds[i];
50
30
  if (panelIds[i])
51
- btn.setAttribute('aria-controls', panelIds[i]);
52
- btn.textContent = name;
53
- tabBar.appendChild(btn);
54
- return btn;
55
- });
56
- // Insert tab bar — for codegroup, after topbar; for tabs, before the tabs ul
57
- const topbar = el.querySelector('[data-name="topbar"]');
58
- if (topbar) {
59
- topbar.after(tabBar);
31
+ buttons[i].setAttribute('aria-controls', panelIds[i]);
60
32
  }
61
- else {
62
- tabsUl.before(tabBar);
63
- }
64
- // Set up panels with ARIA attributes
65
33
  for (let i = 0; i < panelItems.length; i++) {
66
- panelItems[i].setAttribute('role', 'tabpanel');
67
34
  if (panelIds[i])
68
35
  panelItems[i].id = panelIds[i];
69
36
  if (tabIds[i])
70
37
  panelItems[i].setAttribute('aria-labelledby', tabIds[i]);
71
38
  }
72
- // Hide Tab label items (replaced by tablist buttons)
73
- for (const item of tabItems) {
74
- item.hidden = true;
75
- }
39
+ // Derive the active modifier class from the first button's BEM class
40
+ const buttonClass = buttons[0].className.split(' ')[0] || '';
76
41
  let activeIndex = 0;
77
42
  function setActive(index) {
78
43
  activeIndex = index;
79
44
  for (let i = 0; i < buttons.length; i++) {
80
45
  buttons[i].setAttribute('aria-selected', String(i === activeIndex));
81
- buttons[i].classList.toggle(`${buttonClass}--active`, i === activeIndex);
46
+ if (buttonClass)
47
+ buttons[i].classList.toggle(`${buttonClass}--active`, i === activeIndex);
82
48
  }
83
49
  for (let i = 0; i < panelItems.length; i++) {
84
50
  panelItems[i].hidden = i !== activeIndex;
@@ -126,16 +92,18 @@ export function tabsBehavior(el) {
126
92
  cleanups.push(() => tabBar.removeEventListener('keydown', onKeydown));
127
93
  return () => {
128
94
  cleanups.forEach((fn) => fn());
129
- // Restore DOM: remove tab bar, unhide items
130
- tabBar.remove();
131
- for (const item of tabItems) {
132
- item.hidden = false;
95
+ // Restore ARIA state
96
+ for (const btn of buttons) {
97
+ btn.removeAttribute('id');
98
+ btn.removeAttribute('aria-controls');
99
+ btn.removeAttribute('aria-selected');
100
+ if (buttonClass)
101
+ btn.classList.remove(`${buttonClass}--active`);
133
102
  }
134
- for (const item of panelItems) {
135
- item.hidden = false;
136
- item.removeAttribute('role');
137
- item.removeAttribute('id');
138
- item.removeAttribute('aria-labelledby');
103
+ for (const panel of panelItems) {
104
+ panel.hidden = false;
105
+ panel.removeAttribute('id');
106
+ panel.removeAttribute('aria-labelledby');
139
107
  }
140
108
  };
141
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/behaviors/tabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/behaviors/tabs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@refrakt-md/behaviors",
3
3
  "description": "Vanilla JS behavior library for refrakt.md runes — tabs, accordions, copy buttons, keyboard navigation",
4
- "version": "0.8.0",
4
+ "version": "0.8.2",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {