OpenUI5 lets you build enterprise-ready web applications, responsive to all devices, running on almost any browser of your choice.

Overview

openui5

OpenUI5. Build Once. Run on any device.

REUSE status

What is it?

OpenUI5 lets you build enterprise-ready web applications, responsive to all devices, running on almost any browser of your choice. It's based on JavaScript and follows web standards. It eases your development with a client-side HTML5 rendering library including a rich set of controls and supports data binding to different data models (JSON, XML and OData).

And... it's free and open source: OpenUI5 is licensed under the Apache License, Version 2.0 - see LICENSE.txt. It also contains third-party open source modules. See the list and respective licenses in THIRDPARTY.txt. Third-party module license information is also available in machine-readable format in the .reuse/dep5 file.

Try it!

Check out our control playground as well as a number of sample applications.

Get it!

Go to the download page and get the complete UI5 runtime and the UI5 SDK containing the documentation and many example apps as well as the complete runtime.

Or use UI5 Tooling, the recommended tool for working with OpenUI5! It allows you to manage your framework dependencies and to build optimized packages for all applications, components and libraries. Get started here.

Get started!

Try the Hello World, read the Developer Guide and refer to the API Reference. Use App Templates as a foundation for your developments (available in SAP Business Application Studio or here on GitHub). Check out the SAP Community Forum for 20,000+ questions and answers and stackoverflow (use the tag "sapui5") to discuss code-related problems and questions. Or join the OpenUI5 Slack.

Hack it!

You can get the sources and build UI5 on your own, please check the documentation for the UI5 development setup. You might then want to understand how control libraries are structured and controls are developed. Maybe there's a bug you could analyze and fix?

Comments
  • Usage of OpenUI5 OData V4 model API  from Javascript

    Usage of OpenUI5 OData V4 model API from Javascript

    This issue is a follow up from the discussion at https://github.com/SAP/openui5/issues/2288#issuecomment-452228266.

    to dig deeper into the usage of the odata v4 model API from Javascript. Thanks for your feedback Thomas. Ok I think I need to give you a deeper look into what I am trying to implement and how the data in the backend look like. I will show 2 examples, one for a direct context binding which is used in 2 different views, and another one for the list binding which is used in 3 different views. I assume this covers most of the story.

    For both examples, let's say I have a database with 3 tables.

    Table 1 named "Profile" with columns:

    • ProfileID as primary key
    • BodyHeight as float

    Table 2 named "ConfigOptions" with columns:

    • fkProfileID as a primary key and foreign key linked to "Profile.ProfileID"
    • MUnitLength as enum('cm','in')
    • MUnitWeight as enum('kg','lb')

    Table 3 named "BodyWeight" with columns:

    • idBodyWeight as a primary key
    • fkProfile as a foreign key linked to "Profile.ProfileID"
    • WeightMeasurementDateTime as DateTime
    • Weight as float

    1. The first example is a direct context binding.

    View 1 called ConfgView provides configuration options for ConfigOptions(ProfileID=x). The ConfigOptions context for the user is directly bound to the layout which holds all controls. The view looks as follows:

    bildschirmfoto 2019-01-08 um 16 03 31

    View 2 called ProfileView is bound to Profile(ProfileID=x) and for this example shall display the BodyHeight of the user in the correctly computed weight unit. The view looks as follows

    bildschirmfoto 2019-01-08 um 16 11 02

    As you can see from the image, for the BodyHeight Input control I need information from 2 tables. Profile.BodyHeight for control.value and ConfigOptions.MUnitLength for control.description. Furthermore, to recompute the value for the selected unit I have written 2 customTypes, one for cm and one for inches. As I can only bind one path to the Input control at a time if I want to be able to read and write on the input control, I decided to use the ConfigOptions structure in javascript to manually update the Input control when needed. Therefore in the "onRoutePatternMatched" function I check if MUnitLength has changed in comparison to the last set configuration of the BodyHeight control. In case it changed I update the control. Code looks as follows:

    			// update input field for body height
    			gConfOptsContextBinding.getBoundContext().requestObject("MUnitLength")
    				.then(function (strLengthUnit) {
    					if (oBodyHeightInput.getSelectedKey() !== strLengthUnit) {
    						// we use the selectedKey attribute to hold current control state
    						oBodyHeightInput.setSelectedKey(strLengthUnit);
    						if (strLengthUnit === "cm") {
    							// display adequate length units	
    							oBodyHeightInput.setDescription(this.translateText("strCm"));
    							oBodyHeightInput.bindProperty("value", {
    								path: "BodyHeight",
    								type: "mnd.model.MUnitLengthTypeCM"
    							});
    							// if control is not configured for selected unit type, do it 
    							oBodyHeightInput.setType("Number");
    						} else {
    							// display adequate length units	
    							oBodyHeightInput.setDescription(this.translateText("strFt_In_WideFormat"));
    							oBodyHeightInput.bindProperty("value", {
    								path: "BodyHeight",
    								type: "mnd.model.MUnitLengthTypeIN"
    							});
    						}
    					}
    				}.bind(this), function (oResult) {
    					console.error("Profile error:" + oResult);
    				});
    

    I have tried to use the same gConfOptsContextBinding object which I use in ProfileView in Javascript, to bind it to the layout of the Controls in the ConfigView, i.e.

    oVertLayout.setBindingContext(gConfOptsContextBinding.getBoundContext());

    However, this does not work. When I try to change one of the values I get the following error:

    2019-01-08 16:41:36.976899 Failed to update path /ConfigOptions(38)/MUnitLength - Error: Cannot set value on this binding at http://localhost:9001/resources/sap/ui/core/library-preload.js:3610:496 at http://localhost:9001/resources/sap/ui/core/library-preload.js:252:173 at c (http://localhost:9001/resources/sap/ui/core/library-preload.js:247:99) at new S (http://localhost:9001/resources/sap/ui/core/library-preload.js:249:773) at S.then (http://localhost:9001/resources/sap/ui/core/library-preload.js:252:151) at constructor.O.setValue (http://localhost:9001/resources/sap/ui/core/library-preload.js:3610:471) at constructor.P._setBoundValue (http://localhost:9001/resources/sap-ui-core.js:1655:219) at constructor.P.setExternalValue (http://localhost:9001/resources/sap-ui-core.js:1661:268) at f.j.updateModelProperty (http://localhost:9001/resources/sap-ui-core.js:385:229) at f.j.setProperty (http://localhost:9001/resources/sap-ui-core.js:341:269) sap.ui.model.odata.v4.ODataPropertyBinding

    I thought that might be as I cannot reuse the same binding context and resulted in my approach to use oVertLayout.bindElement("/ConfigOptions(" + gProfileID + ")"); and do a gConfOptsContextBinding.refresh(); when a config option was changed, to push the change into the gConfOptsContextBinding binding context. So Thomas from your reply, it looks like this context sharing should work? Maybe I found a bug in OpenUI5 then?


    The second example is related to the required use of a list binding from Javascript. Here I have three views. Again the ProfileView from the last example, which shows body weight in lb or kg. Again implemented with two customTypes one for lb and one for kg. Here is the view.

    bildschirmfoto 2019-01-08 um 16 54 36

    The table for the Body Weight just shows a single cell with an Input Control in a CustomListItem and should always show the most recent measurement. Hence it needs to get updated once a new measurement was added. The binding is given as

    items="{path: '/BodyWeight', length:1, sorter: { path: 'WeightMeasurementDateTime', descending: true}}"

    My choice here for a table instead of a single input control to show the most recent body weight measurement was more or less thought as a workaround, as I do not know how I could update the Input field, once BodyWeight measurements were added in a different view. My hope was that I could use the same ListBinding on different tables. This reflects probably your thinking if I correctly interpret your answer.

    The second view is a dialog which opens once you press the + Button next to the Weight Measurement input field. Here one can add a new record. The Dialog looks as follows and again does Input Validation and formating with customTypes for the Input control.

    bildschirmfoto 2019-01-08 um 17 06 14

    The third view is now the BodyWeightView which shows a table with all body weight records and later also should show graphs with the data. It also allows to delete records.

    bildschirmfoto 2019-01-08 um 17 08 18

    Regarding your answer and the idea with getContexts(0, Infinity) . I do not like to load all data. There could be several hundred Weight measurements in the database, which I do not want to get loaded upfront. Only on request. A single List would get to slow if it shows all measurements, as the app should run on a mobile using Cordova, and I do not want to create more traffic than is required.

    So for me now three questions are arising:

    • In respect to topic 1. Should sharing of the BindingContext in different views work for read and write operations on the data? In that case I would need to check in how far I can debug the issue. Is such an approach working for you? I use the mobile OpenUI5 package 1.61.1.

    • Is there an option to reload gConfOptsContextBinding from cached data rather than using refresh with a http request, to pull in the changes from the second binding to the same path? This would be my current approach but somewhat more efficient.

    • Regarding topic 2. What approach for datasync between the 3 views would you consider best and could you give me a code sniped to show what I need to do with the ListBinding? Maybe just read the values I like to display getContexts(0, 10) sorted by date and registering a change handler to be informed when data arive? Would I than use the same list binding on all three views, or different bindings?


    regarding your comments:

    -control. getBindingContext().submitBatch("auto")... true, forgotten the getModel() when writing the issue text. It is there in code :)

    -And then I thought "auto" looks a bit misleading. There is "$auto" which means you need not call submitBatch(), I tried to call submitBatch("$auto") which gave an error and I was thinking I do have to call submitBatch without dollar. Well it does what it needs, but just by luck. You are right, I unintentionally created a batch group with it. So what I have to ensure with my current solution is, that I do not call request object on my second binding before the data on the auto group were send. Is there a way that I can get informed when changes on the auto batch where commited to the server?

    Thanks a lot!! The topic is not that easy for me :)

    consulting 
    opened by cjohn001 64
  • sap-language parameter is not added to sap.ui.model.odata.v2.ODataModel if model is extended

    sap-language parameter is not added to sap.ui.model.odata.v2.ODataModel if model is extended

    OpenUI5 version: 1.85.0

    Language url parameter is not added to the ODataModel if model is extended. Steps to reproduce the problem:

    1. Create custom ODataModel by extending sap.ui.model.odata.v2.ODataModel (I believe that same issue appears for v4)
    2. Add model to the manifest.json

    What is the expected result? sap-language url parameter should be added

    What happens instead? sap-language url parameter is not added

    Any other information? (attach screenshot if possible) Reason for it is in sap.ui.core.Component line: 1545 image sap-language should be added if the model is instance of ODataModel, however right now class check is strictly set to sap.ui.model.odata.v2.ODataModel and sap.ui.model.odata.v4.ODataModel models.

    wontfix consulting 
    opened by iljapostnovs 34
  • "nullable" option for sap.m.Select and similar controls

    I'm not 100% sure that this is not a duplicate but couldn't find a matching issue so I'll create a new one. If this has been discussed earlier: sorry!

    I've seen many cases now where we'd like to be able to tell a sap.m.Select that there should be a (default selected, always top-of-the-list) empty option. Selecting this would set selectedItem and selectedKey to null, trigger the change event etc. The OData annotations and metadata allows to mark a field as "nullable" which doesn't work well with current selects. Currently our workaround is to include these empty options in the Model used for the binding but this introduces a lot of runtime overhead and code.

    The API could look somewhat like that: Add two new properties:

    • boolean nullable default false
    • string nullableText default "" // someone should be able to come up with a better name..

    Somewhere between binding and rendering (updateItems?) there would be an additional "virtual" Item created that uses the nullableText as a text and null (or the value of another property?) as its key.

    This way selects wont always select the first data element and would require the user to pick the correct one. Additionally optional selects would be more easy to implement.

    Using a combobox to fake that doesn't feel good because of the input-behavior.

    enhancement 
    opened by themasch 31
  • sap.ui.getCore().getMessageManager().registerMessageProcessor does not work with useBatch: true

    sap.ui.getCore().getMessageManager().registerMessageProcessor does not work with useBatch: true

    Hi,

    when you try sap.ui.getCore().getMessageManager().registerMessageProcessor with an v2.OataModel with useBatch: true , there are never any errors added the error model.

    Apparently only the $batch and not the individual requests inside are checked for errors.

    I can provide you with files for an hanatrial xsodata bassed app to demonstrate the problem, if needed.

    Regards, Wolfgang

    enhancement author action 
    opened by DerGuteWolf 29
  • xsd files for XML validation not found

    xsd files for XML validation not found

    When building XML views for UI5 it is very helpful to have the xsd to validate, aid with build, yet I cannot find these in the openUI5 downloads.

    Could these be added?

    enhancement 
    opened by wombling 29
  • Data binding not supported for sap.ui.model.Filter value1/value2 properties

    Data binding not supported for sap.ui.model.Filter value1/value2 properties

    UI5 Version 1.22.3 (built at , last change) User Agent Chrome/36.0.1985.143

    Reproducable example: http://jsbin.com/nehato/2/edit?js,output

    See also: http://stackoverflow.com/questions/25387580/not-possible-to-set-filter-value-using-data-binding

    Steps to reproduce:

    If I use a filter where the filter value value1 is specified by data binding:

    new sap.ui.model.Filter({
        path     : "division", 
        operator : sap.ui.model.FilterOperator.EQ, 
        value1   : "{/someProperty}"
    })
    

    then the dropdown does not render any items

    However, if I hardcode a value at property value1:

    new sap.ui.model.Filter({
        path     : "division", 
        operator : sap.ui.model.FilterOperator.EQ, 
        value1   : "Test"
    })
    

    then the filter works as expected.

    Possible root-cause:

    As Allen Zhang discovered in the aforementioned Stackoverflow topic, the Filter's properties oValue1 and oValue2 do not parse any data binding path:

    /**
     * Provides a JS filter function for the given filter
     * @name sap.ui.model.ClientListBinding#getFilterFunction
     * @function
     */
    ClientListBinding.prototype.getFilterFunction = function(oFilter){
        if (oFilter.fnTest) {
            return oFilter.fnTest;
        }
        var oValue1 = this.normalizeFilterValue(oFilter.oValue1),
            oValue2 = this.normalizeFilterValue(oFilter.oValue2);
        //etc...
    

    (Source code here: https://openui5.hana.ondemand.com/resources/sap/ui/model/ClientListBinding-dbg.js)

    Reasoning why it should work with databinding

    Imagine you have a table, and one of the columns shows a dropdown box for each entry in the table. The entries in the dropdown box have to be filtered based on a value in the current table row (for instance, each row in the table has a client field, and the dropdown should only list the projects for that corresponding client: screen shot 2014-08-20 at 08 53 33

    In code:

    oTable.addColumn(new sap.ui.table.Column({
        label: new sap.ui.commons.Label({
            text: "Projects"
        }),
        template: new sap.ui.commons.DropdownBox({
            selectedKey: "{tablemodel>project}",
            items: {
                path: "metadatamodel>/allprojects",
                template: new sap.ui.core.ListItem({
                    text: "{metadatamodel>projectDescription}",
                    key: "{metadatamodel>projectKey}"
                }),
                filters: [new sap.ui.model.Filter("projectClient", sap.ui.model.FilterOperator.EQ, "{tablemodel>client}")]
            }
        })
    }))
    

    Explanation

    1. The table records contain, among others, a field client and project
    2. The dropdown template control in the table column is bound to a property allprojects which contains an array of objects {projectKey : "zzz", projectDescription : "zzz", projectClient : "someClient"}
    3. The dropdown template has a filter, which filters the dropdown's model property projectClient based on the corresponding table model array item's property client
    enhancement wontfix 
    opened by qualiture 24
  • OdataV4 in sapui5

    OdataV4 in sapui5

    Hi, I am opening again and asking for help!

    I wrote the controller test and it does not agree with what is written. as you can see boundry return \r\n

    obraz

    new link for odataV4 http://51.68.141.73:5000/odata/ and error in fiori app obraz

    Best regards Maciej .................................................................................................................................................. Hi Maciej (@siasty ),

    the issue seems to be with the response. Let me start with https://www.ietf.org/rfc/rfc2046.txt:

    5.1.1. Common Syntax ... The boundary delimiter line is then defined as a line consisting entirely of two hyphen characters ("-", decimal value 45) followed by the boundary parameter value from the Content-Type header field, optional linear whitespace, and a terminating CRLF.

    When checking in _Batch, function _deserializeBatchResponse I observe that the first boundary is not detected. This is because the CR (ASCII 13, \r) is missing. You can check yourself by setting a breakpoint in the mentioned function. In my cases sResponseBody.charCodeAt(52) shows the LF (ASCII 10, \n). sResponseBody.charCodeAt(51) does not return 13 as sResponseBody[51] is the last character of the boundary, e.g. 6.

    Could you please check why your service is not returning the CR as specified in RFC2046?

    Best regards Mathias.

    Originally posted by @uhlmannm in https://github.com/SAP/openui5/issues/2830#issuecomment-593406590

    consulting 
    opened by siasty 23
  • sap.m.Input selectedKey binding clears Input text at start if key is not found in suggestions

    sap.m.Input selectedKey binding clears Input text at start if key is not found in suggestions

    OpenUI5 version: 1.73.2

    Browser/version (+device/version): Chrome

    URL (minimal example if possible): https://next.plnkr.co/edit/CLfGEmXtMmZiPVlxo3jD

    Steps to reproduce the problem:

    1. click "Click to run"
    2. Preview: no text in Input
    3. delete in App.view.xml text 'selectedKey="{/key}"'
    4. Preview: there is a text 'initial text' in Input
    5. return text 'selectedKey="{/key}"'
    6. Preview: no text in Input
    7. in App.controller.js replace 'key: "init2"' with 'key: "init"'
    8. Preview: there is a text in Input

    What is the expected result? text 'initial text' is always in Input at start.

    Any other information? in version 1.62.1 it was working as expected here.

    consulting 
    opened by endrx 23
  • odatamodel v4 - having a hard time to manipulate the data (doc bug)

    odatamodel v4 - having a hard time to manipulate the data (doc bug)

    OpenUI5 version: 1.73.2

    In a JsonModel and using the Controller to create the models, things are easy. You define the model and assign it to the view. In case you need to load the model because the value is needed for another control (master-detail), the loaddata method has a parameter for synchronous loading. You can access the jsonmodel after it had been read and manipulate the data, e.g. add a default row, set the selected value to the first entry and the such.

    I have to admit, I fail doing that in the v4 odatamodel and with manifests.

    Need to look into the details more but found a preload=true property at the model declaration. So that's good. Now I want to add an event listener to modify the data after it had been loaded (list of all users plus a row with the value "*" to search in all users). The detail control should not load the data until the filter has been set.

    This is a simple master-detail case with both using odata v4.

    I believe some more documentation would be needed for that and maybe a feature request or two.

    Enhancement 1: support model references in the odata filter My example of a list referencing a filter from another model, thus the system knows the order of the models to load and what to wait for.

    <list items= "{path: 'Objects>/TABLE',
        filters: [  { path: 'SCHEMA_NAME', operator: 'EQ', value1: '{=${usermodel>/user} }' } ]">
      <items>
    

    Enhancement 2: Some sort of "default row" property to be included in the data.

    Thanks!

    enhancement author action 
    opened by wernerdaehn 23
  • "Credential storing" functionality of iOS not working

    Dear UI5-Team,

    my application uses sap.m.Dialog and sap.m.Input to have the user enter their credentials.

    On an iPhone 8 + Safari I tried to store the credentials with the help of the "credential storing" functionality of iOS. Both the username and the password are correctly stored; I checked it under settings -> accounts.

    However on recalling my application and using this "credential storing" functionality, the password is placed into the username field and the password field stays empty.

    On macOS (Mojave) + Safari it works. OpenUI5: 1.60.12

    author action consulting 
    opened by born2dev 21
  • sap.ui.model.odata.v4.ODataModel cannot be used with a standard odata4 service without CSRF token support

    sap.ui.model.odata.v4.ODataModel cannot be used with a standard odata4 service without CSRF token support

    OpenUI5 version: openui5-sdk-1.58.5

    Browser/version (+device/version): Google Chrome Version 70.0.3538.77 (Offizieller Build) (64-Bit)

    Any other tested browsers/devices(OK/FAIL): n/a

    URL (minimal example if possible): n/a

    User/password (if required and possible - do not post any confidential information here): n/a

    Steps to reproduce the problem:

    1. Connect to an odata4 service without X-CSRF-Token support. I am using TEIID 11.2 on Wildfly 11.0

    What is the expected result?

    1. odata service accessible
    2. it should be possible to disable CSRF token requests, similar to the sap.ui.model.odata.v2.ODataModel

    What happens instead? I see two issues here.

    1. OpenUI5 sends a HEAD request to the services main url, which is not specified in the odata v4 spec
    Request URL: http://localhost:9001/odata4/svc/my_nutri_diary/
    Request Method: HEAD
    Status Code: 405 Method Not Allowed
    Remote Address: [::1]:9001
    Referrer Policy: no-referrer-when-downgrade
    Accept: */*
    Accept-Encoding: gzip, deflate, br
    Accept-Language: de,de-DE;q=0.9,en;q=0.8
    Authorization: Basic SU1TVXNlcjpJTVM0Zm9ydW0l
    Connection: keep-alive
    Cookie: sidebar_collapsed=false; cycle_analytics_help_dismissed=1; __utmz=111872281.1539128843.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=111872281.767670437.1539128843.1541866362.1541870562.42
    DNT: 1
    Host: localhost:9001
    Referer: http://localhost:9001/index2.html
    User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
    X-CSRF-Token: Fetch
    X-Requested-With: XMLHttpRequest
    Any other information? (attach screenshot if possible)
    
    1. Usage of X-CSRF-Token is not a defined precondition according to the odata v4 standard. For OpenUI5 to be useful with other services than SAP Gateway it should be possible to disable the token requests like it is in the sap.ui.model.odata.v2.ODataModel
    consulting 
    opened by cjohn001 21
  • Drag and Drop need two attempts

    Drag and Drop need two attempts

    OpenUI5 version: 1.109 / tested in 1.96.6 too

    Browser/version (+device/version): Chrome 108.0.5359.125 (Edge too)

    Any other tested browsers/devices(OK/FAIL): Firefox 108.0.1 Working

    URL (minimal example if possible): Table Sample

    Steps to reproduce the problem:

    1. Drag and drop one item from left to right
    2. Try to drag one item back from right to left -> does not trigger drag
    3. Try again, working now. -> trigger drag

    What is the expected result? Expecting drag work always at first attempt (like in Firefox)

    What happens instead? First drag attempt not reacting. Second attempt working fine.

    Any other information? Doesn't seems a Table issue. Other drag attempts in Planning Calendar (try to drag same item 2 times in a row) have the same behavior in Chrome/Edge Icon Tab Bar too.

    opened by Zeth90 0
  • Invalid link on the landing page

    Invalid link on the landing page

    OpenUI5 version: Version 1.109.0

    Browser/version (+device/version): Chrome

    URL (minimal example if possible): https://sdk.openui5.org/

    Steps to reproduce the problem:

    1. Scroll to "Enterprise-Ready Web Toolkit"
    2. Click the Enterprise-Ready Web Toolkit link
    3. End up at a 404 page (because this resources probably doesn't exist in openui5) Screenshot 2022-12-28 8 29 00 PM

    What is the expected result? Adding the resource to openui5 or removing this tile on the landing page

    bug documentation in progress 
    opened by IObert 2
  • sap.m.Text misalignment in sap.m.Table

    sap.m.Text misalignment in sap.m.Table

    OpenUI5 version: 1.109.0

    Browser/version (+device/version): Chrome 108.0.5359.124

    Any other tested browsers/devices(OK/FAIL): Edge - FAIL.

    URL (minimal example if possible): https://jsbin.com/nedubuyaxi/edit?html,output

    User/password (if required and possible - do not post any confidential information here): -

    Steps to reproduce the problem:

    1. Open the jsbin link

    What is the expected result? -- Label and Text are aligned inside the HBox of the ColumnListItem of the Table control.

    What happens instead? -- sap.m.Text is misaligned

    Any other information? (attach screenshot if possible)

    image

    This issue was introduced after the following commit: https://github.com/SAP/openui5/commit/0f9144a6dbf4873dc2f1d477af0819cce1d44e9e. If line-height: inherit; is removed, the text is aligned properly.

    Is not reproducible in 1.108, only appears in 1.109.

    bug in progress 
    opened by whydrae 3
  • Table within Gridlist does not update correctly

    Table within Gridlist does not update correctly

    OpenUI5 version: 1.108.2

    Browser/version (+device/version): Chrome Version 108.0.5359.125 (Official Build) (64-bit) / Windows 10

    Any other tested browsers/devices(OK/FAIL): Edge Version 108.0.1462.54 (Official build) (64-bit) / Windows 10 (FAIL)

    URL (minimal example if possible): Not publicly available

    User/password (if required and possible - do not post any confidential information here): -

    Steps to reproduce the problem:

    1. Have an oData-endpoint with a Collection type navigational property.
    2. Have a GridList with its item binding set to this oData-service
    3. Within the GridListItem, have a Table with its item binding set to the navigational property
    4. Start the app, wait for the list data to be loaded
    5. Update the binding filters of the navigation property, so that the result set for the navigation property is different and wait for the data to be loaded again

    What is the expected result? The data reloads correctly and the Table within the GridListItem shows the newly loaded data correctly

    What happens instead? The data reloads correctly, but in the first few items of the GridList, the Table does not show the new data. It keeps showing the old data, even though in the network tab it's clear that the navigation property was reloaded correctly. Towards the bottom of the GridList, the Tables are updated correctly

    Any other information? (attach screenshot if possible)

    Before updating binding: image

    Initial navigation property: image

    After updating binding, still showing one item in the table control: image

    Updated navigation property: image

    bug in progress 
    opened by mcsam 1
  • Error Log

    Error Log "The Wizard is supposed to handle from 3 to 8 steps."

    Hi There is a lot of errors in console with this message "The Wizard is supposed to handle from 3 to 8 steps.". I have 8 steps in my project, and in this case this error log shouldn't appear.

    I checked in Wizard.js of sap.m, and found that the condition returned by function _isMaxStepCountExceeded() should be return iStepCount > Wizard.CONSTANTS.MAXIMUM_STEPS; and not return iStepCount >= Wizard.CONSTANTS.MAXIMUM_STEPS;

    Wizard.prototype._isMaxStepCountExceeded = function () {
    	var iStepCount = this._getStepCount();
    	if (this.getEnableBranching()) {
    			return false;
    	}
           return iStepCount >= Wizard.CONSTANTS.MAXIMUM_STEPS;
    };`
    
    
    bug in progress 
    opened by rubengr 1
  • UploadSet drag-a-drop area

    UploadSet drag-a-drop area

    OpenUI5 version: 1.108.2

    Browser/version (+device/version): Google Chrome Version 108.0.5359.124 (Official Build) (arm64)

    Any other tested browsers/devices(OK/FAIL): Microsoft Edge Version 108.0.1462.54 (Official build) (arm64)

    URL (minimal example if possible):

    User/password (if required and possible - do not post any confidential information here):

    Steps to reproduce the problem:

    1. Add UploadSet control
    2. Drag file to the Drag-a-Drop area (rectangle with blue borders) and don't drop file to this area and return file back to the folder (see attached video).

    What is the expected result? Drag-a-Drop area should disappear, like in the previous versions (1.98 and older).

    What happens instead? The Drag-a-Drop area stays on the screen (rectangle with blue borders)

    Any other information? (attach screenshot if possible)

    https://user-images.githubusercontent.com/49695153/208848705-0b91c5bb-d896-4673-9131-3acc1fb6d6ca.mov

    bug in progress 
    opened by Vir45 1
Releases(1.96.15)
Owner
SAP
SAP SE, a global software company, is one of the largest vendors of ERP and other enterprise applications.
SAP
Ember.js - A JavaScript framework for creating ambitious web applications

Ember.js is a JavaScript framework that greatly reduces the time, effort and resources needed to build any web application. It is focused on making yo

Ember.js 22.4k Jan 4, 2023
Knockout makes it easier to create rich, responsive UIs with JavaScript

Knockout Knockout is a JavaScript MVVM (a modern variant of MVC) library that makes it easier to create rich, desktop-like user interfaces with JavaSc

Knockout.js 10.3k Dec 31, 2022
World's smallest responsive 🔥 css framework (395 bytes)

lit ?? a ridiculously small responsive css framework. I challenged myself to see how small I could go, but preserve everything Skeleton, Milligram, an

Arham Jain 1.9k Jan 7, 2023
CrossUI is a free Cross-Browser Javascript framework with cutting-edge functionality for rich web application

CrossUI is a free Cross-Browser Javascript framework with cutting-edge functionality for rich web application

Jack Li 1.4k Jan 3, 2023
The tiny framework for building hypertext applications.

Hyperapp The tiny framework for building hypertext applications. Do more with less—We have minimized the concepts you need to learn to get stuff done.

Jorge Bucaran 18.9k Jan 1, 2023
Relay is a JavaScript framework for building data-driven React applications.

Relay · Relay is a JavaScript framework for building data-driven React applications. Declarative: Never again communicate with your data store using a

Facebook 17.5k Jan 1, 2023
A JavaScript Framework for Building Brilliant Applications

mithril.js What is Mithril? Installation Documentation Getting Help Contributing What is Mithril? A modern client-side JavaScript framework for buildi

null 13.5k Dec 28, 2022
ENS Avatar resolver library for both nodejs and browser.

ens-avatar Avatar resolver library for both nodejs and browser. Getting started Prerequisites Have your web3 provider ready (web3.js, ethers.js) [Only

Ethereum Name Service (ENS) 27 Dec 30, 2022
A Web Component compiler for building fast, reusable UI components and static site generated Progressive Web Apps

Stencil: A Compiler for Web Components and PWAs npm init stencil Stencil is a simple compiler for generating Web Components and static site generated

Ionic 11.3k Jan 4, 2023
The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia.

aurelia-framework Aurelia is a modern, front-end JavaScript framework for building browser, mobile, and desktop applications. It focuses on aligning c

aurelia 11.7k Jan 7, 2023
Stop re-writing thirdweb snippets. Use thirdsnips to make it all snap!

?? thirdsnips Stop re-writing thirdweb snippets. Use thirdsnips to make it all snap! Thirdsnips is a tool which enhances the developer experience whil

Avneesh Agarwal 7 May 11, 2022
Turbolinks makes navigating your web application faster

Turbolinks is no longer under active development Please note that Turbolinks is no longer under active development. It has been superseded by a new fr

Turbolinks 12.8k Jan 4, 2023
A modest JavaScript framework for the HTML you already have

Stimulus A modest JavaScript framework for the HTML you already have Stimulus is a JavaScript framework with modest ambitions. It doesn't seek to take

Hotwire 11.7k Dec 29, 2022
🙌 Check if a Discord user is sponsoring you/someone on GitHub and give them roles!

Discord: Is User Sponsor? A bot that gives roles if a user is supporting you on GitHub! Uses Discord OAuth and Discord GitHub integration to get user'

EGGSY 18 Jun 27, 2022
Write you own GitHub webhooks with Deno Deploy.

Hooray Write you own GitHub webhooks with Deno Deploy. Deno Deploy is where you can distribute your JavaScript/TypeScript code to the edge with one li

null 3 Jun 22, 2022
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

Supporting Vue.js Vue.js is an MIT-licensed open source project with its ongoing development made possible entirely by the support of these awesome ba

vuejs 201.6k Jan 7, 2023
AngularJS - HTML enhanced for web apps!

AngularJS AngularJS lets you write client-side web applications as if you had a smarter browser. It lets you use good old HTML (or HAML, Jade/Pug and

Angular 59.3k Jan 1, 2023
Cybernetically enhanced web apps

What is Svelte? Svelte is a new way to build web applications. It's a compiler that takes your declarative components and converts them into efficient

Svelte 64.3k Dec 31, 2022
Our original Web Component library.

Polymer ℹ️ Note: This is the current stable version of the Polymer library. At Google I/O 2018 we announced a new Web Component base class, LitElement

Polymer Project 21.9k Jan 3, 2023