@webority/ui-elements 0.139.3 → 0.140.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/{WuiCodeBlock-vV4v7-c7.js → WuiCodeBlock-CXBYH2Ej.js} +1 -1
- package/dist/WuiCommandPalette-Bk9UuXmZ.js +2 -0
- package/dist/{WuiDatePicker-D6x670lh.js → WuiDatePicker-_h8R3HSU.js} +1 -1
- package/dist/{WuiDateRange-DUkF9FYe.js → WuiDateRange-BtkmxMSN.js} +1 -1
- package/dist/WuiLeadPopup-Dwmg7coE.js +382 -0
- package/dist/{WuiLightbox-CDcqNQun.js → WuiLightbox-DCTE3ULH.js} +1 -1
- package/dist/{WuiPhone-C1t2nZvd.js → WuiPhone-oEkvgH1D.js} +1 -1
- package/dist/{WuiSelect-CrH5CX6K.js → WuiSelect-BEhh06ZD.js} +1 -1
- package/dist/{WuiTimePicker-BcH9_gEm.js → WuiTimePicker-CLS7ahpd.js} +1 -1
- package/dist/{WuiTree-BFm_hpSK.js → WuiTree-BZaGfmr9.js} +1 -1
- package/dist/{WuiWizardStep-BI6ClNdF.js → WuiWizardStep-DB-BbyEO.js} +1 -1
- package/dist/{chips-Bbr0xJXV.js → chips-CjCv74bk.js} +1 -1
- package/dist/{drawerDiscard-DR04quK7.js → drawerDiscard-DBTsXGV8.js} +1 -1
- package/dist/elements/code-block.js +1 -1
- package/dist/elements/command-palette.js +1 -1
- package/dist/elements/date-range.js +1 -1
- package/dist/elements/datepicker.js +1 -1
- package/dist/elements/lead-popup.js +1 -1
- package/dist/elements/lightbox.js +1 -1
- package/dist/elements/phone.js +1 -1
- package/dist/elements/select.js +1 -1
- package/dist/elements/timepicker.js +1 -1
- package/dist/elements/tree.js +1 -1
- package/dist/elements/wizard.js +1 -1
- package/dist/{fileViewerImage-C85kWKJQ.js → fileViewerImage-CLzN49Fd.js} +1 -1
- package/dist/{fileViewerMedia-D_dPdoK1.js → fileViewerMedia-BQ0lVXy9.js} +1 -1
- package/dist/{fileViewerPdf-BWeQ2WJ2.js → fileViewerPdf-6MAAzmCM.js} +1 -1
- package/dist/fileViewerUi-DQH6_B1a.js +1 -0
- package/dist/helpers.js +1 -1
- package/dist/iconGlyphs.g-BlwTSNXS.js +1 -0
- package/dist/{optionLabel-CjrUbe2a.js → optionLabel-CLemms21.js} +1 -1
- package/dist/{search-BWWjNvZu.js → search-rosjW6Tp.js} +1 -1
- package/dist/server.js +1 -1
- package/dist/ui-elements/carousel.global.js +1 -1
- package/dist/ui-elements/code-block.global.js +1 -1
- package/dist/ui-elements/command-palette.global.js +2 -2
- package/dist/ui-elements/comment-thread.global.js +1 -1
- package/dist/ui-elements/consent-banner.global.js +1 -1
- package/dist/ui-elements/context-menu.global.js +1 -1
- package/dist/ui-elements/date-range.global.js +1 -1
- package/dist/ui-elements/drawer.global.js +1 -1
- package/dist/ui-elements/image-crop.global.js +1 -1
- package/dist/ui-elements/inline-edit.global.js +1 -1
- package/dist/ui-elements/kanban.global.js +1 -1
- package/dist/ui-elements/lead-popup.global.js +89 -13
- package/dist/ui-elements/lightbox.global.js +1 -1
- package/dist/ui-elements/markdown.global.js +1 -1
- package/dist/ui-elements/org-tree.global.js +1 -1
- package/dist/ui-elements/phone.global.js +1 -1
- package/dist/ui-elements/resizable.global.js +1 -1
- package/dist/ui-elements/saved-views.global.js +1 -1
- package/dist/ui-elements/select-chips.global.js +1 -1
- package/dist/ui-elements/select-search.global.js +1 -1
- package/dist/ui-elements/slider.global.js +1 -1
- package/dist/ui-elements/sortable.global.js +1 -1
- package/dist/ui-elements/status-icon.global.js +1 -1
- package/dist/ui-elements/timepicker.global.js +1 -1
- package/dist/ui-elements/tour.global.js +1 -1
- package/dist/ui-elements/tree.global.js +1 -1
- package/dist/ui-elements/wizard.global.js +1 -1
- package/dist/ui-elements.global.js +3 -3
- package/dist/ui-elements.js +1 -1
- package/dist/ui-file-viewer.global.js +1 -1
- package/dist/ui-file-viewer.js +1 -1
- package/dist/ui-lead-popup.global.js +1 -1
- package/package.json +3 -2
- package/dist/WuiCommandPalette-CtF31Bbo.js +0 -2
- package/dist/WuiLeadPopup-CWv93qlo.js +0 -306
- package/dist/fileViewerUi-7v_4Oz8G.js +0 -1
- package/dist/iconGlyphs.g-gURMSeyB.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./buttonClass-DpG9WzgJ.js";import{n,t as r}from"./copyText-DM5HhXjf.js";import{t as i}from"./elementBase-DV9IZZCu.js";import{t as a}from"./iconGlyphs.g-
|
|
1
|
+
import{n as e,t}from"./buttonClass-DpG9WzgJ.js";import{n,t as r}from"./copyText-DM5HhXjf.js";import{t as i}from"./elementBase-DV9IZZCu.js";import{t as a}from"./iconGlyphs.g-BlwTSNXS.js";var o=Object.freeze([`text`,`json`,`js`,`cs`,`sql`,`bash`,`http`,`html`,`css`]),s=Object.freeze({text:``,json:`JSON`,js:`JavaScript`,cs:`C#`,sql:`SQL`,bash:`Bash`,http:`HTTP`,html:`HTML`,css:`CSS`}),c=e=>RegExp(`\\b(?:${e.join(`|`)})\\b`),l=`(?![\\s\\S])`,u=RegExp(`/\\*[\\s\\S]*?(?:\\*/|${l})`).source,d=[[`attr`,/"(?:[^"\\\n]|\\.)*"(?=\s*:)/],[`string`,/"(?:[^"\\\n]|\\.)*"?/],[`number`,/-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/],[`literal`,c([`true`,`false`,`null`])],[`punct`,/[{}[\],:]/]],f=[[`comment`,RegExp(`//[^\\n]*|${u}`)],[`string`,/"(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|`(?:[^`\\]|\\[\s\S])*`?/],[`number`,/\b(?:0[xX][\da-fA-F_]+|\d[\d_]*\.?\d*(?:[eE][+-]?\d+)?n?)\b/],[`keyword`,c(/* @__PURE__ */ `async.await.break.case.catch.class.const.continue.default.delete.do.else.export.extends.finally.for.from.function.if.import.in.instanceof.let.new.of.return.static.super.switch.this.throw.try.typeof.var.void.while.yield`.split(`.`))],[`literal`,c([`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`])],[`function`,/(?<![\w$])[A-Za-z_$][\w$]*(?=\s*\()/],[`type`,/(?<![\w$])[A-Z][\w$]*/],[`punct`,/[{}()[\];,]/]],p=[[`comment`,RegExp(`//[^\\n]*|${u}`)],[`string`,/@"(?:[^"]|"")*"?|\$@?"(?:[^"\\\n]|\\.)*"?|"(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?/],[`number`,/\b\d[\d_]*\.?\d*(?:[eE][+-]?\d+)?[fFdDmMlLuU]{0,2}\b/],[`keyword`,c(/* @__PURE__ */ `abstract.as.async.await.base.bool.break.byte.case.catch.char.checked.class.const.continue.decimal.default.delegate.do.double.else.enum.event.explicit.extern.finally.fixed.float.for.foreach.get.goto.if.implicit.in.init.int.interface.internal.is.lock.long.namespace.new.object.operator.out.override.params.private.protected.public.readonly.record.ref.required.return.sbyte.sealed.set.short.sizeof.static.string.struct.switch.this.throw.try.typeof.uint.ulong.unchecked.unsafe.ushort.using.var.virtual.void.volatile.when.while.with`.split(`.`))],[`literal`,c([`true`,`false`,`null`])],[`function`,/(?<!\w)[A-Za-z_]\w*(?=\s*\()/],[`type`,/(?<!\w)[A-Z]\w*/],[`punct`,/[{}()[\];,]/]],m=[[`comment`,RegExp(`--[^\\n]*|${u}`)],[`string`,/'(?:[^']|'')*'?/],[`variable`,/@@?\w+/],[`number`,/\b\d+(?:\.\d+)?\b/],[`keyword`,c(/* @__PURE__ */ `add.all.alter.and.as.asc.begin.between.by.case.check.column.commit.constraint.create.cross.database.declare.default.delete.desc.distinct.drop.else.end.exec.execute.exists.foreign.from.full.function.group.having.if.in.index.inner.insert.into.is.join.key.left.like.limit.not.null.offset.on.or.order.outer.over.partition.primary.procedure.references.return.returns.right.rollback.select.set.table.then.top.transaction.union.unique.update.values.view.when.where.while.with`.split(`.`))],[`literal`,c([`true`,`false`])],[`type`,c([`bigint`,`bit`,`char`,`date`,`datetime`,`datetime2`,`decimal`,`float`,`int`,`money`,`nchar`,`numeric`,`nvarchar`,`real`,`smallint`,`text`,`time`,`tinyint`,`uniqueidentifier`,`varchar`])],[`function`,/\b[A-Za-z_]\w*(?=\s*\()/],[`punct`,/[(),;]/]],h=[[`comment`,/(?<![^\s;|&(])#[^\n]*/],[`string`,/"(?:[^"\\]|\\[\s\S])*"?|'[^']*'?/],[`variable`,/\$(?:\{[^}\n]*\}?|[A-Za-z_]\w*|[0-9@#?$!*-])/],[`attr`,/(?<![\w-])--?[A-Za-z][\w-]*/],[`number`,/(?<![\w.-])\d+(?:\.\d+)?\b/],[`keyword`,c([`case`,`do`,`done`,`elif`,`else`,`esac`,`exit`,`export`,`fi`,`for`,`function`,`if`,`in`,`local`,`return`,`select`,`then`,`until`,`while`])],[`function`,c(/* @__PURE__ */ `awk.az.cat.cd.chmod.chown.cp.curl.docker.dotnet.echo.gcloud.git.grep.kubectl.ls.mkdir.mv.npm.npx.pnpm.rm.sed.source.sudo.wget`.split(`.`))],[`punct`,/[|&;<>(){}[\]]+/]],g=[[`comment`,/^#[^\n]*/m],[`keyword`,/^(?:GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE|CONNECT)(?= )/m],[`literal`,/HTTP\/\d(?:\.\d)?/],[`number`,/(?<=^HTTP\/\d(?:\.\d)? )\d{3}\b/m],[`function`,/(?<=^[A-Z]+ )\S+/m],[`attr`,/^[A-Za-z][\w-]*(?=:)/m],[`string`,/(?<=^[A-Za-z][\w-]*:[ \t]*)[^\n]+/m]],_=[[`comment`,RegExp(`<!--[\\s\\S]*?(?:-->|${l})`)],[`keyword`,/<![A-Za-z][^>]*>?/],[`tag`,/<\/?[A-Za-z][^<>]*>?/],[`literal`,/&#?\w+;/]],v={json:d,js:f,cs:p,sql:m,bash:h,http:g,css:[[`comment`,new RegExp(u)],[`string`,/"(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?/],[`keyword`,/@[\w-]+|!important/],[`attr`,/[\w-]+(?=\s*:[^{};]*[;}])/],[`number`,/#[0-9a-fA-F]{3,8}\b|(?<![\w-])-?(?:\d+\.?\d*|\.\d+)(?:%|[A-Za-z]{1,4})?/],[`function`,/[\w-]+(?=\()/],[`type`,/[.#](?!\d)[A-Za-z_][\w-]*/],[`punct`,/[{}();:,]/]],html:_,htmlTag:[[`tag`,/^<\/?[\w:.-]+/],[`string`,/"[^"]*"?|'[^']*'?/],[`attr`,/(?<=\s)[^\s=<>/"']+/],[`punct`,/\/?>|=/]]},y=/* @__PURE__ */ new Map;function b(e){let t=y.get(e);if(!t){let n=v[e],r=e===`sql`?`gi`:`g`,i=n.map(([,e])=>`(${e.source})`).join(`|`);t={re:new RegExp(i,`${r}m`),types:n.map(([e])=>e)},y.set(e,t)}return t}function x(e,t,n){if(!n)return;let r=e[e.length-1];r&&r[0]===t?r[1]+=n:e.push([t,n])}function S(e,t,n=[]){let{re:r,types:i}=b(e),a=0;for(let o of t.matchAll(r)){if(!o[0])continue;x(n,`plain`,t.slice(a,o.index));let r=i.findIndex((e,t)=>o[t+1]!==void 0);e===`html`&&i[r]===`tag`?S(`htmlTag`,o[0],n):x(n,i[r],o[0]),a=o.index+o[0].length}return x(n,`plain`,t.slice(a)),n}function C(e){let t=/\r?\n\r?\n/.exec(e);if(!t)return S(`http`,e);let n=S(`http`,e.slice(0,t.index+t[0].length)),r=e.slice(t.index+t[0].length),i=r.trimStart()[0];return i===`{`||i===`[`?S(`json`,r,n):i===`<`?S(`html`,r,n):(x(n,`plain`,r),n)}function w(e,t){let n=String(e??``);return!n||n.length>1e5?n?[[`plain`,n]]:[]:t===`http`?C(n):!Object.hasOwn(v,t)||t===`htmlTag`?[[`plain`,n]]:S(t,n)}function T(e,t){let n=[[]];for(let[r,i]of w(e,t))i.split(/\r\n|\r|\n/).forEach((e,t)=>{t>0&&n.push([]),e&&n[n.length-1].push([r,e])});return n.length>1&&n[n.length-1].length===0&&n.pop(),n}var E=class extends i{static get observedAttributes(){return[`language`,`line-numbers`,`wrap`,`label`,`copy-label`,`copied-label`]}constructor(){super(),this._chrome=null,this._title=null,this._view=null,this._codeEl=null,this._copyIcon=null,this._copyText=null,this._copied=!1,this._observer=null,this._timer=0,this._cancelFrame=null}connectedCallback(){this._render(),typeof MutationObserver<`u`&&(this._observer=new MutationObserver(e=>{e.some(e=>!this._chrome?.contains(e.target))&&this._schedule()}),this._observer.observe(this,{childList:!0,subtree:!0,characterData:!0}))}disconnectedCallback(){this._observer?.disconnect(),this._observer=null,this._cancelPending()}attributeChangedCallback(){this.isConnected&&this._render()}_source(){return Array.from(this.children).find(e=>e.classList.contains(`wui-code-source`))}_code(){return(this._source()?.textContent??``).replace(/\r?\n$/,``)}_schedule(){if(this._cancelFrame)return;let e=()=>{this._cancelFrame=null,this._render()};if(typeof requestAnimationFrame==`function`){let t=requestAnimationFrame(e);this._cancelFrame=()=>cancelAnimationFrame(t)}else{let t=!0;queueMicrotask(()=>{t&&e()}),this._cancelFrame=()=>{t=!1}}}_cancelPending(){this._cancelFrame?.(),this._cancelFrame=null}_render(){if(!this._source())return;this._cancelPending();let e=this.ownerDocument;this._chrome||this._build(e);let t=this.getAttribute(`language`),n=o.includes(t)?t:`text`,r=this.getAttribute(`label`)||``,i=T(this._code(),n);this._title.textContent=r||s[n],this._view.setAttribute(`aria-label`,r||`Code`),this._view.style.setProperty(`--wui-code-digits`,String(String(i.length).length)),this._codeEl.replaceChildren(...i.map(t=>D(e,t))),this._copied||(this._copyText.textContent=this._copyLabel()),this.setAttribute(`data-wui-ready`,``),this._observer?.takeRecords()}_build(e){let t=e.createElement(`div`);t.className=`wui-code-chrome`,t.append(this._bar(e));let n=e.createElement(`div`);n.className=`wui-code-view`,n.setAttribute(`role`,`region`),n.tabIndex=0;let r=e.createElement(`pre`);r.className=`wui-code-pre`,this._codeEl=e.createElement(`code`),r.append(this._codeEl),n.append(r),t.append(n),this._chrome=t,this._view=n,this.append(t)}_bar(i){let a=i.createElement(`div`);a.className=`wui-code-bar`,this._title=i.createElement(`span`),this._title.className=`wui-code-title`;let o=i.createElement(`button`);return o.type=`button`,o.className=`${e(`ghost`,`sm`)} wui-code-copy`,o.dataset.wui=t,o.setAttribute(`aria-live`,`polite`),this._copyIcon=i.createElement(`span`),this._copyIcon.className=`wui-code-copy-icon`,this._copyText=i.createElement(`span`),this._setCopied(!1),o.append(this._copyIcon,this._copyText),o.addEventListener(`click`,async()=>{await n(this._code())&&(this._setCopied(!0),clearTimeout(this._timer),this._timer=setTimeout(()=>this._setCopied(!1),r))}),a.append(this._title,o),a}_setCopied(e){this._copied=e,this._copyIcon.innerHTML=a(e?`check`:`files`,{size:14}),this._copyText.textContent=this._copyLabel()}_copyLabel(){return this._copied?this.getAttribute(`copied-label`)||`Copied`:this.getAttribute(`copy-label`)||`Copy`}};function D(e,t){let n=e.createElement(`span`);n.className=`wui-code-line`;for(let[r,i]of t){if(r===`plain`){n.append(i);continue}let t=e.createElement(`span`);t.className=`wui-code-t-${r}`,t.textContent=i,n.append(t)}return n}export{E as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./elementBase-DV9IZZCu.js";import{n as t}from"./optionLabel-CLemms21.js";import{t as n}from"./textMatch-wdY7XLIc.js";var r=`[role="option"]`,i=`No results`,a=`All`,o=`Recent`,s=5,c=20,l=`.wui-cmd-back, [data-depth]`,u=`[data-group-tab]`,d=0,f=class extends e{static get observedAttributes(){return[`filter`,`group-filter`,`highlight`,`empty-text`,`path`,`root-label`,`recents-key`,`recents-limit`,`recents-label`]}constructor(){super(),this._path=[],this._group=null,this._crumbSig=null,this._modal=null,this._recentsId=`wui-cmd-recents-${++d}`,this._onModalHidden=()=>this._reset(),this._activeId=null,this._lastQuery=null,this._lastIds=null,this._userChose=!1,this._onKeyDown=e=>this._handleKeyDown(e),this._onClick=e=>{let t=e.target?.closest?.(l);if(t&&this.contains(t)){let e=t.matches(`.wui-cmd-back`)?this._path.length-1:Number(t.dataset.depth);this._goTo(this._path.slice(0,e));return}let n=e.target?.closest?.(u);if(n&&this.contains(n)){this._pickGroup(n.dataset.groupTab||null);return}let r=this._optionFrom(e.target);r&&this._select(r)},this._onMouseDown=e=>{let t=e.target?.closest?.(l),n=e.target?.closest?.(u);(t&&this.contains(t)||n&&this.contains(n)||this._optionFrom(e.target,!0))&&e.preventDefault()},this._onMouseMove=e=>{let t=this._optionFrom(e.target);t&&t.id!==this._activeId&&(this._userChose=!0,this._setActive(t,!1))},this._onInput=e=>{this.hasAttribute(`filter`)&&e.target===this._input()&&(this._group=null,this._applyFilter(),this.refresh())}}connectedCallback(){this._teardown(),this.addEventListener(`keydown`,this._onKeyDown),this.addEventListener(`click`,this._onClick),this.addEventListener(`mousedown`,this._onMouseDown),this.addEventListener(`mousemove`,this._onMouseMove),this.addEventListener(`input`,this._onInput),this._modal=this.closest(`.modal`),this._modal?.addEventListener(`hidden.bs.modal`,this._onModalHidden),this._readPath(),this.hasAttribute(`filter`)&&this._applyFilter(),this.refresh()}disconnectedCallback(){this._teardown()}attributeChangedCallback(e){this.isConnected&&(e===`path`&&this._readPath(),this.hasAttribute(`filter`)&&this._applyFilter(),this.refresh())}get filter(){return this.hasAttribute(`filter`)}set filter(e){this.toggleAttribute(`filter`,!!e)}get highlight(){return this.getAttribute(`highlight`)!==`false`}set highlight(e){this.setAttribute(`highlight`,e?`true`:`false`)}get emptyText(){return this.getAttribute(`empty-text`)??i}set emptyText(e){this.setAttribute(`empty-text`,String(e??``))}refresh(){this._renderRecents(),this._renderCrumbs(),this._syncTabs();let e=this._input(),t=e?e.value:``,n=t!==this._lastQuery;this._lastQuery=t;let r=this._selectableOptions(),i=r.map(e=>e.id).join(`
|
|
2
|
+
`),a=i!==this._lastIds;this._lastIds=i;let o=!n&&(this._userChose||!a)?r.find(e=>e.id===this._activeId):null;o||(this._userChose=!1),this._setActive(o??r[0]??null,n)}_input(){return this.querySelector(`[role="combobox"]`)}_optionFrom(e,t=!1){let n=e?.closest?.(r);return n&&this.contains(n)&&!this._isHidden(n)&&(t||!this._isDisabled(n))?n:null}_isDisabled(e){return e.getAttribute(`aria-disabled`)===`true`}_isHidden(e){return e.hidden||!!e.closest(`[role="group"]`)?.hidden}_selectableOptions(){return[...this.querySelectorAll(r)].filter(e=>!this._isHidden(e)&&!this._isDisabled(e))}_setActive(e,t){this._activeId=e?e.id:null;for(let t of this.querySelectorAll(r))t.setAttribute(`aria-selected`,t===e?`true`:`false`);let n=this._input();n&&(e?n.setAttribute(`aria-activedescendant`,e.id):n.removeAttribute(`aria-activedescendant`)),e&&t&&e.scrollIntoView({block:`nearest`})}_move(e){let t=this._selectableOptions();if(!t.length)return;let n=t.findIndex(e=>e.id===this._activeId),r=n<0?e>0?0:t.length-1:(n+e+t.length)%t.length;this._userChose=!0,this._setActive(t[r],!0)}_handleKeyDown(e){if(e.target===this._input()){if(e.key===`ArrowDown`||e.key===`ArrowUp`)e.preventDefault(),this._move(e.key===`ArrowDown`?1:-1);else if(e.key===`Tab`&&this._groupActive()&&this._tabs().length)e.preventDefault(),this._cycleGroup(e.shiftKey?-1:1);else if(e.key===`Backspace`&&!e.isComposing&&this._path.length&&!e.target.value)e.preventDefault(),this._goTo(this._path.slice(0,-1));else if(e.key===`Enter`&&!e.isComposing){let t=this._selectableOptions().find(e=>e.id===this._activeId);if(!t)return;e.preventDefault(),this._select(t)}}}_select(e){this._remember(e),this.dispatchEvent(new CustomEvent(`wui-command-palette:select`,{bubbles:!0,cancelable:!0,detail:{key:e.dataset.key??null,groupKey:e.dataset.groupKey??null,id:e.id}}))&&(e.dataset.opens?this._open(e.dataset.opens):e.dataset.href&&this._navigate(e.dataset.href))}_open(e){let t=[...this.querySelectorAll(`.wui-cmd-page`)].find(t=>t.dataset.page===e);this._goTo([...this._path,{key:e,label:t?.dataset.label??e}])}_goTo(e){this._input()?.focus(),this.dispatchEvent(new CustomEvent(`wui-command-palette:navigate`,{bubbles:!0,cancelable:!0,detail:{path:e}}))&&(this._path=e,this._restart())}_tabs(){return[...this.querySelectorAll(u)]}_groupActive(){return this.hasAttribute(`group-filter`)&&this._path.length===0}_pickGroup(e){this._group=e,this._applyFilter(),this.refresh()}_cycleGroup(e){let t=this._tabs().map(e=>e.dataset.groupTab||null),n=Math.max(0,t.indexOf(this._group));this._pickGroup(t[(n+e+t.length)%t.length])}_syncTabs(){if(!this.hasAttribute(`group-filter`))return;let e=this.querySelector(`.wui-cmd-tabs`);e&&(e.hidden=!this._groupActive());for(let e of this._tabs())e.setAttribute(`aria-selected`,String((e.dataset.groupTab||null)===this._group))}_restart(){this._group=null;let e=this._input();e&&(e.value=``),this.hasAttribute(`filter`)&&this._applyFilter(),this.refresh()}_reset(){this.hasAttribute(`path`)||(this._path=[],this._restart())}_readPath(){let e=this.getAttribute(`path`);if(e==null)return;let t=JSON.parse(e);this._path=Array.isArray(t)?t.filter(e=>e&&typeof e.key==`string`&&typeof e.label==`string`):[]}_renderCrumbs(){let e=this.querySelector(`.wui-cmd-crumbs`);if(!e)return;let t=this.getAttribute(`root-label`)??a,n=JSON.stringify([t,this._path]);if(e.hidden=this._path.length===0,n===this._crumbSig)return;this._crumbSig=n;let r=e.querySelector(`.wui-cmd-trail`);if(!r)return;let i=[t,...this._path.map(e=>e.label)];r.replaceChildren(...i.map((e,t)=>{let n=document.createElement(`li`),r=t===i.length-1,a=document.createElement(r?`span`:`button`);return a.className=`wui-cmd-crumb`,a.textContent=e,r?a.setAttribute(`aria-current`,`page`):(a.type=`button`,a.dataset.depth=String(t)),n.append(a),n}))}_recentsHost(){return this.querySelector(`.wui-cmd-recents`)}_realOptions(){let e=this._recentsHost();return[...this.querySelectorAll(r)].filter(t=>!e?.contains(t))}_recentEntries(){let e=this.getAttribute(`recents-key`);if(!e)return[];let t;try{t=JSON.parse(globalThis.localStorage?.getItem(e)??`[]`)}catch{return[]}return Array.isArray(t)?t.filter(e=>e&&typeof e.g==`string`&&typeof e.k==`string`):[]}_recentsLimit(){let e=Number.parseInt(this.getAttribute(`recents-limit`)??``,10);return Number.isFinite(e)&&e>0?Math.min(e,c):s}_remember(e){let t=this.getAttribute(`recents-key`),{groupKey:n,key:r,opens:i}=e.dataset;if(!t||i||n==null||r==null)return;let a=[{g:n,k:r},...this._recentEntries().filter(e=>e.g!==n||e.k!==r)];try{globalThis.localStorage?.setItem(t,JSON.stringify(a.slice(0,this._recentsLimit())))}catch{}}_renderRecents(){let e=this._recentsHost();if(!e)return;let t=this._input(),n=this._groupActive()?this._group:null,r=this._path.length===0&&!(t?.value??``).trim()?this._recentEntries().filter(e=>!n||e.g===n):[],i=this._realOptions(),a=[];for(let e of r){let t=i.find(t=>t.dataset.groupKey===e.g&&t.dataset.key===e.k);if(t&&!t.dataset.opens&&!this._isDisabled(t)&&a.push(t),a.length>=this._recentsLimit())break}if(!a.length){e.firstChild&&e.replaceChildren();return}let s=`${this._recentsId}-label`,c=document.createElement(`div`);c.className=`wui-cmd-group`,c.setAttribute(`role`,`group`),c.setAttribute(`aria-labelledby`,s);let l=document.createElement(`div`);l.className=`wui-cmd-group-label`,l.setAttribute(`role`,`presentation`),l.id=s,l.textContent=this.getAttribute(`recents-label`)??o,c.append(l);for(let e of a){let t=e.cloneNode(!0);t.id=`${this._recentsId}-${e.id}`,t.hidden=!1,t.removeAttribute(`aria-selected`),c.append(t)}e.replaceChildren(c)}_inScope(e,t){return!t||(e.closest(`.wui-cmd-page`)?.dataset.page??null)===(this._path.at(-1)?.key??null)}_navigate(e){window.location.assign(e)}_applyFilter(){let e=this._input(),i=(e?e.value:``).trim(),a=i.toLowerCase(),o=this.highlight,s=[...this.querySelectorAll(`.wui-cmd-page`)],c=s.length>0,l=this._path.at(-1)?.key??null;for(let e of s)e.hidden=e.dataset.page!==l;let u=this._groupActive()?this._group:null,d=0;for(let e of this._realOptions()){let r=e.querySelector(`.wui-cmd-item-label`),s=e.dataset.label??r?.textContent??``,l=(e.dataset.keywords??``).split(/\s+/).filter(Boolean),f=!a||s.toLowerCase().includes(a)||l.some(e=>e.toLowerCase().includes(a)),p=this._inScope(e,c)&&(!u||e.dataset.groupKey===u)&&f;e.hidden=!p,p&&d++,r&&(r.innerHTML=n(s,o?i:``).map(e=>e.match?`<mark class="wui-cmd-mark">${t(e.text)}</mark>`:t(e.text)).join(``))}let f=this._recentsHost();for(let e of this.querySelectorAll(`[role="group"]`))f?.contains(e)||(e.hidden=![...e.querySelectorAll(r)].some(e=>!e.hidden));let p=this.querySelector(`[role="listbox"]`);p&&(p.hidden=d===0);let m=this.querySelector(`.wui-cmd-empty`);m&&(m.textContent=a&&d===0?this.emptyText:``)}_teardown(){this.removeEventListener(`keydown`,this._onKeyDown),this.removeEventListener(`click`,this._onClick),this.removeEventListener(`mousedown`,this._onMouseDown),this.removeEventListener(`mousemove`,this._onMouseMove),this.removeEventListener(`input`,this._onInput),this._modal?.removeEventListener(`hidden.bs.modal`,this._onModalHidden),this._modal=null}};export{f as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./anchorOverlay-CBMAnDUt.js";import{a as r,c as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./calendarMath-BC2wGCD-.js";import{t as d}from"./elementBase-DV9IZZCu.js";import{r as f,t as p}from"./fieldState-D-zQcXUS.js";import{t as m}from"./formMirror-BMQTenSi.js";import{t as h}from"./iconGlyphs.g-
|
|
1
|
+
import{n as e,r as t,t as n}from"./anchorOverlay-CBMAnDUt.js";import{a as r,c as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./calendarMath-BC2wGCD-.js";import{t as d}from"./elementBase-DV9IZZCu.js";import{r as f,t as p}from"./fieldState-D-zQcXUS.js";import{t as m}from"./formMirror-BMQTenSi.js";import{t as h}from"./iconGlyphs.g-BlwTSNXS.js";import{n as g}from"./optionLabel-CLemms21.js";var _=class extends d{static formAssociated=!0;static get observedAttributes(){return[`value`,`min`,`max`,`placeholder`,`disabled`,`readonly`,`loading`,`first-day`,`disabled-weekdays`,`display-format`,`size`,`aria-label`,`aria-describedby`,`aria-invalid`]}constructor(){super();try{this._internals=this.attachInternals()}catch{this._internals=null}this._value=``;let e=new Date(2e3,0,1);this._viewY=e.getFullYear(),this._viewM=e.getMonth(),this._mode=`days`,this._focus=null,this._slide=``}connectedCallback(){this._rendered?this._bindGlobal?.():this.render()}attributeChangedCallback(e,t,n){e===`aria-invalid`?this._syncInvalid():this._rendered&&(e===`value`?(this._value=n||``,this._syncFormValue(),this._syncTrigger()):e===`display-format`?this._syncTrigger():e===`first-day`?this.querySelector(`.datepicker-pop`)?.hidden||this._renderView():this.render())}_syncInvalid(){let e=this.querySelector(`.datepicker-trigger`);e&&(this.hasAttribute(`aria-invalid`)?e.setAttribute(`aria-invalid`,`true`):e.removeAttribute(`aria-invalid`))}formResetCallback(){this.value=this._defaultValue||``}get value(){return this._value}set value(e){this._value=e||``,m(this,this._value),this._syncTrigger()}_firstDay(){return r(this)}render(){this._defaultValue===void 0&&(this._defaultValue=this.getAttribute(`value`)||``,this._value=this._defaultValue||this._value);let e=this.getAttribute(`placeholder`)||`Choose a date`,t=l(this._value);t&&(this._viewY=t.y,this._viewM=t.m);let n=this.getAttribute(`size`),r=n===`sm`?` input-sm`:n===`lg`?` input-lg`:``,i=this.getAttribute(`aria-label`),a=this.getAttribute(`aria-describedby`);this.innerHTML=`
|
|
2
2
|
<div class="datepicker">
|
|
3
3
|
<button type="button" class="input datepicker-trigger${r}${t?` has-value`:``}" aria-haspopup="dialog" aria-expanded="false"${this.hasAttribute(`aria-invalid`)?` aria-invalid="true"`:``}${this.hasAttribute(`disabled`)?` disabled`:``}${i?` aria-label="${g(i)}"`:``}${a?` aria-describedby="${g(a)}"`:``}>
|
|
4
4
|
<span data-trigger-label class="${t?``:`wui-select-placeholder`}">${g(t?s(this._value,this.getAttribute(`display-format`)):e)}</span>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./anchorOverlay-CBMAnDUt.js";import{a as r,c as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./calendarMath-BC2wGCD-.js";import{n as d}from"./devWarn-DXdRWZs3.js";import{n as f,r as p,t as m}from"./zone-D82f-GU_.js";import{t as h}from"./elementBase-DV9IZZCu.js";import{r as g,t as _}from"./fieldState-D-zQcXUS.js";import{t as v}from"./iconGlyphs.g-
|
|
1
|
+
import{n as e,r as t,t as n}from"./anchorOverlay-CBMAnDUt.js";import{a as r,c as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./calendarMath-BC2wGCD-.js";import{n as d}from"./devWarn-DXdRWZs3.js";import{n as f,r as p,t as m}from"./zone-D82f-GU_.js";import{t as h}from"./elementBase-DV9IZZCu.js";import{r as g,t as _}from"./fieldState-D-zQcXUS.js";import{t as v}from"./iconGlyphs.g-BlwTSNXS.js";import{n as y}from"./optionLabel-CLemms21.js";var b=4,x=[`today`,`yesterday`,`last7Days`,`last30Days`,`thisMonth`,`lastMonth`,`thisFinancialYear`],S={today:`Today`,yesterday:`Yesterday`,last7Days:`Last 7 days`,last30Days:`Last 30 days`,thisMonth:`This month`,lastMonth:`Last month`,thisFinancialYear:`This financial year`},C=e=>String(e).padStart(2,`0`),w=e=>`${e.getUTCFullYear()}-${C(e.getUTCMonth()+1)}-${C(e.getUTCDate())}`;function T(e,t=/* @__PURE__ */ new Date,{timeZone:n=m,financialYearStart:r=b}={}){let{y:i,m:a,d:o}=l(p(n,t)),s=(e,t,n)=>w(new Date(Date.UTC(e,t,n))),c=S[e];switch(e){case`today`:return{label:c,start:s(i,a,o),end:s(i,a,o)};case`yesterday`:return{label:c,start:s(i,a,o-1),end:s(i,a,o-1)};case`last7Days`:return{label:c,start:s(i,a,o-6),end:s(i,a,o)};case`last30Days`:return{label:c,start:s(i,a,o-29),end:s(i,a,o)};case`thisMonth`:return{label:c,start:s(i,a,1),end:s(i,a+1,0)};case`lastMonth`:return{label:c,start:s(i,a-1,1),end:s(i,a,0)};case`thisFinancialYear`:{let e=r-1,t=a>=e?i:i-1;return{label:c,start:s(t,e,1),end:s(t+1,e,0)}}default:return null}}function E(e){d(`[@webority/ui-elements] <wui-date-range> presets: ${e}`)}function D(e,t=/* @__PURE__ */ new Date,n={}){let r=String(e??``).trim();if(!r)return[];let i;if(r.startsWith(`[`))try{i=JSON.parse(r)}catch{return E(`the attribute is not valid JSON`),[]}else i=r.split(`,`).map(e=>e.trim());let a=[];for(let e of i)if(typeof e==`string`){let r=T(e,t,n);r?a.push(r):E(`"${e}" is not one of ${x.join(`, `)}`)}else e&&typeof e.label==`string`&&e.label&&l(e.start)&&l(e.end)?a.push({label:e.label,start:e.start,end:e.end}):E(`an item needs a label and ISO start and end dates, or a preset name`);return a}var O=class extends h{static formAssociated=!0;static get observedAttributes(){return[`start`,`end`,`min`,`max`,`placeholder`,`disabled`,`readonly`,`loading`,`first-day`,`size`,`aria-label`,`aria-describedby`,`name`,`start-name`,`end-name`,`presets`,`time-zone`,`financial-year-start`,`aria-invalid`]}constructor(){super();try{this._internals=this.attachInternals()}catch{this._internals=null}this._start=``,this._end=``,this._hover=``;let e=new Date(2e3,0,1);this._viewY=e.getFullYear(),this._viewM=e.getMonth()}connectedCallback(){this._rendered?this._bindGlobal?.():this.render()}attributeChangedCallback(e,t,n){e===`aria-invalid`?this._syncInvalid():this._rendered&&(e===`start`||e===`end`?(this._start=this.getAttribute(`start`)||``,this._end=this.getAttribute(`end`)||``,this._syncTrigger(),this._syncMirrors()):this.render())}_syncInvalid(){let e=this.querySelector(`.daterange-trigger`);e&&(this.hasAttribute(`aria-invalid`)?e.setAttribute(`aria-invalid`,`true`):e.removeAttribute(`aria-invalid`))}get value(){return{start:this._start,end:this._end}}set value(e){this._start=e?.start||``,this._end=e?.end||``,this._syncTrigger(),this._syncMirrors()}_firstDay(){return r(this)}_label(){let e=this.getAttribute(`placeholder`)||`Start to End`;return!this._start&&!this._end?{text:e,empty:!0}:{text:`${s(this._start)||`Start`} to ${s(this._end)||`End`}`,empty:!1}}render(){this._defaultStart===void 0&&(this._defaultStart=this.getAttribute(`start`)||``,this._defaultEnd=this.getAttribute(`end`)||``,this._start=this._defaultStart||this._start,this._end=this._defaultEnd||this._end);let e=l(this._start);e&&(this._viewY=e.y,this._viewM=e.m);let t=this.getAttribute(`size`),n=t===`sm`?` input-sm`:t===`lg`?` input-lg`:``,{text:r,empty:i}=this._label(),a=this.getAttribute(`aria-label`),o=this.getAttribute(`aria-describedby`);this.innerHTML=`
|
|
2
2
|
<div class="daterange">
|
|
3
3
|
<button type="button" class="input daterange-trigger${n}${i?``:` has-value`}" aria-haspopup="dialog" aria-expanded="false"${this.hasAttribute(`aria-invalid`)?` aria-invalid="true"`:``}${this.hasAttribute(`disabled`)?` disabled`:``}${a?` aria-label="${y(a)}"`:``}${o?` aria-describedby="${y(o)}"`:``}>
|
|
4
4
|
<span data-range-label class="${i?`wui-select-placeholder`:``}">${y(r)}</span>
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import{n as e}from"./devWarn-DXdRWZs3.js";import{t}from"./elementBase-DV9IZZCu.js";var n={"--color-primary":`#4F46E5`,"--color-primary-hover":`#4338CA`,"--color-primary-soft":`#E0E7FF`,"--color-primary-text":`#4F46E5`,"--color-on-primary":`#FFFFFF`,"--color-text":`#071437`,"--color-text-muted":`#4B5675`,"--color-border":`#EBEDF3`,"--color-border-strong":`#C4CADA`,"--color-surface":`#FFFFFF`,"--wui-radius-sm":`8px`,"--wui-radius-lg":`14px`,"--wui-shadow-modal":`0px 24px 60px -16px rgba(7, 20, 55, 0.28)`,"--wui-z-modal":`1505`},r=e=>`var(${e}, ${n[e]})`,i=`
|
|
2
|
+
:host {
|
|
3
|
+
all: initial;
|
|
4
|
+
display: contents;
|
|
5
|
+
font-family: inherit;
|
|
6
|
+
font-size: 16px;
|
|
7
|
+
line-height: 1.5;
|
|
8
|
+
color: ${r(`--color-text`)};
|
|
9
|
+
}
|
|
10
|
+
*, *::before, *::after {
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
[hidden] {
|
|
14
|
+
display: none !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
dialog {
|
|
18
|
+
z-index: ${r(`--wui-z-modal`)};
|
|
19
|
+
width: 100%;
|
|
20
|
+
max-width: none;
|
|
21
|
+
height: 100%;
|
|
22
|
+
max-height: none;
|
|
23
|
+
margin: 0;
|
|
24
|
+
padding: 0;
|
|
25
|
+
border: 0;
|
|
26
|
+
background: transparent;
|
|
27
|
+
color: inherit;
|
|
28
|
+
}
|
|
29
|
+
dialog[open] {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
}
|
|
34
|
+
:host([preview]) dialog {
|
|
35
|
+
position: static;
|
|
36
|
+
height: auto;
|
|
37
|
+
}
|
|
38
|
+
dialog::backdrop {
|
|
39
|
+
background: rgba(0, 0, 0, 0.7);
|
|
40
|
+
backdrop-filter: blur(5px);
|
|
41
|
+
}
|
|
42
|
+
dialog[open]::backdrop {
|
|
43
|
+
animation: wlp-fade 0.3s ease-out;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.wlp-card {
|
|
47
|
+
position: relative;
|
|
48
|
+
width: 90%;
|
|
49
|
+
max-width: 440px;
|
|
50
|
+
max-height: calc(100dvh - 32px);
|
|
51
|
+
overflow-y: auto;
|
|
52
|
+
padding: 24px;
|
|
53
|
+
background: ${r(`--color-surface`)};
|
|
54
|
+
color: ${r(`--color-text`)};
|
|
55
|
+
border: 1px solid ${r(`--color-border`)};
|
|
56
|
+
border-radius: ${r(`--wui-radius-lg`)};
|
|
57
|
+
box-shadow: ${r(`--wui-shadow-modal`)};
|
|
58
|
+
text-align: start;
|
|
59
|
+
}
|
|
60
|
+
dialog[open] .wlp-card {
|
|
61
|
+
animation: wlp-card-in 0.2s ease-out;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.wlp-close {
|
|
65
|
+
position: absolute;
|
|
66
|
+
top: 12px;
|
|
67
|
+
inset-inline-end: 12px;
|
|
68
|
+
width: 32px;
|
|
69
|
+
height: 32px;
|
|
70
|
+
padding: 0;
|
|
71
|
+
border: 0;
|
|
72
|
+
border-radius: 50%;
|
|
73
|
+
background: transparent;
|
|
74
|
+
color: ${r(`--color-text-muted`)};
|
|
75
|
+
font: inherit;
|
|
76
|
+
font-size: 22px;
|
|
77
|
+
line-height: 1;
|
|
78
|
+
cursor: pointer;
|
|
79
|
+
}
|
|
80
|
+
.wlp-close:focus-visible,
|
|
81
|
+
.wlp-button:focus-visible,
|
|
82
|
+
.wlp-input:focus-visible,
|
|
83
|
+
.wlp-secondary:focus-visible {
|
|
84
|
+
outline: 2px solid ${r(`--color-primary`)};
|
|
85
|
+
outline-offset: 2px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.wlp-heading {
|
|
89
|
+
margin: 0 32px 8px 0;
|
|
90
|
+
font-size: 20px;
|
|
91
|
+
font-weight: 600;
|
|
92
|
+
line-height: 1.3;
|
|
93
|
+
color: ${r(`--color-text`)};
|
|
94
|
+
}
|
|
95
|
+
.wlp-description {
|
|
96
|
+
margin: 0 0 16px;
|
|
97
|
+
font-size: 14px;
|
|
98
|
+
color: ${r(`--color-text-muted`)};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.wlp-form {
|
|
102
|
+
display: grid;
|
|
103
|
+
gap: 14px;
|
|
104
|
+
margin: 0;
|
|
105
|
+
}
|
|
106
|
+
.wlp-field {
|
|
107
|
+
display: grid;
|
|
108
|
+
gap: 4px;
|
|
109
|
+
}
|
|
110
|
+
.wlp-label {
|
|
111
|
+
font-size: 14px;
|
|
112
|
+
font-weight: 500;
|
|
113
|
+
color: ${r(`--color-text`)};
|
|
114
|
+
}
|
|
115
|
+
.wlp-req {
|
|
116
|
+
margin-inline-start: 2px;
|
|
117
|
+
color: ${r(`--color-primary`)};
|
|
118
|
+
}
|
|
119
|
+
.wlp-input {
|
|
120
|
+
width: 100%;
|
|
121
|
+
padding: 9px 12px;
|
|
122
|
+
border: 1px solid ${r(`--color-border`)};
|
|
123
|
+
border-radius: 8px;
|
|
124
|
+
background: ${r(`--color-surface`)};
|
|
125
|
+
color: ${r(`--color-text`)};
|
|
126
|
+
font: inherit;
|
|
127
|
+
font-size: 15px;
|
|
128
|
+
}
|
|
129
|
+
textarea.wlp-input {
|
|
130
|
+
resize: vertical;
|
|
131
|
+
min-height: 96px;
|
|
132
|
+
}
|
|
133
|
+
.wlp-input[aria-invalid="true"] {
|
|
134
|
+
border-color: var(--color-danger, #B42318);
|
|
135
|
+
}
|
|
136
|
+
.wlp-error {
|
|
137
|
+
margin: 0;
|
|
138
|
+
font-size: 13px;
|
|
139
|
+
color: var(--color-danger, #B42318);
|
|
140
|
+
}
|
|
141
|
+
.wlp-form-error {
|
|
142
|
+
margin: 0;
|
|
143
|
+
font-size: 14px;
|
|
144
|
+
color: var(--color-danger, #B42318);
|
|
145
|
+
}
|
|
146
|
+
/* The consent field uses the theme's checkbox markup; its look is restated here because the
|
|
147
|
+
theme's rules cannot reach the shadow root. */
|
|
148
|
+
.form-check {
|
|
149
|
+
display: grid;
|
|
150
|
+
grid-template-columns: auto 1fr;
|
|
151
|
+
align-items: center;
|
|
152
|
+
column-gap: 12px;
|
|
153
|
+
font-size: 14px;
|
|
154
|
+
line-height: 1.4;
|
|
155
|
+
color: ${r(`--color-text`)};
|
|
156
|
+
}
|
|
157
|
+
.form-check-input {
|
|
158
|
+
flex: none;
|
|
159
|
+
width: 20px;
|
|
160
|
+
height: 20px;
|
|
161
|
+
margin: 0;
|
|
162
|
+
appearance: none;
|
|
163
|
+
-webkit-appearance: none;
|
|
164
|
+
border: 1.6px solid ${r(`--color-border-strong`)};
|
|
165
|
+
border-radius: ${r(`--wui-radius-sm`)};
|
|
166
|
+
corner-shape: squircle;
|
|
167
|
+
background-color: ${r(`--color-surface`)};
|
|
168
|
+
background-repeat: no-repeat;
|
|
169
|
+
background-position: center;
|
|
170
|
+
background-size: 15px 15px;
|
|
171
|
+
cursor: pointer;
|
|
172
|
+
transition:
|
|
173
|
+
border-color 0.15s ease,
|
|
174
|
+
background-color 0.15s ease,
|
|
175
|
+
box-shadow 0.15s ease;
|
|
176
|
+
}
|
|
177
|
+
.form-check-input:hover:not(:checked) {
|
|
178
|
+
border-color: ${r(`--color-primary`)};
|
|
179
|
+
box-shadow: 0 0 0 2px ${r(`--color-primary-soft`)};
|
|
180
|
+
}
|
|
181
|
+
.form-check-input:checked {
|
|
182
|
+
border-color: ${r(`--color-primary`)};
|
|
183
|
+
background-color: ${r(`--color-primary`)};
|
|
184
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E");
|
|
185
|
+
}
|
|
186
|
+
.form-check-input:focus-visible {
|
|
187
|
+
outline: 2px solid ${r(`--color-primary`)};
|
|
188
|
+
outline-offset: 2px;
|
|
189
|
+
box-shadow: none;
|
|
190
|
+
}
|
|
191
|
+
.form-check-input[aria-invalid="true"] {
|
|
192
|
+
border-color: var(--color-danger, #B42318);
|
|
193
|
+
}
|
|
194
|
+
.form-check-label {
|
|
195
|
+
min-width: 0;
|
|
196
|
+
cursor: pointer;
|
|
197
|
+
}
|
|
198
|
+
.wlp-field-consent .wlp-error {
|
|
199
|
+
margin-inline-start: 32px;
|
|
200
|
+
}
|
|
201
|
+
.wlp-consent-link {
|
|
202
|
+
grid-column: 2;
|
|
203
|
+
justify-self: start;
|
|
204
|
+
color: ${r(`--color-primary-text`)};
|
|
205
|
+
font-weight: 500;
|
|
206
|
+
text-decoration: underline;
|
|
207
|
+
text-underline-offset: 3px;
|
|
208
|
+
}
|
|
209
|
+
.wlp-consent-link:focus-visible {
|
|
210
|
+
outline: 2px solid ${r(`--color-primary`)};
|
|
211
|
+
outline-offset: 2px;
|
|
212
|
+
border-radius: 4px;
|
|
213
|
+
}
|
|
214
|
+
.wlp-visually-hidden {
|
|
215
|
+
position: absolute;
|
|
216
|
+
width: 1px;
|
|
217
|
+
height: 1px;
|
|
218
|
+
margin: -1px;
|
|
219
|
+
padding: 0;
|
|
220
|
+
overflow: hidden;
|
|
221
|
+
clip: rect(0, 0, 0, 0);
|
|
222
|
+
white-space: nowrap;
|
|
223
|
+
border: 0;
|
|
224
|
+
}
|
|
225
|
+
.wlp-honeypot {
|
|
226
|
+
position: absolute !important;
|
|
227
|
+
left: -9999px !important;
|
|
228
|
+
width: 1px;
|
|
229
|
+
height: 1px;
|
|
230
|
+
opacity: 0;
|
|
231
|
+
pointer-events: none;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.wlp-actions {
|
|
235
|
+
display: flex;
|
|
236
|
+
justify-content: flex-end;
|
|
237
|
+
align-items: center;
|
|
238
|
+
gap: 8px;
|
|
239
|
+
margin-top: 4px;
|
|
240
|
+
}
|
|
241
|
+
.wlp-button {
|
|
242
|
+
display: inline-flex;
|
|
243
|
+
align-items: center;
|
|
244
|
+
justify-content: center;
|
|
245
|
+
min-height: 36px;
|
|
246
|
+
padding: 8px 16px;
|
|
247
|
+
border: 1px solid ${r(`--color-primary`)};
|
|
248
|
+
border-radius: 8px;
|
|
249
|
+
background: ${r(`--color-primary`)};
|
|
250
|
+
color: ${r(`--color-on-primary`)};
|
|
251
|
+
font: inherit;
|
|
252
|
+
font-size: 15px;
|
|
253
|
+
font-weight: 500;
|
|
254
|
+
cursor: pointer;
|
|
255
|
+
}
|
|
256
|
+
.wlp-button:hover {
|
|
257
|
+
background: ${r(`--color-primary-hover`)};
|
|
258
|
+
border-color: ${r(`--color-primary-hover`)};
|
|
259
|
+
}
|
|
260
|
+
.wlp-button:disabled {
|
|
261
|
+
opacity: 0.6;
|
|
262
|
+
cursor: default;
|
|
263
|
+
}
|
|
264
|
+
.wlp-notice {
|
|
265
|
+
margin: 4px 0 0;
|
|
266
|
+
font-size: 12px;
|
|
267
|
+
line-height: 1.4;
|
|
268
|
+
color: ${r(`--color-text-muted`)};
|
|
269
|
+
}
|
|
270
|
+
.wlp-notice a {
|
|
271
|
+
color: inherit;
|
|
272
|
+
text-decoration: underline;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.wlp-secondary-row {
|
|
276
|
+
display: flex;
|
|
277
|
+
align-items: center;
|
|
278
|
+
gap: 10px;
|
|
279
|
+
margin-top: 14px;
|
|
280
|
+
font-size: 14px;
|
|
281
|
+
color: ${r(`--color-text-muted`)};
|
|
282
|
+
}
|
|
283
|
+
.wlp-secondary-row::before,
|
|
284
|
+
.wlp-secondary-row::after {
|
|
285
|
+
content: "";
|
|
286
|
+
flex: 1;
|
|
287
|
+
height: 1px;
|
|
288
|
+
background: ${r(`--color-border`)};
|
|
289
|
+
}
|
|
290
|
+
.wlp-secondary {
|
|
291
|
+
display: block;
|
|
292
|
+
margin-top: 10px;
|
|
293
|
+
text-align: center;
|
|
294
|
+
color: ${r(`--color-primary`)};
|
|
295
|
+
font-weight: 500;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.wlp-success-title {
|
|
299
|
+
margin: 0 32px 8px 0;
|
|
300
|
+
font-size: 20px;
|
|
301
|
+
font-weight: 600;
|
|
302
|
+
color: ${r(`--color-text`)};
|
|
303
|
+
}
|
|
304
|
+
.wlp-success-text {
|
|
305
|
+
margin: 0 0 16px;
|
|
306
|
+
color: ${r(`--color-text-muted`)};
|
|
307
|
+
}
|
|
308
|
+
.wlp-success-view .wlp-button {
|
|
309
|
+
width: 100%;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
@keyframes wlp-fade {
|
|
313
|
+
from { opacity: 0; }
|
|
314
|
+
to { opacity: 1; }
|
|
315
|
+
}
|
|
316
|
+
@keyframes wlp-card-in {
|
|
317
|
+
from { opacity: 0; transform: scale(0.96); }
|
|
318
|
+
to { opacity: 1; transform: scale(1); }
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
@media (max-width: 575.98px) {
|
|
322
|
+
.wlp-card {
|
|
323
|
+
width: calc(100% - 32px);
|
|
324
|
+
max-width: none;
|
|
325
|
+
padding: 20px 16px;
|
|
326
|
+
}
|
|
327
|
+
.wlp-input {
|
|
328
|
+
font-size: 16px;
|
|
329
|
+
}
|
|
330
|
+
.wlp-button,
|
|
331
|
+
.wlp-close {
|
|
332
|
+
min-height: 44px;
|
|
333
|
+
}
|
|
334
|
+
.wlp-close {
|
|
335
|
+
min-width: 44px;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
@media (prefers-reduced-motion: reduce) {
|
|
340
|
+
dialog[open]::backdrop,
|
|
341
|
+
dialog[open] .wlp-card {
|
|
342
|
+
animation: none;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
`,a=[`name`,`email`,`phone`,`company`,`message`,`consent`],o=[`name`,`email`],s={name:`Name`,email:`Email`,phone:`Phone number`,company:`Company`,message:`Message`,consent:`I agree to be contacted about my enquiry`,consentLink:`Privacy policy`},c={name:100,email:320,phone:40,company:150,message:1e3},l={name:`name`,email:`email`,phone:`tel`,company:`organization`},u=`input:not([type=hidden]), textarea, select, button, a[href]`,d=[`exit`,`delay`,`scroll`,`pages`],f=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,p=864e5,m=`comment_subject`,h=`__RequestVerificationToken`,g=`__FormStamp`,_=`__CaptchaToken`,v=`Something went wrong. Please try again or contact us directly.`,y=`Tick the box to continue`,b=/* @__PURE__ */ `action.public-form.heading.description.fields.required.field-prefix.field-names.labels.max-lengths.submit-label.success-title.success-text.error-text.close-label.secondary-label.secondary-href.secondary-divider.consent-href.triggers.delay-seconds.scroll-percent.pages-viewed.storage-key.dismiss-days.submitted-days.success-close-seconds.preview`.split(`.`),x=/* @__PURE__ */ new Set;function S(t,n){x.has(t)||(x.add(t),e(n))}var C=0;function w(e){return(e??``).split(/\s+/).map(e=>e.trim()).filter(Boolean)}function T(e){let t={};for(let n of(e??``).split(`;`)){let e=n.indexOf(`=`);if(e<0)continue;let r=n.slice(0,e).trim();r&&(t[r]=n.slice(e+1).trim())}return t}function E(e){return String(e??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`)}var D=null;function O(e){D||(D=new CSSStyleSheet,D.replaceSync(i)),e.adoptedStyleSheets=[D]}function k(e,t){return e instanceof Error&&e.message?e.message:t}var A=class extends t{static get observedAttributes(){return b}constructor(){super(),C+=1,this._uid=`wlp-${C}`,this._rendered=!1,this._open=!1,this._opened=!1,this._posting=!1,this._stale=!1,this._armed=!1,this._session=null,this._returnTo=null,this._prevOverflow=``,this._delayTimer=null,this._closeTimer=null,this._onMouseLeave=e=>{!this._fine()||e.clientY>0||!this._engaged()||this.open(`exit`)},this._onVisibility=()=>{document.visibilityState===`hidden`&&!this._fine()&&this._engaged()&&this.open(`exit`)},this._onScroll=()=>this._trackScroll()}get isOpen(){return this._open}set isOpen(e){e?this.open(`manual`):this.close(`dismiss`)}connectedCallback(){this._rendered||this._render(),this._arm(),this.preview&&!this._open&&this.open(`manual`)}disconnectedCallback(){this._disarm(),this._open&&this._release()}attributeChangedCallback(){this._rendered&&(this._open?this._stale=!0:this._render())}open(e=`manual`){this._open||e!==`manual`&&(this._opened||this._blocked()||document.querySelector(`dialog[open], .modal.show`))||(this._rendered||this._render(),this._opened=!0,this._open=!0,clearTimeout(this._delayTimer),this._showForm(),this._modal=!this.preview,this._modal?(this._returnTo=document.activeElement,this._prevOverflow=document.documentElement.style.overflow,document.documentElement.style.overflow=`hidden`,this._dialog().showModal(),this._dialog().querySelector(`[data-wlp-field] [data-wlp-input]`)?.focus()):this._dialog().setAttribute(`open`,``),this._remember(`shown`),this._emit(`wui-lead-popup-shown`,{trigger:e}))}close(e=`dismiss`){if(!this._open)return;clearTimeout(this._closeTimer),this._release();let t=this._returnTo;this._returnTo=null,t?.isConnected&&typeof t.focus==`function`&&t.focus(),this._stale&&this._render(),this._emit(`wui-lead-popup-closed`,{reason:e})}_release(){this._open=!1,this._dialog().close(),this._modal&&(document.documentElement.style.overflow=this._prevOverflow)}_root(){return this.shadowRoot??this.attachShadow({mode:`open`})}_dialog(){return this._root().querySelector(`dialog`)}_emit(e,t){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:t}))}_text(e,t=``){return this.getAttribute(e)||t}_number(e,t){let n=this.getAttribute(e);if(n===null||n.trim()===``)return t;let r=Number(n);return Number.isFinite(r)&&r>=0?r:t}get preview(){return this.hasAttribute(`preview`)}set preview(e){this.toggleAttribute(`preview`,e===!0||e===``||e===`true`)}_fieldKeys(){let e=w(this.getAttribute(`fields`)).filter(e=>a.includes(e)?!0:(S(`field:${e}`,`[@webority/ui-elements] <wui-lead-popup> has no field "${e}". It is ignored.`),!1));return e.length?e:o}_requiredKeys(){let e=this._fieldKeys();return w(this.getAttribute(`required`)).filter(t=>e.includes(t))}_label(e){return T(this.getAttribute(`labels`))[e]||s[e]}_postedName(e){return this._text(`field-prefix`)+(T(this.getAttribute(`field-names`))[e]||e)}_maxLength(e){let t=Number(T(this.getAttribute(`max-lengths`))[e]);return Number.isInteger(t)&&t>0?t:c[e]}_triggers(){if(this.preview)return[];let e=(this.getAttribute(`triggers`)??``).split(/\s+/).filter(e=>d.includes(e));return e.length?this.getAttribute(`storage-key`)?e:(S(`storage-key`,`[@webority/ui-elements] <wui-lead-popup> has triggers but no storage-key. The triggers are off.`),[]):[]}_render(){let e=this._root();O(e);let t=this._uid,n=this._fieldKeys(),r=new Set(this._requiredKeys()),i=this._text(`heading`),a=this._text(`description`),o=this._text(`secondary-label`),s=this._text(`secondary-href`),c=n.map(e=>this._fieldMarkup(e,r.has(e))).join(``),l=document.createElement(`template`);l.innerHTML=`
|
|
346
|
+
<dialog class="wlp-dialog" aria-labelledby="${t}-h"${a?` aria-describedby="${t}-d"`:``}>
|
|
347
|
+
<div class="wlp-card">
|
|
348
|
+
<button type="button" class="wlp-close" aria-label="${E(this._text(`close-label`,`Close`))}" data-wlp-close>×</button>
|
|
349
|
+
<div class="wlp-form-view">
|
|
350
|
+
<h2 class="wlp-heading" id="${t}-h">${E(i)}</h2>
|
|
351
|
+
${a?`<p class="wlp-description" id="${t}-d">${E(a)}</p>`:``}
|
|
352
|
+
<form class="wlp-form" novalidate data-wlp-form>
|
|
353
|
+
${c}
|
|
354
|
+
<p class="wlp-form-error" role="alert" hidden data-wlp-form-error></p>
|
|
355
|
+
<div class="wlp-actions">
|
|
356
|
+
<button type="submit" class="wlp-button" data-wlp-submit>${E(this._text(`submit-label`,`Send`))}</button>
|
|
357
|
+
</div>
|
|
358
|
+
<input type="text" name="${m}" class="wlp-honeypot" tabindex="-1" autocomplete="off" aria-hidden="true" data-wlp-honeypot>
|
|
359
|
+
<p class="wlp-notice" data-recaptcha-notice>This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms of Service</a> apply.</p>
|
|
360
|
+
</form>
|
|
361
|
+
${o&&s?`<div class="wlp-secondary-row"><span>${E(this._text(`secondary-divider`,`or`))}</span></div><a class="wlp-secondary" href="${E(s)}" data-wlp-secondary>${E(o)}</a>`:``}
|
|
362
|
+
</div>
|
|
363
|
+
<div class="wlp-success-view" hidden>
|
|
364
|
+
<h2 class="wlp-success-title" role="status" tabindex="-1" data-wlp-success-title>${E(this._text(`success-title`,`Thank you`))}</h2>
|
|
365
|
+
${this._text(`success-text`)?`<p class="wlp-success-text">${E(this._text(`success-text`))}</p>`:``}
|
|
366
|
+
<button type="button" class="wlp-button" data-wlp-done>${E(this._text(`close-label`,`Close`))}</button>
|
|
367
|
+
</div>
|
|
368
|
+
</div>
|
|
369
|
+
</dialog>`,e.replaceChildren(l.content),this._rendered=!0,this._stale=!1,this._wire()}_fieldMarkup(e,t){let n=`${this._uid}-f-${e}`,r=`${this._uid}-e-${e}`,i=this._label(e),a=E(this._postedName(e)),o=t?`<span class="wlp-req" aria-hidden="true">*</span><span class="wlp-visually-hidden">required</span>`:``,s=t?` aria-required="true"`:``;if(e===`consent`){let t=this._text(`consent-href`),c=t?`<a class="wlp-consent-link" href="${E(t)}">${E(this._label(`consentLink`))}</a>`:``;return`
|
|
370
|
+
<div class="wlp-field wlp-field-consent" data-wlp-field="${e}">
|
|
371
|
+
<div class="form-check">
|
|
372
|
+
<input class="form-check-input" type="checkbox" id="${n}" data-wlp-input="${e}" name="${a}"${s}>
|
|
373
|
+
<label class="form-check-label" for="${n}">${E(i)}${o}</label>
|
|
374
|
+
${c}
|
|
375
|
+
</div>
|
|
376
|
+
<p class="wlp-error" id="${r}" hidden></p>
|
|
377
|
+
</div>`}let c=`id="${n}" data-wlp-input="${e}" name="${a}" maxlength="${this._maxLength(e)}"${s}`,u=e===`message`?`<textarea class="wlp-input" rows="4" ${c}></textarea>`:`<input class="wlp-input" type="${e===`email`?`email`:e===`phone`?`tel`:`text`}" ${c}${l[e]?` autocomplete="${l[e]}"`:``}>`;return`
|
|
378
|
+
<div class="wlp-field" data-wlp-field="${e}">
|
|
379
|
+
<label class="wlp-label" for="${n}">${E(i)}${o}</label>
|
|
380
|
+
${u}
|
|
381
|
+
<p class="wlp-error" id="${r}" hidden></p>
|
|
382
|
+
</div>`}_wire(){let e=this._dialog();e.addEventListener(`cancel`,e=>{e.preventDefault(),this.close(`escape`)}),e.addEventListener(`click`,t=>{t.target===e&&this.close(`backdrop`)}),e.addEventListener(`keydown`,t=>{if(t.key!==`Tab`||!this._modal)return;let n=Array.from(e.querySelectorAll(u)).filter(e=>!e.disabled&&e.getClientRects().length>0);if(!n.length)return;let r=n.indexOf(this._root().activeElement);t.preventDefault(),n[r===-1?t.shiftKey?n.length-1:0:(r+(t.shiftKey?-1:1)+n.length)%n.length].focus()});for(let t of e.querySelectorAll(`[data-wlp-close]`))t.addEventListener(`click`,()=>this.close(`dismiss`));e.querySelector(`[data-wlp-done]`)?.addEventListener(`click`,()=>this.close(`submitted`)),e.querySelector(`[data-wlp-secondary]`)?.addEventListener(`click`,()=>this.close(`secondary`)),e.querySelector(`[data-wlp-form]`).addEventListener(`submit`,e=>this._onSubmit(e))}_showForm(){let e=this._root();e.querySelector(`.wlp-form-view`).hidden=!1,e.querySelector(`.wlp-success-view`).hidden=!0}_showSuccess(){let e=this._root();e.querySelector(`.wlp-form-view`).hidden=!0;let t=e.querySelector(`.wlp-success-view`);t.hidden=!1,e.querySelector(`[data-wlp-success-title]`).focus()}_setFieldError(e,t){let n=this._root(),r=n.querySelector(`[data-wlp-input="${e}"]`),i=n.querySelector(`#${this._uid}-e-${e}`);return i.textContent=t,i.hidden=!t,t?(r.setAttribute(`aria-invalid`,`true`),r.setAttribute(`aria-describedby`,i.id)):(r.removeAttribute(`aria-invalid`),r.removeAttribute(`aria-describedby`)),r}_validate(){let e=new Set(this._requiredKeys()),t=null,n={};for(let r of this._fieldKeys()){let i=this._root().querySelector(`[data-wlp-input="${r}"]`),a=r===`consent`?i.checked:i.value.trim();n[r]=a;let o=``;!a&&e.has(r)?o=r===`consent`?y:`Enter your ${this._label(r).toLowerCase()}`:r===`email`&&a&&!f.test(a)&&(o=`Enter a valid email address`);let s=this._setFieldError(r,o);o&&!t&&(t=s)}return t?(t.focus(),null):n}_setBusy(e){this._posting=e;let t=this._root().querySelector(`[data-wlp-form]`);e?t.setAttribute(`aria-busy`,`true`):t.removeAttribute(`aria-busy`),this._root().querySelector(`[data-wlp-submit]`).disabled=e}_fail(e,t){this._setBusy(!1);let n=this._root().querySelector(`[data-wlp-form-error]`);n.textContent=t,n.hidden=!t,this._emit(`wui-lead-popup-error`,{message:t,reason:e})}async _onSubmit(e){if(e.preventDefault(),this._posting)return;this._root().querySelector(`[data-wlp-form-error]`).hidden=!0;let t=this._validate();t&&!this.preview&&await this._post(t)}async _post(e){let t=globalThis.WeborityPublicForms;if(!t){S(`gate`,`[@webority/ui-elements] <wui-lead-popup> needs window.WeborityPublicForms. Load Webority.Security.Razor's public-form.js.`),this._fail(`gate`,this._text(`error-text`,v));return}let n=this._text(`error-text`,v),r=this._text(`public-form`);this._setBusy(!0);let i,a;try{i=await t.session(),a=await t.mintToken(r)}catch(e){this._fail(`gate`,k(e,n));return}let o=this._root(),s=new FormData;for(let t of this._fieldKeys())s.append(this._postedName(t),e[t]);s.set(h,i.token),s.set(g,i.formStamp),s.set(_,a),s.set(m,o.querySelector(`[data-wlp-honeypot]`).value),this._emit(`wui-lead-popup-before-submit`,{formData:s});let c;try{c=await fetch(this._text(`action`),{method:`POST`,body:s,credentials:`same-origin`,headers:{"X-Requested-With":`XMLHttpRequest`}})}catch{this._fail(`network`,n);return}if(!c.ok){let e=await c.json().catch(()=>null),t=typeof e?.detail==`string`?e.detail.trim():``;this._fail(`server`,t||n);return}let l=await c.json().catch(()=>null);this._succeed(e,l)}_succeed(e,t){this._setBusy(!1),this._remember(`submitted`),this._emit(`wui-lead-popup-submitted`,{values:e,response:t}),this._showSuccess();let n=this._number(`success-close-seconds`,5);n>0&&(this._closeTimer=setTimeout(()=>this.close(`submitted`),n*1e3))}_arm(){if(this._armed)return;this._armed=!0;let e=this._triggers();if(!e.length)return;this._session=this._loadSession();let t=location.pathname+location.search;if(this._session.pages.includes(t)||this._session.pages.push(t),this._saveSession(),e.includes(`exit`)&&(document.documentElement.addEventListener(`mouseleave`,this._onMouseLeave),document.addEventListener(`visibilitychange`,this._onVisibility)),e.includes(`delay`)){let e=Math.max(0,this._number(`delay-seconds`,30)*1e3-(Date.now()-this._session.start));this._delayTimer=setTimeout(()=>this.open(`delay`),e)}e.includes(`scroll`)&&(window.addEventListener(`scroll`,this._onScroll,{passive:!0}),this._trackScroll()),e.includes(`pages`)&&this._session.pages.length>this._number(`pages-viewed`,2)&&this.open(`pages`)}_disarm(){this._armed=!1,clearTimeout(this._delayTimer),clearTimeout(this._closeTimer),document.documentElement.removeEventListener(`mouseleave`,this._onMouseLeave),document.removeEventListener(`visibilitychange`,this._onVisibility),window.removeEventListener(`scroll`,this._onScroll)}_trackScroll(){let e=document.documentElement.scrollHeight;if(this._session&&e>0){let t=(window.scrollY+window.innerHeight)/e*100;t>this._session.maxScroll&&(this._session.maxScroll=t,this._saveSession()),this._session.maxScroll>this._number(`scroll-percent`,50)&&this.open(`scroll`)}}_fine(){return typeof matchMedia!=`function`||matchMedia(`(pointer: fine)`).matches}_engaged(){let e=this._session;return e?Date.now()-e.start>this._number(`delay-seconds`,30)*1e3||e.maxScroll>this._number(`scroll-percent`,50)||e.pages.length>this._number(`pages-viewed`,2):!1}_sessionKey(){return`wui-lead-popup:${this.getAttribute(`storage-key`)}`}_loadSession(){let e={start:Date.now(),maxScroll:0,pages:[]};try{let e=sessionStorage.getItem(this._sessionKey());if(e){let t=JSON.parse(e);if(Number.isFinite(t.start)&&Number.isFinite(t.maxScroll)&&Array.isArray(t.pages))return t}}catch{return e}return e}_saveSession(){try{sessionStorage.setItem(this._sessionKey(),JSON.stringify(this._session))}catch{}}_readMemory(){let e=this.getAttribute(`storage-key`);if(!e)return null;try{let t=JSON.parse(localStorage.getItem(e)??`null`);if((t?.state===`shown`||t?.state===`submitted`)&&Number.isFinite(Date.parse(t.at)))return t}catch{return null}return null}_blocked(){let e=this._readMemory();if(!e)return!1;let t=e.state===`shown`?this._number(`dismiss-days`,30):this._number(`submitted-days`,365);return Date.now()-Date.parse(e.at)<t*p}_remember(e){let t=this.getAttribute(`storage-key`);if(t&&!this.preview)try{localStorage.setItem(t,JSON.stringify({state:e,at:(/* @__PURE__ */ new Date()).toISOString()}))}catch{}}};export{A as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./elementBase-DV9IZZCu.js";import{f as t}from"./formatters-Ba0CvsTs.js";import{t as n}from"./iconGlyphs.g-
|
|
1
|
+
import{t as e}from"./elementBase-DV9IZZCu.js";import{f as t}from"./formatters-Ba0CvsTs.js";import{t as n}from"./iconGlyphs.g-BlwTSNXS.js";var r=`a.wui-lightbox-item`,i=1,a=4,o=.5,s=2,c=50,l=6,u=300,d=300;function f(e){return Number.isFinite(e)?Math.min(a,Math.max(i,e)):i}function p(e,t,n,r){let i=(e,n)=>Math.max(0,(e*t-n)/2),a=i(r.width,n.width),o=i(r.height,n.height);return{x:Math.min(a,Math.max(-a,e.x)),y:Math.min(o,Math.max(-o,e.y))}}function m(e,t){return Math.abs(e)<c||Math.abs(e)<Math.abs(t)*1.5?0:e<0?1:-1}function h(e){let t=String(e??``).split(/[?#]/)[0].split(`/`).filter(Boolean).pop()??``;try{return decodeURIComponent(t)}catch{return t}}function g(e,t,n={}){let r=document.createElement(e);r.className=t;for(let[e,t]of Object.entries(n))r.setAttribute(e,t);return r}function _(e,t,r){let i=g(`button`,`u-action wui-lightbox-btn ${r}`,{type:`button`,"aria-label":t,title:t});return i.style.setProperty(`--wui-action-size`,`40px`),i.innerHTML=n(e,{size:20}),i}var v=class extends e{static get observedAttributes(){return[`open-index`]}constructor(){super(),this._ui=null,this._index=0,this._zoom=i,this._pan={x:0,y:0},this._pointers=/* @__PURE__ */ new Map,this._gesture=null,this._lastTap=-1/0,this._returnTo=null,this._lockedOverflow=null,this._onClick=e=>{if(e.defaultPrevented||e.button!==0||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey)return;let t=e.target?.closest?.(r);if(!t||!this.contains(t))return;let n=this._links().indexOf(t);n<0||(e.preventDefault(),this.open(n))}}get download(){return this.hasAttribute(`download`)}set download(e){this.toggleAttribute(`download`,e===!0||e===``||e===`true`)}get label(){return this.getAttribute(`label`)||`Image viewer`}set label(e){this.setAttribute(`label`,String(e??``))}get layout(){return this.getAttribute(`layout`)===`single`?`single`:`gallery`}set layout(e){if(e===`single`)this.setAttribute(`layout`,`single`);else if(e===`gallery`||e===``)this.removeAttribute(`layout`);else throw Error(`<wui-lightbox> layout must be "gallery" or "single", received "${e}".`)}get isOpen(){return this._ui!==null}connectedCallback(){this.addEventListener(`click`,this._onClick),this._syncOpenIndex()}disconnectedCallback(){this.removeEventListener(`click`,this._onClick),this._teardown()}attributeChangedCallback(){this.isConnected&&this._syncOpenIndex()}_syncOpenIndex(){let e=this.getAttribute(`open-index`);e===null?this.close():this.open(Number(e))}_links(){return[...this.querySelectorAll(r)]}_items(){return this._links().map(e=>{let t=e.getAttribute(`href`)??``;return{link:e,src:t,alt:e.querySelector(`img`)?.getAttribute(`alt`)??``,caption:e.dataset.caption??``,name:e.dataset.name||h(t)}})}open(e=0){let t=this._items();return t.length?(this._ui||(this._returnTo=document.activeElement,this._build(),this.dispatchEvent(new CustomEvent(`wui-lightbox:open`,{bubbles:!0,detail:{index:e}}))),this._show(e,t),this._ui.close.focus(),!0):!1}close(){if(!this._ui)return;let e=this._index,t=this._links()[e]??this._returnTo;this._teardown(),t?.isConnected&&t.focus(),this._returnTo=null,this.dispatchEvent(new CustomEvent(`wui-lightbox:close`,{bubbles:!0,detail:{index:e}}))}_teardown(){this._ui&&(this._ui.root.remove(),this._ui=null,this._pointers.clear(),this._gesture=null,this._lockedOverflow!==null&&(document.documentElement.style.overflow=this._lockedOverflow,this._lockedOverflow=null))}_build(){let e=g(`div`,`wui-lightbox-overlay`,{role:`dialog`,"aria-modal":`true`,"aria-label":this.label,tabindex:`-1`}),t=g(`div`,`wui-lightbox-bar`),r=g(`span`,`wui-lightbox-count`,{"aria-live":`polite`}),i=g(`div`,`wui-lightbox-tools`),a=_(`zoom-out`,`Zoom out`,`wui-lightbox-zoom-out`),s=_(`zoom-in`,`Zoom in`,`wui-lightbox-zoom-in`),c=g(`a`,`u-action wui-lightbox-btn wui-lightbox-download`,{"aria-label":`Download`,title:`Download`});c.style.setProperty(`--wui-action-size`,`40px`),c.innerHTML=n(`download`,{size:20}),c.hidden=!this.download;let l=_(`x`,`Close`,`wui-lightbox-close`);i.append(a,s,c,l),t.append(r,i);let u=g(`div`,`wui-lightbox-stage`),d=_(`chevron-left`,`Previous image`,`wui-lightbox-nav wui-lightbox-prev`),f=_(`chevron-right`,`Next image`,`wui-lightbox-nav wui-lightbox-next`),p=g(`img`,`wui-lightbox-image`,{decoding:`async`,draggable:`false`,alt:``}),m=g(`p`,`wui-lightbox-status`,{role:`status`});u.append(p,m,d,f);let h=g(`p`,`wui-lightbox-caption`);e.append(t,u,h);let v={root:e,count:r,zoomOut:a,zoomIn:s,download:c,close:l,stage:u,prev:d,next:f,image:p,status:m,caption:h};this._ui=v,l.addEventListener(`click`,()=>this.close()),d.addEventListener(`click`,()=>this.step(-1)),f.addEventListener(`click`,()=>this.step(1)),a.addEventListener(`click`,()=>this._setZoom(this._zoom-o)),s.addEventListener(`click`,()=>this._setZoom(this._zoom+o)),e.addEventListener(`keydown`,e=>this._onKeyDown(e)),u.addEventListener(`pointerdown`,e=>this._onPointerDown(e)),u.addEventListener(`pointermove`,e=>this._onPointerMove(e)),u.addEventListener(`pointerup`,e=>this._onPointerEnd(e,!0)),u.addEventListener(`pointercancel`,e=>this._onPointerEnd(e,!1)),u.addEventListener(`wheel`,e=>this._onWheel(e),{passive:!1}),p.addEventListener(`load`,()=>{this._ui===v&&(m.textContent=``,u.removeAttribute(`aria-busy`),p.hidden=!1,this._applyTransform())}),p.addEventListener(`error`,()=>{this._ui===v&&(u.removeAttribute(`aria-busy`),p.hidden=!0,m.textContent=`This image can't be shown.`)}),this.append(e),this._lockedOverflow=document.documentElement.style.overflow,document.documentElement.style.overflow=`hidden`}step(e){if(!this._ui||!e)return;let t=this._items();t.length<2||this._show((this._index+e+t.length)%t.length,t)}_show(e,n){let r=this._ui,a=Math.min(n.length-1,Math.max(0,Math.trunc(Number(e))||0)),o=n[a],s=a!==this._index||!r.image.getAttribute(`src`);if(this._index=a,this._zoom=i,this._pan={x:0,y:0},r.count.textContent=`${t(a+1,{decimals:0})} of ${t(n.length,{decimals:0})}`,r.caption.textContent=o.caption,r.caption.hidden=!o.caption,r.download.href=o.src,r.download.setAttribute(`download`,o.name),r.prev.hidden=r.next.hidden=n.length<2,r.stage.setAttribute(`aria-busy`,`true`),r.status.textContent=``,r.image.hidden=!1,r.image.alt=o.alt||o.caption,r.image.src=o.src,this._applyTransform(),this._syncZoomButtons(),n.length>1)for(let e of[n[(a+1)%n.length],n[(a-1+n.length)%n.length]])new Image().src=e.src;s&&this.dispatchEvent(new CustomEvent(`wui-lightbox:change`,{bubbles:!0,detail:{index:a}}))}_syncZoomButtons(){this._ui.zoomOut.disabled=this._zoom<=i,this._ui.zoomIn.disabled=this._zoom>=a;let e=document.activeElement;(e===this._ui.zoomOut||e===this._ui.zoomIn)&&e.disabled&&this._ui.close.focus()}_setZoom(e){this._ui&&(this._zoom=f(e),this._pan=this._clampedPan(this._pan),this._applyTransform(),this._syncZoomButtons())}_clampedPan(e){let{stage:t,image:n}=this._ui;return p(e,this._zoom,{width:t.clientWidth,height:t.clientHeight},{width:n.offsetWidth,height:n.offsetHeight})}_applyTransform(){let{image:e,stage:t}=this._ui;e.style.transform=`translate(${this._pan.x}px, ${this._pan.y}px) scale(${this._zoom})`,t.classList.toggle(`wui-lightbox-zoomed`,this._zoom>i)}_onKeyDown(e){if(e.key===`Escape`)e.preventDefault(),e.stopPropagation(),this.close();else if(e.key===`Tab`)this._trapTab(e);else if(e.key===`ArrowLeft`||e.key===`ArrowRight`)e.preventDefault(),this.step(e.key===`ArrowRight`?1:-1);else if(e.key===`Home`||e.key===`End`){e.preventDefault();let t=this._items();this._show(e.key===`Home`?0:t.length-1,t)}else e.key===`+`||e.key===`=`?(e.preventDefault(),this._setZoom(this._zoom+o)):e.key===`-`?(e.preventDefault(),this._setZoom(this._zoom-o)):e.key===`0`&&(e.preventDefault(),this._setZoom(i))}_trapTab(e){let t=[...this._ui.root.querySelectorAll(`button, a[href]`)].filter(e=>!e.hidden&&!e.disabled);if(!t.length){e.preventDefault();return}let n=t[0],r=t[t.length-1],i=document.activeElement;e.shiftKey&&(i===n||!this._ui.root.contains(i))?(e.preventDefault(),r.focus()):e.shiftKey||i!==r&&this._ui.root.contains(i)||(e.preventDefault(),n.focus())}_onWheel(e){e.preventDefault(),this._setZoom(this._zoom*(e.deltaY<0?1.15:1/1.15))}_onPointerDown(e){if(!e.target.closest(`.wui-lightbox-nav`)){if(this._ui.stage.setPointerCapture?.(e.pointerId),this._pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),this._pointers.size===2){let[e,t]=[...this._pointers.values()];this._gesture={kind:`pinch`,distance:Math.hypot(e.x-t.x,e.y-t.y)||1,zoom:this._zoom}}else this._pointers.size===1&&(this._gesture={kind:`drag`,startX:e.clientX,startY:e.clientY,startTime:e.timeStamp,pan:{...this._pan},onImage:e.target===this._ui.image,moved:!1})}}_onPointerMove(e){let t=this._gesture;if(t&&this._pointers.has(e.pointerId)){if(this._pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),t.kind===`pinch`&&this._pointers.size===2){let[e,n]=[...this._pointers.values()];this._setZoom(t.zoom*Math.hypot(e.x-n.x,e.y-n.y)/t.distance)}else if(t.kind===`drag`){let n=e.clientX-t.startX,r=e.clientY-t.startY;Math.hypot(n,r)>l&&(t.moved=!0),this._zoom>i&&(this._pan=this._clampedPan({x:t.pan.x+n,y:t.pan.y+r}),this._ui.stage.classList.add(`is-dragging`),this._applyTransform())}}}_onPointerEnd(e,t){let n=this._gesture;if(this._pointers.delete(e.pointerId),this._ui?.stage.classList.remove(`is-dragging`),!n)return;if(n.kind===`pinch`){this._pointers.size<2&&(this._gesture=null);return}if(this._gesture=null,!t)return;let r=e.clientX-n.startX,a=e.clientY-n.startY;n.moved?this._zoom===i&&this.step(m(r,a)):e.timeStamp-n.startTime>u||(n.onImage?e.timeStamp-this._lastTap<d?(this._lastTap=-1/0,this._setZoom(this._zoom>i?i:s)):this._lastTap=e.timeStamp:this.close())}};export{v as t};
|