basecoat-css 0.2.7 → 0.3.0

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/dist/js/select.js CHANGED
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  const initSelect = (selectComponent) => {
3
3
  const trigger = selectComponent.querySelector(':scope > button');
4
- const selectedValue = trigger.querySelector(':scope > span');
4
+ const selectedLabel = trigger.querySelector(':scope > span');
5
5
  const popover = selectComponent.querySelector(':scope > [data-popover]');
6
6
  const listbox = popover.querySelector('[role="listbox"]');
7
7
  const input = selectComponent.querySelector(':scope > input[type="hidden"]');
@@ -47,10 +47,16 @@
47
47
 
48
48
  const updateValue = (option) => {
49
49
  if (option) {
50
- selectedValue.innerHTML = option.dataset.label || option.innerHTML;
50
+ selectedLabel.innerHTML = option.dataset.label || option.innerHTML;
51
51
  input.value = option.dataset.value;
52
52
  listbox.querySelector('[role="option"][aria-selected="true"]')?.removeAttribute('aria-selected');
53
53
  option.setAttribute('aria-selected', 'true');
54
+
55
+ const event = new CustomEvent('change', {
56
+ detail: { value: option.dataset.value },
57
+ bubbles: true
58
+ });
59
+ selectComponent.dispatchEvent(event);
54
60
  }
55
61
  };
56
62
 
@@ -80,30 +86,19 @@
80
86
  const selectOption = (option) => {
81
87
  if (!option) return;
82
88
 
83
- if (option.dataset.value != null) {
89
+ const oldValue = input.value;
90
+ const newValue = option.dataset.value;
91
+
92
+ if (newValue != null && newValue !== oldValue) {
84
93
  updateValue(option);
85
94
  }
86
95
 
87
96
  closePopover();
88
-
89
- const event = new CustomEvent('change', {
90
- detail: { value: option.dataset.value },
91
- bubbles: true
92
- });
93
- selectComponent.dispatchEvent(event);
94
97
  };
95
98
 
96
99
  const selectByValue = (value) => {
97
100
  const option = options.find(opt => opt.dataset.value === value);
98
- if (option) {
99
- updateValue(option);
100
-
101
- const event = new CustomEvent('change', {
102
- detail: { value: option.dataset.value },
103
- bubbles: true
104
- });
105
- selectComponent.dispatchEvent(event);
106
- }
101
+ selectOption(option);
107
102
  };
108
103
 
109
104
  if (filter) {
@@ -277,20 +272,7 @@
277
272
  selectComponent.dispatchEvent(new CustomEvent('basecoat:initialized'));
278
273
  };
279
274
 
280
- document.querySelectorAll('div.select:not([data-select-initialized])').forEach(initSelect);
281
-
282
- const observer = new MutationObserver((mutations) => {
283
- mutations.forEach((mutation) => {
284
- mutation.addedNodes.forEach((node) => {
285
- if (node.nodeType === Node.ELEMENT_NODE) {
286
- if (node.matches('div.select:not([data-select-initialized])')) {
287
- initSelect(node);
288
- }
289
- node.querySelectorAll('div.select:not([data-select-initialized])').forEach(initSelect);
290
- }
291
- });
292
- });
293
- });
294
-
295
- observer.observe(document.body, { childList: true, subtree: true });
275
+ if (window.basecoat) {
276
+ window.basecoat.register('select', 'div.select:not([data-select-initialized])', initSelect);
277
+ }
296
278
  })();
@@ -1 +1 @@
1
- (()=>{const e=e=>{const t=e.querySelector(":scope > button"),a=t.querySelector(":scope > span"),n=e.querySelector(":scope > [data-popover]"),i=n.querySelector('[role="listbox"]'),r=e.querySelector(':scope > input[type="hidden"]'),o=e.querySelector('header input[type="text"]');if(!(t&&n&&i&&r)){const a=[];return t||a.push("trigger"),n||a.push("popover"),i||a.push("listbox"),r||a.push("input"),void console.error(`Select component initialisation failed. Missing element(s): ${a.join(", ")}`,e)}const s=Array.from(i.querySelectorAll('[role="option"]'));let d=[...s],c=-1;const l=e=>{if(c>-1&&s[c]&&s[c].classList.remove("active"),c=e,c>-1){const e=s[c];e.classList.add("active"),e.id?t.setAttribute("aria-activedescendant",e.id):t.removeAttribute("aria-activedescendant")}else t.removeAttribute("aria-activedescendant")},u=()=>{const e=getComputedStyle(n);return parseFloat(e.transitionDuration)>0||parseFloat(e.transitionDelay)>0},v=e=>{e&&(a.innerHTML=e.dataset.label||e.innerHTML,r.value=e.dataset.value,i.querySelector('[role="option"][aria-selected="true"]')?.removeAttribute("aria-selected"),e.setAttribute("aria-selected","true"))},p=(e=!0)=>{if("true"!==n.getAttribute("aria-hidden")){if(o){const e=()=>{o.value="",d=[...s],s.forEach((e=>e.setAttribute("aria-hidden","false")))};u()?n.addEventListener("transitionend",e,{once:!0}):e()}e&&t.focus(),n.setAttribute("aria-hidden","true"),t.setAttribute("aria-expanded","false"),l(-1)}},b=t=>{if(!t)return;null!=t.dataset.value&&v(t),p();const a=new CustomEvent("change",{detail:{value:t.dataset.value},bubbles:!0});e.dispatchEvent(a)};if(o){const e=()=>{const e=o.value.trim().toLowerCase();l(-1),d=[],s.forEach((t=>{const a=(t.dataset.label||t.textContent).trim().toLowerCase().includes(e);t.setAttribute("aria-hidden",String(!a)),a&&d.push(t)}))};o.addEventListener("input",e)}let f=s.find((e=>e.dataset.value===r.value));!f&&s.length>0&&(f=s[0]),v(f);const E=e=>{const a="false"===n.getAttribute("aria-hidden");if(!["ArrowDown","ArrowUp","Enter","Home","End","Escape"].includes(e.key))return;if(!a)return void("Enter"!==e.key&&"Escape"!==e.key&&(e.preventDefault(),t.click()));if(e.preventDefault(),"Escape"===e.key)return void p();if("Enter"===e.key)return void(c>-1&&b(s[c]));if(0===d.length)return;const i=c>-1?d.indexOf(s[c]):-1;let r=i;switch(e.key){case"ArrowDown":i<d.length-1&&(r=i+1);break;case"ArrowUp":i>0?r=i-1:-1===i&&(r=0);break;case"Home":r=0;break;case"End":r=d.length-1}if(r!==i){const e=d[r];l(s.indexOf(e)),e.scrollIntoView({block:"nearest",behavior:"smooth"})}};i.addEventListener("mousemove",(e=>{const t=e.target.closest('[role="option"]');if(t&&d.includes(t)){const e=s.indexOf(t);e!==c&&l(e)}})),i.addEventListener("mouseleave",(()=>{const e=i.querySelector('[role="option"][aria-selected="true"]');l(e?s.indexOf(e):-1)})),t.addEventListener("keydown",E),o&&o.addEventListener("keydown",E);t.addEventListener("click",(()=>{"true"===t.getAttribute("aria-expanded")?p():(()=>{document.dispatchEvent(new CustomEvent("basecoat:popover",{detail:{source:e}})),o&&(u()?n.addEventListener("transitionend",(()=>{o.focus()}),{once:!0}):o.focus()),n.setAttribute("aria-hidden","false"),t.setAttribute("aria-expanded","true");const a=i.querySelector('[role="option"][aria-selected="true"]');a&&(l(s.indexOf(a)),a.scrollIntoView({block:"nearest"}))})()})),i.addEventListener("click",(e=>{const t=e.target.closest('[role="option"]');t&&b(t)})),document.addEventListener("click",(t=>{e.contains(t.target)||p(!1)})),document.addEventListener("basecoat:popover",(t=>{t.detail.source!==e&&p(!1)})),n.setAttribute("aria-hidden","true"),e.selectByValue=t=>{const a=s.find((e=>e.dataset.value===t));if(a){v(a);const t=new CustomEvent("change",{detail:{value:a.dataset.value},bubbles:!0});e.dispatchEvent(t)}},e.dataset.selectInitialized=!0,e.dispatchEvent(new CustomEvent("basecoat:initialized"))};document.querySelectorAll("div.select:not([data-select-initialized])").forEach(e);new MutationObserver((t=>{t.forEach((t=>{t.addedNodes.forEach((t=>{t.nodeType===Node.ELEMENT_NODE&&(t.matches("div.select:not([data-select-initialized])")&&e(t),t.querySelectorAll("div.select:not([data-select-initialized])").forEach(e))}))}))})).observe(document.body,{childList:!0,subtree:!0})})();
1
+ (()=>{const e=e=>{const t=e.querySelector(":scope > button"),n=t.querySelector(":scope > span"),a=e.querySelector(":scope > [data-popover]"),r=a.querySelector('[role="listbox"]'),i=e.querySelector(':scope > input[type="hidden"]'),o=e.querySelector('header input[type="text"]');if(!(t&&a&&r&&i)){const n=[];return t||n.push("trigger"),a||n.push("popover"),r||n.push("listbox"),i||n.push("input"),void console.error(`Select component initialisation failed. Missing element(s): ${n.join(", ")}`,e)}const s=Array.from(r.querySelectorAll('[role="option"]'));let c=[...s],d=-1;const l=e=>{if(d>-1&&s[d]&&s[d].classList.remove("active"),d=e,d>-1){const e=s[d];e.classList.add("active"),e.id?t.setAttribute("aria-activedescendant",e.id):t.removeAttribute("aria-activedescendant")}else t.removeAttribute("aria-activedescendant")},u=()=>{const e=getComputedStyle(a);return parseFloat(e.transitionDuration)>0||parseFloat(e.transitionDelay)>0},v=t=>{if(t){n.innerHTML=t.dataset.label||t.innerHTML,i.value=t.dataset.value,r.querySelector('[role="option"][aria-selected="true"]')?.removeAttribute("aria-selected"),t.setAttribute("aria-selected","true");const a=new CustomEvent("change",{detail:{value:t.dataset.value},bubbles:!0});e.dispatchEvent(a)}},p=(e=!0)=>{if("true"!==a.getAttribute("aria-hidden")){if(o){const e=()=>{o.value="",c=[...s],s.forEach((e=>e.setAttribute("aria-hidden","false")))};u()?a.addEventListener("transitionend",e,{once:!0}):e()}e&&t.focus(),a.setAttribute("aria-hidden","true"),t.setAttribute("aria-expanded","false"),l(-1)}},b=e=>{if(!e)return;const t=i.value,n=e.dataset.value;null!=n&&n!==t&&v(e),p()};if(o){const e=()=>{const e=o.value.trim().toLowerCase();l(-1),c=[],s.forEach((t=>{const n=(t.dataset.label||t.textContent).trim().toLowerCase().includes(e);t.setAttribute("aria-hidden",String(!n)),n&&c.push(t)}))};o.addEventListener("input",e)}let f=s.find((e=>e.dataset.value===i.value));!f&&s.length>0&&(f=s[0]),v(f);const h=e=>{const n="false"===a.getAttribute("aria-hidden");if(!["ArrowDown","ArrowUp","Enter","Home","End","Escape"].includes(e.key))return;if(!n)return void("Enter"!==e.key&&"Escape"!==e.key&&(e.preventDefault(),t.click()));if(e.preventDefault(),"Escape"===e.key)return void p();if("Enter"===e.key)return void(d>-1&&b(s[d]));if(0===c.length)return;const r=d>-1?c.indexOf(s[d]):-1;let i=r;switch(e.key){case"ArrowDown":r<c.length-1&&(i=r+1);break;case"ArrowUp":r>0?i=r-1:-1===r&&(i=0);break;case"Home":i=0;break;case"End":i=c.length-1}if(i!==r){const e=c[i];l(s.indexOf(e)),e.scrollIntoView({block:"nearest",behavior:"smooth"})}};r.addEventListener("mousemove",(e=>{const t=e.target.closest('[role="option"]');if(t&&c.includes(t)){const e=s.indexOf(t);e!==d&&l(e)}})),r.addEventListener("mouseleave",(()=>{const e=r.querySelector('[role="option"][aria-selected="true"]');l(e?s.indexOf(e):-1)})),t.addEventListener("keydown",h),o&&o.addEventListener("keydown",h);t.addEventListener("click",(()=>{"true"===t.getAttribute("aria-expanded")?p():(()=>{document.dispatchEvent(new CustomEvent("basecoat:popover",{detail:{source:e}})),o&&(u()?a.addEventListener("transitionend",(()=>{o.focus()}),{once:!0}):o.focus()),a.setAttribute("aria-hidden","false"),t.setAttribute("aria-expanded","true");const n=r.querySelector('[role="option"][aria-selected="true"]');n&&(l(s.indexOf(n)),n.scrollIntoView({block:"nearest"}))})()})),r.addEventListener("click",(e=>{const t=e.target.closest('[role="option"]');t&&b(t)})),document.addEventListener("click",(t=>{e.contains(t.target)||p(!1)})),document.addEventListener("basecoat:popover",(t=>{t.detail.source!==e&&p(!1)})),a.setAttribute("aria-hidden","true"),e.selectByValue=e=>{const t=s.find((t=>t.dataset.value===e));b(t)},e.dataset.selectInitialized=!0,e.dispatchEvent(new CustomEvent("basecoat:initialized"))};window.basecoat&&window.basecoat.register("select","div.select:not([data-select-initialized])",e)})();
@@ -98,20 +98,7 @@
98
98
  sidebarComponent.dispatchEvent(new CustomEvent('basecoat:initialized'));
99
99
  };
100
100
 
101
- document.querySelectorAll('.sidebar:not([data-sidebar-initialized])').forEach(initSidebar);
102
-
103
- const observer = new MutationObserver((mutations) => {
104
- mutations.forEach((mutation) => {
105
- mutation.addedNodes.forEach((node) => {
106
- if (node.nodeType === Node.ELEMENT_NODE) {
107
- if (node.matches('.sidebar:not([data-sidebar-initialized])')) {
108
- initSidebar(node);
109
- }
110
- node.querySelectorAll('.sidebar:not([data-sidebar-initialized])').forEach(initSidebar);
111
- }
112
- });
113
- });
114
- });
115
-
116
- observer.observe(document.body, { childList: true, subtree: true });
101
+ if (window.basecoat) {
102
+ window.basecoat.register('sidebar', '.sidebar:not([data-sidebar-initialized])', initSidebar);
103
+ }
117
104
  })();
@@ -1 +1 @@
1
- (()=>{if(!window.history.__basecoatPatched){const e=window.history.pushState;window.history.pushState=function(...t){e.apply(this,t),window.dispatchEvent(new Event("basecoat:locationchange"))};const t=window.history.replaceState;window.history.replaceState=function(...e){t.apply(this,e),window.dispatchEvent(new Event("basecoat:locationchange"))},window.history.__basecoatPatched=!0}const e=e=>{const t="false"!==e.dataset.initialOpen,a="true"===e.dataset.initialMobileOpen,i=parseInt(e.dataset.breakpoint)||768;let n=i>0?window.innerWidth>=i?t:a:t;const o=()=>{const t=window.location.pathname.replace(/\/$/,"");e.querySelectorAll("a").forEach((e=>{if(e.hasAttribute("data-ignore-current"))return;new URL(e.href).pathname.replace(/\/$/,"")===t?e.setAttribute("aria-current","page"):e.removeAttribute("aria-current")}))},d=()=>{e.setAttribute("aria-hidden",!n),n?e.removeAttribute("inert"):e.setAttribute("inert","")},r=e=>{n=e,d()},c=e.id;document.addEventListener("basecoat:sidebar",(e=>{if(!e.detail?.id||e.detail.id===c)switch(e.detail?.action){case"open":r(!0);break;case"close":r(!1);break;default:r(!n)}})),e.addEventListener("click",(t=>{const a=t.target,n=e.querySelector("nav");if(window.innerWidth<i&&a.closest("a, button")&&!a.closest("[data-keep-mobile-sidebar-open]"))return document.activeElement&&document.activeElement.blur(),void r(!1);(a===e||n&&!n.contains(a))&&(document.activeElement&&document.activeElement.blur(),r(!1))})),window.addEventListener("popstate",o),window.addEventListener("basecoat:locationchange",o),d(),o(),e.dataset.sidebarInitialized=!0,e.dispatchEvent(new CustomEvent("basecoat:initialized"))};document.querySelectorAll(".sidebar:not([data-sidebar-initialized])").forEach(e);new MutationObserver((t=>{t.forEach((t=>{t.addedNodes.forEach((t=>{t.nodeType===Node.ELEMENT_NODE&&(t.matches(".sidebar:not([data-sidebar-initialized])")&&e(t),t.querySelectorAll(".sidebar:not([data-sidebar-initialized])").forEach(e))}))}))})).observe(document.body,{childList:!0,subtree:!0})})();
1
+ (()=>{if(!window.history.__basecoatPatched){const t=window.history.pushState;window.history.pushState=function(...e){t.apply(this,e),window.dispatchEvent(new Event("basecoat:locationchange"))};const e=window.history.replaceState;window.history.replaceState=function(...t){e.apply(this,t),window.dispatchEvent(new Event("basecoat:locationchange"))},window.history.__basecoatPatched=!0}const t=t=>{const e="false"!==t.dataset.initialOpen,a="true"===t.dataset.initialMobileOpen,i=parseInt(t.dataset.breakpoint)||768;let n=i>0?window.innerWidth>=i?e:a:e;const o=()=>{const e=window.location.pathname.replace(/\/$/,"");t.querySelectorAll("a").forEach((t=>{if(t.hasAttribute("data-ignore-current"))return;new URL(t.href).pathname.replace(/\/$/,"")===e?t.setAttribute("aria-current","page"):t.removeAttribute("aria-current")}))},r=()=>{t.setAttribute("aria-hidden",!n),n?t.removeAttribute("inert"):t.setAttribute("inert","")},d=t=>{n=t,r()},s=t.id;document.addEventListener("basecoat:sidebar",(t=>{if(!t.detail?.id||t.detail.id===s)switch(t.detail?.action){case"open":d(!0);break;case"close":d(!1);break;default:d(!n)}})),t.addEventListener("click",(e=>{const a=e.target,n=t.querySelector("nav");if(window.innerWidth<i&&a.closest("a, button")&&!a.closest("[data-keep-mobile-sidebar-open]"))return document.activeElement&&document.activeElement.blur(),void d(!1);(a===t||n&&!n.contains(a))&&(document.activeElement&&document.activeElement.blur(),d(!1))})),window.addEventListener("popstate",o),window.addEventListener("basecoat:locationchange",o),r(),o(),t.dataset.sidebarInitialized=!0,t.dispatchEvent(new CustomEvent("basecoat:initialized"))};window.basecoat&&window.basecoat.register("sidebar",".sidebar:not([data-sidebar-initialized])",t)})();
package/dist/js/tabs.js CHANGED
@@ -57,20 +57,7 @@
57
57
  tabsComponent.dispatchEvent(new CustomEvent('basecoat:initialized'));
58
58
  };
59
59
 
60
- document.querySelectorAll('.tabs:not([data-tabs-initialized])').forEach(initTabs);
61
-
62
- const observer = new MutationObserver((mutations) => {
63
- mutations.forEach((mutation) => {
64
- mutation.addedNodes.forEach((node) => {
65
- if (node.nodeType === Node.ELEMENT_NODE) {
66
- if (node.matches('.tabs:not([data-tabs-initialized])')) {
67
- initTabs(node);
68
- }
69
- node.querySelectorAll('.tabs:not([data-tabs-initialized])').forEach(initTabs);
70
- }
71
- });
72
- });
73
- });
74
-
75
- observer.observe(document.body, { childList: true, subtree: true });
60
+ if (window.basecoat) {
61
+ window.basecoat.register('tabs', '.tabs:not([data-tabs-initialized])', initTabs);
62
+ }
76
63
  })();
@@ -1 +1 @@
1
- (()=>{const e=e=>{const t=e.querySelector('[role="tablist"]');if(!t)return;const a=Array.from(t.querySelectorAll('[role="tab"]')),r=a.map((e=>document.getElementById(e.getAttribute("aria-controls")))).filter(Boolean),n=e=>{a.forEach(((e,t)=>{e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1"),r[t]&&(r[t].hidden=!0)})),e.setAttribute("aria-selected","true"),e.setAttribute("tabindex","0");const t=document.getElementById(e.getAttribute("aria-controls"));t&&(t.hidden=!1)};t.addEventListener("click",(e=>{const t=e.target.closest('[role="tab"]');t&&n(t)})),t.addEventListener("keydown",(e=>{const t=e.target;if(!a.includes(t))return;let r;const i=a.indexOf(t);switch(e.key){case"ArrowRight":r=a[(i+1)%a.length];break;case"ArrowLeft":r=a[(i-1+a.length)%a.length];break;case"Home":r=a[0];break;case"End":r=a[a.length-1];break;default:return}e.preventDefault(),n(r),r.focus()})),e.dataset.tabsInitialized=!0,e.dispatchEvent(new CustomEvent("basecoat:initialized"))};document.querySelectorAll(".tabs:not([data-tabs-initialized])").forEach(e);new MutationObserver((t=>{t.forEach((t=>{t.addedNodes.forEach((t=>{t.nodeType===Node.ELEMENT_NODE&&(t.matches(".tabs:not([data-tabs-initialized])")&&e(t),t.querySelectorAll(".tabs:not([data-tabs-initialized])").forEach(e))}))}))})).observe(document.body,{childList:!0,subtree:!0})})();
1
+ (()=>{const t=t=>{const e=t.querySelector('[role="tablist"]');if(!e)return;const a=Array.from(e.querySelectorAll('[role="tab"]')),r=a.map((t=>document.getElementById(t.getAttribute("aria-controls")))).filter(Boolean),n=t=>{a.forEach(((t,e)=>{t.setAttribute("aria-selected","false"),t.setAttribute("tabindex","-1"),r[e]&&(r[e].hidden=!0)})),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0");const e=document.getElementById(t.getAttribute("aria-controls"));e&&(e.hidden=!1)};e.addEventListener("click",(t=>{const e=t.target.closest('[role="tab"]');e&&n(e)})),e.addEventListener("keydown",(t=>{const e=t.target;if(!a.includes(e))return;let r;const i=a.indexOf(e);switch(t.key){case"ArrowRight":r=a[(i+1)%a.length];break;case"ArrowLeft":r=a[(i-1+a.length)%a.length];break;case"Home":r=a[0];break;case"End":r=a[a.length-1];break;default:return}t.preventDefault(),n(r),r.focus()})),t.dataset.tabsInitialized=!0,t.dispatchEvent(new CustomEvent("basecoat:initialized"))};window.basecoat&&window.basecoat.register("tabs",".tabs:not([data-tabs-initialized])",t)})();
package/dist/js/toast.js CHANGED
@@ -164,9 +164,6 @@
164
164
  return template.content.firstChild;
165
165
  }
166
166
 
167
- const initialToaster = document.getElementById('toaster');
168
- if (initialToaster) initToaster(initialToaster);
169
-
170
167
  document.addEventListener('basecoat:toast', (event) => {
171
168
  if (!toaster) {
172
169
  console.error('Cannot create toast: toaster container not found on page.');
@@ -177,21 +174,8 @@
177
174
  toaster.appendChild(toastElement);
178
175
  });
179
176
 
180
- const observer = new MutationObserver((mutations) => {
181
- mutations.forEach((mutation) => {
182
- mutation.addedNodes.forEach((node) => {
183
- if (node.nodeType !== Node.ELEMENT_NODE) return;
184
-
185
- if (node.matches('#toaster')) {
186
- initToaster(node);
187
- }
188
-
189
- if (toaster && node.matches('.toast:not([data-toast-initialized])')) {
190
- initToast(node);
191
- }
192
- });
193
- });
194
- });
195
-
196
- observer.observe(document.body, { childList: true, subtree: true });
177
+ if (window.basecoat) {
178
+ window.basecoat.register('toaster', '#toaster:not([data-toaster-initialized])', initToaster);
179
+ window.basecoat.register('toast', '.toast:not([data-toast-initialized])', initToast);
180
+ }
197
181
  })();
@@ -1 +1 @@
1
- (()=>{let t;const e=new WeakMap;let n=!1;const o={success:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>',error:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>',info:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>',warning:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>'};function i(e){e.dataset.toasterInitialized||(t=e,t.addEventListener("mouseenter",r),t.addEventListener("mouseleave",s),t.addEventListener("click",(t=>{const e=t.target.closest(".toast footer a"),n=t.target.closest(".toast footer button");(e||n)&&d(t.target.closest(".toast"))})),t.querySelectorAll(".toast:not([data-toast-initialized])").forEach(a),t.dataset.toasterInitialized="true",t.dispatchEvent(new CustomEvent("basecoat:initialized")))}function a(t){if(t.dataset.toastInitialized)return;const o=parseInt(t.dataset.duration),i=-1!==o?o||("error"===t.dataset.category?5e3:3e3):-1,a={remainingTime:i,timeoutId:null,startTime:null};-1!==i&&(n?a.timeoutId=null:(a.startTime=Date.now(),a.timeoutId=setTimeout((()=>d(t)),i))),e.set(t,a),t.dataset.toastInitialized="true"}function r(){n||(n=!0,t.querySelectorAll('.toast:not([aria-hidden="true"])').forEach((t=>{if(!e.has(t))return;const n=e.get(t);n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=null,n.remainingTime-=Date.now()-n.startTime)})))}function s(){n&&(n=!1,t.querySelectorAll('.toast:not([aria-hidden="true"])').forEach((t=>{if(!e.has(t))return;const n=e.get(t);-1===n.remainingTime||n.timeoutId||(n.remainingTime>0?(n.startTime=Date.now(),n.timeoutId=setTimeout((()=>d(t)),n.remainingTime)):d(t))})))}function d(t){if(!e.has(t))return;const n=e.get(t);clearTimeout(n.timeoutId),e.delete(t),document.activeElement&&document.activeElement.blur(),t.setAttribute("aria-hidden","true"),t.addEventListener("transitionend",(()=>t.remove()),{once:!0})}const c=document.getElementById("toaster");c&&i(c),document.addEventListener("basecoat:toast",(e=>{if(!t)return void console.error("Cannot create toast: toaster container not found on page.");const n=function(t){const{category:e="info",title:n,description:i,action:a,cancel:r,duration:s,icon:d}=t,c=d||e&&o[e]||"",l=n?`<h2>${n}</h2>`:"",u=i?`<p>${i}</p>`:"",h=a?.href?`<a href="${a.href}" class="btn" data-toast-action>${a.label}</a>`:a?.onclick?`<button type="button" class="btn" data-toast-action onclick="${a.onclick}">${a.label}</button>`:"",m=r?`<button type="button" class="btn-outline h-6 text-xs px-2.5 rounded-sm" data-toast-cancel onclick="${r?.onclick}">${r.label}</button>`:"",g=`\n <div\n class="toast"\n role="${"error"===e?"alert":"status"}"\n aria-atomic="true"\n ${e?`data-category="${e}"`:""}\n ${void 0!==s?`data-duration="${s}"`:""}\n >\n <div class="toast-content">\n ${c}\n <section>\n ${l}\n ${u}\n </section>\n ${h||m?`<footer>${h}${m}</footer>`:""}\n </div>\n </div>\n </div>\n `,v=document.createElement("template");return v.innerHTML=g.trim(),v.content.firstChild}(e.detail?.config||{});t.appendChild(n)}));new MutationObserver((e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{e.nodeType===Node.ELEMENT_NODE&&(e.matches("#toaster")&&i(e),t&&e.matches(".toast:not([data-toast-initialized])")&&a(e))}))}))})).observe(document.body,{childList:!0,subtree:!0})})();
1
+ (()=>{let t;const e=new WeakMap;let n=!1;const o={success:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>',error:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>',info:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>',warning:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>'};function i(t){if(t.dataset.toastInitialized)return;const o=parseInt(t.dataset.duration),i=-1!==o?o||("error"===t.dataset.category?5e3:3e3):-1,a={remainingTime:i,timeoutId:null,startTime:null};-1!==i&&(n?a.timeoutId=null:(a.startTime=Date.now(),a.timeoutId=setTimeout((()=>s(t)),i))),e.set(t,a),t.dataset.toastInitialized="true"}function a(){n||(n=!0,t.querySelectorAll('.toast:not([aria-hidden="true"])').forEach((t=>{if(!e.has(t))return;const n=e.get(t);n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=null,n.remainingTime-=Date.now()-n.startTime)})))}function r(){n&&(n=!1,t.querySelectorAll('.toast:not([aria-hidden="true"])').forEach((t=>{if(!e.has(t))return;const n=e.get(t);-1===n.remainingTime||n.timeoutId||(n.remainingTime>0?(n.startTime=Date.now(),n.timeoutId=setTimeout((()=>s(t)),n.remainingTime)):s(t))})))}function s(t){if(!e.has(t))return;const n=e.get(t);clearTimeout(n.timeoutId),e.delete(t),document.activeElement&&document.activeElement.blur(),t.setAttribute("aria-hidden","true"),t.addEventListener("transitionend",(()=>t.remove()),{once:!0})}document.addEventListener("basecoat:toast",(e=>{if(!t)return void console.error("Cannot create toast: toaster container not found on page.");const n=function(t){const{category:e="info",title:n,description:i,action:a,cancel:r,duration:s,icon:d}=t,c=d||e&&o[e]||"",l=n?`<h2>${n}</h2>`:"",u=i?`<p>${i}</p>`:"",h=a?.href?`<a href="${a.href}" class="btn" data-toast-action>${a.label}</a>`:a?.onclick?`<button type="button" class="btn" data-toast-action onclick="${a.onclick}">${a.label}</button>`:"",m=r?`<button type="button" class="btn-outline h-6 text-xs px-2.5 rounded-sm" data-toast-cancel onclick="${r?.onclick}">${r.label}</button>`:"",w=`\n <div\n class="toast"\n role="${"error"===e?"alert":"status"}"\n aria-atomic="true"\n ${e?`data-category="${e}"`:""}\n ${void 0!==s?`data-duration="${s}"`:""}\n >\n <div class="toast-content">\n ${c}\n <section>\n ${l}\n ${u}\n </section>\n ${h||m?`<footer>${h}${m}</footer>`:""}\n </div>\n </div>\n </div>\n `,g=document.createElement("template");return g.innerHTML=w.trim(),g.content.firstChild}(e.detail?.config||{});t.appendChild(n)})),window.basecoat&&(window.basecoat.register("toaster","#toaster:not([data-toaster-initialized])",(function(e){e.dataset.toasterInitialized||(t=e,t.addEventListener("mouseenter",a),t.addEventListener("mouseleave",r),t.addEventListener("click",(t=>{const e=t.target.closest(".toast footer a"),n=t.target.closest(".toast footer button");(e||n)&&s(t.target.closest(".toast"))})),t.querySelectorAll(".toast:not([data-toast-initialized])").forEach(i),t.dataset.toasterInitialized="true",t.dispatchEvent(new CustomEvent("basecoat:initialized")))})),window.basecoat.register("toast",".toast:not([data-toast-initialized])",i))})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "basecoat-css",
3
- "version": "0.2.7",
3
+ "version": "0.3.0",
4
4
  "description": "Tailwind CSS for Basecoat components",
5
5
  "author": {
6
6
  "name": "hunvreus",