* fix: Input widget as number type 0 as default value
* added cypress test case
* cypress test fix, force click default text input
* updated input widget validation of number/currency/phone number type
* minor change
* FIX#2587 : added container wrapper component to handle styles, updated test cases
* FIX#2587 : abstract widget style component for common use and wraped on text widget
* updated style boundary and css
* updated cypress test
* fix: accommodate prop pane height change for the test
* removed properties from text widget
* updated container wrapper style to handle border corners, updated migrations for container and form widget
* fixed container overflow
* added testcases for container and text widget
Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
The env config API currently only changes values that are already defined in the env file. It is not capable of adding anything to the file.
This commit adds the capability to do so. However, since we don't want to let the client add just any variable, we've switched from a black list to a white list of env variables that can be managed by this API. If the requested variable is present in the whitelist, we add it, if its missing in the env file.
This commit adds the following API:
`/api/v1/admin/env` — Responds with the names and values of all environment variables currently configured, that are allowed for configuration from the UI. Some variables will be missing from this, ones that are not allowed to be edited from the configuration UI.
Doesn't take any query params. Only usable by the superuser.
Also added a `isSuperUser` boolean field to the response of `api/v1/users/me`, that will indicate whether the current user is a superuser or not.
* Currently, the list of actions to be run on page load is not updated when an action object gets deleted. Hence, sometimes, a previously deleted action may be set to run on page load which throws an error when the application tries to run it on page load.
* This PR updates the list of actions to be run on page load whenever any action gets deleted.
* Updated getConfigInitialValues function to extract initialValues properly
* Added error catching in case the form is not loaded properly
* Comparing the whole formdata instead of just the values
* Refactoring
* Moved setting initial eval state to query pane saga
* Running update only if uicomponent type is consitent with UQI
* Removed check for UQI type for form eval
* Removed unused imports
* Table widget migration to sanitize keys and binding paths
* added new test case
* modified the logic to sanitize dynamicBindingPathList
* fix calling migrateTableSanitizeColumnKeys on child and fix updating dsl version
The problem was that the pagination was designed & tested with only 2 pages. Firestore has a different function `limitToLast` which solves for previous page pagination commands.
* hide the widget names
* blocking multiselect in comment mode
* wrapped the name
* the latest comment will be on top
* isolated a condition for selection canvas
* added unresolve tooltip
* added resolved thread tooltip
* updated sorted comment cards when user gets the update/insert/delete events
* Same templates for mongo fetch
* WIP
* Working version
* Minor refactoring and addition of comments for understanding the code flow
* Minor fileName change
* Extra check added to only try to read options for command
With latest update, the following fields are unavailable on the `appsmith.user` object:
- `accountNonExpired`
- `accountNonLocked`
- `credentialsNonExpired`
- `isAnonymous`
- `isEnabled`
These fields are necessary for building applications and many apps were relying on these, despite them not being listed in the documentation at <https://docs.appsmith.com/framework-reference/appsmith#user>.
* Changes to add js plugin
* routes+reducer+create template
* added debugger to js editor page
* entity explorer changes
* create js function
* added copy, move and delete action
* added js plugin
* added existing js functions to data tree
* removed actionconfig for js collection
* new js function added to data tree and entity as well
* parsing flow added
* changes to data tree
* parse and update js functions
* small changes for def creator for js action
* create delete modified
* small changes for update
* update flow change
* entity properties added
* removed linting errors
* small changes in entity explorer
* changes for update
* move, copy implementation
* conflict resolved
* changes for dependecy map creation
* Only make the variables the binding paths
* Basic eval sync working
* Minor fixes
* removed unwanted code
* entity props and autocomplete
* saving in progress show
* redirection fix after delete js action
* removed unnecessary line
* Fixing merge conflict
* added sample body
* removed dummy data and added plugin Type
* few PR comments fixed
* automplete fix
* few more PR comments fix
* PR commnets fix
* move and copy api change
* js colleciton name refactor & 'move to page' changes & search
* view changes
* autocomplete added for js collections
* removing till async is implemented
* small changes
* separate js pane response view
* Executing functions
* js collection to js objects
* entity explorer issue and resolve action on page switch
* removed unused line
* small color fix
* js file icon added
* added js action to property pane
* Property pane changes for actions
* property pane changes for js functions
* showing syntax error for now
* actions sorted in response tab
* added js objects to slash and recent entitties
* enabling this to be used inside of function
* eval fix
* feature flag changes for entity explorer and property pane
* debugger changes
* copy bug fix
* small changes for eval
* debugger bug fix
* chnaged any to specific types
* error in console fix
* icons update
* fixed test case
* test case fix
* non empty check for functions
* evaluate test case fix
* added new icons
* text change
* updated time for debounce for trial
* after release mereg
* changed icon
* after merge
* PR comments simple
* fixed PR comments - redux form, settings remove
* js object interface changes
* name refactor
* export default change
* delete resolve actions chnage
* after merge
* adding execute fn as 3rd option and removed create new js function
* issue 7054 fixed - app crash
* execute function on response tab changes
* refactor function name part 1
* refactor of js function name
* try catch added refactor
* test fix
* not used line removed
* test cases locator fixed
Co-authored-by: Nidhi <nidhi.nair93@gmail.com>
Co-authored-by: hetunandu <hetu@appsmith.com>
- Added new API that generates a new ssh key pair and stores that inside the git meta data of an application. The key is generated in open ssh format. The private key is stored as encrypted in DB.
* updated widget properties
* updated placeholders
* updated default for date
* lint fix
* Fixed more styles and reverted changes to input widget
* adjusted default sizes of different widgets
* resized image in list widget
* reduced chart default data
* fixed tests
* PR comment fixes
* fixed tests failing
* fix: Fixed failing jest tests because of an error in chart widget propertyConfig object
Co-authored-by: somangshu <somangshu.goswami1508@gmail.com>
* Select/MultiSelect widget UI test cases
* Select/MultiSelect Test Cases
Dropdown-AlertModal
Dropdown-FromModal
Dropdown-Call-Api
Dropdown-Call-Query
Toggle JS - Dropdown-Call-Query
Toggle JS - Dropdown-CallAnApi Validation
Verify Search box for selecting drop-down options
Verify Dropdown default value
Dropdown Icon Visibility
Explore Widget related documents
Dropdown Close
On Option Change Action
Copy paste dropdown
Dropdown-Delete
Toggle JS - Dropdown-Unckeck Visible field
Toggle JS - Dropdown-ckeck Visible field
* Added new file button file and fixed the bugs in chart and button
Added new file button file and fixed the bugs in chart and button
* Fixed JS toggle for Button widget
* Added go to edit page from published page
* Removed the multiselect test cases from dropdown
* Select ui test cases fixes
* Select UI test fixes
* List Widget UI Test Cases
List Widget UI Test Cases:
Change the List Widget Name
Add or Modify items
Change the Background Color
Change the Item Background Color
Enable Disable Visible
Enable Disable Visible - JS
Adding Query/API
Copy Widget
Delete Widget
Change the list and item background color using JS Button
* Update List_spec.js
* ArangoDB has two types of command - one that fetches a response and the other that updates a document. Currently, ArangoDB plugin treats all cmds like the one that returns a response, hence when update cmds are run then an empty response is returned to the client since there is nothing to fetch. This PR adds a check to fetch the response based on the type of cmd. Hence, for an update cmd the number of writes succeeded or failed would be returned as a response.
* Insert git application metadata to application object, for git sync/version control feature there is a need to save the application in the structured format
* Added changelog to index application collection with git branch and remoteurl
* Rehydrate and dehydrate applications among different instances
* Added serailisation purpose while exporting the application to make distinction between version control and regular import-export flow
* Git file operations moved to appsmith-git module
* Delete json reference from directory for deleted resource in DB
* Added git authentication in application metadata
* Replace String with Path to handle file path in git file structure
The yarn.lock file is currently out-of-sync with the dependencies we are using. So, running yarn install --frozen-lockfile fails with the following error:
yarn install v1.22.10
[1/5] 🔍 Validating package.json...
[2/5] 🔍 Resolving packages...
error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
This commit gets it back in shape.
Currently, in the editor Docker image, if the APPSMITH_SERVER_PROXY_PASS env variable is missing or set to empty, then the service will notify the user and refuses to start. This PR will change this behaviour to use a default value for this variable and attempt to start.
Fixing challenge with the valid property as below:
1. Change the valid prop to an input control like regex
2. the valid field prop should be able to accept undefined apart from boolean
3. Change helper text to > ability to control input validity based on a JS expression.
* fix: the thread with the latest comment will be at the top.
* fixed the z index of unpublished pin
* making the layout control absolute
* removed comments
* reversed the ids order
* made sorting logic generic to work with list of ids
* minor refactor
* putting layout controller on top of canvas
* fix: underline style for text
* fix: add expected structure example
* Revert "fix: add expected structure example"
This reverts commit efd56886a26f87bb18cf6edc53bd246bfeb8e0f1.
* fix: test failing
* fix: widget crashing (#6980)
* fix: update omnibar search string for documentation for actions (#6722)
* [Mongo] Added default values for query for Find, Count and Distinct commands (#6960)
* Added smart defaults for query in Count, Distinct & Find commands
* Added test cases for smart inputs for query and limit for find, and query for count and distinct
* Distinct command output now results a JSON object instead of an array of strings (#6964)
* Fix: Break word when text widget content is long (#6211)
fixes#5319
* fix: widget crashing
Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
Co-authored-by: Trisha Anand <trisha@appsmith.com>
Co-authored-by: balajisoundar <sbalaji1192@gmail.com>
Co-authored-by: Rishabh Saxena <rishabh.robben@gmail.com>
Co-authored-by: Trisha Anand <trisha@appsmith.com>
Co-authored-by: balajisoundar <sbalaji1192@gmail.com>
* fix: compact mode
* fix: test
* fix: remove row height visibility
* fix: options label for compactMode
* feat: Add test
* Fix: failing test
* fix: test
* fix: test case.
* fix failing test
* fix: move position of rowHeight prop in property pane
We're not going to be collecting the company name for the self-hosted installation, but instead we'll be collecting the use-case that is being solved with Appsmith.
The env variable APPSMITH_SERVER_PROXY_PASS is missing a default value, and the start script in client image requires this. But since this env variable is not set on any _existing_ installations, they will break. So to fix that, we are adding an initial value to this variable to a sensible default.
* Adding `APPSMITH_PLUGIN_MAX_RESPONSE_SIZE` which can be configured as an environment variable to increase plugin response size (currently only supported for Postgres Plugin)
* Updated error message + added the environment variable to the template docker env files for new installations
Introducing a new widget: Statbox / Statistic box Widget; This is a composite widget which has text and icon in a certain layout that can be easily changed.
* WIP First commit
* Generating different files from different templates
* Adding file to edit for adding database changelogs
* Tested the modify file step as well.
* Completed the plugin generation for today's plugins
* Tested with all the files getting generated property
* Not tracking node_modules
* Removes node_modules
* Incorporated review comments
* Minor refactoring
* Partial code change to replace question mark with appsmith placeholder
* Working version
* Removing unnecessary code
* Added test case to assert that when evaluated value contains a "?", the replacements are still correct
* Added test case in Mongo Plugin as well for the same scenario
* Minor change in the language of the comment
* WIP
* -redirect to newly created application after signup
* feat: create default application if no redirect url exists. also add a param to indicate first time user experience
* -updated function comment as per PR review
* -updated the create application using existing function
* -added check whether application is null when creating application page url
* -removed unnecessary refactoring
* -removed unused parameter from method
* Checking for anonymousUser when performing session check
* Using the custom path /rts instead of the default /socket.io. This makes the endpoint more readable & scalable for future websocket endpoints as well.
Also minor refactoring to simplify code flow making it easier to understand
Since we squash-merge all PRs, having the title conform to semantic PR guidelines is sufficient. We don't need to check the commits as well.
* minor fix to show empty app banner in the middle of the screen
* enforce the resolved comments filter, when user tries to open resolved comment directly through shared link
* minor fix: changed var name
* small fix to properly show the comment card action btns
* fix: if thread not present will show a warning
Fix potential race condition error that's killing RTS, when multiple several users leave a room at the same time, which isn't uncommon for our use case.
This is done by upgrading socket.io-adapter dependency to version 2.3.2, which includes fix from PR socketio/socket.io-adapter#74.
* feat: Add fillOptions prop to dropdown
- this will make width of dropdown popup same as width the selector
* Use dropdown width for option if fillOptions true
* Use dropdown width for option if fillOptions true
* hotfix: use optionWidth when fillOptions is false
* Add 260px as default width of DropdownOptions
* fix types
* hotfix typescript issue
* fix horizontal scrollbar visible
* hotfix type issue
* Added smart defaults for query in Count, Distinct & Find commands
* Added test cases for smart inputs for query and limit for find, and query for count and distinct
Introduced a new field called as total record count which can be used to disable the pagination controls while having server side pagination. If this value is undefined the conditions will be ignored. The total record count is `total count / page size`, all the parameters need to be bound to the query/API for the functionality to work properly
* This method removes the outermost quotes - single or double quotes - so that end users don't have to do it via javascript inside widget fields where they are meant to be bound.
Users should be able to look up relevant snippets based on where they trigger snippets from, narrow down the filter results based on entities, customize the snippet with custom data, evaluate and see its real time value.
* made inline comment pins draggable and added wrapper around overlay comments wrapper
* moved drag hook to pin
* can drag on canvas
* Properly updating the thread to be able to properly move the pin
* always passing the ref to container
* updating BE to save the new pins position
* minor fix
* changed a file name
* minor improvement to fix unit test
* fix, updated dragging reducer function to not expect appId
* removing unrelated change
* added drag and drop for comment pins without react dnd
* updated unit tests
* minor fix
* added a grab pointer and minor offset when user moves the pin
* removed unnecessary store states
* moved drop from onDragEnd to onDrop to reset everything.
* using state selector and dispatch hook
* removed use of anchor widget
* removed pointer change from comments wrapper
* verifying if current pin is being dragged
* updated action creator name
* moved dragging in comments reducer.
* using dragging thread id from store itself
* using relative positioning of pointer to predict the location of pin
* unit test cases fixed
* minor fix
* removed the dependency of off set from callback
* Form widget test cases
* Form widget Test Cases
- Form widget fixes
* Form widget Test Cases
Defult Form text, Reset and Close button Validation
Add Multiple widgets in Form
Form_Widget Minimize and maximize General Validation
Rename Form widget from Entity Explorer
Toggle JS - Form-Unckeck Visible field Validationpassed Toggle JS - Form-Check Visible field Validationpassed Copy Paste Validation
Form Delete Validation
* Form_test_cases_Fix
* Form test cases fix
Improve UX when entering `Table Header Index` value
BEFORE: Generate Template Button was hidden when the new column header is getting fetched. There was no loader for a user to understand that data is being fetched.
NOW: Generate Template Button is always visible and goes in a loading state when user data is being fetched.
CRUD Info modal which pops up on successful CRUD generation, will now have dynamic data for each CRUD template.
Modal success `message` and `Image` to explain the working of the CRUD template is fetched from the backend.
Co-authored-by: Abhijeet <ABHI.NAGARNAIK@GMAIL.COM>
* Added a new type of UIComponent for DB editor forms
* Added a new state for UQI evals and connected it to the rendering form
* Added sagas to init and run the UQI eval
* Exporting fetch function as a selector
* Moved selector code to the formSelector file
* Added type to state config holder, removed custom diff function and fixed imports
* Fixed path, added the type for plugin in selector
* Created new enum, abstracted function for render and fixed var names
Co-authored-by: Apeksha Bhosale <7846888+ApekshaBhosale@users.noreply.github.com>
The superuser signup api available at /users/super currently only supports JSON payload. This PR adds support for form-data payload at the same endpoint, and makes it consistent with the normal user's signup API endpoint.
* Upgrade Cypress Version
* Upgrade to 7.6
* update moment library with Dayjs
* updated a test
* Added tests for copy to clipboard
* Added a missing dsl
User now should have access to the table sort column if any through the `{{table.sortOrder}}` API. This will return an object when sort is active > {column: string, order: enum|‘asc’|'desc'}. There should also be a `onSort` action available which can trigger an Event
Custom fusion chart was loading with some delay and cypress test cases were getting previous element to verify the x axis data. Added one more check to wait till the chart data is loaded before verifying.
* The input box label in the Firestore plugin action editor reads Document / Collection Path which is misleading since a document is nested inside a collection and not the other way round. Hence changing it to Collection / Document Path
- Do not allow to generate CRUD app when selected table of datasource is empty (has no columns)
- Fix#6824: When the Dropdown is empty (has no options) do not show the dropdown option (popup) UI.
* Cut copy paste first cut
* removed different parent groups logic
* mouseup on the outer canvas removes selections.
* bug fix
* remove unwanted dead code.
* Adding tests
* build fix
* min height fixes
* fixing specs.
* fixing specs.
* fix merge conflcits
* fix border positioning
* fix canvas widgets incorrect bouding box
* fix bounding box position issue
* fix bounding box position issue
* fix
* border issue fix
* update test case
* add colors in theme
* use layers + use click capture on actions
* add icon for grouping
* fix overflow issue in contextmenu in containers
* fix context menu display issue
* update position of context menu
* fix container box-shadow issue
* fix container box-shadow issue
* revert container box shadow
* stop opening of property pane on shift clicking a widget
* remove console.log
* fix multiselect box issue
* add container on copy
* add analytics middleware
* refactor paste widget saga
* change flash element to accept array + revert refactor
* add logic to create containers from selected widgets
* update positions of grouped widgets
* fix comments + remove console
* update flashElementbyId to flashElementsById
* remove analytics middleware + remove unecessary imports
* add shorcut for grouping
* fix position issue when pasting
* allow grouping only when multi widgets are selected
* fix ux issues with widget grouping
* fix help text for grouping actions
* filter out the modal widget when calculting next row
* fix delete issue when grouping
* persist positin when grouping if there is no collision
* fix typo for new position
* changes for review comments
* changes for review comments
* fix position issue when pasting
* fix new container position issue
* move utils function to utils
* fix import issue
* fix the composite widget grouping issue
* fix table name bug
* remove repeated code
* move copied groups existence check;
* fix copied group check
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain>
Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
Added multiple style props to the button widget:
- Button styles
- The background colour can change with a hex code
- elevation (box-shadow & colour)
- There are button variant contained (solid button), outlined (only borders), text (text buttons)
- Button can have an end icon or start icon
- [x] Draw to select from outside of the editor.
- [x] Cmd + A to select child widgets inside containers, forms, list, tabs, and modals.
Fixes#5995Fixes#6102
- Menu widget needs to show transparent background
- Make background none if user choose no background colour
- Adopt button style options(menu style, variant, box shadow, border radius)