UNPKG

@userfrosting/sprinkle-core

Version:
210 lines (209 loc) 7.36 kB
import { i as e, r as t, t as n } from "./stores-DoFJy34U.js"; import { t as r } from "./interfaces-d11lley8.js"; import i from "axios"; import { computed as a, ref as o, toValue as s, watchEffect as c } from "vue"; import { between as l, email as u, integer as d, maxLength as f, minLength as p, not as m, numeric as h, oneOf as g, regex as _, required as v, url as y, withMessage as b } from "@regle/rules"; //#region app/assets/composables/useCsrf.ts var x = () => { let t = o(u()), n = o(d()), r = o(f(t.value)), a = o(f(n.value)); function s() { i.defaults.headers.post[t.value] = r.value, i.defaults.headers.post[n.value] = a.value, i.defaults.headers.put[t.value] = r.value, i.defaults.headers.put[n.value] = a.value, i.defaults.headers.delete[t.value] = r.value, i.defaults.headers.delete[n.value] = a.value, i.defaults.headers.patch[t.value] = r.value, i.defaults.headers.patch[n.value] = a.value; } async function l() { m((await i.get("/api/csrf")).headers); } function u() { return e().get("csrf.name", "csrf") + "_name"; } function d() { return e().get("csrf.name", "csrf") + "_value"; } function f(e) { return document.querySelector("meta[name='" + e + "']")?.getAttribute("content") ?? ""; } function p(e, t) { let n = document.querySelector("meta[name='" + e + "']"); if (n) n.setAttribute("content", t); else { let n = document.createElement("meta"); n.setAttribute("name", e), n.setAttribute("content", t), document.head.appendChild(n); } } function m(t) { let n = e(), i = n.get("csrf.name", "csrf") + "-name", o = n.get("csrf.name", "csrf") + "-value"; i in t && (r.value = t[i]), o in t && (a.value = t[o]); } function h() { return e().get("csrf.enabled", !0); } return c(() => { h() && r.value !== "" && a.value !== "" && (p(t.value, r.value), p(n.value, a.value), s()); }), { key_name: t, key_value: n, name: r, token: a, isEnabled: h, updateFromHeaders: m, fetchCsrfToken: l }; }, S = (e, t = {}, n = {}, r = 10, l = 0) => { let u = o(r), d = o(l), f = o(t), p = o(n), m = o({ count: 0, count_filtered: 0, rows: [], listable: {}, sortable: [], filterable: [] }), h = o(!1), g = o(null); async function _() { h.value = !0, i.get(s(e), { params: { size: u.value, page: d.value, sorts: f.value, filters: p.value } }).then((e) => { m.value.count = e.data.count, m.value.count_filtered = e.data.count_filtered, m.value.rows = e.data.rows, m.value.listable = e.data.listable ?? {}, m.value.sortable = e.data.sortable ?? [], m.value.filterable = e.data.filterable ?? []; }).catch((e) => { g.value = e.response.data; }).finally(() => { h.value = !1; }); } let v = a(() => u.value === "all" ? 0 : Math.max(Math.ceil((m.value.count_filtered ?? 0) / u.value) - 1, 0)), y = a(() => m.value.count ?? 0), b = a(() => u.value === "all" ? 1 : Math.min(d.value * u.value + 1, m.value.count ?? 0)), x = a(() => u.value === "all" ? m.value.count_filtered ?? 0 : Math.min((d.value + 1) * u.value, m.value.count_filtered ?? 0)), S = a(() => m.value.count_filtered ?? 0), C = a(() => m.value.rows ?? []); function w() { h.value = !0, i.get(s(e), { params: { size: u.value, page: d.value, sorts: f.value, filters: p.value, format: "csv" }, responseType: "blob" }).then((e) => { let t = window.URL.createObjectURL(new Blob([e.data])), n = document.createElement("a"); n.href = t, n.setAttribute("download", "export.csv"), document.body.appendChild(n), n.click(), n.remove(), window.URL.revokeObjectURL(t); }).catch((e) => { g.value = e.response.data; }).finally(() => { h.value = !1; }); } function T(e) { let t; t = f.value[e] === "asc" ? "desc" : f.value[e] === "desc" ? null : "asc", f.value[e] = t; } return c(() => { _(); }), { dataUrl: e, size: u, page: d, sorts: f, filters: p, data: m, fetch: _, loading: h, error: g, downloadCsv: w, totalPages: v, countFiltered: S, count: y, rows: C, first: b, last: x, toggleSort: T }; }, C = () => { i.interceptors.response.use((e) => e, (e) => (e.response.status !== 401 && n().push({ title: e.response.data.title ?? e.response?.statusText, description: e.response?.data?.description ?? e.message, style: r.Danger }), Promise.reject(e))); }; //#endregion //#region app/assets/composables/useRuleSchemaAdapter.ts function w() { function e(e) { let t = {}; for (let n in e) if (Object.prototype.hasOwnProperty.call(e, n)) { let i = e[n]?.validators || {}, a = {}; for (let e of Object.keys(i)) r(e, i, a); t[n] = a; } return t; } function n(e) { let { translate: n } = t(); if (!e.message) return ""; let r = { ...e }; return delete r.message, n(e.message, r); } function r(e, t, r) { if (e === "required" && t.required) { let e = n(t.required); r.required = e === "" ? v : b(v, e); } if (e === "email" && t.email) { let e = n(t.email); r.email = b(u, e); } if (e === "length" && t.length) { if (t.length.min !== void 0) { let e = n(t.length); r.minLength = e === "" ? p(t.length.min) : b(p(t.length.min), e); } if (t.length.max !== void 0) { let e = n(t.length); r.maxLength = e === "" ? f(t.length.max) : b(f(t.length.max), e); } } if (e === "matches" && t.matches && console.warn("Validation rule \"matches\" not implemented yet"), e === "equals" && t.equals && console.warn("Validation rule \"equals\" not implemented yet"), e === "integer" && t.integer) { let e = n(t.integer); r.integer = e === "" ? d : b(d, e); } if (e === "member_of" && t.member_of) { let e = n(t.member_of); r.member_of = e === "" ? g(t.member_of.values) : b(g(t.member_of.values), e); } if (e === "no_leading_whitespace" && t.no_leading_whitespace) { let e = n(t.no_leading_whitespace); r.no_leading_whitespace = e === "" ? _(/^\S.*$/) : b(_(/^\S.*$/), e); } if (e === "no_trailing_whitespace" && t.no_trailing_whitespace) { let e = n(t.no_trailing_whitespace); r.no_trailing_whitespace = e === "" ? _(/^.*\S$/) : b(_(/^.*\S$/), e); } if (e === "not_equals" && t.not_equals && console.warn("Validation rule \"not_equals\" not implemented yet"), e === "not_matches" && t.not_matches && console.warn("Validation rule \"not_matches\" not implemented yet"), e === "not_member_of" && t.not_member_of) { let e = n(t.not_member_of); r.not_member_of = e === "" ? m(g(t.not_member_of.values)) : b(m(g(t.not_member_of.values)), e); } if (e === "numeric" && t.numeric) { let e = n(t.numeric); r.numeric = e === "" ? h : b(h, e); } if (e === "range" && t.range) { let e = n(t.range); r.range = e === "" ? l(t.range.min, t.range.max) : b(l(t.range.min, t.range.max), e); } if (e === "regex" && t.regex) { let e = n(t.regex); r.regex = e === "" ? _(new RegExp(t.regex.regex)) : b(_(new RegExp(t.regex.regex)), e); } if (e === "telephone" && t.telephone && console.warn("Validation rule \"telephone\" not implemented yet"), e === "uri" && t.uri) { let e = n(t.uri); r.uri = e === "" ? y : b(y, e); } if (e === "username" && t.username) { let e = n(t.username); r.username = e === "" ? _(/^([a-z0-9.\-_])+$/i) : b(_(/^([a-z0-9.\-_])+$/i), e); } } return { adapt: e, translateMessage: n }; } //#endregion export { x as i, C as n, S as r, w as t };