lexgui 0.6.11 → 0.7.0
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 +14 -9
- package/build/{components → extensions}/audio.js +11 -11
- package/build/{components → extensions}/codeeditor.js +109 -74
- package/build/{components → extensions}/docmaker.js +10 -3
- package/build/{components → extensions}/imui.js +19 -12
- package/build/{components → extensions}/nodegraph.js +1 -1
- package/build/{components → extensions}/timeline.js +150 -94
- package/build/{components → extensions}/videoeditor.js +1 -1
- package/build/lexgui-docs.css +9 -9
- package/build/lexgui.css +489 -223
- package/build/lexgui.js +1771 -777
- package/build/lexgui.min.css +2 -2
- package/build/lexgui.min.js +1 -1
- package/build/lexgui.module.js +1803 -809
- package/build/lexgui.module.min.js +1 -1
- package/changelog.md +90 -21
- package/demo.js +52 -32
- package/examples/{all_widgets.html → all-components.html} +22 -4
- package/examples/{area_tabs.html → area-tabs.html} +3 -3
- package/examples/{asset_view.html → asset-view.html} +3 -3
- package/examples/{code_editor.html → code-editor.html} +4 -4
- package/examples/dialogs.html +3 -3
- package/examples/editor.html +27 -18
- package/examples/{immediate_ui.html → immediate-ui.html} +3 -3
- package/examples/index.html +8 -8
- package/examples/{node_graph.html → node-graph.html} +3 -3
- package/examples/previews/all-components.png +0 -0
- package/examples/previews/area-tabs.png +0 -0
- package/examples/previews/asset-view.png +0 -0
- package/examples/previews/code-editor.png +0 -0
- package/examples/previews/dialogs.png +0 -0
- package/examples/previews/editor.png +0 -0
- package/examples/previews/node-graph.png +0 -0
- package/examples/previews/side-bar.png +0 -0
- package/examples/previews/timeline.png +0 -0
- package/examples/{side_bar.html → side-bar.html} +3 -3
- package/examples/timeline.html +5 -5
- package/examples/{video_editor.html → video-editor.html} +3 -3
- package/examples/{video_editor2.html → video-editor2.html} +3 -3
- package/package.json +2 -2
- package/examples/previews/all_widgets.png +0 -0
- package/examples/previews/area_tabs.png +0 -0
- package/examples/previews/asset_view.png +0 -0
- package/examples/previews/code_editor.png +0 -0
- package/examples/previews/node_graph.png +0 -0
- package/examples/previews/side_bar.png +0 -0
package/changelog.md
CHANGED
|
@@ -2,7 +2,75 @@
|
|
|
2
2
|
|
|
3
3
|
## dev
|
|
4
4
|
|
|
5
|
-
## 0.
|
|
5
|
+
## 0.7.0 (master)
|
|
6
|
+
|
|
7
|
+
General/Utils:
|
|
8
|
+
- "Components" have been renamed to "Extensions".
|
|
9
|
+
- Every elements, widget, etc. is now a "Component".
|
|
10
|
+
- Added support for `LX.toCamelCase` and `LX.toTitleCase`.
|
|
11
|
+
- Polished CSS.
|
|
12
|
+
- Changed LexGUI brand icons.
|
|
13
|
+
- Unified code fonts. Using now CascadiaCode (https://github.com/microsoft/cascadia-code).
|
|
14
|
+
|
|
15
|
+
New Components:
|
|
16
|
+
- Skeleton Component (Feedback)
|
|
17
|
+
- Breadcrumb Component (Navigation)
|
|
18
|
+
- Rate Component (Data Input)
|
|
19
|
+
|
|
20
|
+
New "default" | "compact" layout spacing:
|
|
21
|
+
- `options.spacingMode` in LX.init
|
|
22
|
+
- `LX.setSpacingMode` and `LX.switchSpacing`
|
|
23
|
+
|
|
24
|
+
Component Updates:
|
|
25
|
+
- Badges:
|
|
26
|
+
- Added `options.parent` to use them as notification indicators inside an element
|
|
27
|
+
- Added `options.chip` to use as notification indicators alone
|
|
28
|
+
- Added `options.callback` option on click.
|
|
29
|
+
- Toast:
|
|
30
|
+
- Allow creation at left, center and right + top/bottom using `options.position`.
|
|
31
|
+
- Sidebar:
|
|
32
|
+
- Added subitem option `options.content` to match main items.
|
|
33
|
+
- Added entry option `options.skipSelection` to avoid selections even with `displaySelected`.
|
|
34
|
+
- Support swap icons in entries.
|
|
35
|
+
- Fixed subentry selection.
|
|
36
|
+
- Dropdowns:
|
|
37
|
+
- Support radio button groups.
|
|
38
|
+
- AssetView:
|
|
39
|
+
- Improved toolbar with Dropdowns. Now refreshes icons on change sort and layout modes.
|
|
40
|
+
- Table:
|
|
41
|
+
- Added support for Calendar Date filter in Table Component.
|
|
42
|
+
- Other Bugfixes:
|
|
43
|
+
- Fixed Select Component above placement on filter.
|
|
44
|
+
- FIxed CodeEditor 'End' horizontal scrolling.
|
|
45
|
+
- Fixed CodeEditor CSS harcoded Tab height.
|
|
46
|
+
- Fixed dropdown, popovers, etc within modal backdrop.
|
|
47
|
+
- Fixed minor issue with CalendarRange when selecting >1 months apart.
|
|
48
|
+
|
|
49
|
+
Improved Documentation:
|
|
50
|
+
- Added AssetView, CodeSnippet and other small components (badge, sheet, toast, etc.).
|
|
51
|
+
- Added Docmaker and Video Editor extension docs.
|
|
52
|
+
- Added addition version to elements in sidebar.
|
|
53
|
+
- Added Changelog section.
|
|
54
|
+
|
|
55
|
+
## 0.6.12
|
|
56
|
+
|
|
57
|
+
Widgets:
|
|
58
|
+
- Button Widget now supports `options.mustConfirm` to confirm the trigger with custom options.
|
|
59
|
+
- Added support for LX.CalendarRange in DatePicker widget.
|
|
60
|
+
|
|
61
|
+
Timeline:
|
|
62
|
+
- Clips now have the active property to enable/disable the clip (only visuals).
|
|
63
|
+
- Clips now have the read-only attribute trackIdx.
|
|
64
|
+
- All "unselect" attribute have been renamed to "deselect".
|
|
65
|
+
- Keyframes/Clips Timelines moved to Timeline subitems in docs.
|
|
66
|
+
|
|
67
|
+
Previous Tour masks are now removed. Fixed Tour on resize window.
|
|
68
|
+
Added new `LX.PopConfirm`.
|
|
69
|
+
Fixed PlainText <> symbols in CodeEditor.
|
|
70
|
+
Fixed Calendar `options.fromToday` not including today's date.
|
|
71
|
+
Docs updated.
|
|
72
|
+
|
|
73
|
+
## 0.6.11
|
|
6
74
|
|
|
7
75
|
Widgets:
|
|
8
76
|
- Fixed Progress Widget value clamp and callback.
|
|
@@ -104,10 +172,10 @@ Added `hover:scale` CSS selectors.
|
|
|
104
172
|
## 0.6.5
|
|
105
173
|
|
|
106
174
|
Timeline:
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
175
|
+
- Refactored undo-redo.
|
|
176
|
+
- ClipsTimeline: added an argument on `addClip` to start search at a particular track.
|
|
177
|
+
- Documentation updated.
|
|
178
|
+
- Minor fixes.
|
|
111
179
|
|
|
112
180
|
Use sidebar inside Sheet element on mobile.
|
|
113
181
|
Removed LX.UTILS. Moved methods to global namespace `LX`.
|
|
@@ -116,11 +184,11 @@ Minor fixes in example demos.
|
|
|
116
184
|
## 0.6.4
|
|
117
185
|
|
|
118
186
|
Timeline:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
187
|
+
- Paste refactor.
|
|
188
|
+
- `onUpdateTrack` now expects an array of track indices as argument.
|
|
189
|
+
- Added root.
|
|
190
|
+
- Added documentation.
|
|
191
|
+
- Fixed example.
|
|
124
192
|
|
|
125
193
|
Widgets:
|
|
126
194
|
- Centered Map2D initial position.
|
|
@@ -172,9 +240,6 @@ Improved robustness of `LX.getSupportedDOMName`.
|
|
|
172
240
|
|
|
173
241
|
`LX.init` now has to called using `await`.
|
|
174
242
|
Use Dropdowns elements in menubar.
|
|
175
|
-
Remove legacy:
|
|
176
|
-
- Removed `options.selected` in ComboButtons Widget.
|
|
177
|
-
- Removed FA icons.
|
|
178
243
|
Added LucideIcons as main icon provider.
|
|
179
244
|
`LX.makeIcon`: Support for solid variants in supported icons (also using `iconName@variant`).
|
|
180
245
|
`LX.registerIcon`: Support for classes and attributes for svg and path elements.
|
|
@@ -187,14 +252,18 @@ Added support for right sidebar.
|
|
|
187
252
|
Restyled Number Widget units to avoid layout trashing when recomputing units span location.
|
|
188
253
|
|
|
189
254
|
CodeEditor:
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
255
|
+
- Remove language images and use SVG instead.
|
|
256
|
+
- Scrolling fixes.
|
|
257
|
+
- Fixed minor css issues.
|
|
258
|
+
|
|
259
|
+
Remove legacy:
|
|
260
|
+
- Removed `options.selected` in ComboButtons Widget.
|
|
261
|
+
- Removed FA icons.
|
|
193
262
|
|
|
194
263
|
Docs updated:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
264
|
+
- Added interactive code examples for widgets.
|
|
265
|
+
- Improved widget list parameters and options.
|
|
266
|
+
- Added live examples for sidebar and menubar.
|
|
198
267
|
|
|
199
268
|
## 0.5.11
|
|
200
269
|
|
|
@@ -542,8 +611,8 @@ Minor bug fixes.
|
|
|
542
611
|
Timeline: Fixed timeline signals and added callbacks
|
|
543
612
|
|
|
544
613
|
Number/Vector widgets:
|
|
545
|
-
|
|
546
|
-
|
|
614
|
+
- Support for onPress&onRelease for catching mouse events.
|
|
615
|
+
- Added `setLimits` for min, max, step parameters.
|
|
547
616
|
|
|
548
617
|
Added Size Widget (N dimension number widget).
|
|
549
618
|
Minor bug fixes.
|
package/demo.js
CHANGED
|
@@ -1,53 +1,66 @@
|
|
|
1
1
|
import { LX } from 'lexgui';
|
|
2
|
-
import 'lexgui/
|
|
3
|
-
import 'lexgui/
|
|
4
|
-
import 'lexgui/
|
|
2
|
+
import 'lexgui/extensions/codeeditor.js';
|
|
3
|
+
import 'lexgui/extensions/timeline.js';
|
|
4
|
+
import 'lexgui/extensions/audio.js';
|
|
5
5
|
|
|
6
6
|
window.LX = LX;
|
|
7
7
|
|
|
8
8
|
const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
9
|
+
const starterTheme = LX.getTheme();
|
|
9
10
|
|
|
10
11
|
// Menubar
|
|
11
12
|
{
|
|
12
13
|
const menubar = area.addMenubar( [
|
|
13
14
|
{ name: "Docs", callback: () => { window.open("./docs/") } },
|
|
15
|
+
{ name: "Components", callback: () => { window.open("./docs/?p=components") } },
|
|
14
16
|
{ name: "Examples", callback: () => { window.open("./examples/") } },
|
|
15
17
|
] );
|
|
16
18
|
|
|
17
|
-
menubar.setButtonImage("lexgui.js",
|
|
19
|
+
menubar.setButtonImage("lexgui.js", `images/icon_${ starterTheme }.png`, () => { window.open("https://jxarco.github.io/lexgui.js/") }, { float: "left"} );
|
|
20
|
+
|
|
21
|
+
LX.addSignal( "@on_new_color_scheme", ( el, value ) => {
|
|
22
|
+
menubar.setButtonImage("lexgui.js", `images/icon_${ value }.png` );
|
|
23
|
+
} );
|
|
18
24
|
|
|
19
25
|
const commandButton = new LX.Button(null, `Search command...<span class="ml-auto">${ LX.makeKbd( ["Ctrl", "Space"], false, "bg-tertiary border px-1 rounded" ).innerHTML }</span>`, () => { LX.setCommandbarState( true ) }, {
|
|
20
26
|
width: "256px", className: "right", buttonClass: "border fg-tertiary bg-secondary" }
|
|
21
27
|
);
|
|
22
28
|
menubar.root.appendChild( commandButton.root );
|
|
23
29
|
|
|
24
|
-
const starterTheme = LX.getTheme();
|
|
25
|
-
|
|
26
30
|
menubar.addButtons( [
|
|
27
31
|
{
|
|
28
32
|
title: "Github",
|
|
29
33
|
icon: "Github@solid",
|
|
30
|
-
callback: (event) =>
|
|
31
|
-
window.open( "https://github.com/jxarco/lexgui.js/", "_blank" );
|
|
32
|
-
}
|
|
34
|
+
callback: (event) => window.open( "https://github.com/jxarco/lexgui.js/", "_blank" )
|
|
33
35
|
},
|
|
34
36
|
{
|
|
35
37
|
title: "Switch Theme",
|
|
36
38
|
icon: starterTheme == "dark" ? "Moon" : "Sun",
|
|
37
39
|
swap: starterTheme == "dark" ? "Sun" : "Moon",
|
|
38
40
|
callback: (value, event) => { LX.switchTheme() }
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: "Switch Spacing",
|
|
44
|
+
icon: "AlignVerticalSpaceAround",
|
|
45
|
+
callback: (value, event) => { LX.switchSpacing() }
|
|
39
46
|
}
|
|
40
47
|
], { float: "right" });
|
|
41
48
|
}
|
|
42
49
|
|
|
43
50
|
// Header
|
|
44
51
|
{
|
|
45
|
-
const header = LX.makeContainer( [ null, "auto" ], "flex flex-col border-top border-bottom gap-2 px-
|
|
52
|
+
const header = LX.makeContainer( [ null, "auto" ], "flex flex-col border-top border-bottom gap-2 px-10 py-8", `
|
|
46
53
|
<a>Get started with LexGUI.js <span class="text-sm fg-secondary">${ LX.version }</span></a>
|
|
47
54
|
<h1>Build your application interface</h1>
|
|
48
|
-
<p class="font-light" style="max-width:32rem">A set of beautifully-designed, accessible
|
|
55
|
+
<p class="font-light" style="max-width:32rem">A set of beautifully-designed, accessible components.
|
|
49
56
|
No complex frameworks. Pure JavaScript and CSS. Open Source.</p>
|
|
50
57
|
`, area );
|
|
58
|
+
|
|
59
|
+
const headerButtons = LX.makeContainer( [ "auto", "auto" ], "flex flex-row", ``, header );
|
|
60
|
+
const getStartedButton = new LX.Button( null, "Get Started", () => window.open( "./docs/", "_blank" ), { buttonClass: "contrast p-1 px-3" } );
|
|
61
|
+
const componentsButton = new LX.Button( null, "View Components", () => window.open( "./docs/?p=components", "_blank" ), { buttonClass: "tertiary p-1 px-3" } );
|
|
62
|
+
headerButtons.appendChild( getStartedButton.root );
|
|
63
|
+
headerButtons.appendChild( componentsButton.root );
|
|
51
64
|
}
|
|
52
65
|
|
|
53
66
|
// Content
|
|
@@ -107,12 +120,12 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
107
120
|
},
|
|
108
121
|
{
|
|
109
122
|
title: "Side Panel",
|
|
110
|
-
content: "This panel contains various
|
|
123
|
+
content: "This panel contains various components and settings for your application.",
|
|
111
124
|
reference: sidePanel.root,
|
|
112
125
|
side: "left",
|
|
113
126
|
align: "start"
|
|
114
127
|
}
|
|
115
|
-
], { xoffset: 8, xradius: 12, xhorizontalOffset: 46, xverticalOffset: 46 });
|
|
128
|
+
], { xoffset: 8, xradius: 12, xhorizontalOffset: 46, xverticalOffset: 46, xuseModal: false });
|
|
116
129
|
|
|
117
130
|
exampleTour.begin();
|
|
118
131
|
} },
|
|
@@ -240,7 +253,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
240
253
|
}
|
|
241
254
|
});
|
|
242
255
|
|
|
243
|
-
// add
|
|
256
|
+
// add components to panel branch
|
|
244
257
|
panel.branch("Canvas", { icon: "Palette", filter: true });
|
|
245
258
|
panel.addColor("Background", "#b7a9b1", null);
|
|
246
259
|
panel.addText("Text", "LexGUI.js @jxarco", null, {placeholder: "e.g. ColorPicker", icon: "Type"});
|
|
@@ -279,7 +292,14 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
279
292
|
panel.addVector3( "Position", [0.0, 0.0, 0.0] );
|
|
280
293
|
panel.addVector4( "Rotation", [0.0, 0.0, 0.0, 1.0] );
|
|
281
294
|
panel.addVector3( "Scale", [1.0, 1.0, 1.0] );
|
|
282
|
-
panel.addButton(null, "Export",
|
|
295
|
+
panel.addButton(null, "Export", () => { console.log("Exported!") }, { buttonClass: "contrast", xmustConfirm: true,
|
|
296
|
+
// confirmSide: "left",
|
|
297
|
+
// confirmAlign: "start",
|
|
298
|
+
// confirmText: "Yeah",
|
|
299
|
+
// confirmCancelText: "Nope",
|
|
300
|
+
// confirmTitle: "Confirm action",
|
|
301
|
+
// confirmContent: "Are your sure??"
|
|
302
|
+
});
|
|
283
303
|
panel.merge();
|
|
284
304
|
}
|
|
285
305
|
}
|
|
@@ -287,7 +307,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
287
307
|
// Mail
|
|
288
308
|
{
|
|
289
309
|
const mailContainer = LX.makeContainer( [ null, "800px" ], "flex flex-col bg-primary border rounded-lg overflow-hidden" );
|
|
290
|
-
tabs.add( "Mail", mailContainer, { xselected: true } );
|
|
310
|
+
tabs.add( "Mail", mailContainer, { xselected: true, badge: { content: "5", className: "xs fg-white bg-error", asChild: true } } );
|
|
291
311
|
|
|
292
312
|
const mailArea = new LX.Area();
|
|
293
313
|
mailContainer.appendChild( mailArea.root );
|
|
@@ -310,7 +330,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
310
330
|
className: "border-right",
|
|
311
331
|
headerTitle: "jxarco",
|
|
312
332
|
headerSubtitle: "alexroco.30@gmail.com",
|
|
313
|
-
headerImage: "
|
|
333
|
+
headerImage: "images/favicon.png",
|
|
314
334
|
skipFooter: true,
|
|
315
335
|
displaySelected: true,
|
|
316
336
|
onHeaderPressed: (e, element) => { }
|
|
@@ -434,7 +454,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
434
454
|
const avatarContainer = LX.makeContainer( [ "40px", "40px" ], "bg-tertiary rounded-full content-center", "", mailPreviewInfo );
|
|
435
455
|
|
|
436
456
|
const mailNames = mail.name.split( ' ' );
|
|
437
|
-
const avatarIcon = LX.makeContainer( [ "auto", "auto" ], "font-medium
|
|
457
|
+
const avatarIcon = LX.makeContainer( [ "auto", "auto" ], "font-medium self-center", mailNames[ 0 ][ 0 ] + mailNames[ 1 ][ 0 ], avatarContainer );
|
|
438
458
|
|
|
439
459
|
const senderData = LX.makeContainer( [ "auto", "auto" ], "flex flex-col gap-0.5", `
|
|
440
460
|
<div class="text-md font-semibold">${ mail.name }</div>
|
|
@@ -477,18 +497,18 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
477
497
|
<p class="fg-tertiary">Here's a list of your tasks for this month!</p>
|
|
478
498
|
`, tasksContainer );
|
|
479
499
|
|
|
480
|
-
const
|
|
481
|
-
head: [ "Name", "Status", "Priority", "ID" ],
|
|
500
|
+
const tableComponent = new LX.Table(null, {
|
|
501
|
+
head: [ "Name", "Status", "Priority", "Date", "ID" ],
|
|
482
502
|
body: [
|
|
483
|
-
[ "Alice", "In Progress", "High", 1 ],
|
|
484
|
-
[ "Bob", "Backlog", "Medium", 2 ],
|
|
485
|
-
[ "Prince", "Canceled", "Low", 3 ],
|
|
486
|
-
[ "Sean", "Done", "High", 4 ],
|
|
487
|
-
[ "Carter", "In Progress", "Medium", 5 ],
|
|
488
|
-
[ "James", "Backlog", "Low", 6 ],
|
|
489
|
-
[ "Mickey", "Todo", "Low", 7 ],
|
|
490
|
-
[ "Charlie", "Canceled", "Low", 8 ],
|
|
491
|
-
[ "Potato", "Todo", "High", 9 ]
|
|
503
|
+
[ "Alice", "In Progress", "High", "20/06/2025", 1 ],
|
|
504
|
+
[ "Bob", "Backlog", "Medium", "11/04/2025", 2 ],
|
|
505
|
+
[ "Prince", "Canceled", "Low", "13/05/2025", 3 ],
|
|
506
|
+
[ "Sean", "Done", "High", "28/07/2025", 4 ],
|
|
507
|
+
[ "Carter", "In Progress", "Medium", "20/03/2025", 5 ],
|
|
508
|
+
[ "James", "Backlog", "Low", "10/02/2025", 6 ],
|
|
509
|
+
[ "Mickey", "Todo", "Low", "08/01/2025", 7 ],
|
|
510
|
+
[ "Charlie", "Canceled", "Low", "23/05/2025", 8 ],
|
|
511
|
+
[ "Potato", "Todo", "High", "15/07/2025", 9 ]
|
|
492
512
|
]
|
|
493
513
|
}, {
|
|
494
514
|
selectable: true,
|
|
@@ -499,6 +519,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
499
519
|
{ name: "Status", options: ["Backlog", "Todo", "In Progress", "Done", "Canceled"] },
|
|
500
520
|
{ name: "Priority", options: ["Low", "Medium", "High"] },
|
|
501
521
|
{ name: "ID", type: "range", min: 0, max: 9, step: 1, units: "hr" },
|
|
522
|
+
{ name: "Date", type: "date", xdefault: ["23/07/2025", "29/07/2025"] },
|
|
502
523
|
],
|
|
503
524
|
rowActions: [
|
|
504
525
|
{ icon: "Edit", title: "Edit Row" },
|
|
@@ -515,7 +536,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
515
536
|
]
|
|
516
537
|
}
|
|
517
538
|
});
|
|
518
|
-
tasksContainer.appendChild(
|
|
539
|
+
tasksContainer.appendChild( tableComponent.root );
|
|
519
540
|
}
|
|
520
541
|
|
|
521
542
|
// Code
|
|
@@ -553,8 +574,7 @@ const area = await LX.init( { layoutMode: "document", rootClass: "wrapper" } );
|
|
|
553
574
|
{
|
|
554
575
|
title: "LexGUI",
|
|
555
576
|
items: [
|
|
556
|
-
{ title: "
|
|
557
|
-
{ title: "Source code", link: "https://github.com/jxarco/lexgui.js/" }
|
|
577
|
+
{ title: "Source code on Github", link: "https://github.com/jxarco/lexgui.js/" }
|
|
558
578
|
]
|
|
559
579
|
},
|
|
560
580
|
{
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
7
7
|
<title>LexGUI demo</title>
|
|
8
8
|
<link rel="stylesheet" href="../build/lexgui.css">
|
|
9
|
-
<link rel="icon" href="../images/
|
|
9
|
+
<link rel="icon" href="../images/favicon.png">
|
|
10
10
|
|
|
11
11
|
<script type="importmap">
|
|
12
12
|
{
|
|
13
13
|
"imports": {
|
|
14
14
|
"lexgui": "../build/lexgui.module.js",
|
|
15
|
-
"lexgui/
|
|
15
|
+
"lexgui/extensions/": "../build/extensions/"
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
</script>
|
|
@@ -25,13 +25,14 @@
|
|
|
25
25
|
|
|
26
26
|
<script type="module">
|
|
27
27
|
import { LX } from 'lexgui';
|
|
28
|
-
import 'lexgui/
|
|
28
|
+
import 'lexgui/extensions/codeeditor.js';
|
|
29
29
|
|
|
30
30
|
window.LX = LX;
|
|
31
31
|
|
|
32
32
|
// Init library and get main area
|
|
33
33
|
let area = await LX.init();
|
|
34
34
|
|
|
35
|
+
const starterTheme = LX.getTheme();
|
|
35
36
|
const menubar = area.addMenubar( [], { sticky: false } );
|
|
36
37
|
menubar.addButtons([
|
|
37
38
|
{
|
|
@@ -44,11 +45,20 @@
|
|
|
44
45
|
icon: "Moon",
|
|
45
46
|
swap: "Sun",
|
|
46
47
|
callback: (swapValue) => { LX.setTheme(swapValue ? "light" : "dark") }
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: "Switch Spacing",
|
|
51
|
+
icon: "AlignVerticalSpaceAround",
|
|
52
|
+
callback: (value, event) => { LX.switchSpacing() }
|
|
47
53
|
}
|
|
48
54
|
]);
|
|
49
55
|
|
|
50
56
|
menubar.setButtonIcon("Github", "Github", () => { window.open("https://github.com/jxarco/lexgui.js/") })
|
|
51
|
-
menubar.setButtonImage("lexgui.js",
|
|
57
|
+
menubar.setButtonImage("lexgui.js", `../images/icon_small_${ starterTheme }.png`, () => { window.open("https://jxarco.github.io/lexgui.js/") }, { float: "left" } );
|
|
58
|
+
|
|
59
|
+
LX.addSignal( "@on_new_color_scheme", ( el, value ) => {
|
|
60
|
+
menubar.setButtonImage( "lexgui.js", `../images/icon_small_${ value }.png` );
|
|
61
|
+
} );
|
|
52
62
|
|
|
53
63
|
var [middle, right] = area.split({ sizes: ["70%", "30%"], minimizable: true });
|
|
54
64
|
var [left, center] = middle.split({ sizes: ["50%", null], minimizable: true });
|
|
@@ -268,10 +278,18 @@
|
|
|
268
278
|
panelB.addFile("Disabled", null, { disabled: true });
|
|
269
279
|
}
|
|
270
280
|
|
|
281
|
+
// Rate
|
|
282
|
+
{
|
|
283
|
+
panelC.branch("Rate", { closed: closedDefault });
|
|
284
|
+
panelC.addRate("Basic Rate", 2, null);
|
|
285
|
+
panelC.addRate("Rate With Halfs", 4.5, null, { allowHalf: true });
|
|
286
|
+
}
|
|
287
|
+
|
|
271
288
|
// DatePicker
|
|
272
289
|
{
|
|
273
290
|
panelC.branch("Date Picker", { closed: closedDefault });
|
|
274
291
|
panelC.addDate("Using Default Date", "15/04/2025");
|
|
292
|
+
panelC.addDate("Range Date", ["15/04/2025", "19/04/2025"]);
|
|
275
293
|
panelC.addDate("No Default Date", null);
|
|
276
294
|
panelC.addDate("Using Today's Date", null, null, { today: true });
|
|
277
295
|
panelC.addDate("Allow Until Today", null, null, { untilToday: true });
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
7
7
|
<title>LexGUI Area Tabs Demo</title>
|
|
8
8
|
<link rel="stylesheet" href="../build/lexgui.css">
|
|
9
|
-
<link rel="icon" href="../images/
|
|
9
|
+
<link rel="icon" href="../images/favicon.png">
|
|
10
10
|
<script type="importmap">
|
|
11
11
|
{
|
|
12
12
|
"imports": {
|
|
13
13
|
"lexgui": "../build/lexgui.module.js",
|
|
14
|
-
"lexgui/
|
|
14
|
+
"lexgui/extensions/": "../build/extensions/"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
</script>
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
var ctx = canvas.getContext("2d");
|
|
66
66
|
|
|
67
|
-
// Get values from panel
|
|
67
|
+
// Get values from panel components (e.g. color value)
|
|
68
68
|
ctx.fillStyle = panelA.getValue('Background');
|
|
69
69
|
|
|
70
70
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
6
6
|
<title>LexGUI AssetView Demo</title>
|
|
7
7
|
<link rel="stylesheet" href="../build/lexgui.css">
|
|
8
|
-
<link rel="icon" href="../images/
|
|
8
|
+
<link rel="icon" href="../images/favicon.png">
|
|
9
9
|
<script type="importmap">
|
|
10
10
|
{
|
|
11
11
|
"imports": {
|
|
12
12
|
"lexgui": "../build/lexgui.module.js",
|
|
13
|
-
"lexgui/
|
|
13
|
+
"lexgui/extensions/": "../build/extensions/"
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
</script>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<script type="module">
|
|
21
21
|
|
|
22
22
|
import { LX } from 'lexgui';
|
|
23
|
-
import 'lexgui/
|
|
23
|
+
import 'lexgui/extensions/codeeditor.js';
|
|
24
24
|
|
|
25
25
|
// Init library and get main area
|
|
26
26
|
let area = await LX.init();
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
6
6
|
<title>LexGUI Code Editor Demo</title>
|
|
7
7
|
<link rel="stylesheet" href="../build/lexgui.css">
|
|
8
|
-
<link rel="icon" href="../images/
|
|
8
|
+
<link rel="icon" href="../images/favicon.png">
|
|
9
9
|
<script type="importmap">
|
|
10
10
|
{
|
|
11
11
|
"imports": {
|
|
12
12
|
"lexgui": "../build/lexgui.module.js",
|
|
13
|
-
"lexgui/
|
|
13
|
+
"lexgui/extensions/": "../build/extensions/"
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
</script>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<script type="module">
|
|
21
21
|
|
|
22
22
|
import { LX } from 'lexgui';
|
|
23
|
-
import 'lexgui/
|
|
23
|
+
import 'lexgui/extensions/codeeditor.js';
|
|
24
24
|
|
|
25
25
|
// init library and get main area
|
|
26
26
|
let area = await LX.init();
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
editor.loadFile("../data/rust_sample.rs");
|
|
65
65
|
editor.loadFile("../data/animation.bml", { language: "JSON" });
|
|
66
66
|
editor.loadFile("../data/CMakeLists.txt", { language: "CMake" });
|
|
67
|
-
editor.loadFile("../localhost.bat");
|
|
67
|
+
editor.loadFile("../data/localhost.bat");
|
|
68
68
|
editor.loadFile("../index.html");
|
|
69
69
|
|
|
70
70
|
if (!fileExplorer) {
|
package/examples/dialogs.html
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
6
6
|
<title>LexGUI Dialogs Demo</title>
|
|
7
7
|
<link rel="stylesheet" href="../build/lexgui.css">
|
|
8
|
-
<link rel="icon" href="../images/
|
|
8
|
+
<link rel="icon" href="../images/favicon.png">
|
|
9
9
|
<script type="importmap">
|
|
10
10
|
{
|
|
11
11
|
"imports": {
|
|
12
12
|
"lexgui": "../build/lexgui.module.js",
|
|
13
|
-
"lexgui/
|
|
13
|
+
"lexgui/extensions/": "../build/extensions/"
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
</script>
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
|
|
98
98
|
var ctx = canvas.getContext("2d");
|
|
99
99
|
|
|
100
|
-
// Get values from panel
|
|
100
|
+
// Get values from panel component (e.g. color value)
|
|
101
101
|
ctx.fillStyle = pocketDialog.panel.getValue('Background');
|
|
102
102
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
103
103
|
|