cedro 0.1.28 → 0.1.30
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 +8 -0
- package/package.json +1 -1
- package/src/core/application.core.tsx +8 -1
- package/src/index.ts +2 -1
- package/src/interfaces/widget.interface.ts +1 -1
- package/src/ui/Icon.ui.tsx +2 -1
- package/src/ui/IconButton.ui.tsx +3 -8
- package/src/ui/Textbox.ui.tsx +3 -2
- package/src/ui/accordion.ui.tsx +4 -2
- package/src/ui/button.ui.tsx +3 -2
- package/src/ui/buttonColor.ui.tsx +1 -1
- package/src/ui/buttonmenu.ui.tsx +2 -1
- package/src/ui/buttonstack.ui.tsx +5 -10
- package/src/ui/checkbox.ui.tsx +2 -1
- package/src/ui/container.ui.tsx +4 -8
- package/src/ui/datagrid.ui.tsx +3 -2
- package/src/ui/dialog.tsx +4 -2
- package/src/ui/draggable.ui.ts +2 -1
- package/src/ui/hpanel.ui.tsx +4 -8
- package/src/ui/iconButtonMenu.ui.tsx +2 -1
- package/src/ui/image.ui.tsx +3 -2
- package/src/ui/index.ts +2 -1
- package/src/ui/label.ui.tsx +2 -1
- package/src/ui/menu.ui.ts +2 -1
- package/src/ui/progressbar.ui.tsx +3 -2
- package/src/ui/radiobutton.ui.tsx +2 -1
- package/src/ui/scroll.ui.ts +2 -1
- package/src/ui/select.ui.tsx +2 -1
- package/src/ui/switch.ui.tsx +2 -1
- package/src/ui/tabs.ui.tsx +4 -2
- package/src/ui/textarea.ui.tsx +2 -1
- package/src/ui/toolbar.ui.tsx +4 -2
- package/src/ui/valuebar.ui.tsx +2 -1
- package/src/ui/vpanel.ui.tsx +4 -8
- package/src/ui/widget.builder.ts +2 -53
- package/src/ui/widget.collection.ts +3 -3
- package/src/ui/widget.normalize.ts +29 -0
- package/src/ui/widget.types.ts +35 -0
- package/src/ui/widget.ui.ts +1 -12
package/README.md
CHANGED
|
@@ -14,6 +14,14 @@ Javascript library to build user interfece based on widgets.
|
|
|
14
14
|
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
|
+
## Cedro Demo
|
|
18
|
+
|
|
19
|
+
We have created a live demo of **Cedro** on CodeSandbox for you to explore its capabilities. This template provides a hands-on experience, allowing you to see Cedro in action and experiment with it in real-time.
|
|
20
|
+
|
|
21
|
+
[Check out the Cedro Demo on CodeSandbox](https://pyskv2-5173.csb.app)
|
|
22
|
+
|
|
23
|
+
Feel free to [fork the template](https://codesandbox.io/p/github/hdrdevs/vite-cedro/main?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522cm0gzwaud000620684w92xute%2522%252C%2522sizes%2522%253A%255B100%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522cm0gzwaud000220684q50obd6%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522cm0gzwaud00042068wm2ct2dl%2522%257D%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522cm0gzwaud00052068l97sq7ys%2522%257D%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522cm0gzwaud000220684q50obd6%2522%253A%257B%2522id%2522%253A%2522cm0gzwaud000220684q50obd6%2522%252C%2522activeTabId%2522%253A%2522cm0h02bw900372068zcijoffp%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522cm0gzwaud00012068qh732zgi%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252FREADME.md%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%252C%257B%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252F.codesandbox%252Ftasks.json%2522%252C%2522id%2522%253A%2522cm0h02bw900372068zcijoffp%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%257D%252C%2522cm0gzwaud00052068l97sq7ys%2522%253A%257B%2522id%2522%253A%2522cm0gzwaud00052068l97sq7ys%2522%252C%2522activeTabId%2522%253A%2522cm0gzwce5000d2068swd73pqe%2522%252C%2522tabs%2522%253A%255B%257B%2522type%2522%253A%2522SETUP_TASKS%2522%252C%2522id%2522%253A%2522cm0gzwce5000d2068swd73pqe%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%252C%2522cm0gzwaud00042068wm2ct2dl%2522%253A%257B%2522id%2522%253A%2522cm0gzwaud00042068wm2ct2dl%2522%252C%2522activeTabId%2522%253A%2522cm0gzwf76000k2068v1hzvy3c%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522cm0gzwaud00032068ac13dwl5%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522NEW_TERMINAL%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522dev%2522%252C%2522id%2522%253A%2522cm0gzwf76000k2068v1hzvy3c%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D) and customize it to suit your needs. This is a great way to start learning how to build complex user interfaces with Cedro.
|
|
24
|
+
|
|
17
25
|
## Documentation
|
|
18
26
|
|
|
19
27
|
Visit [https://cedro.hdrdevs.com.ar](https://cedro.hdrdevs.com.ar) to view the full documentation.
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ import "@fontsource/roboto/500.css";
|
|
|
6
6
|
import "@fontsource/roboto/700.css";
|
|
7
7
|
import "@fontsource/roboto/900.css";
|
|
8
8
|
import "material-icons/iconfont/material-icons.css";
|
|
9
|
-
import { Widget
|
|
9
|
+
import { Widget } from "../ui/widget.ui";
|
|
10
10
|
import { Screen } from "./screeen.core";
|
|
11
11
|
import { IApplication, IScreenSize } from "../interfaces/application.interface";
|
|
12
12
|
import { IWidget, WUICallback, WUIEvent } from "../interfaces/widget.interface";
|
|
@@ -23,9 +23,16 @@ import {
|
|
|
23
23
|
} from "./themes.core";
|
|
24
24
|
import { Loading } from "../ui/loading.ui";
|
|
25
25
|
import { OrientationTypes } from "../types/orientation.type";
|
|
26
|
+
import { WidgetAlignTypes, WidgetTypes } from "../ui/widget.types";
|
|
26
27
|
|
|
27
28
|
declare global {
|
|
28
29
|
var appConnections: Array<WUICallback>;
|
|
30
|
+
|
|
31
|
+
interface Window {
|
|
32
|
+
app: WApplication | undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var app: WApplication | undefined;
|
|
29
36
|
}
|
|
30
37
|
|
|
31
38
|
class WApplication implements IApplication {
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import Application from "./core/application.core";
|
|
2
2
|
import { DOMcreateElement, DOMcreateFragment } from "./core/jsxsupport";
|
|
3
|
-
import { Widget
|
|
3
|
+
import { Widget } from "./ui/widget.ui";
|
|
4
4
|
import { initWidgetCollection } from "./ui/widget.collection";
|
|
5
5
|
import { createWidget } from "./ui/widget.builder";
|
|
6
|
+
import { WidgetAlignTypes, WidgetTypes } from "./ui/widget.types";
|
|
6
7
|
|
|
7
8
|
initWidgetCollection();
|
|
8
9
|
|
package/src/ui/Icon.ui.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import "./styles/icon.css";
|
|
2
2
|
import { Colors } from "./colors.ui";
|
|
3
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
4
3
|
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
5
4
|
import { UID } from "../core/uid";
|
|
5
|
+
import { WidgetProps } from "./widget.types";
|
|
6
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
6
7
|
|
|
7
8
|
export type IconVariants = "Filled" | "Outlined" | "Round" | "Sharp" | "Two Tone";
|
|
8
9
|
export type IconSizes = "small" | "medium" | "large" | "xlarge";
|
package/src/ui/IconButton.ui.tsx
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import "./styles/button.css";
|
|
2
|
-
import {
|
|
3
|
-
Widget,
|
|
4
|
-
WidgetAlignTypes,
|
|
5
|
-
WidgetTypes,
|
|
6
|
-
connectWidgetCallback,
|
|
7
|
-
getOnlyEventProps,
|
|
8
|
-
} from "./widget.ui";
|
|
2
|
+
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
9
3
|
import { Button, wButtonProps } from "./button.ui";
|
|
10
4
|
import { Icon } from "./Icon.ui";
|
|
11
5
|
import { Label } from "./label.ui";
|
|
12
|
-
import { normalizeWidget } from "./widget.builder";
|
|
13
6
|
import { UID } from "../core/uid";
|
|
7
|
+
import { WidgetAlignTypes, WidgetTypes } from "./widget.types";
|
|
8
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
14
9
|
|
|
15
10
|
export class IconButton extends Button {
|
|
16
11
|
icon: Icon;
|
package/src/ui/Textbox.ui.tsx
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
2
1
|
import "./styles/textbox.css";
|
|
3
|
-
import { Widget,
|
|
2
|
+
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
4
3
|
import { UID } from "../core/uid";
|
|
4
|
+
import { WidgetProps, WidgetTypes } from "./widget.types";
|
|
5
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
5
6
|
|
|
6
7
|
export type InputTypes =
|
|
7
8
|
| "text"
|
package/src/ui/accordion.ui.tsx
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import "./styles/accordion.css";
|
|
2
2
|
import { IconButton } from "./IconButton.ui";
|
|
3
3
|
import { Label } from "./label.ui";
|
|
4
|
-
import { Widget
|
|
5
|
-
import { createWidget
|
|
4
|
+
import { Widget } from "./widget.ui";
|
|
5
|
+
import { createWidget } from "./widget.builder";
|
|
6
6
|
import { UID } from "../core/uid";
|
|
7
|
+
import { WidgetProps, WidgetTypes } from "./widget.types";
|
|
8
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
7
9
|
|
|
8
10
|
const ACCORDION_HEADER_HEIGHT = 40;
|
|
9
11
|
|
package/src/ui/button.ui.tsx
CHANGED
|
@@ -2,9 +2,10 @@ import "./styles/button.css";
|
|
|
2
2
|
import "./styles/stackbutton.css";
|
|
3
3
|
import "./styles/vstackbutton.css";
|
|
4
4
|
import { Colors } from "./colors.ui";
|
|
5
|
-
import { Widget,
|
|
6
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
5
|
+
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
7
6
|
import { UID } from "../core/uid";
|
|
7
|
+
import { WidgetProps, WidgetTypes } from "./widget.types";
|
|
8
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
8
9
|
|
|
9
10
|
export type ButonVariants =
|
|
10
11
|
| "contained"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./styles/buttoncolor.css";
|
|
2
2
|
import { Button, wButtonProps } from "./button.ui";
|
|
3
3
|
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
4
|
-
import { normalizeWidget } from "./widget.builder";
|
|
5
4
|
import { UID } from "../core/uid";
|
|
5
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
6
6
|
|
|
7
7
|
export class ButtonColor extends Button {
|
|
8
8
|
inputColor: Widget;
|
package/src/ui/buttonmenu.ui.tsx
CHANGED
|
@@ -2,7 +2,8 @@ import { UID } from "../core/uid";
|
|
|
2
2
|
import { SelectItem } from "../types/select.item.type";
|
|
3
3
|
import { Button, wButtonProps } from "./button.ui";
|
|
4
4
|
import { Menu } from "./menu.ui";
|
|
5
|
-
import { normalizeWidget
|
|
5
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
6
|
+
import { WidgetProps } from "./widget.types";
|
|
6
7
|
import { Widget } from "./widget.ui";
|
|
7
8
|
|
|
8
9
|
export class ButtonMenu extends Button {
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { OrientationTypes } from "../types/orientation.type";
|
|
2
2
|
import { IconButton } from "./IconButton.ui";
|
|
3
|
-
import { ButonVariants, Button } from "./button.ui";
|
|
4
|
-
import {
|
|
5
|
-
connectWidgetCallback,
|
|
6
|
-
getOnlyEventProps,
|
|
7
|
-
Widget,
|
|
8
|
-
WidgetAlignTypes,
|
|
9
|
-
WidgetTypes,
|
|
10
|
-
} from "./widget.ui";
|
|
11
|
-
import { createWidget, normalizeWidget, WidgetProps } from "./widget.builder";
|
|
3
|
+
import { ButonVariants, Button, createButton } from "./button.ui";
|
|
4
|
+
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
12
5
|
import { UID } from "../core/uid";
|
|
6
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
7
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
13
8
|
|
|
14
9
|
export class ButtonStack extends Widget {
|
|
15
10
|
orientation: OrientationTypes;
|
|
@@ -148,7 +143,7 @@ export function createButtonStack(
|
|
|
148
143
|
|
|
149
144
|
content.childNodes.forEach((item: HTMLElement, _index: number) => {
|
|
150
145
|
if (item.getAttribute("w-button") || item.getAttribute("w-icon-button")) {
|
|
151
|
-
const widget =
|
|
146
|
+
const widget = createButton(item.id, item) as Button;
|
|
152
147
|
|
|
153
148
|
if (widget !== null) {
|
|
154
149
|
newStack.addButton(widget);
|
package/src/ui/checkbox.ui.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import { ToggleButton } from "./toggle.ui";
|
|
3
|
-
import { normalizeWidget
|
|
3
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
4
|
+
import { WidgetProps } from "./widget.types";
|
|
4
5
|
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
5
6
|
|
|
6
7
|
export class Checkbox extends ToggleButton {
|
package/src/ui/container.ui.tsx
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import "./styles/container.css";
|
|
2
2
|
import { OrientationTypes } from "../types/orientation.type";
|
|
3
|
-
import {
|
|
4
|
-
connectWidgetCallback,
|
|
5
|
-
getOnlyEventProps,
|
|
6
|
-
Widget,
|
|
7
|
-
WidgetAlignTypes,
|
|
8
|
-
WidgetTypes,
|
|
9
|
-
} from "./widget.ui";
|
|
3
|
+
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
10
4
|
import { UID } from "../core/uid";
|
|
11
|
-
import {
|
|
5
|
+
import { createWidget } from "./widget.builder";
|
|
12
6
|
import { Scroll } from "./scroll.ui";
|
|
7
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
8
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
13
9
|
|
|
14
10
|
export type ContainerVariants = "plain" | "contained" | "outlined";
|
|
15
11
|
|
package/src/ui/datagrid.ui.tsx
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import "./styles/datagrid.css";
|
|
2
2
|
import { Label } from "./label.ui";
|
|
3
|
-
import { Widget
|
|
3
|
+
import { Widget } from "./widget.ui";
|
|
4
4
|
import { Scroll } from "./scroll.ui";
|
|
5
|
-
import { normalizeWidget, WidgetEventProps, WidgetProps } from "./widget.builder";
|
|
6
5
|
import { UID } from "../core/uid";
|
|
7
6
|
import { decode } from "../core/html.entities";
|
|
8
7
|
import { Button } from "./button.ui";
|
|
9
8
|
import { IconButton } from "./IconButton.ui";
|
|
10
9
|
import { ProgressBar } from "./progressbar.ui";
|
|
10
|
+
import { WidgetAlignTypes, WidgetEventProps, WidgetProps, WidgetTypes } from "./widget.types";
|
|
11
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
11
12
|
|
|
12
13
|
const DATA_GRID_HEADER_HEIGHT = 30;
|
|
13
14
|
const DATA_GRID_FOOTER_HEIGHT = 40;
|
package/src/ui/dialog.tsx
CHANGED
|
@@ -4,8 +4,10 @@ import { Button } from "./button.ui";
|
|
|
4
4
|
import { Spacer } from "./container.ui";
|
|
5
5
|
import { Label } from "./label.ui";
|
|
6
6
|
import "./styles/dialog.css";
|
|
7
|
-
import { createWidget
|
|
8
|
-
import {
|
|
7
|
+
import { createWidget } from "./widget.builder";
|
|
8
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
9
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
10
|
+
import { Widget } from "./widget.ui";
|
|
9
11
|
|
|
10
12
|
const TITLE_BAR_HEIGHT = 40;
|
|
11
13
|
const BUTTON_BAR_HEIGHT = 50;
|
package/src/ui/draggable.ui.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OrientationTypes } from "../types/orientation.type";
|
|
2
2
|
import "./styles/draggable.css";
|
|
3
|
-
import {
|
|
3
|
+
import { WidgetTypes } from "./widget.types";
|
|
4
|
+
import { Widget } from "./widget.ui";
|
|
4
5
|
|
|
5
6
|
export type DragOrientation = OrientationTypes | "both";
|
|
6
7
|
|
package/src/ui/hpanel.ui.tsx
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import { Draggable } from "./draggable.ui";
|
|
3
3
|
import "./styles/hpanel.css";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Widget,
|
|
9
|
-
WidgetAlignTypes,
|
|
10
|
-
WidgetTypes,
|
|
11
|
-
} from "./widget.ui";
|
|
4
|
+
import { createWidget } from "./widget.builder";
|
|
5
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
6
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
7
|
+
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
12
8
|
|
|
13
9
|
const HPANEL_HANDLER_SIZE = 4;
|
|
14
10
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { IconButton, wIconButtonProps } from "./IconButton.ui";
|
|
2
2
|
import { Menu } from "./menu.ui";
|
|
3
3
|
import { SelectItem } from "../types/select.item.type";
|
|
4
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
5
4
|
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
6
5
|
import { UID } from "../core/uid";
|
|
7
6
|
import { connectCustomWidget } from "./widget.collection";
|
|
8
7
|
import { IWidget } from "../interfaces/widget.interface";
|
|
8
|
+
import { WidgetProps } from "./widget.types";
|
|
9
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
9
10
|
|
|
10
11
|
export class IconButtonMenu extends IconButton {
|
|
11
12
|
menu: Menu;
|
package/src/ui/image.ui.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import "./styles/image.css";
|
|
3
|
-
import {
|
|
4
|
-
import { Widget, WidgetTypes, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
3
|
+
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
5
4
|
import { decode } from "../core/html.entities";
|
|
5
|
+
import { WidgetProps, WidgetTypes } from "./widget.types";
|
|
6
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
6
7
|
|
|
7
8
|
export class Image extends Widget {
|
|
8
9
|
imageContainer: Widget;
|
package/src/ui/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Widget } from "./widget.ui";
|
|
2
2
|
import { Textbox, WTextbox } from "./Textbox.ui";
|
|
3
3
|
import { Select, WSelect, WSelectItem } from "./select.ui";
|
|
4
4
|
import { Accordion, WAccordion, WAccordionItem } from "./accordion.ui";
|
|
@@ -26,6 +26,7 @@ import { ValueBar, WValueBar } from "./valuebar.ui";
|
|
|
26
26
|
import { VPanel, WVPanel } from "./vpanel.ui";
|
|
27
27
|
import { createWidget } from "./widget.builder";
|
|
28
28
|
import { IconButtonMenu, WIconButtonMenu, WIconButtonMenuItem } from "./iconButtonMenu.ui";
|
|
29
|
+
import { WidgetAlignTypes, WidgetTypes } from "./widget.types";
|
|
29
30
|
|
|
30
31
|
export type { ContainerParams };
|
|
31
32
|
|
package/src/ui/label.ui.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import "./styles/label.css";
|
|
2
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
3
2
|
import { Colors } from "./colors.ui";
|
|
4
3
|
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
5
4
|
import { UID } from "../core/uid";
|
|
5
|
+
import { WidgetProps } from "./widget.types";
|
|
6
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
6
7
|
|
|
7
8
|
export type LabelVariants = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span";
|
|
8
9
|
|
package/src/ui/menu.ui.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import "./styles/menu.css";
|
|
2
2
|
import { IWidget } from "../interfaces/widget.interface";
|
|
3
3
|
import { IconButton } from "./IconButton.ui";
|
|
4
|
-
import { Widget
|
|
4
|
+
import { Widget } from "./widget.ui";
|
|
5
|
+
import { WidgetAlignTypes, WidgetTypes } from "./widget.types";
|
|
5
6
|
|
|
6
7
|
const MENU_OPTION_HEIGHT = 40;
|
|
7
8
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import { Label } from "./label.ui";
|
|
3
3
|
import "./styles/progressbar.css";
|
|
4
|
-
import { normalizeWidget
|
|
5
|
-
import {
|
|
4
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
5
|
+
import { WidgetProps, WidgetTypes } from "./widget.types";
|
|
6
|
+
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
6
7
|
|
|
7
8
|
const PROGRESS_BAR_HEIGHT = 40;
|
|
8
9
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import { ToggleButton } from "./toggle.ui";
|
|
3
|
-
import { normalizeWidget
|
|
3
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
4
|
+
import { WidgetProps } from "./widget.types";
|
|
4
5
|
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
5
6
|
|
|
6
7
|
export class RadioButton extends ToggleButton {
|
package/src/ui/scroll.ui.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { OrientationTypes } from "../types/orientation.type";
|
|
2
2
|
import "./styles/scroll.css";
|
|
3
|
-
import { Widget
|
|
3
|
+
import { Widget } from "./widget.ui";
|
|
4
4
|
import { Draggable } from "./draggable.ui";
|
|
5
|
+
import { WidgetTypes } from "./widget.types";
|
|
5
6
|
|
|
6
7
|
const SCROLL_SIZE = 10;
|
|
7
8
|
|
package/src/ui/select.ui.tsx
CHANGED
|
@@ -3,8 +3,9 @@ import { IconButton } from "./IconButton.ui";
|
|
|
3
3
|
import { Menu } from "./menu.ui";
|
|
4
4
|
import { Widget } from "./widget.ui";
|
|
5
5
|
import { SelectItem } from "../types/select.item.type";
|
|
6
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
7
6
|
import { UID } from "../core/uid";
|
|
7
|
+
import { WidgetProps } from "./widget.types";
|
|
8
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
8
9
|
|
|
9
10
|
export class Select extends Widget {
|
|
10
11
|
menu: Menu;
|
package/src/ui/switch.ui.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import { ToggleButton } from "./toggle.ui";
|
|
3
|
-
import { normalizeWidget
|
|
3
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
4
|
+
import { WidgetProps } from "./widget.types";
|
|
4
5
|
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
5
6
|
export class Switch extends ToggleButton {
|
|
6
7
|
constructor(id: string, text: string = "", parent: Widget | null = null) {
|
package/src/ui/tabs.ui.tsx
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import "./styles/tabs.css";
|
|
2
2
|
|
|
3
3
|
import { OrientationTypes } from "../types/orientation.type";
|
|
4
|
-
import { Widget
|
|
4
|
+
import { Widget } from "./widget.ui";
|
|
5
5
|
import { Toolbar } from "./toolbar.ui";
|
|
6
6
|
import { Label } from "./label.ui";
|
|
7
7
|
import { Icon } from "./Icon.ui";
|
|
8
8
|
import { Scroll } from "./scroll.ui";
|
|
9
|
-
import {
|
|
9
|
+
import { createWidget } from "./widget.builder";
|
|
10
10
|
import { UID } from "../core/uid";
|
|
11
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
12
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
11
13
|
|
|
12
14
|
const TAB_HEADER_SIZE = 40;
|
|
13
15
|
|
package/src/ui/textarea.ui.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import "./styles/textarea.css";
|
|
3
|
-
import { normalizeWidget
|
|
3
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
4
|
+
import { WidgetProps } from "./widget.types";
|
|
4
5
|
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
5
6
|
|
|
6
7
|
export class TextArea extends Widget {
|
package/src/ui/toolbar.ui.tsx
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import "./styles/toolbar.css";
|
|
2
2
|
import { IWidget } from "../interfaces/widget.interface";
|
|
3
|
-
import { Widget
|
|
3
|
+
import { Widget } from "./widget.ui";
|
|
4
4
|
import { IconButton } from "./IconButton.ui";
|
|
5
5
|
import { OrientationTypes } from "../types/orientation.type";
|
|
6
|
-
import {
|
|
6
|
+
import { createWidget } from "./widget.builder";
|
|
7
7
|
import { UID } from "../core/uid";
|
|
8
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
9
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
8
10
|
|
|
9
11
|
export type ToolbarVariants = "contained" | "outlined";
|
|
10
12
|
|
package/src/ui/valuebar.ui.tsx
CHANGED
|
@@ -2,8 +2,9 @@ import "./styles/valuebar.css";
|
|
|
2
2
|
import { OrientationTypes } from "../types/orientation.type";
|
|
3
3
|
import { Widget, connectWidgetCallback, getOnlyEventProps } from "./widget.ui";
|
|
4
4
|
import { Draggable } from "./draggable.ui";
|
|
5
|
-
import { normalizeWidget, WidgetProps } from "./widget.builder";
|
|
6
5
|
import { UID } from "../core/uid";
|
|
6
|
+
import { WidgetProps } from "./widget.types";
|
|
7
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
7
8
|
|
|
8
9
|
export class ValueBar extends Widget {
|
|
9
10
|
orientation: OrientationTypes;
|
package/src/ui/vpanel.ui.tsx
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { Draggable } from "./draggable.ui";
|
|
2
2
|
import "./styles/vpanel.css";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Widget,
|
|
8
|
-
WidgetAlignTypes,
|
|
9
|
-
WidgetTypes,
|
|
10
|
-
} from "./widget.ui";
|
|
3
|
+
import { createWidget } from "./widget.builder";
|
|
4
|
+
import { normalizeWidget } from "./widget.normalize";
|
|
5
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
6
|
+
import { connectWidgetCallback, getOnlyEventProps, Widget } from "./widget.ui";
|
|
11
7
|
|
|
12
8
|
const VPANEL_HANDLER_SIZE = 4;
|
|
13
9
|
|
package/src/ui/widget.builder.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
|
-
import { Widget
|
|
2
|
+
import { Widget } from "./widget.ui";
|
|
3
3
|
import { addNewWidget } from "./widget.collection";
|
|
4
4
|
import { createTextbox } from "./Textbox.ui";
|
|
5
5
|
import { createButton } from "./button.ui";
|
|
6
6
|
import { createLabel } from "./label.ui";
|
|
7
|
-
import { OrientationTypes } from "../types/orientation.type";
|
|
8
7
|
import { createContainer } from "./container.ui";
|
|
9
8
|
import { createIconButton } from "./IconButton.ui";
|
|
10
9
|
import { createImage } from "./image.ui";
|
|
@@ -27,29 +26,7 @@ import { createTextarea } from "./textarea.ui";
|
|
|
27
26
|
import { createSelect } from "./select.ui";
|
|
28
27
|
import { createDialog, Dialog } from "./dialog";
|
|
29
28
|
import { createDataGrid, DataGrid } from "./datagrid.ui";
|
|
30
|
-
|
|
31
|
-
export type WidgetEventProps = {
|
|
32
|
-
onClick?: (args: any) => {} | void;
|
|
33
|
-
onResize?: (args: any) => {} | void;
|
|
34
|
-
onMouseDown?: (args: any) => {} | void;
|
|
35
|
-
onMouseUp?: (args: any) => {} | void;
|
|
36
|
-
onMouseMove?: (args: any) => {} | void;
|
|
37
|
-
onMouseOut?: (args: any) => {} | void;
|
|
38
|
-
onMouseLeave?: (args: any) => {} | void;
|
|
39
|
-
onWheel?: (args: any) => {} | void;
|
|
40
|
-
onDrag?: (args: any) => {} | void;
|
|
41
|
-
onRender?: (args: any) => {} | void;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export type WidgetProps = {
|
|
45
|
-
id?: string | null;
|
|
46
|
-
type?: WidgetTypes | null;
|
|
47
|
-
padding?: number | null;
|
|
48
|
-
classNames?: string | null;
|
|
49
|
-
fixedSize?: number | null;
|
|
50
|
-
orientation?: OrientationTypes | null;
|
|
51
|
-
hidden?: boolean | null;
|
|
52
|
-
} & WidgetEventProps;
|
|
29
|
+
import { WidgetAlignTypes, WidgetProps, WidgetTypes } from "./widget.types";
|
|
53
30
|
|
|
54
31
|
export function createWidget(
|
|
55
32
|
content: any,
|
|
@@ -213,31 +190,3 @@ export function createWidget(
|
|
|
213
190
|
|
|
214
191
|
return null;
|
|
215
192
|
}
|
|
216
|
-
|
|
217
|
-
export function normalizeWidget(widget: any, props: WidgetProps) {
|
|
218
|
-
if (props.fixedSize !== undefined) {
|
|
219
|
-
widget.setAttribute("w-fixed-size", props.fixedSize);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
if (props.padding !== undefined) {
|
|
223
|
-
widget.setAttribute("w-padding", props.padding);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
if (props.type !== undefined) {
|
|
227
|
-
widget.setAttribute("w-type", props.type);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
if (props.hidden !== undefined) {
|
|
231
|
-
widget.setAttribute("w-hidden", props.hidden);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
if (props.classNames !== undefined) {
|
|
235
|
-
widget.setAttribute("w-classes", props.classNames);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
if (props.orientation !== undefined) {
|
|
239
|
-
widget.setAttribute("w-orientation", props.orientation);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
return widget;
|
|
243
|
-
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import WApplication from "../core/application.core";
|
|
1
|
+
//import WApplication from "../core/application.core";
|
|
2
2
|
import { IWidget, WUICallback } from "../interfaces/widget.interface";
|
|
3
3
|
|
|
4
4
|
declare global {
|
|
5
5
|
interface Window {
|
|
6
|
-
app: WApplication | undefined;
|
|
6
|
+
//app: WApplication | undefined;
|
|
7
7
|
w: Map<string, IWidget>;
|
|
8
8
|
widgetConnections: Map<string, WUICallback>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
var w: Map<string, IWidget>;
|
|
12
|
-
var app: WApplication | undefined;
|
|
12
|
+
//var app: WApplication | undefined;
|
|
13
13
|
var widgetConnections: Map<string, WUICallback>;
|
|
14
14
|
var widgetCustomConnections: Map<string, WUICallback>;
|
|
15
15
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { WidgetProps } from "./widget.types";
|
|
2
|
+
|
|
3
|
+
export function normalizeWidget(widget: any, props: WidgetProps) {
|
|
4
|
+
if (props.fixedSize !== undefined) {
|
|
5
|
+
widget.setAttribute("w-fixed-size", props.fixedSize);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (props.padding !== undefined) {
|
|
9
|
+
widget.setAttribute("w-padding", props.padding);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (props.type !== undefined) {
|
|
13
|
+
widget.setAttribute("w-type", props.type);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (props.hidden !== undefined) {
|
|
17
|
+
widget.setAttribute("w-hidden", props.hidden);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (props.classNames !== undefined) {
|
|
21
|
+
widget.setAttribute("w-classes", props.classNames);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (props.orientation !== undefined) {
|
|
25
|
+
widget.setAttribute("w-orientation", props.orientation);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return widget;
|
|
29
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { OrientationTypes } from "../types/orientation.type";
|
|
2
|
+
|
|
3
|
+
export enum WidgetTypes {
|
|
4
|
+
FILL = 1,
|
|
5
|
+
CUSTOM = 2,
|
|
6
|
+
FREE = 3,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export enum WidgetAlignTypes {
|
|
10
|
+
HORIZONTAL = 1,
|
|
11
|
+
VERTICAL = 2,
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type WidgetEventProps = {
|
|
15
|
+
onClick?: (args: any) => {} | void;
|
|
16
|
+
onResize?: (args: any) => {} | void;
|
|
17
|
+
onMouseDown?: (args: any) => {} | void;
|
|
18
|
+
onMouseUp?: (args: any) => {} | void;
|
|
19
|
+
onMouseMove?: (args: any) => {} | void;
|
|
20
|
+
onMouseOut?: (args: any) => {} | void;
|
|
21
|
+
onMouseLeave?: (args: any) => {} | void;
|
|
22
|
+
onWheel?: (args: any) => {} | void;
|
|
23
|
+
onDrag?: (args: any) => {} | void;
|
|
24
|
+
onRender?: (args: any) => {} | void;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type WidgetProps = {
|
|
28
|
+
id?: string | null;
|
|
29
|
+
type?: WidgetTypes | null;
|
|
30
|
+
padding?: number | null;
|
|
31
|
+
classNames?: string | null;
|
|
32
|
+
fixedSize?: number | null;
|
|
33
|
+
orientation?: OrientationTypes | null;
|
|
34
|
+
hidden?: boolean | null;
|
|
35
|
+
} & WidgetEventProps;
|
package/src/ui/widget.ui.ts
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
import { UID } from "../core/uid";
|
|
2
2
|
import { IWidget, WUIEvent, WUICallback } from "../interfaces/widget.interface";
|
|
3
3
|
import { Vector2D } from "../types/vector2d.type";
|
|
4
|
-
import { WidgetEventProps, WidgetProps } from "./widget.
|
|
4
|
+
import { WidgetEventProps, WidgetProps, WidgetAlignTypes, WidgetTypes } from "./widget.types";
|
|
5
5
|
import { addNewWidget, connectWidget } from "./widget.collection";
|
|
6
6
|
|
|
7
|
-
export enum WidgetTypes {
|
|
8
|
-
FILL = 1,
|
|
9
|
-
CUSTOM = 2,
|
|
10
|
-
FREE = 3,
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export enum WidgetAlignTypes {
|
|
14
|
-
HORIZONTAL = 1,
|
|
15
|
-
VERTICAL = 2,
|
|
16
|
-
}
|
|
17
|
-
|
|
18
7
|
export class Widget implements IWidget {
|
|
19
8
|
readonly id: string;
|
|
20
9
|
|