From 4e2b19cac01c34e794d7f57c11086c7aeee3e659 Mon Sep 17 00:00:00 2001 From: Ivo Zhulev Date: Sat, 29 Aug 2020 16:51:36 +0300 Subject: [PATCH] Update Demos --- demos/kanban/defaultfunctionality/App.razor | 279 ++++++++++++++++++ dev-project/App.razor | 120 ++------ .../Components/JqxBarGauge.razor | 36 ++- .../Components/JqxBulletChart.razor | 26 +- .../Components/JqxButton.razor | 26 +- .../Components/JqxButtonGroup.razor | 30 +- .../Components/JqxCalendar.razor | 32 +- .../Components/JqxChart.razor | 36 ++- .../Components/JqxCheckBox.razor | 32 +- .../Components/JqxColorPicker.razor | 26 +- .../Components/JqxComboBox.razor | 38 +-- .../Components/JqxComplexInput.razor | 26 +- .../Components/JqxDataTable.razor | 60 ++-- .../Components/JqxDateTimeInput.razor | 34 ++- .../Components/JqxDockPanel.razor | 26 +- .../Components/JqxDocking.razor | 28 +- .../Components/JqxDockingLayout.razor | 36 ++- .../Components/JqxDragDrop.razor | 34 ++- .../jQWidgets.Blazor/Components/JqxDraw.razor | 24 +- .../Components/JqxDropDownButton.razor | 28 +- .../Components/JqxDropDownList.razor | 38 +-- .../Components/JqxEditor.razor | 26 +- .../Components/JqxExpander.razor | 32 +- .../Components/JqxFileUpload.razor | 32 +- .../jQWidgets.Blazor/Components/JqxForm.razor | 28 +- .../Components/JqxFormattedInput.razor | 40 +-- .../Components/JqxGauge.razor | 28 +- .../jQWidgets.Blazor/Components/JqxGrid.razor | 72 ++--- .../Components/JqxHeatMap.razor | 24 +- .../Components/JqxInput.razor | 32 +- .../Components/JqxKanban.razor | 34 ++- .../jQWidgets.Blazor/Components/JqxKnob.razor | 26 +- .../Components/JqxLayout.razor | 30 +- .../Components/JqxLinearGauge.razor | 28 +- .../Components/JqxLinkButton.razor | 24 +- .../Components/JqxListBox.razor | 38 +-- .../Components/JqxListMenu.razor | 24 +- .../Components/JqxLoader.razor | 24 +- .../Components/JqxMaskedInput.razor | 28 +- .../jQWidgets.Blazor/Components/JqxMenu.razor | 30 +- .../Components/JqxNavBar.razor | 26 +- .../Components/JqxNavigationBar.razor | 32 +- .../Components/JqxNotification.razor | 30 +- .../Components/JqxNumberInput.razor | 30 +- .../Components/JqxPanel.razor | 24 +- .../Components/JqxPasswordInput.razor | 26 +- .../Components/JqxPivotDesigner.razor | 24 +- .../Components/JqxPivotGrid.razor | 58 ++-- .../Components/JqxPopover.razor | 28 +- .../Components/JqxProgressBar.razor | 30 +- .../Components/JqxRadioButton.razor | 30 +- .../Components/JqxRangeSelector.razor | 26 +- .../Components/JqxRating.razor | 26 +- .../Components/JqxRepeatButton.razor | 26 +- .../Components/JqxResponsivePanel.razor | 32 +- .../Components/JqxRibbon.razor | 32 +- .../Components/JqxScheduler.razor | 62 ++-- .../Components/JqxScrollBar.razor | 26 +- .../Components/JqxScrollView.razor | 26 +- .../Components/JqxSlider.razor | 32 +- .../Components/JqxSortable.razor | 48 +-- .../Components/JqxSplitter.razor | 32 +- .../Components/JqxSwitchButton.razor | 30 +- .../jQWidgets.Blazor/Components/JqxTabs.razor | 46 +-- .../Components/JqxTagCloud.razor | 28 +- .../Components/JqxTextArea.razor | 32 +- .../Components/JqxTimePicker.razor | 26 +- .../Components/JqxToggleButton.razor | 26 +- .../Components/JqxToolBar.razor | 28 +- .../Components/JqxToolTip.razor | 32 +- .../jQWidgets.Blazor/Components/JqxTree.razor | 42 +-- .../Components/JqxTreeGrid.razor | 64 ++-- .../Components/JqxTreeMap.razor | 26 +- .../Components/JqxValidator.razor | 28 +- .../Components/JqxWindow.razor | 40 +-- library/jQWidgets.Blazor/wwwroot/jqxBlazor.js | 9 +- processors/library-and-api.js | 48 +-- processors/site-demos.js | 6 +- release/blazor-kanban/index.htm | 4 +- .../defaultfunctionality/blazor.boot.json | 32 ++ .../blazor.webassembly.js | 1 + .../kanban/defaultfunctionality/index.dll | Bin 0 -> 15872 bytes .../kanban/defaultfunctionality/index.js | 0 ...Microsoft.AspNetCore.Blazor.HttpClient.dll | Bin 9216 -> 9216 bytes .../_bin/Microsoft.AspNetCore.Blazor.dll | Bin 27136 -> 27136 bytes .../Microsoft.AspNetCore.Components.Web.dll | Bin 15872 -> 15872 bytes ....Extensions.Configuration.Abstractions.dll | Bin 7680 -> 7680 bytes .../Microsoft.Extensions.Configuration.dll | Bin 12288 -> 12288 bytes ...sions.DependencyInjection.Abstractions.dll | Bin 20480 -> 20480 bytes ...crosoft.Extensions.DependencyInjection.dll | Bin 62464 -> 62464 bytes ...rosoft.Extensions.Logging.Abstractions.dll | Bin 32256 -> 32256 bytes .../_bin/Microsoft.Extensions.Primitives.dll | Bin 9216 -> 9216 bytes .../framework/_framework/_bin/System.Core.dll | Bin 295424 -> 295424 bytes .../_framework/_bin/System.Net.Http.dll | Bin 99328 -> 99328 bytes ...System.Runtime.CompilerServices.Unsafe.dll | Bin 2560 -> 2560 bytes .../_bin/System.Text.Encodings.Web.dll | Bin 24064 -> 24064 bytes .../_framework/_bin/System.Text.Json.dll | Bin 211968 -> 211968 bytes release/framework/_framework/_bin/System.dll | Bin 105472 -> 105472 bytes .../_framework/_bin/WebAssembly.Bindings.dll | Bin 19968 -> 19968 bytes .../_framework/_bin/WebAssembly.Net.Http.dll | Bin 22016 -> 22016 bytes .../_framework/_bin/jQWidgets.Blazor.dll | Bin 495104 -> 503296 bytes .../framework/_framework/_bin/mscorlib.dll | Bin 1381888 -> 1381888 bytes release/framework/jqxBlazor.js | 9 +- 103 files changed, 1719 insertions(+), 1159 deletions(-) create mode 100644 demos/kanban/defaultfunctionality/App.razor create mode 100644 release/demos/kanban/defaultfunctionality/blazor.boot.json create mode 100644 release/demos/kanban/defaultfunctionality/blazor.webassembly.js create mode 100644 release/demos/kanban/defaultfunctionality/index.dll create mode 100644 release/demos/kanban/defaultfunctionality/index.js diff --git a/demos/kanban/defaultfunctionality/App.razor b/demos/kanban/defaultfunctionality/App.razor new file mode 100644 index 00000000..9f92c461 --- /dev/null +++ b/demos/kanban/defaultfunctionality/App.razor @@ -0,0 +1,279 @@ +
+ +
+ + +
+ +
+ +
+ + +
+ +
+ + +
+
+
+
+
+ +@code { + string size = "100%"; + string orientation = "horizontal"; + + static IDictionary[] splitterPanels1 = new Dictionary[] + { + new Dictionary + { + { "size", 250 }, { "min", 100 } + }, + new Dictionary + { + { "min", 250 } + } + }; + + static IDictionary[] splitterPanels2 = new Dictionary[] + { + new Dictionary + { + { "size", 350 }, { "min", 200 }, { "collapsible", false } + }, + new Dictionary + { + { "min", 200 } + } + }; + + static IDictionary[] fields = new Dictionary[] + { + new Dictionary + { + { "name", "status" }, { "map", "state" }, { "type", "string" } + }, + new Dictionary + { + { "name", "text" }, { "map", "label" }, { "type", "string" } + }, + new Dictionary + { + { "name", "tags" }, { "type", "string" } + }, + new Dictionary + { + { "name", "color" }, { "map", "hex" }, { "type", "string" } + }, + new Dictionary + { + { "name", "resourceId" }, { "type", "number" } + } + }; + + static IDictionary source1 = new Dictionary() + { + { "dataType", "array" }, + { "dataFields", fields }, + { + "localData", + new Dictionary[] + { + new Dictionary + { + { "state", "new" }, { "label", "Combine Orders" }, { "tags", "orders, combine" }, { "hex", "#5dc3f0" }, { "resourceId", 3 } + }, + new Dictionary + { + { "state", "new" }, { "label", "Change Billing Address" }, { "tags", "billing" }, { "hex", "#f19b60" }, { "resourceId", 1 } + }, + new Dictionary + { + { "state", "new" }, { "label", "One item added to the cart" }, { "tags", "cart" }, { "hex", "#5dc3f0" }, { "resourceId", 3 } + }, + new Dictionary + { + { "state", "new" }, { "label", "Edit Item Price" }, { "tags", "price, edit" }, { "hex", "#5dc3f0" }, { "resourceId", 4 } + }, + new Dictionary + { + { "state", "new" }, { "label", "Login 404 issue" }, { "tags", "issue, login" }, { "hex", "#6bbd49" } + } + } + } + }; + + static IDictionary[] columns1 = new Dictionary[] + { + new Dictionary + { + { "text", "Backlog" }, { "dataField", "new" }, { "maxItems", 10 } + } + }; + + static IDictionary source2 = new Dictionary() + { + { "dataType", "array" }, + { "dataFields", fields }, + { + "localData", + new Dictionary[] + { + new Dictionary + { + { "state", "ready" }, { "label", "Logout issue" }, { "tags", "logout, issue" }, { "hex", "#5dc3f0" }, { "resourceId", 7 } + }, + new Dictionary + { + { "state", "ready" }, { "label", "Remember password issue" }, { "tags", "password, issue" }, { "hex", "#6bbd49" }, { "resourceId", 8 } + }, + new Dictionary + { + { "state", "ready" }, { "label", "Cart calculation issue" }, { "tags", "cart, calculation" }, { "hex", "#f19b60" }, { "resourceId", 9 } + }, + new Dictionary + { + { "state", "ready" }, { "label", "Remove topic issue" }, { "tags", "topic, issue" }, { "hex", "#6bbd49" } + } + } + } + }; + + static IDictionary[] columns2 = new Dictionary[] + { + new Dictionary + { + { "text", "Ready" }, { "dataField", "ready" }, { "maxItems", 10 } + } + }; + + static IDictionary source3 = new Dictionary() + { + { "dataType", "array" }, + { "dataFields", fields }, + { + "localData", + new Dictionary[] + { + new Dictionary + { + { "state", "done" }, { "label", "Delete orders" }, { "tags", "orders, combine" }, { "hex", "#f19b60" }, { "resourceId", 4 } + }, + new Dictionary + { + { "state", "work" }, { "label", "Add New Address" }, { "tags", "address" }, { "hex", "#6bbd49" }, { "resourceId", 5 } + }, + new Dictionary + { + { "state", "new" }, { "label", "Rename items" }, { "tags", "rename" }, { "hex", "#5dc3f0" }, { "resourceId", 6 } + }, + new Dictionary + { + { "state", "work" }, { "label", "Update cart" }, { "tags", "cart, update" }, { "hex", "#6bbd49" } + } + } + } + }; + + static IDictionary[] columns3 = new Dictionary[] + { + new Dictionary + { + { "text", "Backlog" }, { "dataField", "new" }, { "maxItems", 10 } + } + }; + + static IDictionary resourcesSource = new Dictionary() + { + { "dataType", "array" }, + { + "dataFields", + new Dictionary[] + { + new Dictionary + { + { "name", "id" }, { "type", "number" } + }, + new Dictionary + { + { "name", "name" }, { "type", "string" } + }, + new Dictionary + { + { "name", "image" }, { "type", "string" } + }, + new Dictionary + { + { "name", "common" }, { "type", "boolean" } + } + } + }, + { + "localData", + new Dictionary[] + { + new Dictionary + { + { "id", 0 }, { "name", "No name" }, { "image", "../jqwidgets/styles/images/common.png" }, { "common", true } + }, + new Dictionary + { + { "id", 1 }, { "name", "Andrew Fuller" }, { "image", "../images/andrew.png" } + }, + new Dictionary + { + { "id", 2 }, { "name", "Janet Leverling" }, { "image", "../images/janet.png" } + }, + new Dictionary + { + { "id", 3 }, { "name", "Steven Buchanan" }, { "image", "../images/steven.png" } + }, + new Dictionary + { + { "id", 4 }, { "name", "Nancy Davolio" }, { "image", "../images/nancy.png" } + }, + new Dictionary + { + { "id", 5 }, { "name", "Michael Buchanan" }, { "image", "../images/Michael.png" } + }, + new Dictionary + { + { "id", 6 }, { "name", "Margaret Buchanan" }, { "image", "../images/margaret.png" } + }, + new Dictionary + { + { "id", 7 }, { "name", "Robert Buchanan" }, { "image", "../images/robert.png" } + }, + new Dictionary + { + { "id", 8 }, { "name", "Laura Buchanan" }, { "image", "../images/Laura.png" } + }, + new Dictionary + { + { "id", 9 }, { "name", "Anna Short" }, { "image", "../images/Anne.png" } + } + } + } + }; +} + + diff --git a/dev-project/App.razor b/dev-project/App.razor index 105abe0b..6a153f4f 100644 --- a/dev-project/App.razor +++ b/dev-project/App.razor @@ -1,102 +1,40 @@ -
- - -
+@* + Blazor has good tree shaking so when it builds for production + only includes the needed modules for the demo. As in the release the modules + are reused, we need this modules to be all the needed for all demos. -@code { + If some demo when build misses a module, copy/paste this file + in App.razor, build the project and copy/paste the generated modules + in the release folder. - IDictionary pivotDataSource = new Dictionary() - { - { "dataSource", dataSource }, - { "options", - new Dictionary() - { - { "pivotValuesOnRows", false }, - { "rows", - new Dictionary[] - { - new Dictionary() { { "dataField", "country" }, { "width", 190 } } - } - }, - { - "values", - new Dictionary[] - { - new Dictionary() - { - { "dataField", "value" }, - { "width", 200 }, - { "function", "min" }, - { "text", "cells left alignment" }, - { - "formatSettings", - new Dictionary() { { "align", "left" }, { "prefix", "" }, { "decimalPlaces", "2" } } - } - }, - new Dictionary() - { - { "dataField", "value" }, - { "width", 200 }, - { "function", "max" }, - { "text", "cells center alignment" }, - { - "formatSettings", - new Dictionary() { { "align", "center" }, { "prefix", "" }, { "decimalPlaces", "2" } } - } - }, - new Dictionary() - { - { "dataField", "value" }, - { "width", 200 }, - { "function", "average" }, - { "text", "cells right alignment" }, - { - "formatSettings", - new Dictionary() { { "align", "right" }, { "prefix", "" }, { "decimalPlaces", "2" } } - } - } - } - } - } - - } - }; + BUILD: dotnet publish -c release + FROM: dev-project/bin/release/netstandard2.1/publish/blazor-web/dist/_framework/_bin/ + TO: release/common/_framework/_bin/ +*@ - static IDictionary dataSource = new Dictionary() - { - { "localdata", generateLocalData() }, - { "datatype", "array" }, - { - "dataFields", - new Dictionary[] - { - new Dictionary() { { "name", "country" }, { "type", "string" } }, - new Dictionary() { { "name", "value" }, { "type", "string" } } - } - } - }; +@inject HttpClient Http; + + + +
+ +@code { - static List> generateLocalData() + private object[] source; + + protected override async Task OnInitializedAsync() { - string[] countries = new string[] { "Germany", "France", "United States", "Italy", "Spain", "Finland", "Canada", "Japan", "Brazil", "United Kingdom", "China", "India", "South Korea", "Romania", "Greece" }; - string[] values = new string[] { "2.25", "1.5", "3.0", "3.3", "4.5", "3.6", "3.8", "2.5", "5.0", "1.75", "3.25", "4.0", "3.0", "1.0" }; + source = await Http.GetJsonAsync("../sampledata/customers.txt"); - List> data = new List>(); + var intParse = int.Parse("22"); + var doubleParse = double.Parse("22"); - for (int i = 0; i < countries.Length - 1; i++) - { - IDictionary row = new Dictionary - { - { "country", countries[i] }, - { "value", values[i] } - }; - - data.Add(row); - } + var date = new DateTime(2222, 2, 2, 2, 2, 2).AddDays(22); + date.ToString("dd-MMMM-yyyy"); + var date2 = DateTime.Today; - return data; + var task = Task.Run(() => { }); + task.Wait(TimeSpan.FromSeconds(2)); } } - \ No newline at end of file diff --git a/library/jQWidgets.Blazor/Components/JqxBarGauge.razor b/library/jQWidgets.Blazor/Components/JqxBarGauge.razor index 417f2fb7..bfc8ba76 100644 --- a/library/jQWidgets.Blazor/Components/JqxBarGauge.razor +++ b/library/jQWidgets.Blazor/Components/JqxBarGauge.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -134,6 +134,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onDrawEnd { get; set; } @@ -175,8 +178,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void refresh() @@ -208,7 +209,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -236,14 +237,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxBarGauge", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxBarGauge", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -255,38 +259,38 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "drawEnd", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onDrawEnd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "drawStart", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onDrawStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "initialized", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onInitialized))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "tooltipClose", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onTooltipClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "tooltipOpen", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onTooltipOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "drawEnd", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onDrawEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "drawStart", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onDrawStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "initialized", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onInitialized))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "tooltipClose", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onTooltipClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "tooltipOpen", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onTooltipOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitBarGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxBulletChart.razor b/library/jQWidgets.Blazor/Components/JqxBulletChart.razor index 793801c8..13743615 100644 --- a/library/jQWidgets.Blazor/Components/JqxBulletChart.razor +++ b/library/jQWidgets.Blazor/Components/JqxBulletChart.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -110,6 +110,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -136,8 +139,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -174,7 +175,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -202,14 +203,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxBulletChart", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxBulletChart", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -221,33 +225,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitBulletChartEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitBulletChartEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxButton.razor b/library/jQWidgets.Blazor/Components/JqxButton.razor index ad6deaf9..396728a4 100644 --- a/library/jQWidgets.Blazor/Components/JqxButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -104,6 +104,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClick { get; set; } @@ -130,8 +133,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -168,7 +169,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -196,14 +197,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -215,33 +219,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "click", "emitButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "click", "emitButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxButtonGroup.razor b/library/jQWidgets.Blazor/Components/JqxButtonGroup.razor index bcbdefb1..5ea8c30b 100644 --- a/library/jQWidgets.Blazor/Components/JqxButtonGroup.razor +++ b/library/jQWidgets.Blazor/Components/JqxButtonGroup.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -44,6 +44,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onButtonclick { get; set; } @@ -76,8 +79,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void disableAt(double index) @@ -129,7 +130,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -157,14 +158,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxButtonGroup", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxButtonGroup", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -176,35 +180,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "buttonclick", "emitButtonGroupEvent", DotNetObjectReference.Create(new EventsHandler(onButtonclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "selected", "emitButtonGroupEvent", DotNetObjectReference.Create(new EventsHandler(onSelected))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselected", "emitButtonGroupEvent", DotNetObjectReference.Create(new EventsHandler(onUnselected))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "buttonclick", "emitButtonGroupEvent", DotNetObjectReference.Create(new EventsHandler(onButtonclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "selected", "emitButtonGroupEvent", DotNetObjectReference.Create(new EventsHandler(onSelected))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselected", "emitButtonGroupEvent", DotNetObjectReference.Create(new EventsHandler(onUnselected))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxCalendar.razor b/library/jQWidgets.Blazor/Components/JqxCalendar.razor index 08bdb122..7fee6d0d 100644 --- a/library/jQWidgets.Blazor/Components/JqxCalendar.razor +++ b/library/jQWidgets.Blazor/Components/JqxCalendar.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -224,6 +224,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBackButtonClick { get; set; } @@ -259,8 +262,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void clear() @@ -367,7 +368,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -395,14 +396,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxCalendar", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxCalendar", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -414,36 +418,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "backButtonClick", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onBackButtonClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "nextButtonClick", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onNextButtonClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "viewChange", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onViewChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "backButtonClick", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onBackButtonClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "nextButtonClick", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onNextButtonClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "viewChange", "emitCalendarEvent", DotNetObjectReference.Create(new EventsHandler(onViewChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxChart.razor b/library/jQWidgets.Blazor/Components/JqxChart.razor index a02c14f9..7666d91e 100644 --- a/library/jQWidgets.Blazor/Components/JqxChart.razor +++ b/library/jQWidgets.Blazor/Components/JqxChart.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -218,6 +218,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onToggle { get; set; } @@ -259,8 +262,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public object getInstance() @@ -382,7 +383,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -410,14 +411,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxChart", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxChart", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -429,38 +433,38 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "toggle", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onToggle))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "click", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "refreshBegin", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRefreshBegin))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "refreshEnd", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRefreshEnd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rangeSelectionChanging", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRangeSelectionChanging))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rangeSelectionChanged", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRangeSelectionChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "toggle", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onToggle))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "click", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "refreshBegin", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRefreshBegin))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "refreshEnd", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRefreshEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rangeSelectionChanging", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRangeSelectionChanging))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rangeSelectionChanged", "emitChartEvent", DotNetObjectReference.Create(new EventsHandler(onRangeSelectionChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxCheckBox.razor b/library/jQWidgets.Blazor/Components/JqxCheckBox.razor index b766cd85..14878563 100644 --- a/library/jQWidgets.Blazor/Components/JqxCheckBox.razor +++ b/library/jQWidgets.Blazor/Components/JqxCheckBox.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -86,6 +86,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChecked { get; set; } @@ -121,8 +124,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void check() @@ -189,7 +190,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -217,14 +218,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxCheckBox", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxCheckBox", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -236,36 +240,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checked", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChecked))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "indeterminate", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onIndeterminate))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unchecked", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onUnchecked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checked", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChecked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "indeterminate", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onIndeterminate))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unchecked", "emitCheckBoxEvent", DotNetObjectReference.Create(new EventsHandler(onUnchecked))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxColorPicker.razor b/library/jQWidgets.Blazor/Components/JqxColorPicker.razor index aa1b4eb0..f520cd0b 100644 --- a/library/jQWidgets.Blazor/Components/JqxColorPicker.razor +++ b/library/jQWidgets.Blazor/Components/JqxColorPicker.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -44,6 +44,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onColorchange { get; set; } @@ -70,8 +73,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public object getColor() @@ -93,7 +94,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -121,14 +122,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxColorPicker", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxColorPicker", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -140,33 +144,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "colorchange", "emitColorPickerEvent", DotNetObjectReference.Create(new EventsHandler(onColorchange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "colorchange", "emitColorPickerEvent", DotNetObjectReference.Create(new EventsHandler(onColorchange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxComboBox.razor b/library/jQWidgets.Blazor/Components/JqxComboBox.razor index f1ac7805..6754421e 100644 --- a/library/jQWidgets.Blazor/Components/JqxComboBox.razor +++ b/library/jQWidgets.Blazor/Components/JqxComboBox.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -248,6 +248,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -292,8 +295,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public bool addItem(object item) @@ -515,7 +516,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -543,14 +544,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxComboBox", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxComboBox", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -562,39 +566,39 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checkChange", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselect", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checkChange", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselect", "emitComboBoxEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxComplexInput.razor b/library/jQWidgets.Blazor/Components/JqxComplexInput.razor index cedf7f75..49920366 100644 --- a/library/jQWidgets.Blazor/Components/JqxComplexInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxComplexInput.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -80,6 +80,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -106,8 +109,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -159,7 +160,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -187,14 +188,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxComplexInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxComplexInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -206,33 +210,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitComplexInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitComplexInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDataTable.razor b/library/jQWidgets.Blazor/Components/JqxDataTable.razor index 0421beea..681684ba 100644 --- a/library/jQWidgets.Blazor/Components/JqxDataTable.razor +++ b/library/jQWidgets.Blazor/Components/JqxDataTable.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -320,6 +320,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -397,8 +400,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addRow(double rowIndex, object rowData, object rowPosition) @@ -630,7 +631,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -658,14 +659,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDataTable", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDataTable", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -677,50 +681,50 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellBeginEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onCellBeginEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellEndEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onCellEndEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellValueChanged", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onCellValueChanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnResized", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onColumnResized))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnReordered", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onColumnReordered))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sort", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "filter", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onFilter))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pageChanged", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onPageChanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pageSizeChanged", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onPageSizeChanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowClick", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowDoubleClick", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowDoubleClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowSelect", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowUnselect", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowUnselect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowBeginEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowBeginEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowEndEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowEndEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowExpand", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowExpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowCollapse", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowCollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellBeginEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onCellBeginEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellEndEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onCellEndEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellValueChanged", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onCellValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnResized", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onColumnResized))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnReordered", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onColumnReordered))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sort", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "filter", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onFilter))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pageChanged", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onPageChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pageSizeChanged", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onPageSizeChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowClick", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowDoubleClick", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowDoubleClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowSelect", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowUnselect", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowUnselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowBeginEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowBeginEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowEndEdit", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowEndEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowExpand", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowExpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowCollapse", "emitDataTableEvent", DotNetObjectReference.Create(new EventsHandler(onRowCollapse))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDateTimeInput.razor b/library/jQWidgets.Blazor/Components/JqxDateTimeInput.razor index ea0a58cf..911485a6 100644 --- a/library/jQWidgets.Blazor/Components/JqxDateTimeInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxDateTimeInput.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -206,6 +206,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -244,8 +247,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close() @@ -332,7 +333,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -360,14 +361,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDateTimeInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDateTimeInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -379,37 +383,37 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "textchanged", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onTextchanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "textchanged", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onTextchanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitDateTimeInputEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDockPanel.razor b/library/jQWidgets.Blazor/Components/JqxDockPanel.razor index 5070228e..47310d11 100644 --- a/library/jQWidgets.Blazor/Components/JqxDockPanel.razor +++ b/library/jQWidgets.Blazor/Components/JqxDockPanel.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -32,6 +32,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onLayout { get; set; } @@ -58,8 +61,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void refresh() @@ -76,7 +77,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -104,14 +105,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDockPanel", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDockPanel", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -123,33 +127,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "layout", "emitDockPanelEvent", DotNetObjectReference.Create(new EventsHandler(onLayout))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "layout", "emitDockPanelEvent", DotNetObjectReference.Create(new EventsHandler(onLayout))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDocking.razor b/library/jQWidgets.Blazor/Components/JqxDocking.razor index 797c8c0d..c4c1358d 100644 --- a/library/jQWidgets.Blazor/Components/JqxDocking.razor +++ b/library/jQWidgets.Blazor/Components/JqxDocking.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -86,6 +86,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onDragStart { get; set; } @@ -115,8 +118,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addWindow(string windowId, object mode, double panel, object position) @@ -253,7 +254,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -281,14 +282,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDocking", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDocking", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -300,34 +304,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragStart", "emitDockingEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragEnd", "emitDockingEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragStart", "emitDockingEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragEnd", "emitDockingEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDockingLayout.razor b/library/jQWidgets.Blazor/Components/JqxDockingLayout.razor index c4a2ea91..8ef418c2 100644 --- a/library/jQWidgets.Blazor/Components/JqxDockingLayout.razor +++ b/library/jQWidgets.Blazor/Components/JqxDockingLayout.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -62,6 +62,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onDock { get; set; } @@ -103,8 +106,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addFloatGroup(object width, object height, object position, string panelType, string title, string content, object initContent) @@ -146,7 +147,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -174,14 +175,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDockingLayout", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDockingLayout", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -193,38 +197,38 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dock", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onDock))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "floatGroupClosed", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onFloatGroupClosed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "float", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onFloat))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pin", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onPin))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "resize", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onResize))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unpin", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onUnpin))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dock", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onDock))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "floatGroupClosed", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onFloatGroupClosed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "float", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onFloat))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pin", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onPin))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "resize", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onResize))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unpin", "emitDockingLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onUnpin))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDragDrop.razor b/library/jQWidgets.Blazor/Components/JqxDragDrop.razor index d578f3ca..5fb54bd5 100644 --- a/library/jQWidgets.Blazor/Components/JqxDragDrop.razor +++ b/library/jQWidgets.Blazor/Components/JqxDragDrop.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -128,6 +128,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onDragStart { get; set; } @@ -166,8 +169,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public IDictionary getOptions() @@ -179,7 +180,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -207,14 +208,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDragDrop", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDragDrop", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -226,37 +230,37 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragStart", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragEnd", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragging", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDragging))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dropTargetEnter", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDropTargetEnter))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dropTargetLeave", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDropTargetLeave))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragStart", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragEnd", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragging", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDragging))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dropTargetEnter", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDropTargetEnter))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dropTargetLeave", "emitDragDropEvent", DotNetObjectReference.Create(new EventsHandler(onDropTargetLeave))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDraw.razor b/library/jQWidgets.Blazor/Components/JqxDraw.razor index 2840cbab..4b4c68b9 100644 --- a/library/jQWidgets.Blazor/Components/JqxDraw.razor +++ b/library/jQWidgets.Blazor/Components/JqxDraw.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -14,6 +14,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -37,8 +40,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void attr(object element, object attributes) @@ -130,7 +131,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -158,14 +159,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDraw", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDraw", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -182,27 +186,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDropDownButton.razor b/library/jQWidgets.Blazor/Components/JqxDropDownButton.razor index 9b8dfbf1..21f03219 100644 --- a/library/jQWidgets.Blazor/Components/JqxDropDownButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxDropDownButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -110,6 +110,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -139,8 +142,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close() @@ -187,7 +188,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -215,14 +216,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDropDownButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDropDownButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -234,34 +238,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitDropDownButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitDropDownButtonEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitDropDownButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitDropDownButtonEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxDropDownList.razor b/library/jQWidgets.Blazor/Components/JqxDropDownList.razor index 88371822..81d92df6 100644 --- a/library/jQWidgets.Blazor/Components/JqxDropDownList.razor +++ b/library/jQWidgets.Blazor/Components/JqxDropDownList.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -218,6 +218,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -262,8 +265,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public bool addItem(object item) @@ -480,7 +481,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -508,14 +509,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxDropDownList", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxDropDownList", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -527,39 +531,39 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checkChange", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselect", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checkChange", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselect", "emitDropDownListEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxEditor.razor b/library/jQWidgets.Blazor/Components/JqxEditor.razor index 647fa4fb..4f7c9cd9 100644 --- a/library/jQWidgets.Blazor/Components/JqxEditor.razor +++ b/library/jQWidgets.Blazor/Components/JqxEditor.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -86,6 +86,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -112,8 +115,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -155,7 +156,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -183,14 +184,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxEditor", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxEditor", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -202,33 +206,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitEditorEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitEditorEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxExpander.razor b/library/jQWidgets.Blazor/Components/JqxExpander.razor index 04d26a15..60a73141 100644 --- a/library/jQWidgets.Blazor/Components/JqxExpander.razor +++ b/library/jQWidgets.Blazor/Components/JqxExpander.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -92,6 +92,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onCollapsing { get; set; } @@ -127,8 +130,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void collapse() @@ -205,7 +206,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -233,14 +234,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxExpander", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxExpander", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -252,36 +256,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapsing", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsing))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapsed", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expanding", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onExpanding))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expanded", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onExpanded))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapsing", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsing))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapsed", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expanding", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onExpanding))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expanded", "emitExpanderEvent", DotNetObjectReference.Create(new EventsHandler(onExpanded))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxFileUpload.razor b/library/jQWidgets.Blazor/Components/JqxFileUpload.razor index b8775c7c..ac7b1690 100644 --- a/library/jQWidgets.Blazor/Components/JqxFileUpload.razor +++ b/library/jQWidgets.Blazor/Components/JqxFileUpload.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -98,6 +98,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onRemove { get; set; } @@ -133,8 +136,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void browse() @@ -186,7 +187,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -214,14 +215,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxFileUpload", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxFileUpload", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -233,36 +237,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "remove", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onRemove))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "uploadStart", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onUploadStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "uploadEnd", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onUploadEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "remove", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onRemove))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "uploadStart", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onUploadStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "uploadEnd", "emitFileUploadEvent", DotNetObjectReference.Create(new EventsHandler(onUploadEnd))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxForm.razor b/library/jQWidgets.Blazor/Components/JqxForm.razor index e0901452..ac4d2865 100644 --- a/library/jQWidgets.Blazor/Components/JqxForm.razor +++ b/library/jQWidgets.Blazor/Components/JqxForm.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -38,6 +38,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onFormDataChange { get; set; } @@ -67,8 +70,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public object getInstance() @@ -125,7 +126,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -153,14 +154,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxForm", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxForm", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -172,34 +176,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "formDataChange", "emitFormEvent", DotNetObjectReference.Create(new EventsHandler(onFormDataChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "buttonClick", "emitFormEvent", DotNetObjectReference.Create(new EventsHandler(onButtonClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "formDataChange", "emitFormEvent", DotNetObjectReference.Create(new EventsHandler(onFormDataChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "buttonClick", "emitFormEvent", DotNetObjectReference.Create(new EventsHandler(onButtonClick))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxFormattedInput.razor b/library/jQWidgets.Blazor/Components/JqxFormattedInput.razor index 648152f3..b809e098 100644 --- a/library/jQWidgets.Blazor/Components/JqxFormattedInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxFormattedInput.razor @@ -122,6 +122,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -157,8 +160,6 @@ private bool shouldSetters; - private string componentID; - private string componentMarkup; private IDictionary initialOptions = new Dictionary(); @@ -232,7 +233,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -261,14 +262,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxFormattedInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxFormattedInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -280,36 +284,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "radixChange", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onRadixChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "radixChange", "emitFormattedInputEvent", DotNetObjectReference.Create(new EventsHandler(onRadixChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler @@ -355,29 +359,29 @@ if ((bool)rtl && (bool)dropDown && (bool)spinButtons) { - componentMarkup = "
"; + componentMarkup = "
"; return; } if (!(bool)rtl && (bool)dropDown && (bool)spinButtons) { - componentMarkup = "
"; + componentMarkup = "
"; return; } if (((bool)rtl && (bool)dropDown) || ((bool)rtl && (bool)spinButtons)) { - componentMarkup = "
"; + componentMarkup = "
"; return; } if ((!(bool)rtl && (bool)dropDown) || (!(bool)rtl && (bool)spinButtons)) { - componentMarkup = "
"; + componentMarkup = "
"; return; } - componentMarkup = "
"; + componentMarkup = "
"; } } diff --git a/library/jQWidgets.Blazor/Components/JqxGauge.razor b/library/jQWidgets.Blazor/Components/JqxGauge.razor index 1b304a49..f615f45a 100644 --- a/library/jQWidgets.Blazor/Components/JqxGauge.razor +++ b/library/jQWidgets.Blazor/Components/JqxGauge.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -152,6 +152,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onValueChanging { get; set; } @@ -181,8 +184,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void disable() @@ -214,7 +215,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -242,14 +243,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxGauge", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxGauge", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -261,34 +265,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanging", "emitGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanging))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanging", "emitGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanging))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxGrid.razor b/library/jQWidgets.Blazor/Components/JqxGrid.razor index fc354965..0a6226d5 100644 --- a/library/jQWidgets.Blazor/Components/JqxGrid.razor +++ b/library/jQWidgets.Blazor/Components/JqxGrid.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -692,6 +692,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingcomplete { get; set; } @@ -787,8 +790,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void autoresizecolumns(string type) @@ -1315,7 +1316,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -1343,14 +1344,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxGrid", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxGrid", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -1362,56 +1366,56 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingcomplete", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onBindingcomplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnresized", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnresized))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnreordered", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnreordered))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "celldoubleclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCelldoubleclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellselect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellunselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellunselect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellvaluechanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellvaluechanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellbeginedit", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellbeginedit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellendedit", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellendedit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "filter", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onFilter))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "groupschanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onGroupschanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "groupexpand", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onGroupexpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "groupcollapse", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onGroupcollapse))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pagechanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onPagechanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pagesizechanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onPagesizechanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowdoubleclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowdoubleclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowselect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowunselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowunselect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowexpand", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowexpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowcollapse", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowcollapse))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sort", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingcomplete", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onBindingcomplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnresized", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnresized))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnreordered", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnreordered))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "celldoubleclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCelldoubleclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellunselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellunselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellvaluechanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellvaluechanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellbeginedit", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellbeginedit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellendedit", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellendedit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "filter", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onFilter))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "groupschanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onGroupschanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "groupexpand", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onGroupexpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "groupcollapse", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onGroupcollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pagechanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onPagechanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pagesizechanged", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onPagesizechanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowdoubleclick", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowdoubleclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowunselect", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowunselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowexpand", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowexpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowcollapse", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowcollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sort", "emitGridEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxHeatMap.razor b/library/jQWidgets.Blazor/Components/JqxHeatMap.razor index c5c63416..450e1318 100644 --- a/library/jQWidgets.Blazor/Components/JqxHeatMap.razor +++ b/library/jQWidgets.Blazor/Components/JqxHeatMap.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -56,6 +56,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -79,8 +82,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -127,7 +128,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -155,14 +156,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxHeatMap", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxHeatMap", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -179,27 +183,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxInput.razor b/library/jQWidgets.Blazor/Components/JqxInput.razor index 2dd422b4..80b1e86b 100644 --- a/library/jQWidgets.Blazor/Components/JqxInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxInput.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -122,6 +122,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -157,8 +160,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -195,7 +196,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -223,14 +224,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -242,36 +246,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitInputEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxKanban.razor b/library/jQWidgets.Blazor/Components/JqxKanban.razor index b8651ee0..d97f075e 100644 --- a/library/jQWidgets.Blazor/Components/JqxKanban.razor +++ b/library/jQWidgets.Blazor/Components/JqxKanban.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -98,6 +98,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onColumnAttrClicked { get; set; } @@ -136,8 +139,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addItem(object newItem) @@ -184,7 +185,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -212,14 +213,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxKanban", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxKanban", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -231,37 +235,37 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnAttrClicked", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onColumnAttrClicked))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnCollapsed", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onColumnCollapsed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnExpanded", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onColumnExpanded))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "itemAttrClicked", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onItemAttrClicked))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "itemMoved", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onItemMoved))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnAttrClicked", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onColumnAttrClicked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnCollapsed", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onColumnCollapsed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnExpanded", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onColumnExpanded))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "itemAttrClicked", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onItemAttrClicked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "itemMoved", "emitKanbanEvent", DotNetObjectReference.Create(new EventsHandler(onItemMoved))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxKnob.razor b/library/jQWidgets.Blazor/Components/JqxKnob.razor index cb5bcc61..91148fbe 100644 --- a/library/jQWidgets.Blazor/Components/JqxKnob.razor +++ b/library/jQWidgets.Blazor/Components/JqxKnob.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -158,6 +158,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -184,8 +187,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -212,7 +213,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -240,14 +241,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxKnob", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxKnob", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -259,33 +263,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitKnobEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitKnobEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxLayout.razor b/library/jQWidgets.Blazor/Components/JqxLayout.razor index 5d5be85c..b857d44b 100644 --- a/library/jQWidgets.Blazor/Components/JqxLayout.razor +++ b/library/jQWidgets.Blazor/Components/JqxLayout.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -62,6 +62,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onPin { get; set; } @@ -94,8 +97,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -132,7 +133,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -160,14 +161,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxLayout", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxLayout", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -179,35 +183,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pin", "emitLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onPin))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "resize", "emitLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onResize))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unpin", "emitLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onUnpin))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pin", "emitLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onPin))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "resize", "emitLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onResize))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unpin", "emitLayoutEvent", DotNetObjectReference.Create(new EventsHandler(onUnpin))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxLinearGauge.razor b/library/jQWidgets.Blazor/Components/JqxLinearGauge.razor index 653ffe31..cfb1e08a 100644 --- a/library/jQWidgets.Blazor/Components/JqxLinearGauge.razor +++ b/library/jQWidgets.Blazor/Components/JqxLinearGauge.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -152,6 +152,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onValueChanging { get; set; } @@ -181,8 +184,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void disable() @@ -214,7 +215,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -242,14 +243,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxLinearGauge", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxLinearGauge", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -261,34 +265,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanging", "emitLinearGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanging))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitLinearGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanging", "emitLinearGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanging))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitLinearGaugeEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxLinkButton.razor b/library/jQWidgets.Blazor/Components/JqxLinkButton.razor index 939effb1..7e299ec7 100644 --- a/library/jQWidgets.Blazor/Components/JqxLinkButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxLinkButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -38,6 +38,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -61,8 +64,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public IDictionary getOptions() @@ -74,7 +75,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -102,14 +103,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxLinkButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxLinkButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -126,27 +130,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } diff --git a/library/jQWidgets.Blazor/Components/JqxListBox.razor b/library/jQWidgets.Blazor/Components/JqxListBox.razor index 51c5c4aa..0e921f53 100644 --- a/library/jQWidgets.Blazor/Components/JqxListBox.razor +++ b/library/jQWidgets.Blazor/Components/JqxListBox.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -212,6 +212,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -256,8 +259,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public bool addItem(object Item) @@ -484,7 +485,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -512,14 +513,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxListBox", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxListBox", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -531,39 +535,39 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checkChange", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragStart", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragEnd", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselect", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checkChange", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragStart", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragEnd", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselect", "emitListBoxEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxListMenu.razor b/library/jQWidgets.Blazor/Components/JqxListMenu.razor index 544f75c2..abfc22f8 100644 --- a/library/jQWidgets.Blazor/Components/JqxListMenu.razor +++ b/library/jQWidgets.Blazor/Components/JqxListMenu.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -128,6 +128,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -151,8 +154,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void back() @@ -179,7 +180,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -207,14 +208,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxListMenu", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxListMenu", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -231,27 +235,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } diff --git a/library/jQWidgets.Blazor/Components/JqxLoader.razor b/library/jQWidgets.Blazor/Components/JqxLoader.razor index 7e2eb8e4..d6a4b1d3 100644 --- a/library/jQWidgets.Blazor/Components/JqxLoader.razor +++ b/library/jQWidgets.Blazor/Components/JqxLoader.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -68,6 +68,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -91,8 +94,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close() @@ -114,7 +115,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -142,14 +143,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxLoader", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxLoader", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -166,27 +170,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } diff --git a/library/jQWidgets.Blazor/Components/JqxMaskedInput.razor b/library/jQWidgets.Blazor/Components/JqxMaskedInput.razor index f358d38b..50c377ba 100644 --- a/library/jQWidgets.Blazor/Components/JqxMaskedInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxMaskedInput.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -68,6 +68,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -97,8 +100,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void clear() @@ -135,7 +136,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -163,14 +164,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxMaskedInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxMaskedInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -182,34 +186,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitMaskedInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitMaskedInputEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitMaskedInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitMaskedInputEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxMenu.razor b/library/jQWidgets.Blazor/Components/JqxMenu.razor index 47a987b0..e12a30d9 100644 --- a/library/jQWidgets.Blazor/Components/JqxMenu.razor +++ b/library/jQWidgets.Blazor/Components/JqxMenu.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -152,6 +152,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClosed { get; set; } @@ -184,8 +187,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void closeItem(object itemID) @@ -247,7 +248,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -275,14 +276,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxMenu", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxMenu", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -294,35 +298,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "closed", "emitMenuEvent", DotNetObjectReference.Create(new EventsHandler(onClosed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "itemclick", "emitMenuEvent", DotNetObjectReference.Create(new EventsHandler(onItemclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "shown", "emitMenuEvent", DotNetObjectReference.Create(new EventsHandler(onShown))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "closed", "emitMenuEvent", DotNetObjectReference.Create(new EventsHandler(onClosed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "itemclick", "emitMenuEvent", DotNetObjectReference.Create(new EventsHandler(onItemclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "shown", "emitMenuEvent", DotNetObjectReference.Create(new EventsHandler(onShown))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxNavBar.razor b/library/jQWidgets.Blazor/Components/JqxNavBar.razor index 840eaf59..f1ffc52f 100644 --- a/library/jQWidgets.Blazor/Components/JqxNavBar.razor +++ b/library/jQWidgets.Blazor/Components/JqxNavBar.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -92,6 +92,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -118,8 +121,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close() @@ -156,7 +157,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -184,14 +185,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxNavBar", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxNavBar", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -203,33 +207,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitNavBarEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitNavBarEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxNavigationBar.razor b/library/jQWidgets.Blazor/Components/JqxNavigationBar.razor index d0d572f3..53fc606f 100644 --- a/library/jQWidgets.Blazor/Components/JqxNavigationBar.razor +++ b/library/jQWidgets.Blazor/Components/JqxNavigationBar.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -92,6 +92,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onCollapsingItem { get; set; } @@ -127,8 +130,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void add(object header, object content) @@ -255,7 +256,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -283,14 +284,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxNavigationBar", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxNavigationBar", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -302,36 +306,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapsingItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsingItem))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapsedItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsedItem))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expandingItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onExpandingItem))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expandedItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onExpandedItem))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapsingItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsingItem))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapsedItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsedItem))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expandingItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onExpandingItem))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expandedItem", "emitNavigationBarEvent", DotNetObjectReference.Create(new EventsHandler(onExpandedItem))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxNotification.razor b/library/jQWidgets.Blazor/Components/JqxNotification.razor index da6be9b4..7c59d79a 100644 --- a/library/jQWidgets.Blazor/Components/JqxNotification.razor +++ b/library/jQWidgets.Blazor/Components/JqxNotification.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -134,6 +134,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -166,8 +169,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void closeAll() @@ -209,7 +210,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -237,14 +238,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxNotification", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxNotification", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -256,35 +260,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitNotificationEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "click", "emitNotificationEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitNotificationEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitNotificationEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "click", "emitNotificationEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitNotificationEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxNumberInput.razor b/library/jQWidgets.Blazor/Components/JqxNumberInput.razor index e790bcf7..4a2e3646 100644 --- a/library/jQWidgets.Blazor/Components/JqxNumberInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxNumberInput.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -176,6 +176,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -208,8 +211,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void clear() @@ -256,7 +257,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -284,14 +285,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxNumberInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxNumberInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -303,35 +307,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitNumberInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "textchanged", "emitNumberInputEvent", DotNetObjectReference.Create(new EventsHandler(onTextchanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitNumberInputEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitNumberInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "textchanged", "emitNumberInputEvent", DotNetObjectReference.Create(new EventsHandler(onTextchanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitNumberInputEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxPanel.razor b/library/jQWidgets.Blazor/Components/JqxPanel.razor index 6be7685d..1a1c0d9f 100644 --- a/library/jQWidgets.Blazor/Components/JqxPanel.razor +++ b/library/jQWidgets.Blazor/Components/JqxPanel.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -56,6 +56,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -79,8 +82,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void append(object HTMLElement) @@ -147,7 +148,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -175,14 +176,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxPanel", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxPanel", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -199,27 +203,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxPasswordInput.razor b/library/jQWidgets.Blazor/Components/JqxPasswordInput.razor index a578f718..ee6e97c6 100644 --- a/library/jQWidgets.Blazor/Components/JqxPasswordInput.razor +++ b/library/jQWidgets.Blazor/Components/JqxPasswordInput.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -92,6 +92,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -118,8 +121,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void render() @@ -151,7 +152,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -179,14 +180,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxPasswordInput", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxPasswordInput", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -198,33 +202,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitPasswordInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitPasswordInputEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxPivotDesigner.razor b/library/jQWidgets.Blazor/Components/JqxPivotDesigner.razor index 563ee6a7..8d2c162c 100644 --- a/library/jQWidgets.Blazor/Components/JqxPivotDesigner.razor +++ b/library/jQWidgets.Blazor/Components/JqxPivotDesigner.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -20,6 +20,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action onComponentReady { get; set; } @@ -43,8 +46,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void refresh() @@ -61,7 +62,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -89,14 +90,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxPivotDesigner", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxPivotDesigner", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -113,27 +117,27 @@ private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } diff --git a/library/jQWidgets.Blazor/Components/JqxPivotGrid.razor b/library/jQWidgets.Blazor/Components/JqxPivotGrid.razor index 7675584c..eac18fdb 100644 --- a/library/jQWidgets.Blazor/Components/JqxPivotGrid.razor +++ b/library/jQWidgets.Blazor/Components/JqxPivotGrid.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -62,6 +62,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onPivotitemexpanding { get; set; } @@ -136,8 +139,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public object getInstance() @@ -174,7 +175,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -202,14 +203,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxPivotGrid", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxPivotGrid", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -221,49 +225,49 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemexpanding", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemexpanding))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemexpanded", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemexpanded))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemcollapsing", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemcollapsing))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemcollapsed", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemcollapsed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sortchanging", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortchanging))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sortchanged", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortchanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sortremoving", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortremoving))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sortremoved", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortremoved))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemselectionchanged", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemselectionchanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotcellmousedown", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcellmousedown))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotcellmouseup", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcellmouseup))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotcellclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcellclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotcelldblclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcelldblclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemmousedown", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemmousedown))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemmouseup", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemmouseup))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pivotitemdblclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemdblclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemexpanding", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemexpanding))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemexpanded", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemexpanded))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemcollapsing", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemcollapsing))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemcollapsed", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemcollapsed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sortchanging", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortchanging))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sortchanged", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortchanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sortremoving", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortremoving))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sortremoved", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onSortremoved))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemselectionchanged", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemselectionchanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotcellmousedown", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcellmousedown))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotcellmouseup", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcellmouseup))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotcellclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcellclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotcelldblclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotcelldblclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemmousedown", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemmousedown))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemmouseup", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemmouseup))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pivotitemdblclick", "emitPivotGridEvent", DotNetObjectReference.Create(new EventsHandler(onPivotitemdblclick))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxPopover.razor b/library/jQWidgets.Blazor/Components/JqxPopover.razor index 7be7e720..6ac5339e 100644 --- a/library/jQWidgets.Blazor/Components/JqxPopover.razor +++ b/library/jQWidgets.Blazor/Components/JqxPopover.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -110,6 +110,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -139,8 +142,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close() @@ -167,7 +168,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -195,14 +196,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxPopover", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxPopover", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -214,34 +218,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitPopoverEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitPopoverEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitPopoverEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitPopoverEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxProgressBar.razor b/library/jQWidgets.Blazor/Components/JqxProgressBar.razor index b98e3e5f..8dd841ea 100644 --- a/library/jQWidgets.Blazor/Components/JqxProgressBar.razor +++ b/library/jQWidgets.Blazor/Components/JqxProgressBar.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -98,6 +98,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onComplete { get; set; } @@ -130,8 +133,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void actualValue(object value) @@ -163,7 +164,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -191,14 +192,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxProgressBar", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxProgressBar", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -210,35 +214,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "complete", "emitProgressBarEvent", DotNetObjectReference.Create(new EventsHandler(onComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "invalidValue", "emitProgressBarEvent", DotNetObjectReference.Create(new EventsHandler(onInvalidValue))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitProgressBarEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "complete", "emitProgressBarEvent", DotNetObjectReference.Create(new EventsHandler(onComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "invalidValue", "emitProgressBarEvent", DotNetObjectReference.Create(new EventsHandler(onInvalidValue))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitProgressBarEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxRadioButton.razor b/library/jQWidgets.Blazor/Components/JqxRadioButton.razor index 23225b80..2e976ded 100644 --- a/library/jQWidgets.Blazor/Components/JqxRadioButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxRadioButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -80,6 +80,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChecked { get; set; } @@ -112,8 +115,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void check() @@ -170,7 +171,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -198,14 +199,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxRadioButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxRadioButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -217,35 +221,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checked", "emitRadioButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChecked))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitRadioButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unchecked", "emitRadioButtonEvent", DotNetObjectReference.Create(new EventsHandler(onUnchecked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checked", "emitRadioButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChecked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitRadioButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unchecked", "emitRadioButtonEvent", DotNetObjectReference.Create(new EventsHandler(onUnchecked))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxRangeSelector.razor b/library/jQWidgets.Blazor/Components/JqxRangeSelector.razor index 4f959a4b..f2a0341e 100644 --- a/library/jQWidgets.Blazor/Components/JqxRangeSelector.razor +++ b/library/jQWidgets.Blazor/Components/JqxRangeSelector.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -152,6 +152,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -178,8 +181,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -216,7 +217,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -244,14 +245,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxRangeSelector", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxRangeSelector", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -263,33 +267,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitRangeSelectorEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitRangeSelectorEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxRating.razor b/library/jQWidgets.Blazor/Components/JqxRating.razor index 1bc84d2c..990f3200 100644 --- a/library/jQWidgets.Blazor/Components/JqxRating.razor +++ b/library/jQWidgets.Blazor/Components/JqxRating.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -62,6 +62,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -88,8 +91,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void disable() @@ -131,7 +132,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -159,14 +160,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxRating", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxRating", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -178,33 +182,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitRatingEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitRatingEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxRepeatButton.razor b/library/jQWidgets.Blazor/Components/JqxRepeatButton.razor index b0015ba5..e32aaf8d 100644 --- a/library/jQWidgets.Blazor/Components/JqxRepeatButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxRepeatButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -104,6 +104,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClick { get; set; } @@ -130,8 +133,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -168,7 +169,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -196,14 +197,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxRepeatButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxRepeatButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -215,33 +219,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "click", "emitRepeatButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "click", "emitRepeatButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxResponsivePanel.razor b/library/jQWidgets.Blazor/Components/JqxResponsivePanel.razor index 57b3b0cb..060c2d82 100644 --- a/library/jQWidgets.Blazor/Components/JqxResponsivePanel.razor +++ b/library/jQWidgets.Blazor/Components/JqxResponsivePanel.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -86,6 +86,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -121,8 +124,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close() @@ -169,7 +170,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -197,14 +198,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxResponsivePanel", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxResponsivePanel", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -216,36 +220,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapse", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onCollapse))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expand", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onExpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapse", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onCollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expand", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onExpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitResponsivePanelEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxRibbon.razor b/library/jQWidgets.Blazor/Components/JqxRibbon.razor index ae77927e..a6e21d0a 100644 --- a/library/jQWidgets.Blazor/Components/JqxRibbon.razor +++ b/library/jQWidgets.Blazor/Components/JqxRibbon.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -110,6 +110,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -145,8 +148,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addAt(double index, object item) @@ -233,7 +234,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -261,14 +262,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxRibbon", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxRibbon", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -280,36 +284,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "reorder", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onReorder))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselect", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "reorder", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onReorder))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselect", "emitRibbonEvent", DotNetObjectReference.Create(new EventsHandler(onUnselect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxScheduler.razor b/library/jQWidgets.Blazor/Components/JqxScheduler.razor index d2190b53..c7edb5f6 100644 --- a/library/jQWidgets.Blazor/Components/JqxScheduler.razor +++ b/library/jQWidgets.Blazor/Components/JqxScheduler.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -326,6 +326,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onAppointmentChange { get; set; } @@ -406,8 +409,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addAppointment(object item) @@ -559,7 +560,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -587,14 +588,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxScheduler", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxScheduler", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -606,51 +610,51 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "appointmentChange", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "appointmentClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "appointmentDoubleClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentDoubleClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "appointmentDelete", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentDelete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "appointmentAdd", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentAdd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onCellClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellDoubleClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onCellDoubleClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "contextMenuOpen", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "contextMenuClose", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "contextMenuItemClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuItemClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "contextMenuCreate", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuCreate))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dateChange", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onDateChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "editRecurrenceDialogOpen", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditRecurrenceDialogOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "editRecurrenceDialogClose", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditRecurrenceDialogClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "editDialogCreate", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditDialogCreate))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "editDialogOpen", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditDialogOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "editDialogClose", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditDialogClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "viewChange", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onViewChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "appointmentChange", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "appointmentClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "appointmentDoubleClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentDoubleClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "appointmentDelete", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentDelete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "appointmentAdd", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onAppointmentAdd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onCellClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellDoubleClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onCellDoubleClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "contextMenuOpen", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "contextMenuClose", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "contextMenuItemClick", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuItemClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "contextMenuCreate", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onContextMenuCreate))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dateChange", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onDateChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "editRecurrenceDialogOpen", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditRecurrenceDialogOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "editRecurrenceDialogClose", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditRecurrenceDialogClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "editDialogCreate", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditDialogCreate))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "editDialogOpen", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditDialogOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "editDialogClose", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onEditDialogClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "viewChange", "emitSchedulerEvent", DotNetObjectReference.Create(new EventsHandler(onViewChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxScrollBar.razor b/library/jQWidgets.Blazor/Components/JqxScrollBar.razor index 36f8d3f0..50daf172 100644 --- a/library/jQWidgets.Blazor/Components/JqxScrollBar.razor +++ b/library/jQWidgets.Blazor/Components/JqxScrollBar.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -86,6 +86,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onValueChanged { get; set; } @@ -112,8 +115,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -140,7 +141,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -168,14 +169,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxScrollBar", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxScrollBar", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -187,33 +191,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "valueChanged", "emitScrollBarEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "valueChanged", "emitScrollBarEvent", DotNetObjectReference.Create(new EventsHandler(onValueChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxScrollView.razor b/library/jQWidgets.Blazor/Components/JqxScrollView.razor index be394054..1948e204 100644 --- a/library/jQWidgets.Blazor/Components/JqxScrollView.razor +++ b/library/jQWidgets.Blazor/Components/JqxScrollView.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -80,6 +80,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onPageChanged { get; set; } @@ -106,8 +109,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void back() @@ -139,7 +140,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -167,14 +168,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxScrollView", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxScrollView", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -186,33 +190,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pageChanged", "emitScrollViewEvent", DotNetObjectReference.Create(new EventsHandler(onPageChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pageChanged", "emitScrollViewEvent", DotNetObjectReference.Create(new EventsHandler(onPageChanged))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxSlider.razor b/library/jQWidgets.Blazor/Components/JqxSlider.razor index a82c774b..957d7279 100644 --- a/library/jQWidgets.Blazor/Components/JqxSlider.razor +++ b/library/jQWidgets.Blazor/Components/JqxSlider.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -194,6 +194,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -229,8 +232,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -292,7 +293,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -320,14 +321,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxSlider", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxSlider", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -339,36 +343,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "slide", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onSlide))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "slideStart", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onSlideStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "slideEnd", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onSlideEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "slide", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onSlide))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "slideStart", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onSlideStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "slideEnd", "emitSliderEvent", DotNetObjectReference.Create(new EventsHandler(onSlideEnd))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxSortable.razor b/library/jQWidgets.Blazor/Components/JqxSortable.razor index 25d89035..47d01a92 100644 --- a/library/jQWidgets.Blazor/Components/JqxSortable.razor +++ b/library/jQWidgets.Blazor/Components/JqxSortable.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -158,6 +158,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onActivate { get; set; } @@ -217,8 +220,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void cancelMethod() @@ -270,7 +271,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -298,14 +299,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxSortable", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxSortable", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -317,44 +321,44 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "activate", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onActivate))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "beforeStop", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onBeforeStop))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "deactivate", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onDeactivate))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "out", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onOut))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "over", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onOver))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "receive", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onReceive))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "remove", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onRemove))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sort", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "start", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "stop", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onStop))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "update", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onUpdate))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "activate", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onActivate))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "beforeStop", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onBeforeStop))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "deactivate", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onDeactivate))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "out", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onOut))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "over", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onOver))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "receive", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onReceive))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "remove", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onRemove))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sort", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "start", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "stop", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onStop))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "update", "emitSortableEvent", DotNetObjectReference.Create(new EventsHandler(onUpdate))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxSplitter.razor b/library/jQWidgets.Blazor/Components/JqxSplitter.razor index 7940ed12..e3d3dd70 100644 --- a/library/jQWidgets.Blazor/Components/JqxSplitter.razor +++ b/library/jQWidgets.Blazor/Components/JqxSplitter.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -62,6 +62,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onCollapsed { get; set; } @@ -97,8 +100,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void collapse() @@ -145,7 +146,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -173,14 +174,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxSplitter", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxSplitter", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -192,36 +196,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapsed", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expanded", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onExpanded))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "resize", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onResize))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "resizeStart", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onResizeStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapsed", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expanded", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onExpanded))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "resize", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onResize))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "resizeStart", "emitSplitterEvent", DotNetObjectReference.Create(new EventsHandler(onResizeStart))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxSwitchButton.razor b/library/jQWidgets.Blazor/Components/JqxSwitchButton.razor index f0952aa4..842f882c 100644 --- a/library/jQWidgets.Blazor/Components/JqxSwitchButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxSwitchButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -62,6 +62,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChecked { get; set; } @@ -94,8 +97,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void check() @@ -142,7 +143,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -170,14 +171,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxSwitchButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxSwitchButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -189,35 +193,35 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checked", "emitSwitchButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChecked))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitSwitchButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unchecked", "emitSwitchButtonEvent", DotNetObjectReference.Create(new EventsHandler(onUnchecked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checked", "emitSwitchButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChecked))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitSwitchButtonEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unchecked", "emitSwitchButtonEvent", DotNetObjectReference.Create(new EventsHandler(onUnchecked))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTabs.razor b/library/jQWidgets.Blazor/Components/JqxTabs.razor index 5db284bf..f6daa852 100644 --- a/library/jQWidgets.Blazor/Components/JqxTabs.razor +++ b/library/jQWidgets.Blazor/Components/JqxTabs.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -170,6 +170,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onAdd { get; set; } @@ -226,8 +229,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addAt(double index, string title, string content) @@ -379,7 +380,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -407,14 +408,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTabs", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTabs", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -426,43 +430,43 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "add", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onAdd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapsed", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsed))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragStart", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragEnd", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expanded", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onExpanded))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "removed", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onRemoved))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "selecting", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onSelecting))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "selected", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onSelected))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "tabclick", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onTabclick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselecting", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onUnselecting))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "unselected", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onUnselected))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "add", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onAdd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapsed", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onCollapsed))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragStart", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragEnd", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expanded", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onExpanded))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "removed", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onRemoved))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "selecting", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onSelecting))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "selected", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onSelected))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "tabclick", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onTabclick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselecting", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onUnselecting))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "unselected", "emitTabsEvent", DotNetObjectReference.Create(new EventsHandler(onUnselected))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTagCloud.razor b/library/jQWidgets.Blazor/Components/JqxTagCloud.razor index 1b164d5e..a5624cae 100644 --- a/library/jQWidgets.Blazor/Components/JqxTagCloud.razor +++ b/library/jQWidgets.Blazor/Components/JqxTagCloud.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -152,6 +152,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -181,8 +184,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -244,7 +245,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -272,14 +273,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTagCloud", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTagCloud", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -291,34 +295,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitTagCloudEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "itemClick", "emitTagCloudEvent", DotNetObjectReference.Create(new EventsHandler(onItemClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitTagCloudEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "itemClick", "emitTagCloudEvent", DotNetObjectReference.Create(new EventsHandler(onItemClick))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTextArea.razor b/library/jQWidgets.Blazor/Components/JqxTextArea.razor index dafde76b..13fb59df 100644 --- a/library/jQWidgets.Blazor/Components/JqxTextArea.razor +++ b/library/jQWidgets.Blazor/Components/JqxTextArea.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -128,6 +128,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -163,8 +166,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -211,7 +212,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -239,14 +240,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTextArea", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTextArea", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -258,36 +262,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitTextAreaEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTimePicker.razor b/library/jQWidgets.Blazor/Components/JqxTimePicker.razor index 0e0b799a..ef957a07 100644 --- a/library/jQWidgets.Blazor/Components/JqxTimePicker.razor +++ b/library/jQWidgets.Blazor/Components/JqxTimePicker.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -98,6 +98,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onChange { get; set; } @@ -124,8 +127,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void setHours(double hours) @@ -147,7 +148,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -175,14 +176,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTimePicker", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTimePicker", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -194,33 +198,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "change", "emitTimePickerEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "change", "emitTimePickerEvent", DotNetObjectReference.Create(new EventsHandler(onChange))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxToggleButton.razor b/library/jQWidgets.Blazor/Components/JqxToggleButton.razor index 75c7677c..efb185f3 100644 --- a/library/jQWidgets.Blazor/Components/JqxToggleButton.razor +++ b/library/jQWidgets.Blazor/Components/JqxToggleButton.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; - + @code { @@ -98,6 +98,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClick { get; set; } @@ -124,8 +127,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void check() @@ -177,7 +178,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -205,14 +206,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxToggleButton", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxToggleButton", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -224,33 +228,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "click", "emitToggleButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "click", "emitToggleButtonEvent", DotNetObjectReference.Create(new EventsHandler(onClick))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxToolBar.razor b/library/jQWidgets.Blazor/Components/JqxToolBar.razor index cfc6f27d..d1a0f5aa 100644 --- a/library/jQWidgets.Blazor/Components/JqxToolBar.razor +++ b/library/jQWidgets.Blazor/Components/JqxToolBar.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -68,6 +68,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -97,8 +100,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addTool(string type, string position, bool separator, object menuToolIninitialization) @@ -145,7 +146,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -173,14 +174,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxToolBar", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxToolBar", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -192,34 +196,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitToolBarEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitToolBarEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitToolBarEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitToolBarEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxToolTip.razor b/library/jQWidgets.Blazor/Components/JqxToolTip.razor index a1cfa1d0..11a0b704 100644 --- a/library/jQWidgets.Blazor/Components/JqxToolTip.razor +++ b/library/jQWidgets.Blazor/Components/JqxToolTip.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -140,6 +140,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -175,8 +178,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void close(double index) @@ -208,7 +209,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -236,14 +237,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTooltip", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTooltip", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -255,36 +259,36 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "closing", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onClosing))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "opening", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onOpening))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "closing", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onClosing))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "opening", "emitTooltipEvent", DotNetObjectReference.Create(new EventsHandler(onOpening))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTree.razor b/library/jQWidgets.Blazor/Components/JqxTree.razor index fd13630f..e3dbce69 100644 --- a/library/jQWidgets.Blazor/Components/JqxTree.razor +++ b/library/jQWidgets.Blazor/Components/JqxTree.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -128,6 +128,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onAdded { get; set; } @@ -178,8 +181,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addBefore(object item, string id) @@ -356,7 +357,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -384,14 +385,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTree", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTree", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -403,41 +407,41 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "added", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onAdded))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "checkChange", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapse", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onCollapse))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragStart", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "dragEnd", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expand", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onExpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "itemClick", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onItemClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "removed", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onRemoved))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "select", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "added", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onAdded))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "checkChange", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onCheckChange))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapse", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onCollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragStart", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onDragStart))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "dragEnd", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onDragEnd))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expand", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onExpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "itemClick", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onItemClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "removed", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onRemoved))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "select", "emitTreeEvent", DotNetObjectReference.Create(new EventsHandler(onSelect))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTreeGrid.razor b/library/jQWidgets.Blazor/Components/JqxTreeGrid.razor index 184bdb32..2b2448de 100644 --- a/library/jQWidgets.Blazor/Components/JqxTreeGrid.razor +++ b/library/jQWidgets.Blazor/Components/JqxTreeGrid.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -344,6 +344,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -427,8 +430,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void addRow(object rowKey, object rowData, string rowPosition, string parent) @@ -695,7 +696,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -723,14 +724,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTreeGrid", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTreeGrid", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -742,52 +746,52 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellBeginEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellBeginEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellEndEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellEndEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "cellValueChanged", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellValueChanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnResized", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnResized))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "columnReordered", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnReordered))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "filter", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onFilter))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pageChanged", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onPageChanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "pageSizeChanged", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onPageSizeChanged))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowClick", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowDoubleClick", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowDoubleClick))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowSelect", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowSelect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowUnselect", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowUnselect))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowBeginEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowBeginEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowEndEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowEndEdit))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowExpand", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowExpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowCollapse", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowCollapse))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowCheck", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowCheck))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "rowUncheck", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowUncheck))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "sort", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellBeginEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellBeginEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellEndEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellEndEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "cellValueChanged", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onCellValueChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnResized", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnResized))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "columnReordered", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onColumnReordered))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "filter", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onFilter))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pageChanged", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onPageChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "pageSizeChanged", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onPageSizeChanged))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowClick", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowDoubleClick", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowDoubleClick))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowSelect", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowSelect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowUnselect", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowUnselect))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowBeginEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowBeginEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowEndEdit", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowEndEdit))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowExpand", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowExpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowCollapse", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowCollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowCheck", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowCheck))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "rowUncheck", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onRowUncheck))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "sort", "emitTreeGridEvent", DotNetObjectReference.Create(new EventsHandler(onSort))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxTreeMap.razor b/library/jQWidgets.Blazor/Components/JqxTreeMap.razor index a035e145..68d675a8 100644 --- a/library/jQWidgets.Blazor/Components/JqxTreeMap.razor +++ b/library/jQWidgets.Blazor/Components/JqxTreeMap.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -116,6 +116,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onBindingComplete { get; set; } @@ -142,8 +145,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void destroy() @@ -165,7 +166,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -193,14 +194,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxTreeMap", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxTreeMap", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -212,33 +216,33 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "bindingComplete", "emitTreeMapEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "bindingComplete", "emitTreeMapEvent", DotNetObjectReference.Create(new EventsHandler(onBindingComplete))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxValidator.razor b/library/jQWidgets.Blazor/Components/JqxValidator.razor index 1a623c99..64699a3f 100644 --- a/library/jQWidgets.Blazor/Components/JqxValidator.razor +++ b/library/jQWidgets.Blazor/Components/JqxValidator.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -74,6 +74,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onValidationError { get; set; } @@ -103,8 +106,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void hideHint(string id) @@ -141,7 +142,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -169,14 +170,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxValidator", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxValidator", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -188,34 +192,34 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "validationError", "emitValidatorEvent", DotNetObjectReference.Create(new EventsHandler(onValidationError))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "validationSuccess", "emitValidatorEvent", DotNetObjectReference.Create(new EventsHandler(onValidationSuccess))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "validationError", "emitValidatorEvent", DotNetObjectReference.Create(new EventsHandler(onValidationError))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "validationSuccess", "emitValidatorEvent", DotNetObjectReference.Create(new EventsHandler(onValidationSuccess))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/Components/JqxWindow.razor b/library/jQWidgets.Blazor/Components/JqxWindow.razor index 14edeb7d..2bce6ccd 100644 --- a/library/jQWidgets.Blazor/Components/JqxWindow.razor +++ b/library/jQWidgets.Blazor/Components/JqxWindow.razor @@ -1,7 +1,7 @@ @using System.Text.Json; @inject IJSRuntime JSRuntime; -
@ChildContent
+
@ChildContent
@code { @@ -218,6 +218,9 @@ [Parameter] public object options { get; set; } + [Parameter] + public string id { get; set; } + [Parameter] public Action> onClose { get; set; } @@ -265,8 +268,6 @@ private bool shouldSetters; - private string componentID; - private IDictionary initialOptions = new Dictionary(); public void bringToFront() @@ -358,7 +359,7 @@ public void setOptions(object options) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options); } public override async Task SetParametersAsync(ParameterView parameters) @@ -386,14 +387,17 @@ protected override void OnInitialized() { - componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + if (id == null) + { + id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID"); + } } protected override void OnAfterRender(bool firstRender) { if (firstRender) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "jqxWindow", initialOptions); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "jqxWindow", initialOptions); Task.Delay(200).ContinueWith((action) => { @@ -405,40 +409,40 @@ private void attachEvents() { - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "close", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "collapse", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onCollapse))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "expand", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onExpand))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "moving", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onMoving))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "moved", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onMoved))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "open", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "resizing", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onResizing))); - ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "resized", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onResized))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "close", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onClose))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "collapse", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onCollapse))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "expand", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onExpand))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "moving", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onMoving))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "moved", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onMoved))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "open", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onOpen))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "resizing", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onResizing))); + ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "resized", "emitWindowEvent", DotNetObjectReference.Create(new EventsHandler(onResized))); } private T getterProp(string name) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name); } private void setterProp(string name, object value) { if (shouldSetters) { - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value); } } private T getterMethod(string name, params object[] args) { shouldSetters = false; - return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args); + return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args); } private void setterMethod(string name, params object[] args) { shouldSetters = false; - ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args); + ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args); } public class EventsHandler diff --git a/library/jQWidgets.Blazor/wwwroot/jqxBlazor.js b/library/jQWidgets.Blazor/wwwroot/jqxBlazor.js index adc66ed0..df8175be 100644 --- a/library/jQWidgets.Blazor/wwwroot/jqxBlazor.js +++ b/library/jQWidgets.Blazor/wwwroot/jqxBlazor.js @@ -10,6 +10,10 @@ window.jqxBlazor = { delete options.options; } + if (options.id) { + delete options.id; + } + options = checkForIsoStrings(options); options = checkForDataAdapterNeed(options); @@ -73,10 +77,13 @@ function checkForDataAdapterNeed(options) { if (options.source && options.source.dataFields) { options.source = new jqx.dataAdapter(options.source); + if (options.resources && options.resources.dataFields) { + options.resources = new jqx.dataAdapter(options.resources); + } + return options; } - // Pivot Grid if (options.source && options.source.dataSource) { options.source = new jqx.pivot( new jqx.dataAdapter(options.source.dataSource), diff --git a/processors/library-and-api.js b/processors/library-and-api.js index 04dcde6c..efc99be5 100644 --- a/processors/library-and-api.js +++ b/processors/library-and-api.js @@ -120,6 +120,9 @@ function generateLibrary(inFile, outFile) { outData += ` [Parameter]\n`; outData += ` public object options { get; set; }\n\n`; + outData += ` [Parameter]\n`; + outData += ` public string id { get; set; }\n\n`; + if (obj.events) { for (const event of obj.events) { let eventNameWithOn = `on` + event.name.charAt(0).toUpperCase() + event.name.slice(1); @@ -169,8 +172,6 @@ function generateLibrary(inFile, outFile) { outData += ` private bool shouldSetters;\n\n`; - outData += ` private string componentID;\n\n`; - if (isWidgetWithDynamicMarkup) { outData += ` private string componentMarkup;\n\n`; } @@ -285,7 +286,7 @@ function generateLibrary(inFile, outFile) { outData += ` public void setOptions(object options)\n`; outData += ` {\n`; outData += ` shouldSetters = false;\n`; - outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", componentID, options);\n`; + outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.setOptions", id, options);\n`; outData += ` }\n\n`; // End Widget Methods @@ -315,14 +316,17 @@ function generateLibrary(inFile, outFile) { outData += ` protected override void OnInitialized()\n`; outData += ` {\n`; - outData += ` componentID = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID");\n`; + outData += ` if (id == null)\n`; + outData += ` {\n`; + outData += ` id = ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.generateID");\n`; + outData += ` }\n`; outData += ` }\n\n`; outData += ` protected override void OnAfterRender(bool firstRender)\n`; outData += ` {\n`; outData += ` if (firstRender)\n`; outData += ` {\n`; - outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", componentID, "${widget}", initialOptions);\n\n`; + outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.createComponent", id, "${widget}", initialOptions);\n\n`; outData += ` Task.Delay(200).ContinueWith((action) =>\n`; outData += ` {\n`; outData += ` attachEvents();\n`; @@ -337,7 +341,7 @@ function generateLibrary(inFile, outFile) { for (const event of obj.events) { let eventNameWithOn = `on` + event.name.charAt(0).toUpperCase() + event.name.slice(1); - outData += ` ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", componentID, "${event.name}", "emit${widgetWithoutJqx}Event", DotNetObjectReference.Create(new EventsHandler(${eventNameWithOn})));\n`; + outData += ` ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageEvents", id, "${event.name}", "emit${widgetWithoutJqx}Event", DotNetObjectReference.Create(new EventsHandler(${eventNameWithOn})));\n`; } } outData += ` }\n\n`; @@ -345,27 +349,27 @@ function generateLibrary(inFile, outFile) { outData += ` private T getterProp(string name)\n`; outData += ` {\n`; outData += ` shouldSetters = false;\n`; - outData += ` return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", componentID, name);\n`; + outData += ` return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageProps", id, name);\n`; outData += ` }\n\n`; outData += ` private void setterProp(string name, object value)\n`; outData += ` {\n`; outData += ` if (shouldSetters)\n`; outData += ` {\n`; - outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", componentID, name, value);\n`; + outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageProps", id, name, value);\n`; outData += ` }\n`; outData += ` }\n\n`; outData += ` private T getterMethod(string name, params object[] args)\n`; outData += ` {\n`; outData += ` shouldSetters = false;\n`; - outData += ` return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", componentID, name, args);\n`; + outData += ` return ((IJSInProcessRuntime)JSRuntime).Invoke("jqxBlazor.manageMethods", id, name, args);\n`; outData += ` }\n\n`; outData += ` private void setterMethod(string name, params object[] args)\n`; outData += ` {\n`; outData += ` shouldSetters = false;\n`; - outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", componentID, name, args);\n`; + outData += ` ((IJSInProcessRuntime)JSRuntime).InvokeVoid("jqxBlazor.manageMethods", id, name, args);\n`; outData += ` }\n\n`; if (obj.events) { @@ -410,27 +414,27 @@ function getMarkup(widget) { switch (widget) { case `jqxButton`: case `jqxToggleButton`: - markup = ``; + markup = ``; break; case `jqxComplexInput`: - markup = `
@ChildContent
`; + markup = `
@ChildContent
`; break; case `jqxDateTimeInput`: case `jqxMaskedInput`: case `jqxNumberInput`: - markup = ``; + markup = ``; break; case `jqxInput`: - markup = ``; + markup = ``; break; case `jqxPasswordInput`: - markup = ``; + markup = ``; break; case `jqxPivotGrid`: - markup = `
@ChildContent
`; + markup = `
@ChildContent
`; break; default: - markup = `
@ChildContent
`; + markup = `
@ChildContent
`; } return markup; @@ -459,25 +463,25 @@ function getDynamicMarkup(widget) { outData += ` }\n\n`; outData += ` if ((bool)rtl && (bool)dropDown && (bool)spinButtons)\n`; outData += ` {\n`; - outData += ` componentMarkup = "
";\n`; + outData += ` componentMarkup = "
";\n`; outData += ` return;\n`; outData += ` }\n\n`; outData += ` if (!(bool)rtl && (bool)dropDown && (bool)spinButtons)\n`; outData += ` {\n`; - outData += ` componentMarkup = "
";\n`; + outData += ` componentMarkup = "
";\n`; outData += ` return;\n`; outData += ` }\n\n`; outData += ` if (((bool)rtl && (bool)dropDown) || ((bool)rtl && (bool)spinButtons))\n`; outData += ` {\n`; - outData += ` componentMarkup = "
";\n`; + outData += ` componentMarkup = "
";\n`; outData += ` return;\n`; outData += ` }\n\n`; outData += ` if ((!(bool)rtl && (bool)dropDown) || (!(bool)rtl && (bool)spinButtons))\n`; outData += ` {\n`; - outData += ` componentMarkup = "
";\n`; + outData += ` componentMarkup = "
";\n`; outData += ` return;\n`; outData += ` }\n\n`; - outData += ` componentMarkup = "
";\n`; + outData += ` componentMarkup = "
";\n`; outData += ` }\n`; } diff --git a/processors/site-demos.js b/processors/site-demos.js index 5d2339ff..6d9039bd 100644 --- a/processors/site-demos.js +++ b/processors/site-demos.js @@ -47,9 +47,9 @@ async function generateSiteDemos() { } // // uncomment to test a single demo - if (!(widgetFolder === 'pivotgrid' && demoFolder === 'cellvaluesalignment')) { - continue; - } + // if (!(widgetFolder === 'kanban' && demoFolder === 'defaultfunctionality')) { + // continue; + // } // creates the demo folder in release/demos/[demo] await createFolder(widgetFolder, demoFolder); diff --git a/release/blazor-kanban/index.htm b/release/blazor-kanban/index.htm index d86c9e5a..40804f77 100644 --- a/release/blazor-kanban/index.htm +++ b/release/blazor-kanban/index.htm @@ -101,7 +101,7 @@
  • Default Functionality
  • -
  • + diff --git a/release/demos/kanban/defaultfunctionality/blazor.boot.json b/release/demos/kanban/defaultfunctionality/blazor.boot.json new file mode 100644 index 00000000..4d75800e --- /dev/null +++ b/release/demos/kanban/defaultfunctionality/blazor.boot.json @@ -0,0 +1,32 @@ +{ + "assemblies": + [ + "../framework/_framework/_bin/Microsoft.AspNetCore.Blazor.dll", + "../framework/_framework/_bin/Microsoft.AspNetCore.Blazor.HttpClient.dll", + "../framework/_framework/_bin/Microsoft.AspNetCore.Components.Web.dll", + "../framework/_framework/_bin/Microsoft.AspNetCore.Components.dll", + "../framework/_framework/_bin/Microsoft.Bcl.AsyncInterfaces.dll", + "../framework/_framework/_bin/Microsoft.Extensions.Configuration.Abstractions.dll", + "../framework/_framework/_bin/Microsoft.Extensions.Configuration.dll", + "../framework/_framework/_bin/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "../framework/_framework/_bin/Microsoft.Extensions.DependencyInjection.dll", + "../framework/_framework/_bin/Microsoft.Extensions.Logging.Abstractions.dll", + "../framework/_framework/_bin/Microsoft.Extensions.Primitives.dll", + "../framework/_framework/_bin/Microsoft.JSInterop.dll", + "../framework/_framework/_bin/Mono.WebAssembly.Interop.dll", + "../framework/_framework/_bin/System.Core.dll", + "../framework/_framework/_bin/System.Net.Http.dll", + "../framework/_framework/_bin/System.Runtime.CompilerServices.Unsafe.dll", + "../framework/_framework/_bin/System.Text.Encodings.Web.dll", + "../framework/_framework/_bin/System.Text.Json.dll", + "../framework/_framework/_bin/System.dll", + "../framework/_framework/_bin/WebAssembly.Bindings.dll", + "../framework/_framework/_bin/WebAssembly.Net.Http.dll", + "../framework/_framework/_bin/jQWidgets.Blazor.dll", + "../framework/_framework/_bin/mscorlib.dll", + "../demos/kanban/defaultfunctionality/index.dll" + ], + "entryAssembly": "index", + "linkerEnabled": true +} + \ No newline at end of file diff --git a/release/demos/kanban/defaultfunctionality/blazor.webassembly.js b/release/demos/kanban/defaultfunctionality/blazor.webassembly.js new file mode 100644 index 00000000..c79cc030 --- /dev/null +++ b/release/demos/kanban/defaultfunctionality/blazor.webassembly.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=45)}([,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(25),n(18);var r=n(26),o=n(13),a={},i=!1;function u(e,t,n){var o=a[e];o||(o=a[e]=new r.BrowserRenderer(e)),o.attachRootComponentToLogicalElement(n,t)}t.attachRootComponentToLogicalElement=u,t.attachRootComponentToElement=function(e,t,n){var r=document.querySelector(e);if(!r)throw new Error("Could not find any element matching selector '"+e+"'.");u(n||0,o.toLogicalElement(r,!0),t)},t.renderBatch=function(e,t){var n=a[e];if(!n)throw new Error("There is no browser renderer with ID "+e+".");for(var r=t.arrayRangeReader,o=t.updatedComponents(),u=r.values(o),l=r.count(o),s=t.referenceFrames(),c=r.values(s),d=t.diffReader,f=0;f0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return e[r]=[],e}function u(e,t,n){var a=e;if(e instanceof Comment&&(s(a)&&s(a).length>0))throw new Error("Not implemented: inserting non-empty logical container");if(l(a))throw new Error("Not implemented: moving existing logical children");var i=s(t);if(n0;)e(r,0);var a=r;a.parentNode.removeChild(a)},t.getLogicalParent=l,t.getLogicalSiblingEnd=function(e){return e[a]||null},t.getLogicalChild=function(e,t){return s(e)[t]},t.isSvgElement=function(e){return"http://www.w3.org/2000/svg"===c(e).namespaceURI},t.getLogicalChildrenArray=s,t.permuteLogicalChildren=function(e,t){var n=s(e);t.forEach(function(e){e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=function e(t){if(t instanceof Element)return t;var n=d(t);if(n)return n.previousSibling;var r=l(t);return r instanceof Element?r.lastChild:e(r)}(e.moveRangeStart)}),t.forEach(function(t){var r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):f(r,e)}),t.forEach(function(e){for(var t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd,a=r;a;){var i=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=i}n.removeChild(t)}),t.forEach(function(e){n[e.toSiblingIndex]=e.moveRangeStart})},t.getClosestDomElement=c},,,,function(e,t,n){"use strict";var r;!function(e){window.DotNet=e;var t=[],n={},r={},o=1,a=null;function i(e){t.push(e)}function u(e,t,n,r){var o=s();if(o.invokeDotNetFromJS){var a=JSON.stringify(r,h),i=o.invokeDotNetFromJS(e,t,n,a);return i?d(i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeMethodAsync instead.")}function l(e,t,r,a){if(e&&r)throw new Error("For instance method calls, assemblyName should be null. Received '"+e+"'.");var i=o++,u=new Promise(function(e,t){n[i]={resolve:e,reject:t}});try{var l=JSON.stringify(a,h);s().beginInvokeDotNetFromJS(i,e,t,r,l)}catch(e){c(i,!1,e)}return u}function s(){if(null!==a)return a;throw new Error("No .NET call dispatcher has been set.")}function c(e,t,r){if(!n.hasOwnProperty(e))throw new Error("There is no pending async call with ID "+e+".");var o=n[e];delete n[e],t?o.resolve(r):o.reject(r)}function d(e){return e?JSON.parse(e,function(e,n){return t.reduce(function(t,n){return n(e,t)},n)}):null}function f(e){return e instanceof Error?e.message+" "+e.stack:e?e.toString():"null"}function p(e){if(r.hasOwnProperty(e))return r[e];var t,n=window,o="window";if(e.split(".").forEach(function(e){if(!(e in n))throw new Error("Could not find '"+e+"' in '"+o+"'.");t=n,n=n[e],o+="."+e}),n instanceof Function)return n=n.bind(t),r[e]=n,n;throw new Error("The value '"+o+"' is not a function.")}e.attachDispatcher=function(e){a=e},e.attachReviver=i,e.invokeMethod=function(e,t){for(var n=[],r=2;r0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]>2,r=Module.HEAPU32[n+1];if(r>s)throw new Error("Cannot read uint64 with high order part "+r+", because the result would exceed Number.MAX_SAFE_INTEGER.");return r*l+Module.HEAPU32[n]},readFloatField:function(e,t){return Module.getValue(e+(t||0),"float")},readObjectField:function(e,t){return Module.getValue(e+(t||0),"i32")},readStringField:function(e,n){var r=Module.getValue(e+(n||0),"i32");return 0===r?null:t.monoPlatform.toJavaScriptString(r)},readStructField:function(e,t){return e+(t||0)}};var c=document.createElement("a");function d(e){return e+12}function f(e,t,n){var r="["+e+"] "+t+":"+n;return Module.mono_bind_static_method(r)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(35),o=window.chrome&&navigator.userAgent.indexOf("Edge")<0,a=!1;function i(){return a&&o}t.hasDebuggingEnabled=i,t.attachDebuggerHotkey=function(e){a=e.some(function(e){return/.pdb$/.test(r.getFileNameFromUrl(e))});var t=navigator.platform.match(/^Mac/i)?"Cmd":"Alt";i()&&console.info("Debugging hotkey: Shift+"+t+"+D (when application has focus)"),document.addEventListener("keydown",function(e){var t;e.shiftKey&&(e.metaKey||e.altKey)&&"KeyD"===e.code&&(a?o?((t=document.createElement("a")).href="../../../framework/_framework/debug?url="+encodeURIComponent(location.href),t.target="_blank",t.rel="noopener noreferrer",t.click()):console.error("Currently, only Edge(Chromium) or Chrome is supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(18),o=function(){function e(e){this.batchAddress=e,this.arrayRangeReader=a,this.arrayBuilderSegmentReader=i,this.diffReader=u,this.editReader=l,this.frameReader=s}return e.prototype.updatedComponents=function(){return r.platform.readStructField(this.batchAddress,0)},e.prototype.referenceFrames=function(){return r.platform.readStructField(this.batchAddress,a.structLength)},e.prototype.disposedComponentIds=function(){return r.platform.readStructField(this.batchAddress,2*a.structLength)},e.prototype.disposedEventHandlerIds=function(){return r.platform.readStructField(this.batchAddress,3*a.structLength)},e.prototype.updatedComponentsEntry=function(e,t){return c(e,t,u.structLength)},e.prototype.referenceFramesEntry=function(e,t){return c(e,t,s.structLength)},e.prototype.disposedComponentIdsEntry=function(e,t){var n=c(e,t,4);return r.platform.readInt32Field(n)},e.prototype.disposedEventHandlerIdsEntry=function(e,t){var n=c(e,t,8);return r.platform.readUint64Field(n)},e}();t.SharedMemoryRenderBatch=o;var a={structLength:8,values:function(e){return r.platform.readObjectField(e,0)},count:function(e){return r.platform.readInt32Field(e,4)}},i={structLength:12,values:function(e){var t=r.platform.readObjectField(e,0),n=r.platform.getObjectFieldsBaseAddress(t);return r.platform.readObjectField(n,0)},offset:function(e){return r.platform.readInt32Field(e,4)},count:function(e){return r.platform.readInt32Field(e,8)}},u={structLength:4+i.structLength,componentId:function(e){return r.platform.readInt32Field(e,0)},edits:function(e){return r.platform.readStructField(e,4)},editsEntry:function(e,t){return c(e,t,l.structLength)}},l={structLength:20,editType:function(e){return r.platform.readInt32Field(e,0)},siblingIndex:function(e){return r.platform.readInt32Field(e,4)},newTreeIndex:function(e){return r.platform.readInt32Field(e,8)},moveToSiblingIndex:function(e){return r.platform.readInt32Field(e,8)},removedAttributeName:function(e){return r.platform.readStringField(e,16)}},s={structLength:36,frameType:function(e){return r.platform.readInt16Field(e,4)},subtreeLength:function(e){return r.platform.readInt32Field(e,8)},elementReferenceCaptureId:function(e){return r.platform.readStringField(e,16)},componentId:function(e){return r.platform.readInt32Field(e,12)},elementName:function(e){return r.platform.readStringField(e,16)},textContent:function(e){return r.platform.readStringField(e,16)},markupContent:function(e){return r.platform.readStringField(e,16)},attributeName:function(e){return r.platform.readStringField(e,16)},attributeValue:function(e){return r.platform.readStringField(e,24)},attributeEventHandlerId:function(e){return r.platform.readUint64Field(e,8)}};function c(e,t,n){return r.platform.getArrayEntryPtr(e,t,n)}}]); \ No newline at end of file diff --git a/release/demos/kanban/defaultfunctionality/index.dll b/release/demos/kanban/defaultfunctionality/index.dll new file mode 100644 index 0000000000000000000000000000000000000000..f4ea0a1c9aeb7ff272ac276cd2811b4c8a12a1ee GIT binary patch literal 15872 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 literal 0 HcmV?d00001 diff --git a/release/demos/kanban/defaultfunctionality/index.js b/release/demos/kanban/defaultfunctionality/index.js new file mode 100644 index 00000000..e69de29b diff --git a/release/framework/_framework/_bin/Microsoft.AspNetCore.Blazor.HttpClient.dll b/release/framework/_framework/_bin/Microsoft.AspNetCore.Blazor.HttpClient.dll index 0e49c96c7a23d80c4916ae930af0d6d67726b491..1a89b9cecbc8c0bac1d894118c3cc49568a32a4a 100644 GIT binary patch delta 29 lcmZqhXz`eZ*xkjXg9{|2G4IBUf delta 29 lcmZqhXzX);5zGJp diff --git a/release/framework/_framework/_bin/Microsoft.AspNetCore.Components.Web.dll b/release/framework/_framework/_bin/Microsoft.AspNetCore.Components.Web.dll index 2c4038e3c257aac00f388dadcd4ad9ed9b83aab6..7b2232e699ceabb45b28b417ebd03c2be6d0227e 100644 GIT binary patch delta 29 lcmZpuX{gz7KwseR&j*+HHZ!}-)c;a#%gqqOal5$+p^7nK$$H*-a1OTU83Y7o= diff --git a/release/framework/_framework/_bin/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/release/framework/_framework/_bin/Microsoft.Extensions.DependencyInjection.Abstractions.dll index 76ecbea3ae0c83274894935dabded66025462648..f0256bf4476c3b3f4f5b668ad3df15a25e5bab54 100644 GIT binary patch delta 31 ncmZozz}T>WaRZO7z{a&Ux74y0xwad-OtAXvxNWnH?GqsY$s`Q* delta 31 ncmZozz}T>WaRZO7fLaW*)2c#qmsyjAFI3x$6>pZYeIf(^s?`eq diff --git a/release/framework/_framework/_bin/Microsoft.Extensions.DependencyInjection.dll b/release/framework/_framework/_bin/Microsoft.Extensions.DependencyInjection.dll index e651c69cdce16a15ed41efc07c90f43771abb6bf..5df2c77400317a2b044d25d94697065f93fa7f66 100644 GIT binary patch delta 31 ncmZp8!QAkIdBcm-0)n2Q?^al4cy;sciQDt4qJHy_(;ONA^%@Uw delta 31 ncmZp8!QAkIdBcm-0uue6ObR@QJ!i|xo&5H#L}>Gm(;ONA;k*tj diff --git a/release/framework/_framework/_bin/Microsoft.Extensions.Logging.Abstractions.dll b/release/framework/_framework/_bin/Microsoft.Extensions.Logging.Abstractions.dll index af81da96630b141edef81e49713af3cbfdfd1118..c05defee9e8541a16dc634ecc9fbc8d904411722 100644 GIT binary patch delta 31 pcmV+)0O0?C`~iUc0kF(q5U_Q(QRm;4N0$C1jWp%W^RwJwBpnc85d;7L delta 31 pcmV+)0O0?C`~iUc0kF(q5Cixd-|D5LOqwCRAkoWh#{@;fa#UziT`ec?SrymwP_k{6Sbi007Tk4F~`L diff --git a/release/framework/_framework/_bin/System.Core.dll b/release/framework/_framework/_bin/System.Core.dll index f620a5b4b875d1b99375576ad50cac24bf1dc0cc..78a875569445c8fc85e0e415c198ba6ae8d0bd72 100644 GIT binary patch delta 40 tcmZo@5o!P-#ula)<}EA> diff --git a/release/framework/_framework/_bin/System.Net.Http.dll b/release/framework/_framework/_bin/System.Net.Http.dll index be6b77af2369edf832ffa5bfcc680a6c24060d50..b4ad74a0d6f62b9ffddd796bf98129688143064c 100644 GIT binary patch delta 34 pcmZqZU~2%PEsQMD0-v2vZ%_Ni=|BCoy6N^?FB7(lL^Hn8008`;4Q{c|_^S0vXqx=l&j_9}q3Pc?D|(3jnz^40Qki delta 29 lcmZn=X%N{kgH@oB-E`mGKt7Mj#W`PF#0!pXUcnl{0sy6k3wZzl diff --git a/release/framework/_framework/_bin/System.Text.Encodings.Web.dll b/release/framework/_framework/_bin/System.Text.Encodings.Web.dll index 801b2601df5cd396fdb37b92a33a1ef8f706588e..7c433c0f6b0ba1a98ed8bc073ad1f10c27bdfaf7 100644 GIT binary patch delta 31 ncmZqJ!`QHgal;ZHfyUiu#Z&)8InR=>eWkU+OlR{JA0I&g;=&EB delta 31 pcmV+)0O0?Cya9l`0kEV@5IUs4aJ?-7+rPYL;_(3hJ}MBi delta 36 rcmZqp!P5XlEsR^3p1c>BXE(9sFq45}^X5JAa-~drwtsog#Nz`1H%ky? diff --git a/release/framework/_framework/_bin/System.dll b/release/framework/_framework/_bin/System.dll index 8cfa4af70a060b6d93865d9976bcd9dd202d180e..81243629ccd0d7aad1ac2dfed5b2ab1a22803fe8 100644 GIT binary patch delta 34 pcmZqJ!PWpoTNsxV3(P#B7&@KZ+o9c5_{vUQ&3D_k6f^p0008x=4a@)l delta 34 ocmZqJ!PWpoTNsxV3!L_ijyJz4@3}j|Oz1doX3F+0#f&~00QIm9asU7T diff --git a/release/framework/_framework/_bin/WebAssembly.Bindings.dll b/release/framework/_framework/_bin/WebAssembly.Bindings.dll index f96a1845e0ec7bbeb296589dbc48d01aa1d931d2..17fbd9eadde29335f513e1e5f3df00fad8bc43b9 100644 GIT binary patch delta 31 ncmZpe!`Lu~af5=LK+}<{yX{SyJm-a*EaekEk+Rvq?gBpm$^;CE delta 31 ncmZpe!`Lu~af5=LfR$Csrzr|8{&ST4w&Z)an6rdKd=mNT5Dx$V delta 31 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 b6fZcX09Wc?Z{z>SJiKDequ)=`-0vFj%9;Dofi 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�As2$qyWaT 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 M1Xs$t=-Qc?y0tRGeX=` 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%0AZ}tf9fZ{j%9PfzY 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 diff --git a/release/framework/_framework/_bin/mscorlib.dll b/release/framework/_framework/_bin/mscorlib.dll index a034233eab725f093d96eb90b3cd4073abdb4ff0..71f172d8d849ee9a92919f10beccf28ccb69f943 100644 GIT binary patch delta 75 zcmZoz6Vd=gEsQNpEzB(}EvzkUE$l5EEu1Y}E!-_UExav!E&MG4ErKmVEy7Dg_yuZe d-cQLBuXmiL@%?8XPxrHS0e+F~0{o&M*Z{}28TJ4G delta 75 zcmZoz6Vd=gEsQNpEzB(}EvzkUE$l5EEu1Y}E!-_UExav!E&MG4ErKmVEy7Dg_yw3- eGw$rsJLa>rdzRGhi_CoO0{kM|1^7ijumJ$Jpcuvg diff --git a/release/framework/jqxBlazor.js b/release/framework/jqxBlazor.js index adc66ed0..df8175be 100644 --- a/release/framework/jqxBlazor.js +++ b/release/framework/jqxBlazor.js @@ -10,6 +10,10 @@ window.jqxBlazor = { delete options.options; } + if (options.id) { + delete options.id; + } + options = checkForIsoStrings(options); options = checkForDataAdapterNeed(options); @@ -73,10 +77,13 @@ function checkForDataAdapterNeed(options) { if (options.source && options.source.dataFields) { options.source = new jqx.dataAdapter(options.source); + if (options.resources && options.resources.dataFields) { + options.resources = new jqx.dataAdapter(options.resources); + } + return options; } - // Pivot Grid if (options.source && options.source.dataSource) { options.source = new jqx.pivot( new jqx.dataAdapter(options.source.dataSource),