Go to file
Andrew Kingston 55ce83c444 Grid UI in data section (#10329)
* Add WIP spreadsheet

* Add footer and improve styles

* Refactor to use IDs and support changing text values inline

* Add inline editing of options fields

* Add row deletion and fix sizing

* Add ability to add new rows

* Fix z-index issue with option cells

* Remove deletion notification and fix selection

* Add gap between items in an options cell

* Tweak options cell to be pixel perfect

* Fix padding around sheet not working when scrolling

* Add resizable columns and add support for all themes

* Allow multiselect component and field to support text values

* Generate inclusion schema when importing multiselect columns

* Add support for multiselect type

* Add number cell

* Add functional date cell

* Disable editing autocolumns

* Make sticky column the primary display and fix opening options cells

* Improve display of relationship cell and options cell

* Support empty dates and use CSS variables for easier styling

* Use more CSS variables and add utils to spreadsheets

* Add drag and drop column reordering

* Break out reordering logic into new stores

* Rename reordering to reorder

* Break out other components from spreadsheet for cleaner code

* Break out spreadsheet body into its own component

* Split into more modular components and try virtual rendering

* Test absolute positioning

* Optimise virtual rendering for both columns and rows to handle infinitely large datasets

* Optimise scrolling and virtual rendering performance

* Fix columnn reordering

* Migrate sheet to data section, improve reordering and reszing

* Clean up more sheet state and increase performance

* Fix multiple issues with z-index, reordering and resizing

* Fix date cells in sheets

* Separate data fetching logic from main sheet and tidy up

* Add infinite scroll, improve row fetching, add error handling, fix svelte store updates

* Fix overly thin scrollbars in firefox

* Use nicer checkboxes and fix some hover styles

* Fix issue reordering columns in firefox and increase performance

* Tidy up

* Use search endpoint instead of get endpoint to fetch individual rows so that relationship enrichment occurs

* Tidy up

* Fix relationship issues when creating rows

* Optimise resetting data to smoothly transition when changing datasource

* Add WIP virtual dom implementation to massively increase performance

* Refactor spreadsheet into more discreet components

* Fix multiple issues, clean up rendering, improve performance

* Tune cell sizes

* Fix some scroll issues and add shadow to sticky column

* Fix issue when no primary display is set

* Add padding to sheet

* Improve styles

* Allow reordering columns to be the first column after sticky column

* Fix row hover state not being removed

* Update hovered row on wheel

* Update scroll styles and z-index

* Improve scroll logic and handle horizontal wheel events

* Simplify and improve z index styles

* Fix styles when using no sticky columns

* Improve rendering performance

* Improve performance by removing keyed each blocks and fix reorder target styling

* Ensure scroll top is always properly reset and add config store

* Allow configuring selecting rows and adding rows

* Integrate sheet into data section better

* Add back in functional delete row button

* Refactor stores and make state more modular

* Lint and remove unused deps

* Remove add column button

* Fix options cells being unable to scroll

* Add WIP initial multi-user websocket implementation for sheets

* Add WIP multi-user UI for sheet interface

* Fix issues with not disconnecting users when swapping datasource and improve multi-user UI

* Update layout and remove logging

* WIP column popovers for dataspace sheets

* Add popovers to sheet column headers, improve mouse UX

* Tidy reordering stuff

* Refactor resizing logic into store and improve UX around hover events when resizing/reordering

* Add column sorting and reordering via popover

* Handle context menu events in header cells

* Fully integrates sheets with datasection and remove lots of old stuff

* Fix buttons being highlighted when filters are set

* Add flags for controlling editing and adding rows in sheets

* Count context menu clicks when considering the click outside handler

* Prevent adding rows to users table and remove log

* Expose loading state of sheet and improve column highlighting logic

* Small style updates

* Update delete button and allow horizontal scrolling

* Add context menu to sheets with deletion and duplication features

* Improve UX around selecting rows and cells

* Add basic keyboard interactions to dataspaces

* Improve keyboard navigation in sheets

* Remove unnecessary searching through large rows array

* Fix issue with deleting rows and fix relationship cells displaying undefined

* Improve loading state

* Update menu width

* Merge with new shared-core and moved lucene utils

* Improve rendering performance and simplify component props

* Remove new row component and improve mouse interactions

* Tidy up buttons above sheets and add FAB for adding rows

* Optimise sheet data loading and add sort button

* Update sorting and remove logs

* Add sheet button to control column visibilty, improve sorting, improve disabled states

* Fix bug with select placeholders and fix sorting loops causing endless refreshes

* Update filter button to look consistent and add double click to resize columns to default width

* Ensure all derived stores have default values

* Reset scrolling when datasource changes and fix wasted pagination calls

* Improve performance by removing searches through the full row array

* Add advanced key handling for spreadsheets and improve blur and focus UX

* Ensure the selected cell is always visible

* Add icons for all data types

* Add new long form text cell

* Add boolean cell

* Add ability to focus first cell via tab

* Add cells for formulae and JSON

* Remove console logs

* Add attachment cell

* Increase padding to account for attachment dropdown

* Prevent deleting autocolumns via keyboard

* Fix attachments overflowing

* Improve sort button, remove header more icons unless hovered and highlight sorted column

* Add functional relationship cell

* Improve relationship cell

* Fix race conditions and edge cases in relationship cell

* Update user avatar colours

* Improve preservation of column widths in sheets when making schema changes

* Remove redundant sheet schema context and fix issues with mutating table schema

* Disable websocket in sheets

* Rollback state changes when row saving fails

* Fix one-to-many relationships allowing selecting multiple rows on both sides

* Remove log

* Make sheet gutter width customisable

* Allow expanding rows using existing edit row modal

* Fix text cell not using full width

* Sort columns to put autocolumns last

* Add new footer for adding rows, improve store memoization, support inverting all data types

* Improve animations for adding rows and handle add row failure

* Ensure all sheet feature flags work as expected and fix multi row deletion

* Fix options ordering

* Fix add row button not appearing when horizontal scrollbar is hidden

* Fix selecting newly created rows

* Remove log and add notification when creating or editing columns

* Move new row component to top, automatically invert cell renderers when required

* Add resizable rows

* Fix overlapping long form text borders

* Fix scroll not working in new row

* Update new row component, fix z-index issues, improve UX

* Large refactors to row creation, naming and sheet APIs

* Refactor stores to fix dependency issues, use modals for adding rows, simplify sheet

* Fix resize overlays

* Add custom colors for drop shadows and blue-100 to all themes, fix sticky column shadow

* Increase horizontal padding when scrolling to a selected cell

* Add multiple validation improvements

* Add validation to duplicating rows

* Remove log

* Restore missing event handler

* Improve data fetch reset logic, fix issues with stale cache in spreadsheets

* Fix issue with cell colors, improve row API interactions to avoid relationship issues due to API response differences

* Fix filters not working

* Simplify logic for reordering and add new overlay. Simplify sheet cells

* Fix importing and exporting with sheets

* Fix reorder overlay z-index issue

* Fix issue when no display column exists

* Fix issue with display column not being able to be unset

* Add persitence to column size and order in sheets

* Improve sheet integration with data section and add horizontal cell inversion

* Fix double click resizing of sticky column

* Make column visibility persistent and refactor column updating

* Improve sheet loading states

* Add beta button to sheet, tidy up constants

* Work around table API inconsistencies to handle table schema updates

* Add additional reorder options and improve beta button

* Improve sorting

* Add copy and paste to spreadsheet and add immediate editing of cells without additional click

* Remove copy/paste rows, remove move to start/end, improve copy/paste for cell values

* Fix dependency ordering

* Refactor other sheet stores to improve dependency ordering

* Fix errors not showing in sticky column and clear cell value on backspace press

* Rewrite relationship cell and update default column widths

* Ensure dynamic row height is properly accounted for

* Update text cells, number cells, long form field cells and relationship cells to respect row height

* Fix row heights with sticky column

* Update JSON, boolean and date cells to respect row height

* Update attachment cell to respect row height

* Use unique background for focused cell

* Standardise shadows across cell types

* Persist row height as table metadata

* Improve a few design issues

* Clean up

* Fix relationship cells not being readonly

* Lint

* Fix icon padding in relationship picker

* Improve styles in relationship dropdown

* Update shadow

* Update relationship icons

* Update relationship icons

* Update error label max size and position

* Prevent using invalid data types as display columns

* Add menu option to edit rows in modal

* Prevent sheet handling key events sourcing from modals

* Standardise menu overlay shadow and add count to relationship cells when hovering

* Improve relationship cell performance

* Remove spellcheck from text fields

* Fix resize overlay handler height

* Fix reorder overlay height

* Remove unused code and change selected table faster in data section

* Fix table selection not working when on datasource page

* Improve sheet loading state

* Add rowHeight property to table types

* Restore builder middleware

* Remove any naming of dataspaces

* Lint

* Disable row import button for users table and add optional chaining to spreadsheetsocket invocations to fix tests

* Use unique user edit modal for editing users in sheets

* Add schemaOverrides prop to sheet and use it to customise user table schema

* Update number icon

* Fix primary display column not properly disabling certain menu options

* Merge

* Update beta button position slightly

* Update beta button text

* Fix HMR for custom plugins which was broken due to signed minio links

* Add maze link to grid

* Update koa <> socket.io integation to improve fake koa context and allow current app middleware

* Rename sheet to grid

* Fix menu postiion, fix copy and paste in menu not working

* Remove commented out usages of websocket emissions for grid
2023-04-20 15:56:24 +01:00
.github Merge branch 'develop' into chore/pro_as_submodule 2023-04-19 10:22:48 +01:00
.husky Fix hook 2023-04-17 19:36:48 +01:00
.vscode Svelte docs 2023-02-02 11:22:15 +00:00
charts/budibase allow ssl-policy annotation in helm chart (#10357) 2023-04-20 13:57:34 +01:00
docs Include troubleshoot for arm64 CPU in DEV-SETUP-MACOSX.md 2023-04-20 11:40:37 +02:00
examples/nextjs-api-sales Bump json5 from 1.0.1 to 1.0.2 in /examples/nextjs-api-sales 2023-01-05 09:08:40 +00:00
hosting Rotatable secrets (#9982) 2023-03-13 15:02:59 +00:00
i18n spanish README 2022-08-05 10:45:41 +01:00
packages Grid UI in data section (#10329) 2023-04-20 15:56:24 +01:00
qa-core Merge branch 'develop' into chore/pro_as_submodule 2023-04-18 12:21:38 +01:00
scripts Link pro only when it exists locally 2023-04-19 10:09:12 +01:00
specs Adding a top level script for generating specs, symlinking the openapi yaml and json to top level as well. 2022-03-01 18:42:52 +00:00
.all-contributorsrc Update .all-contributorsrc 2022-08-09 13:32:28 +05:30
.dockerignore Single docker container configuration. 2022-04-01 01:00:52 +01:00
.eslintignore Ignore coverage reports from linting 2022-11-15 16:21:21 +00:00
.eslintrc.json Merge branch 'master' into merge-master 2022-03-25 13:10:37 +00:00
.gitignore Allow proxy upstream URLs to be configured at runtime (#7413) 2022-12-20 16:28:13 +00:00
.gitmodules Setup pro 2023-04-11 17:12:50 +01:00
.nvmrc Undo node version update 2023-04-17 15:40:34 +01:00
.nxignore Add extra ignores 2023-04-04 08:44:05 +01:00
.prettierignore Ignore coverage reports from linting 2022-11-15 16:21:21 +00:00
.prettierrc.json removing a basic warning so it doesn't add to the others that will surely come. 2022-08-28 22:48:02 -07:00
.python-version Downgrade python 2023-04-04 08:44:05 +01:00
.tool-versions Undo node version update 2023-04-17 15:40:34 +01:00
.yarnrc Updating dockerfile to be friendly to volume usage, as well as pre-filling with uuids rather than static secrets. 2022-07-08 18:33:07 +01:00
LICENSE License cleanup 2021-11-17 14:21:16 +00:00
README.md Renaming data source -> datasource as per Mel's request. 2022-09-14 12:11:20 +01:00
SECURITY.md Create SECURITY.md 2021-09-06 07:57:47 +01:00
artifacthub-repo.yml add artifacthub.io repo verification file 2022-12-01 10:16:32 +00:00
index.yaml index.yaml 2021-12-13 12:46:54 +01:00
jestTestcontainersConfigGenerator.js Remove redundant env from jestTestcontainersConfigGenerator 2023-02-01 11:49:25 +00:00
lerna.json Merge pull request #10267 from Budibase/chore/pro_as_submodule 2023-04-19 18:23:28 +02:00
nx.json Cache build and test 2023-04-04 08:44:05 +01:00
package.json Complete `submodules:unload` script 2023-04-19 10:21:07 +01:00
pull_request_template.md Update pull_request_template.md 2023-01-26 18:20:21 +00:00
yarn.lock Grid UI in data section (#10329) 2023-04-20 15:56:24 +01:00

README.md

Budibase

Budibase

The low code platform you'll enjoy using

Budibase is an open source low-code platform, and the easiest way to build internal apps that improve productivity.

🤖 🎨 🚀


Budibase design ui

GitHub all releases GitHub release (latest by date) Follow @budibase Code of conduct

Get started - we host (Budibase Cloud) · Get started - you host (Docker, K8s, DO) · Docs · Feature request · Report a bug · Support: Discussions



Features

Build and ship real software

Unlike other platforms, with Budibase you build and ship single page applications. Budibase applications have performance baked in and can be designed responsively, providing your users with a great experience.

Open source and extensible

Budibase is open-source - licensed as GPL v3. This should fill you with confidence that Budibase will always be around. You can also code against Budibase or fork it and make changes as you please, providing a developer-friendly experience.

Load data or start from scratch

Budibase pulls in data from multiple sources, including MongoDB, CouchDB, PostgreSQL, MySQL, Airtable, S3, DynamoDB, or a REST API. And unlike other platforms, with Budibase you can start from scratch and create business apps with no datasources. Request new datasources.

Budibase data



Design and build apps with powerful pre-made components

Budibase comes out of the box with beautifully designed, powerful components which you can use like building blocks to build your UI. We also expose a lot of your favourite CSS styling options so you can go that extra creative mile. Request new component.

Budibase design



Automate processes, integrate with other tools, and connect to webhooks

Save time by automating manual processes and workflows. From connecting to webhooks, to automating emails, simply tell Budibase what to do and let it work for you. You can easily create new automations for Budibase here or Request new automation.

Budibase automations



Integrate with your favorite tools

Budibase integrates with a number of popular tools allowing you to build apps that perfectly fit your stack.

Budibase integrations



Admin paradise

Budibase is made to scale. With Budibase, you can self-host on your own infrastructure and globally manage users, onboarding, SMTP, apps, groups, theming and more. You can also provide users/groups with an app portal and disseminate user-management to the group manager.




Budibase Public API

As with anything that we build in Budibase, our new public API is simple to use, flexible, and introduces new extensibility. To summarize, the Budibase API enables:

  • Budibase as a backend
  • Interoperability

Docs

You can learn more about the Budibase API at the following places:

Guides

Budibase data






🏁 Get started

Deploy Budibase self-hosted in your existing infrastructure, using Docker, Kubernetes, and Digital Ocean. Or use Budibase Cloud if you don't need to self-host, and would like to get started quickly.

Get started with self-hosting Budibase

Get started with Budibase Cloud



🎓 Learning Budibase

The Budibase documentation lives here.



💬 Community

If you have a question or would like to talk with other Budibase users and join our community, please hop over to Github discussions




Code of conduct

Budibase is dedicated to providing a welcoming, diverse, and harrassment-free experience for everyone. We expect everyone in the Budibase community to abide by our Code of Conduct. Please read it.



🙌 Contributing to Budibase

From opening a bug report to creating a pull request: every contribution is appreciated and welcomed. If you're planning to implement a new feature or change the API please create an issue first. This way we can ensure your work is not in vain. Environment setup instructions are available for Debian and MacOSX

Not Sure Where to Start?

A good place to start contributing, is the First time issues project.

How the repository is organized

Budibase is a monorepo managed by lerna. Lerna manages the building and publishing of the budibase packages. At a high level, here are the packages that make up Budibase.

  • packages/builder - contains code for the budibase builder client side svelte application.

  • packages/client - A module that runs in the browser responsible for reading JSON definition and creating living, breathing web apps from it.

  • packages/server - The budibase server. This Koa app is responsible for serving the JS for the builder and budibase apps, as well as providing the API for interaction with the database and file system.

For more information, see CONTRIBUTING.md



📝 License

Budibase is open-source, licensed as GPL v3. The client and component libraries are licensed as MPL - so the apps that you build can be licensed however you like.



Stargazers over time

Stargazers over time

If you are having issues between updates of the builder, please use the guide here to clear down your environment.



Contributors

Thanks goes to these wonderful people (emoji key):


Martin McKeaveney

💻 📖 ⚠️ 🚇

Michael Drury

📖 💻 ⚠️ 🚇

Andrew Kingston

📖 💻 ⚠️ 🎨

Michael Shanks

📖 💻 ⚠️

Kevin Åberg Kultalahti

📖 💻 ⚠️

Joe

📖 💻 🖋 🎨

Rory Powell

💻 📖 ⚠️

Peter Clement

💻 📖 ⚠️

Conor_Mack

💻 ⚠️

pngwn

💻 ⚠️

HugoLd

💻

victoriasloan

💻

yashank09

💻

SOVLOOKUP

💻

seoulaja

🌍

Maurits Lourens

⚠️ 💻

This project follows the all-contributors specification. Contributions of any kind welcome!