UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

5 lines (4 loc) 4.03 kB
/*! All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://github.com/Esri/calcite-design-system/blob/dev/LICENSE.md for details. v3.2.1 */ import{j as C,k as v}from"./3ADX47DD.js";import{d as I}from"./BJZTU5BQ.js";var V=["calcite-input","calcite-input-number","calcite-input-text","calcite-text-area"];function H(e){return`${e.split("-").map((n,i)=>i===0?n:`${n[0].toUpperCase()}${n.slice(1)}`).join("")}${V.includes(e)?"Input":"Change"}`}var m="hidden-form-input";function E(e){return"checked"in e}var h=new WeakMap,g=new WeakSet;function L(e,t){if(v(t.parentElement,"[form]"))return!0;let n="calciteInternalFormComponentRegister",i=!1;return e.addEventListener(n,o=>{i=o.composedPath().some(l=>g.has(l)),o.stopPropagation()},{once:!0}),t.dispatchEvent(new CustomEvent(n,{bubbles:!0,composed:!0})),i}function R(e,{status:t,message:a,icon:n}){"status"in e&&(e.status=t),"validationIcon"in e&&typeof e.validationIcon!="string"&&(e.validationIcon=n),"validationMessage"in e&&!e.validationMessage&&(e.validationMessage=a)}function y(e){return e.nodeName==="CALCITE-RADIO-BUTTON"?v(e,"calcite-radio-button-group"):e}var A=new CustomEvent("calciteInvalid",{bubbles:!0,composed:!0});function p(e){let t=e?.target,a=t?.validationMessage,n=y(t?.parentElement);if(!n)return;let i=n?.nodeName?.toLowerCase(),o=i?.split("-");if(o.length<2||o[0]!=="calcite")return;e?.preventDefault(),"validity"in n&&(n.validity=t?.validity),n.dispatchEvent(A),R(n,{message:a,icon:!0,status:"invalid"});let l=H(i);n.addEventListener(l,()=>{"status"in n&&(n.status="idle"),"validationIcon"in n&&(n.validationIcon===""||n.validationIcon===!0)&&(n.validationIcon=!1),"validationMessage"in n&&n.validationMessage===a&&(n.validationMessage=""),"validity"in n&&(n.validity=t?.validity)},{once:!0})}function x(e){let{formEl:t}=e;return t?(t.addEventListener("invalid",p,!0),t.requestSubmit(),t.removeEventListener("invalid",p,!0),requestAnimationFrame(()=>{let a=t.querySelectorAll("[status=invalid]");for(let n of a)if(n?.validationMessage){n?.setFocus();break}}),!0):!1}function D(e){e.formEl?.reset()}function W(e){let{el:t,value:a}=e,n=w(e);if(!n||L(n,t))return;e.formEl=n,e.defaultValue=a,E(e)&&(e.defaultChecked=e.checked);let i=q.bind(e);n.addEventListener("reset",i),h.set(e.el,i),g.add(t)}function w(e){let{el:t,form:a}=e;return a?C(t,{id:a}):v(t,"form")}function q(){if("status"in this&&(this.status="idle"),"validationIcon"in this&&(this.validationIcon=!1),"validationMessage"in this&&(this.validationMessage=""),E(this)){this.checked=this.defaultChecked;return}this.value=this.defaultValue,this.onFormReset?.()}function O(e){let{el:t,formEl:a}=e;if(!a)return;let n=h.get(t);a.removeEventListener("reset",n),h.delete(t),e.formEl=null,g.delete(t)}function B(e,t){e.defaultValue=t}var P="calciteInternalHiddenInputInput",k=e=>{e.target.dispatchEvent(new CustomEvent(P,{bubbles:!0}))},F=e=>e.removeEventListener("input",k);function N(e){let{el:t,formEl:a,name:n,value:i}=e,{ownerDocument:o}=t;if(!1)return;let l=t.querySelectorAll(`input[slot="${m}"]`);if(!a||!n){l.forEach(s=>{F(s),s.remove()});return}let f=Array.isArray(i)?i:[i],d=[],u=new Set;l.forEach(s=>{let r=f.find(M=>M==s.value);r!=null?(u.add(r),b(e,s,r)):d.push(s)});let c;f.forEach(s=>{if(u.has(s))return;let r=d.pop();r||(r=o.createElement("input"),r.ariaHidden="true",r.slot=m),c||(c=o.createDocumentFragment()),c.append(r),r.addEventListener("input",k),b(e,r,s)}),c&&t.append(c),d.forEach(s=>{F(s),s.remove()})}function b(e,t,a){let{defaultValue:n,disabled:i,form:o,name:l,required:f}=e;t.defaultValue=n,t.disabled=i,t.name=l,t.required=f,t.tabIndex=-1,o?t.setAttribute("form",o):t.removeAttribute("form"),E(e)?(t.checked=e.checked,t.defaultChecked=e.defaultChecked,t.value=e.checked?a||"on":""):t.value=a||"",e.syncHiddenFormInput?.(t);let d=y(e.el);if(d&&"validity"in d)for(let u in{...t?.validity})d.validity[u]=t.validity[u]}var U=({component:e})=>(N(e),I`<slot name=${m}></slot>`);export{x as a,D as b,W as c,w as d,O as e,B as f,P as g,U as h};