@alxgrn/telefrag-ui 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # UI-библиотека проекта [The Daily Telefrag](https://dailytelefrag.ru)
2
2
  Документация по компонентам [тут](./docs/README.md)
3
3
 
4
+ ### ВНИМАНИЕ: Для работы `Link` в навигации главного меню пришлось добавить внешнюю зависимость от `react-router`. Это не очень хорошее решение т.к. данная библиотека используется в библиотеках редакторов, которым роутер совсем не нужен, но его приходится прописывать также как внешнюю зависимость. Необходимо будет выделить компонент `Layout` и все связанные с ним компоненты в отдельную библиотеку и избавится от ненужных зависимостей от `react-router`!
5
+
4
6
  Ниже просто мусор для памяти :)
5
7
 
6
8
  ## Подготовка для публикации библиотеки
@@ -1 +1 @@
1
- .MainMenu{margin-top:var(--alxgrn-unit);margin-right:var(--alxgrn-unit-half)}.Sidebar .MainMenu{margin-top:0}.MainMenu .MainMenuAlternative{display:flex;align-items:center;gap:var(--alxgrn-unit-half);cursor:pointer;padding:var(--alxgrn-unit-half);border-radius:var(--alxgrn-unit-half)}.MainMenu .MainMenuAlternative:hover{background-color:var(--alxgrn-bg-panel)}.MainMenu .MainMenuAlternative:hover *{color:var(--alxgrn-color-accent)}.MainMenu .MainMenuAlternative svg{color:var(--alxgrn-color-accent);font-size:var(--alxgrn-font-size-big)}.MainMenu .MainMenuAlternative img{width:var(--alxgrn-font-size-big);height:var(--alxgrn-font-size-big);border-radius:50%;flex:0 0 auto}.MainMenu .MainMenuAlternative span{font-size:var(--alxgrn-font-size);overflow-wrap:break-word;display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;flex:1 1 auto}.MainMenu .MainMenuAlternative span.MainMenuCheck{display:block;width:var(--alxgrn-unit-half);height:var(--alxgrn-unit-half);border-radius:50%;background-color:var(--alxgrn-color-accent);flex:0 0 auto}.MainMenu .MainMenuNode,.MainMenu .MainMenuTitle{padding:var(--alxgrn-unit-half)}.MainMenu .MainMenuTitle span{text-transform:uppercase;font-size:var(--alxgrn-font-size-small);font-weight:600;color:var(--alxgrn-color-light)}
1
+ .MainMenu{margin-top:var(--alxgrn-unit);margin-right:var(--alxgrn-unit-half)}.Sidebar .MainMenu{margin-top:0}.MainMenu .MainMenuAlternative{padding:var(--alxgrn-unit-half);border-radius:var(--alxgrn-unit-half);-webkit-user-select:none;user-select:none}.MainMenu .MainMenuAlternative:hover{background-color:var(--alxgrn-bg-panel)}.MainMenu .MainMenuAlternative:hover *{color:var(--alxgrn-color-accent)}.MainMenu .MainMenuAlternative a{display:flex;align-items:center;gap:var(--alxgrn-unit-half);cursor:pointer;color:var(--alxgrn-color-text)!important;text-decoration:none}.MainMenu .MainMenuAlternative svg{color:var(--alxgrn-color-accent);font-size:var(--alxgrn-font-size-big)}.MainMenu .MainMenuAlternative img{width:var(--alxgrn-font-size-big);height:var(--alxgrn-font-size-big);border-radius:50%;flex:0 0 auto}.MainMenu .MainMenuAlternative .MainMenuAlternativeText{font-size:var(--alxgrn-font-size);overflow-wrap:break-word;display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;flex:1 1 auto}.MainMenu .MainMenuAlternative .MainMenuAlternativeCheck{display:block;width:var(--alxgrn-unit-half);height:var(--alxgrn-unit-half);border-radius:50%;background-color:var(--alxgrn-color-accent);flex:0 0 auto}.MainMenu .MainMenuNode,.MainMenu .MainMenuTitle{padding:var(--alxgrn-unit-half)}.MainMenu .MainMenuTitle{text-transform:uppercase;font-size:var(--alxgrn-font-size-small);font-weight:600;color:var(--alxgrn-color-light);overflow-wrap:break-word;display:-webkit-box;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
@@ -36,9 +36,10 @@ import l from "../../ui/block/Block.js";
36
36
  /* empty css */
37
37
  /* empty css */
38
38
  /* empty css */
39
+ import "react-router";
39
40
  /* empty css */
40
41
  import j from "./traverse.js";
41
- const De = ({
42
+ const Ee = ({
42
43
  info: u,
43
44
  error: d,
44
45
  success: k,
@@ -163,6 +164,6 @@ const De = ({
163
164
  ] });
164
165
  };
165
166
  export {
166
- De as Form,
167
- De as default
167
+ Ee as Form,
168
+ Ee as default
168
169
  };
@@ -32,8 +32,9 @@ import j from "../../icons/Trash.js";
32
32
  /* empty css */
33
33
  /* empty css */
34
34
  /* empty css */
35
+ import "react-router";
35
36
  /* empty css */
36
- const cr = ({
37
+ const gr = ({
37
38
  id: u,
38
39
  value: o,
39
40
  text: l,
@@ -100,6 +101,6 @@ const cr = ({
100
101
  ) });
101
102
  };
102
103
  export {
103
- cr as Image,
104
- cr as default
104
+ gr as Image,
105
+ gr as default
105
106
  };
@@ -31,8 +31,9 @@ import { Menu as E } from "../../ui/menu/Menu.js";
31
31
  /* empty css */
32
32
  /* empty css */
33
33
  /* empty css */
34
+ import "react-router";
34
35
  /* empty css */
35
- const cr = ({
36
+ const ur = ({
36
37
  id: f,
37
38
  value: o,
38
39
  onChange: d,
@@ -108,6 +109,6 @@ const cr = ({
108
109
  ] });
109
110
  };
110
111
  export {
111
- cr as Select,
112
- cr as default
112
+ ur as Select,
113
+ ur as default
113
114
  };
@@ -30,10 +30,11 @@ import O from "../../icons/Check.js";
30
30
  /* empty css */
31
31
  /* empty css */
32
32
  /* empty css */
33
+ import "react-router";
33
34
  /* empty css */
34
- const hr = ({
35
+ const vr = ({
35
36
  id: d,
36
- value: m,
37
+ value: l,
37
38
  step: x = 1,
38
39
  onChange: o,
39
40
  label: g,
@@ -42,13 +43,13 @@ const hr = ({
42
43
  required: $ = !1,
43
44
  disabled: p = !1
44
45
  }) => {
45
- const a = k(null), c = k(null), [n, C] = s(""), [l, I] = s(""), [j, w] = s([]), [z, E] = s([]), [S, u] = s(!1), [T, f] = s(!1);
46
+ const a = k(null), c = k(null), [n, C] = s(""), [m, I] = s(""), [j, w] = s([]), [z, E] = s([]), [S, u] = s(!1), [T, f] = s(!1);
46
47
  H(() => {
47
- let [r, t] = m.split(":");
48
+ let [r, t] = l.split(":");
48
49
  r = parseInt(r), t = parseInt(t), (isNaN(r) || r < 0 || r > 23) && (r = 0), (isNaN(t) || t < 0 || t > 59) && (t = 0), r = `0${r}`.slice(-2), t = `0${t}`.slice(-2), C(r), I(t);
49
50
  const i = `${r}:${t}`;
50
- i !== m && o && o(i);
51
- }, [m, o]), H(() => {
51
+ i !== l && o && o(i);
52
+ }, [l, o]), H(() => {
52
53
  const r = [], t = [];
53
54
  for (let i = 0; i < 24; i++)
54
55
  r.push(`0${i}`.slice(-2));
@@ -56,14 +57,14 @@ const hr = ({
56
57
  t.push(`0${i}`.slice(-2));
57
58
  w(r), E(t);
58
59
  }, [x]);
59
- const h = () => !!($ && (!n || !l)), v = () => {
60
+ const h = () => !!($ && (!n || !m)), v = () => {
60
61
  if (h()) return {
61
62
  caretColor: "var(--alxgrn-input-border-error)",
62
63
  borderColor: "var(--alxgrn-input-border-error)",
63
64
  backgroundColor: "var(--alxgrn-input-bg-error)"
64
65
  };
65
66
  }, F = (r) => {
66
- u(!1), o && o(`${r.text ?? ""}:${l}`);
67
+ u(!1), o && o(`${r.text ?? ""}:${m}`);
67
68
  }, L = (r) => {
68
69
  f(!1), o && o(`${n}:${r.text ?? ""}`);
69
70
  };
@@ -98,7 +99,7 @@ const hr = ({
98
99
  id: `${d}-min`,
99
100
  ref: c,
100
101
  type: "text",
101
- value: l,
102
+ value: m,
102
103
  style: v(),
103
104
  disabled: !!p,
104
105
  onClick: () => f(!0),
@@ -130,7 +131,7 @@ const hr = ({
130
131
  onClose: () => f(!1),
131
132
  horizontal: "inner-right",
132
133
  margin: "var(--alxgrn-unit-small)",
133
- items: z.map((r) => ({ id: r, text: r, icon: r === l ? /* @__PURE__ */ e(O, {}) : /* @__PURE__ */ e("div", { className: "empty" }) })),
134
+ items: z.map((r) => ({ id: r, text: r, icon: r === m ? /* @__PURE__ */ e(O, {}) : /* @__PURE__ */ e("div", { className: "empty" }) })),
134
135
  onClick: L,
135
136
  maxHeight: "auto",
136
137
  width: "auto"
@@ -139,5 +140,5 @@ const hr = ({
139
140
  ] });
140
141
  };
141
142
  export {
142
- hr as default
143
+ vr as default
143
144
  };
@@ -2,7 +2,6 @@ import { FC, PropsWithChildren } from 'react';
2
2
  import { MainMenuItem } from './MainMenu';
3
3
  type Props = {
4
4
  mainMenu: MainMenuItem[];
5
- onMenuClick?: (id: string) => void;
6
5
  };
7
6
  declare const Content: FC<PropsWithChildren<Props>>;
8
7
  export default Content;
@@ -1,10 +1,10 @@
1
- import { jsxs as a, jsx as n } from "react/jsx-runtime";
2
- import i from "./MainMenu.js";
1
+ import { jsxs as s, jsx as n } from "react/jsx-runtime";
2
+ import a from "./MainMenu.js";
3
3
  import '../../assets/Content.css';/* empty css */
4
- const c = ({ children: t, mainMenu: e, onMenuClick: s }) => /* @__PURE__ */ a("main", { className: "Content", children: [
5
- /* @__PURE__ */ n("div", { className: "ContentMenu", children: /* @__PURE__ */ n(i, { items: e, onMenuClick: s }) }),
4
+ const r = ({ children: t, mainMenu: e }) => /* @__PURE__ */ s("main", { className: "Content", children: [
5
+ /* @__PURE__ */ n("div", { className: "ContentMenu", children: /* @__PURE__ */ n(a, { items: e }) }),
6
6
  /* @__PURE__ */ n("div", { className: "ContentMain", children: t })
7
7
  ] });
8
8
  export {
9
- c as default
9
+ r as default
10
10
  };
@@ -4,7 +4,6 @@ type Props = {
4
4
  mainMenu: MainMenuItem[];
5
5
  userMenu: React.ReactNode;
6
6
  onLogoClick?: () => void;
7
- onMenuClick?: (id: string) => void;
8
7
  };
9
8
  declare const Layout: FC<PropsWithChildren<Props>>;
10
9
  export default Layout;
@@ -1,7 +1,7 @@
1
- import { jsxs as f, jsx as o } from "react/jsx-runtime";
2
- import { useState as n } from "react";
1
+ import { jsxs as n, jsx as o } from "react/jsx-runtime";
2
+ import { useState as a } from "react";
3
3
  import l from "./Header.js";
4
- import u from "./Content.js";
4
+ import f from "./Content.js";
5
5
  import '../../assets/Expandable.css';import '../../assets/Editable.css';import '../../assets/Toolbar.css';import '../../assets/Scroll.css';import '../../assets/Message.css';import '../../assets/Modal.css';import '../../assets/Overlay.css';import '../../assets/Panel.css';import '../../assets/Block.css';import '../../assets/Input.css';import '../../assets/Files.css';import '../../assets/Menu.css';import '../../assets/FormCol.css';import '../../assets/FormRow.css';import '../../assets/Button.css';import '../../assets/Fieldset.css';import '../../assets/RadioLabel.css';import '../../assets/DatePicker.css';import '../../assets/Label.css';import '../../assets/RequiredMark.css';import '../../assets/TelefragLogo.css';import '../../assets/TelefragSymbol.css';import '../../assets/Popup.css';import '../../assets/PageHeader.css';/* empty css */
6
6
  import "react-transition-group";
7
7
  import "react-dom";
@@ -25,35 +25,33 @@ import "react-dom";
25
25
  /* empty css */
26
26
  /* empty css */
27
27
  /* empty css */
28
- import { Sidebar as d } from "../ui/sidebar/Sidebar.js";
28
+ import { Sidebar as u } from "../ui/sidebar/Sidebar.js";
29
29
  /* empty css */
30
30
  /* empty css */
31
31
  /* empty css */
32
32
  import c from "./MainMenu.js";
33
- const W = ({ children: p, mainMenu: m, userMenu: e, onLogoClick: s, onMenuClick: t }) => {
34
- const [a, r] = n(!1);
35
- return /* @__PURE__ */ f("div", { className: "Layout", children: [
33
+ const T = ({ children: r, mainMenu: i, userMenu: m, onLogoClick: p }) => {
34
+ const [e, t] = a(!1);
35
+ return /* @__PURE__ */ n("div", { className: "Layout", children: [
36
36
  /* @__PURE__ */ o(
37
37
  l,
38
38
  {
39
- userMenu: e,
40
- onMenuSwitch: () => r((i) => !i),
41
- onLogoClick: s
39
+ userMenu: m,
40
+ onMenuSwitch: () => t((s) => !s),
41
+ onLogoClick: p
42
42
  }
43
43
  ),
44
- /* @__PURE__ */ o(u, { mainMenu: m, onMenuClick: t, children: p }),
44
+ /* @__PURE__ */ o(f, { mainMenu: i, children: r }),
45
45
  /* @__PURE__ */ o(
46
- d,
46
+ u,
47
47
  {
48
- isOpen: a,
49
- onClose: () => r(!1),
48
+ isOpen: e,
49
+ onClose: () => t(!1),
50
50
  children: /* @__PURE__ */ o(
51
51
  c,
52
52
  {
53
- items: m,
54
- onMenuClick: (i) => {
55
- r(!1), t && t(i);
56
- }
53
+ items: i,
54
+ onMenuClick: () => t(!1)
57
55
  }
58
56
  )
59
57
  }
@@ -61,5 +59,5 @@ const W = ({ children: p, mainMenu: m, userMenu: e, onLogoClick: s, onMenuClick:
61
59
  ] });
62
60
  };
63
61
  export {
64
- W as default
62
+ T as default
65
63
  };
@@ -1,24 +1,24 @@
1
1
  import { FC, ReactNode } from 'react';
2
2
  export type MainMenuTitle = {
3
- id?: never;
4
3
  text?: never;
5
4
  icon?: never;
5
+ link?: never;
6
6
  title: string;
7
7
  checked?: never;
8
8
  node?: never;
9
9
  };
10
10
  export type MainMenuAlternative = {
11
- id: string;
12
11
  text: string;
13
12
  icon: ReactNode;
13
+ link: string;
14
14
  title?: never;
15
15
  checked?: boolean;
16
16
  node?: never;
17
17
  };
18
18
  export type MainMenuNode = {
19
- id?: never;
20
19
  text?: never;
21
20
  icon?: never;
21
+ link?: never;
22
22
  title?: string;
23
23
  checked?: never;
24
24
  node: ReactNode;
@@ -26,7 +26,7 @@ export type MainMenuNode = {
26
26
  export type MainMenuItem = MainMenuTitle | MainMenuAlternative | MainMenuNode;
27
27
  type Props = {
28
28
  items: MainMenuItem[];
29
- onMenuClick?: (id: string) => void;
29
+ onMenuClick?: () => void;
30
30
  };
31
31
  declare const MainMenu: FC<Props>;
32
32
  export default MainMenu;
@@ -1,21 +1,17 @@
1
- import { jsx as e, jsxs as l, Fragment as c } from "react/jsx-runtime";
1
+ import { jsx as n, jsxs as t } from "react/jsx-runtime";
2
2
  import '../../assets/MainMenu.css';/* empty css */
3
- const o = ({ items: s, onMenuClick: a }) => /* @__PURE__ */ e("div", { className: "MainMenu", children: s.map((n, i) => /* @__PURE__ */ l(
3
+ import { Link as i } from "react-router";
4
+ const o = ({ items: r, onMenuClick: a }) => /* @__PURE__ */ n("div", { className: "MainMenu", children: r.map((e, s) => /* @__PURE__ */ n(
4
5
  "div",
5
6
  {
6
- onClick: () => {
7
- a && n.id && a(n.id);
8
- },
9
- className: n.node ? "MainMenuNode" : n.title ? "MainMenuTitle" : "MainMenuAlternative",
10
- children: [
11
- n.node ? n.node : n.title ? /* @__PURE__ */ e("span", { className: "one-line", children: n.title }) : /* @__PURE__ */ l(c, { children: [
12
- n.icon,
13
- /* @__PURE__ */ e("span", { className: "one-line", children: n.text })
14
- ] }),
15
- n.checked && /* @__PURE__ */ e("span", { className: "MainMenuCheck" })
16
- ]
7
+ className: e.node ? "MainMenuNode" : e.title ? "MainMenuTitle" : "MainMenuAlternative",
8
+ children: e.node ? e.node : e.title ? e.title : /* @__PURE__ */ t(i, { to: e.link ?? "/", onClick: () => a == null ? void 0 : a(), children: [
9
+ e.icon,
10
+ /* @__PURE__ */ n("span", { className: "MainMenuAlternativeText", children: e.text }),
11
+ e.checked && /* @__PURE__ */ n("span", { className: "MainMenuAlternativeCheck" })
12
+ ] })
17
13
  },
18
- i
14
+ s
19
15
  )) });
20
16
  export {
21
17
  o as default
@@ -29,8 +29,9 @@ import { Sidebar as n } from "../ui/sidebar/Sidebar.js";
29
29
  /* empty css */
30
30
  /* empty css */
31
31
  /* empty css */
32
+ import "react-router";
32
33
  /* empty css */
33
- const K = ({ header: o, children: p, sidebar: i, isSidebarVisible: e = !1, onSidebarClose: t }) => /* @__PURE__ */ m("div", { className: "Page", children: [
34
+ const L = ({ header: o, children: p, sidebar: i, isSidebarVisible: e = !1, onSidebarClose: t }) => /* @__PURE__ */ m("div", { className: "Page", children: [
34
35
  o && /* @__PURE__ */ r(a, { children: o }),
35
36
  /* @__PURE__ */ m("div", { className: i ? "PageBody" : "PageBody Wide", children: [
36
37
  /* @__PURE__ */ r("div", { className: "PageContent", children: p }),
@@ -49,5 +50,5 @@ const K = ({ header: o, children: p, sidebar: i, isSidebarVisible: e = !1, onSid
49
50
  )
50
51
  ] });
51
52
  export {
52
- K as default
53
+ L as default
53
54
  };
@@ -31,8 +31,9 @@ import x from "../ui/toolbar/Toolbar.js";
31
31
  /* empty css */
32
32
  /* empty css */
33
33
  /* empty css */
34
+ import "react-router";
34
35
  /* empty css */
35
- const de = ({
36
+ const te = ({
36
37
  menu: d,
37
38
  title: C,
38
39
  subtitle: T,
@@ -106,5 +107,5 @@ const de = ({
106
107
  ] });
107
108
  };
108
109
  export {
109
- de as default
110
+ te as default
110
111
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@alxgrn/telefrag-ui",
3
3
  "description": "UI library for The Daily Telefrag project",
4
- "version": "0.1.3",
4
+ "version": "0.1.4",
5
5
  "private": false,
6
6
  "author": "Alexander Fedorov <alex@molner.ru>",
7
7
  "license": "Apache-2.0",
@@ -30,6 +30,7 @@
30
30
  "peerDependencies": {
31
31
  "react": "^19.2.0",
32
32
  "react-dom": "^19.2.0",
33
+ "react-router": "^7.8.1",
33
34
  "react-transition-group": "^4.4.5"
34
35
  },
35
36
  "devDependencies": {