Packages

A collection of components for Phoenix LiveView.

Current section

Files

Jump to
modern_ui priv modern_ui_static js modern_ui.mjs.map
Raw

priv/modern_ui_static/js/modern_ui.mjs.map

{
"version": 3,
"sources": ["../../../assets/src/hooks/SmoothScroll.ts", "../../../assets/src/hooks/CharacterCounter.ts", "../../../assets/src/hooks/ModalDialog.ts", "../../../assets/src/hooks/index.ts"],
"sourcesContent": ["import { Hook } from \"phoenix_live_view\";\n\nexport const SmoothScroll: Hook = {\n updated() {\n const children = Array.from(this.el.children) as HTMLElement[];\n const active = children.find((el) => el.dataset.active != null);\n\n if (active != null) {\n active.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n }\n },\n};\n", "import { Hook } from \"phoenix_live_view\";\n\nconst SELECTOR = {\n input: \"[data-type='ModernUI.CharacterCounter.input']\",\n counter: \"[data-type='ModernUI.CharacterCounter.counter']\",\n} as const;\n\nconst ATTRS = {\n maxLengthVal: \"data-max-length\",\n} as const;\n\nconst CLASSES = {\n ok: \"text-secondary\",\n warning: \"text-warning\",\n danger: \"text-danger\",\n} as const;\n\nconst THRESHOLD = [\n [90, CLASSES.danger],\n [75, CLASSES.warning],\n [-1, CLASSES.ok],\n] as const;\n\nconst toggleClasses = (el: HTMLElement, value: number) => {\n for (const cl of Object.values(CLASSES)) {\n el.classList.remove(cl);\n }\n\n for (const [threshold, className] of THRESHOLD) {\n if (value >= threshold) {\n el.classList.add(className);\n break;\n }\n }\n};\n\nconst updateCounter = (el: HTMLElement) => {\n const $input = el.querySelector(SELECTOR.input) as HTMLInputElement;\n const $counter = el.querySelector(SELECTOR.counter) as HTMLElement;\n if ($input == null || $counter == null) {\n return;\n }\n\n const maxLength = parseInt(el.getAttribute(ATTRS.maxLengthVal) || \"0\", 10);\n if (maxLength <= 0) {\n return;\n }\n\n const currentLength = $input.value.length;\n $counter.textContent = currentLength.toString();\n\n toggleClasses($counter, (currentLength / maxLength) * 100);\n};\n\nexport const CharacterCounter: Hook = {\n mounted() {\n updateCounter(this.el);\n\n const update = () => {\n updateCounter(this.el);\n };\n\n this.el.addEventListener(\"input\", update);\n this.el.addEventListener(\"keyup\", update);\n this.el.addEventListener(\"paste\", () => {\n // Delay to allow paste content to be processed\n setTimeout(update, 100);\n });\n },\n\n updated() {\n updateCounter(this.el);\n },\n};\n", "import { Hook } from \"phoenix_live_view\";\n\nconst SELECTOR = {\n close: \"[data-type='ModernUI.ModalDialog.close']\",\n} as const;\n\nconst ATTRS = {\n onCancel: \"data-dialog-on-cancel\",\n} as const;\n\nexport const ModalDialog: Hook = {\n mounted() {\n const $dialog = this.el as HTMLDialogElement;\n const $close = $dialog.querySelector(SELECTOR.close) as HTMLButtonElement;\n\n $close.addEventListener(\"click\", () => {\n $dialog.close();\n });\n\n $dialog.addEventListener(\"close\", () => {\n const onCancel = $dialog.getAttribute(ATTRS.onCancel);\n if (onCancel != null) {\n this.liveSocket.execJS(this.el, onCancel);\n }\n });\n\n $dialog.showModal();\n },\n\n updated() {\n const $dialog = this.el as HTMLDialogElement;\n $dialog.showModal();\n },\n};\n", "import { SmoothScroll } from \"./SmoothScroll\";\nimport { CharacterCounter } from \"./CharacterCounter\";\nimport { ModalDialog } from \"./ModalDialog\";\n\nexport default {\n \"ModernUI.SmoothScroll\": SmoothScroll,\n \"ModernUI.CharacterCounter\": CharacterCounter,\n \"ModernUI.ModalDialog\": ModalDialog,\n};\n"],
"mappings": ";AAEO,IAAM,eAAqB;AAAA,EAChC,UAAU;AACR,UAAM,WAAW,MAAM,KAAK,KAAK,GAAG,QAAQ;AAC5C,UAAM,SAAS,SAAS,KAAK,CAAC,OAAO,GAAG,QAAQ,UAAU,IAAI;AAE9D,QAAI,UAAU,MAAM;AAClB,aAAO,eAAe;AAAA,QACpB,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;ACbA,IAAM,WAAW;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AACX;AAEA,IAAM,QAAQ;AAAA,EACZ,cAAc;AAChB;AAEA,IAAM,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,QAAQ;AACV;AAEA,IAAM,YAAY;AAAA,EAChB,CAAC,IAAI,QAAQ,MAAM;AAAA,EACnB,CAAC,IAAI,QAAQ,OAAO;AAAA,EACpB,CAAC,IAAI,QAAQ,EAAE;AACjB;AAEA,IAAM,gBAAgB,CAAC,IAAiB,UAAkB;AACxD,aAAW,MAAM,OAAO,OAAO,OAAO,GAAG;AACvC,OAAG,UAAU,OAAO,EAAE;AAAA,EACxB;AAEA,aAAW,CAAC,WAAW,SAAS,KAAK,WAAW;AAC9C,QAAI,SAAS,WAAW;AACtB,SAAG,UAAU,IAAI,SAAS;AAC1B;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,gBAAgB,CAAC,OAAoB;AACzC,QAAM,SAAS,GAAG,cAAc,SAAS,KAAK;AAC9C,QAAM,WAAW,GAAG,cAAc,SAAS,OAAO;AAClD,MAAI,UAAU,QAAQ,YAAY,MAAM;AACtC;AAAA,EACF;AAEA,QAAM,YAAY,SAAS,GAAG,aAAa,MAAM,YAAY,KAAK,KAAK,EAAE;AACzE,MAAI,aAAa,GAAG;AAClB;AAAA,EACF;AAEA,QAAM,gBAAgB,OAAO,MAAM;AACnC,WAAS,cAAc,cAAc,SAAS;AAE9C,gBAAc,UAAW,gBAAgB,YAAa,GAAG;AAC3D;AAEO,IAAM,mBAAyB;AAAA,EACpC,UAAU;AACR,kBAAc,KAAK,EAAE;AAErB,UAAM,SAAS,MAAM;AACnB,oBAAc,KAAK,EAAE;AAAA,IACvB;AAEA,SAAK,GAAG,iBAAiB,SAAS,MAAM;AACxC,SAAK,GAAG,iBAAiB,SAAS,MAAM;AACxC,SAAK,GAAG,iBAAiB,SAAS,MAAM;AAEtC,iBAAW,QAAQ,GAAG;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEA,UAAU;AACR,kBAAc,KAAK,EAAE;AAAA,EACvB;AACF;;;ACvEA,IAAMA,YAAW;AAAA,EACf,OAAO;AACT;AAEA,IAAMC,SAAQ;AAAA,EACZ,UAAU;AACZ;AAEO,IAAM,cAAoB;AAAA,EAC/B,UAAU;AACR,UAAM,UAAU,KAAK;AACrB,UAAM,SAAS,QAAQ,cAAcD,UAAS,KAAK;AAEnD,WAAO,iBAAiB,SAAS,MAAM;AACrC,cAAQ,MAAM;AAAA,IAChB,CAAC;AAED,YAAQ,iBAAiB,SAAS,MAAM;AACtC,YAAM,WAAW,QAAQ,aAAaC,OAAM,QAAQ;AACpD,UAAI,YAAY,MAAM;AACpB,aAAK,WAAW,OAAO,KAAK,IAAI,QAAQ;AAAA,MAC1C;AAAA,IACF,CAAC;AAED,YAAQ,UAAU;AAAA,EACpB;AAAA,EAEA,UAAU;AACR,UAAM,UAAU,KAAK;AACrB,YAAQ,UAAU;AAAA,EACpB;AACF;;;AC7BA,IAAO,gBAAQ;AAAA,EACb,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,EAC7B,wBAAwB;AAC1B;",
"names": ["SELECTOR", "ATTRS"]
}