@elcrm/form 0.0.79 → 0.0.81

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.
Files changed (40) hide show
  1. package/dist/assets/styles/Color.module.css +1 -1
  2. package/dist/assets/styles/Field.module.css +1 -1
  3. package/dist/core/Field.js +1 -1
  4. package/dist/fields/Code.d.ts +14 -0
  5. package/dist/fields/Code.js +94 -0
  6. package/dist/fields/Color.js +133 -91
  7. package/dist/fields/Date.js +132 -77
  8. package/dist/fields/Display.d.ts +17 -0
  9. package/dist/fields/Display.js +49 -0
  10. package/dist/fields/DragDrop.d.ts +26 -0
  11. package/dist/fields/DragDrop.js +189 -0
  12. package/dist/fields/Email.d.ts +8 -0
  13. package/dist/fields/Email.js +80 -0
  14. package/dist/fields/File.d.ts +24 -0
  15. package/dist/fields/File.js +115 -0
  16. package/dist/fields/Hidden.d.ts +11 -0
  17. package/dist/fields/Hidden.js +33 -0
  18. package/dist/fields/Numeric.js +42 -24
  19. package/dist/fields/Percent.d.ts +13 -0
  20. package/dist/fields/Percent.js +100 -0
  21. package/dist/fields/Radio.d.ts +22 -0
  22. package/dist/fields/Radio.js +88 -0
  23. package/dist/fields/Rating.d.ts +12 -0
  24. package/dist/fields/Rating.js +82 -0
  25. package/dist/fields/RichText.d.ts +14 -0
  26. package/dist/fields/RichText.js +134 -0
  27. package/dist/fields/Tags.d.ts +12 -0
  28. package/dist/fields/Tags.js +97 -0
  29. package/dist/fields/Time.d.ts +8 -1
  30. package/dist/fields/Time.js +330 -156
  31. package/dist/fields/Url.d.ts +8 -0
  32. package/dist/fields/Url.js +80 -0
  33. package/dist/index.d.ts +27 -0
  34. package/dist/index.js +18 -6
  35. package/dist/index.umd.js +2 -2
  36. package/dist/package.js +1 -1
  37. package/dist/style.css +2 -2
  38. package/dist/styles/Color.module.js +23 -23
  39. package/dist/styles/Field.module.js +72 -24
  40. package/package.json +1 -1
@@ -75,8 +75,8 @@ function h(e, t) {
75
75
  return !t || e.a >= .999 ? a : `${a}${d(e.a * 255)}`;
76
76
  }
77
77
  function g(e) {
78
- let { r: t, g: n, b: r } = f(e.h, e.s, e.v);
79
- return e.a >= .999 ? `rgb(${t},${n},${r})` : `rgba(${t},${n},${r},${e.a})`;
78
+ let { r: t, g: n, b: r } = f(e.h, e.s, e.v), i = Math.round(t), a = Math.round(n), o = Math.round(r);
79
+ return e.a >= .999 ? `rgb(${i}, ${a}, ${o})` : `rgba(${i}, ${a}, ${o}, ${Number(e.a.toFixed(3))})`;
80
80
  }
81
81
  function _(e) {
82
82
  let { r: t, g: n, b: r } = f(e, 1, 1);
@@ -89,130 +89,172 @@ function v(e) {
89
89
  function y(e) {
90
90
  return e == null ? !0 : typeof e == "string" ? e.trim() === "" : !1;
91
91
  }
92
- function b() {
92
+ function b(e) {
93
+ if (!(e instanceof HTMLElement)) return !1;
94
+ let t = e.tagName;
95
+ return t === "INPUT" || t === "TEXTAREA" || t === "SELECT" ? !0 : !!e.isContentEditable;
96
+ }
97
+ function x(e) {
98
+ let t = (e || "").trim();
99
+ if (!t) return null;
100
+ let n = m(t) ?? m(t[0] === "#" ? t : `#${t.replace(/^#/, "")}`);
101
+ if (n) return n;
102
+ let r = /^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*([\d.]+))?\s*\)$/i.exec(t);
103
+ if (r) {
104
+ let e = u(Number(r[1]), 0, 255), t = u(Number(r[2]), 0, 255), n = u(Number(r[3]), 0, 255), i = r[4] === void 0 ? 1 : u(Number(r[4]), 0, 1);
105
+ return {
106
+ ...p(e, t, n),
107
+ a: i
108
+ };
109
+ }
110
+ return null;
111
+ }
112
+ function S() {
93
113
  return typeof window < "u" && "EyeDropper" in window;
94
114
  }
95
- var x = {
115
+ var C = {
96
116
  h: 0,
97
117
  s: 1,
98
118
  v: .76,
99
119
  a: 1
100
120
  };
101
- function S({ value: u = "", form: d, onValue: f, onBlur: p, name: _ = "", placeholder: v = "#000000", label: b = "", error: S = "", hidden: w = !1, disabled: T = !1, className: E = "", after: D = "", before: O = "", colors: k, alpha: A = !0 }) {
102
- let { value: j } = n(d, _, u), M = typeof j == "string" ? j : j == null ? "" : String(j), [N, P] = i.useState(!1), [F, I] = i.useState(null), [L, R] = i.useState(() => m(M) ?? { ...x }), [z, B] = i.useState(() => h(m(M) ?? x, A)), V = k?.length ? k : l, H = m(M), U = H ? h(H, A) : "", W = H ? g(H) : "transparent";
121
+ function w({ value: u = "", form: d, onValue: f, onBlur: p, name: g = "", placeholder: _ = "#000000", label: v = "", error: S = "", hidden: w = !1, disabled: E = !1, className: D = "", after: O = "", before: k = "", colors: A, alpha: j = !0 }) {
122
+ let { value: M } = n(d, g, u), N = typeof M == "string" ? M : M == null ? "" : String(M), [P, F] = i.useState(!1), [I, L] = i.useState(null), [R, z] = i.useState(() => m(N) ?? { ...C }), [B, V] = i.useState(() => h(m(N) ?? C, j)), H = A?.length ? A : l, U = m(N), W = U ?? (y(N) ? m(_) : null), G = U ? h(U, j) : "", K = W ? h(W, j) : "transparent";
103
123
  i.useEffect(() => {
104
- if (!N) return;
105
- let e = m(M);
106
- e && (R(e), B(h(e, A)));
107
- }, [
108
- M,
109
- N,
110
- A
111
- ]);
112
- let G = i.useCallback((e, t) => {
113
- let n = h(e, A), r = {
124
+ let e = m(N);
125
+ e && (z(e), V(h(e, j)));
126
+ }, [N, j]);
127
+ let q = i.useCallback((e, t) => {
128
+ let n = h(e, j), r = {
114
129
  value: n,
115
- name: _ || ""
130
+ name: g || ""
116
131
  };
117
- d && _ && (t === "live" ? d.onValue(r) : d.setValue(r)), f && f !== d?.onValue && f(r), B(n);
132
+ d && g && (t === "live" ? d.onValue(r) : d.setValue(r)), f && f !== d?.onValue && f(r), V(n);
118
133
  }, [
119
- A,
134
+ j,
120
135
  d,
121
- _,
136
+ g,
122
137
  f
123
- ]), K = (e) => {
124
- if (T) return;
125
- let t = m(M) ?? { ...L };
126
- R(t), B(h(t, A)), I(e.getBoundingClientRect()), P(!0);
127
- }, q = () => {
128
- P(!1), p?.({
129
- value: h(L, A),
130
- name: _ || ""
138
+ ]), J = (e) => {
139
+ if (E) return;
140
+ let t = m(N) ?? { ...R };
141
+ z(t), V(h(t, j)), L(e.getBoundingClientRect()), F(!0);
142
+ }, Y = () => {
143
+ F(!1), p?.({
144
+ value: h(R, j),
145
+ name: g || ""
131
146
  });
132
- }, J = (e) => {
133
- if (!T) {
134
- if (!N && (e.key === "Enter" || e.key === " " || e.key === "ArrowDown")) {
135
- e.preventDefault(), K(e.currentTarget);
147
+ };
148
+ i.useEffect(() => {
149
+ if (!P || E) return;
150
+ let e = "", t = (t) => {
151
+ let n = x(t);
152
+ if (!n) return !1;
153
+ let r = {
154
+ ...n,
155
+ a: j ? n.a : 1
156
+ }, i = h(r, j);
157
+ return i === e ? !0 : (e = i, z(r), q(r, "commit"), !0);
158
+ }, n = (e) => {
159
+ b(e.target) || t(e.clipboardData?.getData("text/plain") ?? "") && (e.preventDefault(), e.stopPropagation());
160
+ }, r = (e) => {
161
+ (e.ctrlKey || e.metaKey) && (e.key !== "v" && e.key !== "V" || b(e.target) || navigator.clipboard?.readText && (e.preventDefault(), navigator.clipboard.readText().then((e) => {
162
+ t(e);
163
+ })));
164
+ };
165
+ return document.addEventListener("paste", n, !0), window.addEventListener("keydown", r, !0), () => {
166
+ document.removeEventListener("paste", n, !0), window.removeEventListener("keydown", r, !0);
167
+ };
168
+ }, [
169
+ P,
170
+ E,
171
+ j,
172
+ q
173
+ ]);
174
+ let X = (e) => {
175
+ if (!E) {
176
+ if (!P && (e.key === "Enter" || e.key === " " || e.key === "ArrowDown")) {
177
+ e.preventDefault(), J(e.currentTarget);
136
178
  return;
137
179
  }
138
- N && e.key === "Escape" && (e.preventDefault(), q());
180
+ P && e.key === "Escape" && (e.preventDefault(), Y());
139
181
  }
140
182
  };
141
- return w && y(M) ? null : /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ s(t, {
183
+ return w && y(N) ? null : /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ s(t, {
142
184
  type: "color",
143
- label: b,
185
+ label: v,
144
186
  error: S,
145
- element_blok: { className: [E || ""] },
187
+ element_blok: { className: [D || ""] },
146
188
  element_input: {
147
189
  className: [e.w],
148
- props: { "data-disabled": T ? "true" : void 0 }
190
+ props: { "data-disabled": E ? "true" : void 0 }
149
191
  },
150
192
  children: [
151
- O ? /* @__PURE__ */ o("span", {
193
+ k ? /* @__PURE__ */ o("span", {
152
194
  className: e.affix,
153
- children: O
195
+ children: k
154
196
  }) : null,
155
197
  /* @__PURE__ */ s("div", {
156
198
  className: r.trigger,
157
199
  role: "combobox",
158
- tabIndex: T ? -1 : 0,
159
- "aria-expanded": N,
200
+ tabIndex: E ? -1 : 0,
201
+ "aria-expanded": P,
160
202
  "aria-haspopup": "dialog",
161
- "aria-disabled": T,
162
- "aria-label": b || "Цвет",
163
- onClick: (e) => K(e.currentTarget),
164
- onKeyDown: J,
203
+ "aria-disabled": E,
204
+ "aria-label": v || "Цвет",
205
+ onClick: (e) => J(e.currentTarget),
206
+ onKeyDown: X,
165
207
  children: [/* @__PURE__ */ o("span", {
166
208
  className: r.preview,
167
- style: { "--preview-color": W }
209
+ style: { "--preview-color": K }
168
210
  }), /* @__PURE__ */ o("span", {
169
- className: [r.hexText, U ? "" : r.placeholder].filter(Boolean).join(" "),
170
- children: U || v
211
+ className: [r.hexText, G ? "" : r.placeholder].filter(Boolean).join(" "),
212
+ children: G || _
171
213
  })]
172
214
  }),
173
- D ? /* @__PURE__ */ o("span", {
215
+ O ? /* @__PURE__ */ o("span", {
174
216
  className: e.affix,
175
- children: D
217
+ children: O
176
218
  }) : null
177
219
  ]
178
- }), N && c(/* @__PURE__ */ o(C, {
179
- parent: F || void 0,
180
- hsva: L,
181
- setHsva: R,
182
- hexDraft: z,
183
- setHexDraft: B,
184
- alpha: A,
185
- palette: V,
186
- onLive: (e) => G(e, "live"),
187
- onCommit: (e) => G(e, "commit"),
188
- onClose: q
220
+ }), P && c(/* @__PURE__ */ o(T, {
221
+ parent: I || void 0,
222
+ hsva: R,
223
+ setHsva: z,
224
+ hexDraft: B,
225
+ setHexDraft: V,
226
+ alpha: j,
227
+ palette: H,
228
+ onLive: (e) => q(e, "live"),
229
+ onCommit: (e) => q(e, "commit"),
230
+ onClose: Y
189
231
  }), document.body)] });
190
232
  }
191
- S.displayName = "ColorField";
192
- function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha: l, palette: d, onLive: f, onCommit: p, onClose: _ }) {
233
+ w.displayName = "ColorField";
234
+ function T({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha: l, palette: d, onLive: f, onCommit: p, onClose: _ }) {
193
235
  if (!e) return null;
194
- let y = l ? 340 : 300, x = window.innerHeight - e.bottom < y + 8 ? Math.max(8, e.top - y - 8) : Math.min(window.innerHeight - y - 8, e.bottom + 8), S = Math.min(Math.max(8, e.left), window.innerWidth - 260 - 8), C = g({
236
+ let y = l ? 340 : 300, b = window.innerHeight - e.bottom < y + 8 ? Math.max(8, e.top - y - 8) : Math.min(window.innerHeight - y - 8, e.bottom + 8), x = Math.min(Math.max(8, e.left), window.innerWidth - 260 - 8), C = g({
195
237
  ...t,
196
238
  a: 1
197
- }), D = v(h(t, l)), k = (e, t) => {
239
+ }), w = v(h(t, l)), T = (e, t) => {
198
240
  n(e), t === "live" ? f(e) : p(e);
199
- }, A = () => {
241
+ }, k = () => {
200
242
  let e = m(i);
201
243
  if (!e) {
202
244
  c(h(t, l));
203
245
  return;
204
246
  }
205
- k(e, "commit");
247
+ T(e, "commit");
206
248
  }, j = (e) => {
207
249
  let n = e.replace(/[^\d]/g, ""), r = u(Number(n || 0), 0, 100);
208
- k({
250
+ T({
209
251
  ...t,
210
252
  a: r / 100
211
253
  }, "commit");
212
254
  }, M = async () => {
213
- if (b()) try {
255
+ if (S()) try {
214
256
  let e = window.EyeDropper, n = m((await new e().open()).sRGBHex);
215
- n && k({
257
+ n && T({
216
258
  ...n,
217
259
  a: t.a
218
260
  }, "commit");
@@ -227,14 +269,14 @@ function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha:
227
269
  role: "dialog",
228
270
  "aria-label": "Выбор цвета",
229
271
  style: {
230
- top: x,
231
- left: S,
272
+ top: b,
273
+ left: x,
232
274
  width: 260
233
275
  },
234
276
  children: [
235
- /* @__PURE__ */ o(w, {
277
+ /* @__PURE__ */ o(E, {
236
278
  hsva: t,
237
- onChange: (e, n, r) => k({
279
+ onChange: (e, n, r) => T({
238
280
  ...t,
239
281
  s: e,
240
282
  v: n
@@ -242,24 +284,24 @@ function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha:
242
284
  }),
243
285
  /* @__PURE__ */ s("div", {
244
286
  className: r.slidersRow,
245
- children: [b() ? /* @__PURE__ */ o("button", {
287
+ children: [S() ? /* @__PURE__ */ o("button", {
246
288
  type: "button",
247
289
  className: r.eyedropper,
248
290
  "aria-label": "Пипетка",
249
291
  onClick: M,
250
- children: /* @__PURE__ */ o(O, {})
292
+ children: /* @__PURE__ */ o(A, {})
251
293
  }) : null, /* @__PURE__ */ s("div", {
252
294
  className: r.sliders,
253
- children: [/* @__PURE__ */ o(T, {
295
+ children: [/* @__PURE__ */ o(D, {
254
296
  h: t.h,
255
- onChange: (e, n) => k({
297
+ onChange: (e, n) => T({
256
298
  ...t,
257
299
  h: e
258
300
  }, n)
259
- }), l ? /* @__PURE__ */ o(E, {
301
+ }), l ? /* @__PURE__ */ o(O, {
260
302
  a: t.a,
261
303
  color: C,
262
- onChange: (e, n) => k({
304
+ onChange: (e, n) => T({
263
305
  ...t,
264
306
  a: e
265
307
  }, n)
@@ -282,7 +324,7 @@ function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha:
282
324
  let t = e.target.value.replace(/[^0-9a-fA-F]/g, "");
283
325
  c(t ? `#${t}` : "");
284
326
  },
285
- onBlur: A,
327
+ onBlur: k,
286
328
  onKeyDown: (e) => {
287
329
  e.key === "Enter" && (e.preventDefault(), e.target.blur());
288
330
  }
@@ -301,7 +343,7 @@ function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha:
301
343
  role: "listbox",
302
344
  "aria-label": "Палитра",
303
345
  children: d.map((e) => {
304
- let t = v(e) === D;
346
+ let t = v(e) === w;
305
347
  return /* @__PURE__ */ o("button", {
306
348
  type: "button",
307
349
  role: "option",
@@ -311,7 +353,7 @@ function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha:
311
353
  style: { "--swatch": e },
312
354
  onClick: () => {
313
355
  let t = m(e);
314
- t && k({
356
+ t && T({
315
357
  ...t,
316
358
  a: l ? t.a : 1
317
359
  }, "commit");
@@ -322,7 +364,7 @@ function C({ parent: e, hsva: t, setHsva: n, hexDraft: i, setHexDraft: c, alpha:
322
364
  ]
323
365
  })] });
324
366
  }
325
- function w({ hsva: e, onChange: t }) {
367
+ function E({ hsva: e, onChange: t }) {
326
368
  let n = i.useRef(null), a = i.useRef(!1), c = i.useRef(t);
327
369
  c.current = t;
328
370
  let l = (t, r) => {
@@ -377,16 +419,16 @@ function w({ hsva: e, onChange: t }) {
377
419
  ]
378
420
  });
379
421
  }
380
- function T({ h: e, onChange: t }) {
381
- return /* @__PURE__ */ o(D, {
422
+ function D({ h: e, onChange: t }) {
423
+ return /* @__PURE__ */ o(k, {
382
424
  className: `${r.slider} ${r.sliderHue}`,
383
425
  ratio: e / 360,
384
426
  onRatio: (e, n) => t(e * 360, n),
385
427
  handleColor: _(e)
386
428
  });
387
429
  }
388
- function E({ a: e, color: t, onChange: n }) {
389
- return /* @__PURE__ */ o(D, {
430
+ function O({ a: e, color: t, onChange: n }) {
431
+ return /* @__PURE__ */ o(k, {
390
432
  className: `${r.slider} ${r.sliderAlpha}`,
391
433
  style: { "--alpha-color": t },
392
434
  ratio: e,
@@ -394,7 +436,7 @@ function E({ a: e, color: t, onChange: n }) {
394
436
  handleColor: t
395
437
  });
396
438
  }
397
- function D({ className: e, style: t, ratio: n, onRatio: a, handleColor: s }) {
439
+ function k({ className: e, style: t, ratio: n, onRatio: a, handleColor: s }) {
398
440
  let c = i.useRef(null), l = i.useRef(!1), d = (e, t) => {
399
441
  let n = c.current;
400
442
  if (!n) return;
@@ -426,7 +468,7 @@ function D({ className: e, style: t, ratio: n, onRatio: a, handleColor: s }) {
426
468
  })
427
469
  });
428
470
  }
429
- function O() {
471
+ function A() {
430
472
  return /* @__PURE__ */ s("svg", {
431
473
  width: "16",
432
474
  height: "16",
@@ -446,4 +488,4 @@ function O() {
446
488
  });
447
489
  }
448
490
  //#endregion
449
- export { l as DEFAULT_COLOR_PALETTE, S as default };
491
+ export { l as DEFAULT_COLOR_PALETTE, w as default };