UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

3 lines (2 loc) 4.16 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */ import{b}from"./YJF4NBEX.js";import{k as m}from"./KDWR7M23.js";import{s as I,t as C}from"./C4ZX7VYR.js";var k=["date","datetime-local","month","number","range","time","week"],F=["email","password","search","tel","text","url"],x=["email","password","search","tel","text","textarea","url"];function u(a,e,t,s){let l=t.toLowerCase(),n=a[t];s&&n!=null?e.setAttribute(l,`${n}`):e.removeAttribute(l)}function A(a,e,t){t.type=a;let s=k.includes(a),l=e;u(l,t,"min",s),u(l,t,"max",s),u(l,t,"step",s);let n=x.includes(a),d=e;u(d,t,"minLength",n),u(d,t,"maxLength",n);let c=F.includes(a);u(d,t,"pattern",c)}function L(a){let e=a==="textarea"?"text":a;return k.includes(e)||F.includes(e)||x.includes(e)}var w=["text","email","search","hidden","tel","url"],V=Object.freeze({validity:{},validationMessage:""});function j(a,e){if(!Array.isArray(e))return g(a,e)?V:{validity:y(a.validity),validationMessage:a.validationMessage};if(w.includes(a.type))return g(a,e.join(","))?V:{validity:y(a.validity),validationMessage:a.validationMessage};let t={},s=[];for(let l of e)g(a,l)||(Object.assign(t,y(a.validity)),a.validationMessage&&s.push(a.validationMessage));return{validity:t,validationMessage:s.join("; ")}}function g(a,e){return a.value=a.type==="file"||e==null?"":String(e),a.validity.valid}function y(a){let e={};for(let t in a)t!=="valid"&&a[t]&&(e[t]=!0);return e}var q=["calcite-input","calcite-input-number","calcite-input-text","calcite-text-area"];function D(a){return`${C(I(a))}${q.includes(a)?"Input":"Change"}`}function S(a){return"form"in a&&"name"in a&&m(a)}function P(a,{status:e,message:t,icon:s}){"status"in a&&(a.status=e),"validationIcon"in a&&typeof a.validationIcon!="string"&&(a.validationIcon=s),"validationMessage"in a&&!a.validationMessage&&(a.validationMessage=t)}function $(a,e){let{disabled:t,required:s}=a;e.disabled=t,e.required=!!s,v(a)?e.checked=a.checked:z(a,e)&&A(e.type,a,e)}function v(a){return"checked"in a}function z(a,e){return a&&L(e.type)}function N(a){let e=Array.from(a.elements);requestAnimationFrame(()=>{let t=e.filter(s=>s.matches("[status=invalid]")&&S(s));for(let s of t)if(s.validationMessage){s.setFocus();break}})}var H=a=>b((e,t)=>{let s="",l,n=null,d=a.inputType;d&&(l=document.createElement("input"));function c(i){if(i.defaultPrevented)return;i.preventDefault();let r=i.currentTarget;N(r)}function E(){"status"in e&&(e.status="idle"),"validationIcon"in e&&(e.validationIcon=!1),"validationMessage"in e&&(e.validationMessage=""),v(e)&&(e.checked=e.defaultChecked),e.value=e.defaultValue}e.listen("luminaFormResetCallback",()=>{E()}),e.listen("luminaFormAssociatedCallback",({detail:[i]})=>{i?i.addEventListener("invalid",c,{capture:!0}):n?.removeEventListener("invalid",c,{capture:!0}),n=i});function M(){let i=s||l?.validationMessage||"";e.el.dispatchEvent(new CustomEvent("calciteInvalid",{bubbles:!0,composed:!0})),P(e,{message:i,icon:!0,status:"invalid"});let r=D(e.el.tagName.toLowerCase());e.listen(r,()=>{"status"in e&&(e.status="idle"),"validationIcon"in e&&(!e.validationIcon||e.validationIcon===!0)&&(e.validationIcon=!1),"validationMessage"in e&&e.validationMessage===i&&(e.validationMessage="")},{once:!0})}t.onConnected(()=>{e.el.addEventListener("invalid",M)}),t.onDisconnected(()=>{e.el.removeEventListener("invalid",M)}),t.onUpdate(i=>{e.hasUpdated||(e.defaultValue=e.value,v(e)&&(e.defaultChecked=e.checked)),(i.has("name")||i.has("value")||v(e)&&i.has("checked"))&&e.elementInternals.setFormValue(T()),o()});function o(){let{elementInternals:i}=e,r={},f="";l&&(l.type=d,$(e,l),{validity:r,validationMessage:f}=j(l,h())),s&&(r={...r,customError:!0},f=s),i.setValidity(r,f),"validity"in e&&(e.validity=i.validity)}function h(){return a.getValue?a.getValue():e.value}function T(){let i=h();if(Array.isArray(i)){let r=new FormData;return i.forEach(f=>r.append(e.name,f)),r}return v(e)?e.checked?i||"on":null:i}return{get active(){return!!e.elementInternals.form},overrideDefaultValue:i=>{e.defaultValue=i},overrideInputType:i=>{d=i,o()},requestSubmit:()=>{e.elementInternals.form?.requestSubmit()},setCustomValidity:i=>{s=i,o()}}});export{H as a};