Browse Source

Merge branch 'dev-experience' of github.com:Budibase/budibase into dev-experience

master
mike12345567 6 years ago
parent
commit
0d0c2cde32
  1. 4
      packages/bbui/src/Actions/position_dropdown.js
  2. 2
      packages/bbui/src/Stores/notifications.js
  3. 20
      packages/builder/cypress/integration/createView.spec.js
  4. 4
      packages/builder/cypress/support/commands.js
  5. 2
      packages/builder/src/components/backend/DataTable/popovers/CreateViewPopover.svelte
  6. 108
      packages/builder/src/pages/builder/[application]/_reset.svelte
  7. 7
      packages/builder/src/pages/builder/[application]/design/[assetType]/_layout.svelte
  8. 2
      packages/builder/src/pages/builder/[application]/design/_layout.svelte
  9. 2
      packages/builder/vite.config.js

4
packages/bbui/src/Actions/position_dropdown.js

@ -48,11 +48,11 @@ export default function positionDropdown(element, { anchor, align }) {
element.style.left = `${calcLeftPosition(dimensions).toFixed(0)}px` element.style.left = `${calcLeftPosition(dimensions).toFixed(0)}px`
const resizeObserver = new ResizeObserver(entries => { const resizeObserver = new ResizeObserver(entries => {
for (let entry of entries) { entries.forEach(() => {
dimensions = getDimensions() dimensions = getDimensions()
element.style[positionSide] = `${dimensions[positionSide]}px` element.style[positionSide] = `${dimensions[positionSide]}px`
element.style.left = `${calcLeftPosition(dimensions).toFixed(0)}px` element.style.left = `${calcLeftPosition(dimensions).toFixed(0)}px`
} })
}) })
resizeObserver.observe(anchor) resizeObserver.observe(anchor)

2
packages/bbui/src/Stores/notifications.js

@ -11,8 +11,6 @@ const createNotificationStore = () => {
}) })
} }
let timers = []
const notifications = derived(_notifications, ($_notifications, set) => { const notifications = derived(_notifications, ($_notifications, set) => {
set($_notifications) set($_notifications)
if ($_notifications.length > 0) { if ($_notifications.length > 0) {

20
packages/builder/cypress/integration/createView.spec.js

@ -109,15 +109,17 @@ context("Create a View", () => {
.find(".ag-cell") .find(".ag-cell")
.then($values => { .then($values => {
const values = Array.from($values).map(value => value.textContent) const values = Array.from($values).map(value => value.textContent)
expect(values.sort()).to.deep.eq([ expect(values.sort()).to.deep.eq(
"Students", [
"23.333333333333332", "Students",
"1650", "23.333333333333332",
"3", "1650",
"25", "3",
"20", "25",
"70", "20",
].sort()) "70",
].sort()
)
}) })
}) })

4
packages/builder/cypress/support/commands.js

@ -57,9 +57,9 @@ Cypress.Commands.add("createApp", name => {
Cypress.Commands.add("deleteApp", name => { Cypress.Commands.add("deleteApp", name => {
cy.visit(`localhost:${Cypress.env("PORT")}/builder`) cy.visit(`localhost:${Cypress.env("PORT")}/builder`)
cy.get("body").then($body => { cy.get(".apps").then($apps => {
cy.wait(1000) cy.wait(1000)
if ($body.find(`[data-cy="app-${name}"]`).length) { if ($apps.find(`[data-cy="app-${name}"]`).length) {
cy.get(`[data-cy="app-${name}"] a`).click() cy.get(`[data-cy="app-${name}"] a`).click()
cy.get("[data-cy=settings-icon]").click() cy.get("[data-cy=settings-icon]").click()
cy.get(".modal-content").within(() => { cy.get(".modal-content").within(() => {

2
packages/builder/src/components/backend/DataTable/popovers/CreateViewPopover.svelte

@ -26,7 +26,7 @@
notifier.success(`View ${name} created`) notifier.success(`View ${name} created`)
onClosed() onClosed()
analytics.captureEvent("View Created", { name }) analytics.captureEvent("View Created", { name })
$goto(`../../../view/${name}`) $goto(`../../view/${name}`)
} }
</script> </script>

108
packages/builder/src/pages/builder/[application]/_reset.svelte

@ -45,65 +45,71 @@
} }
</script> </script>
<div class="root"> {#await promise}
<div class="top-nav"> <!-- This should probably be some kind of loading state? -->
<div class="topleftnav"> <div class="loading" />
<button class="home-logo"> {:then _}
<img <div class="root">
src={Logo} <div class="top-nav">
alt="budibase icon" <div class="topleftnav">
on:click={() => $goto(`/builder/`)} /> <button class="home-logo">
</button> <img
src={Logo}
<!-- This gets all indexable subroutes and sticks them in the top nav. --> alt="budibase icon"
{#each $layout.children as { path, title }} on:click={() => $goto(`/builder/`)} />
<span </button>
class:active={$isActive(path)}
class="topnavitem" <!-- This gets all indexable subroutes and sticks them in the top nav. -->
on:click={topItemNavigate(path)}> {#each $layout.children as { path, title }}
{title} <span
</span> class:active={$isActive(path)}
{/each} class="topnavitem"
</div> on:click={topItemNavigate(path)}>
<div class="toprightnav"> {title}
<ThemeEditorDropdown /> </span>
<FeedbackNavLink /> {/each}
<div class="topnavitemright"> </div>
<a <div class="toprightnav">
target="_blank" <ThemeEditorDropdown />
href="https://github.com/Budibase/budibase/discussions"> <FeedbackNavLink />
<i class="ri-github-fill" /> <div class="topnavitemright">
</a> <a
target="_blank"
href="https://github.com/Budibase/budibase/discussions">
<i class="ri-github-fill" />
</a>
</div>
<SettingsLink />
<Button
secondary
on:click={() => {
window.open(`/${application}`)
}}>
Preview
</Button>
</div> </div>
<SettingsLink /> </div>
<div class="beta">
<Button <Button
secondary secondary
on:click={() => { href="https://github.com/Budibase/budibase/discussions/categories/ideas">
window.open(`/${application}`) Request feature
}}>
Preview
</Button> </Button>
</div> </div>
</div>
<div class="beta">
<Button
secondary
href="https://github.com/Budibase/budibase/discussions/categories/ideas">
Request feature
</Button>
</div>
{#await promise}
<!-- This should probably be some kind of loading state? -->
<div />
{:then _}
<slot /> <slot />
{:catch error} </div>
<p>Something went wrong: {error.message}</p> {:catch error}
{/await} <p>Something went wrong: {error.message}</p>
</div> {/await}
<style> <style>
.loading {
min-height: 100%;
height: 100%;
width: 100%;
background: var(--background);
}
.root { .root {
min-height: 100%; min-height: 100%;
height: 100%; height: 100%;

7
packages/builder/src/pages/builder/[application]/design/[assetType]/_layout.svelte

@ -18,6 +18,7 @@
let previousType let previousType
let previousAsset let previousAsset
let previousComponentId let previousComponentId
let hydrationComplete = false
// Hydrate state from URL params // Hydrate state from URL params
$: hydrateStateFromURL($params, $leftover) $: hydrateStateFromURL($params, $leftover)
@ -30,6 +31,12 @@
) )
const hydrateStateFromURL = (params, leftover) => { const hydrateStateFromURL = (params, leftover) => {
if (hydrationComplete) {
return
} else {
hydrationComplete = true
}
// Do nothing if no asset type, as that means we've left the page // Do nothing if no asset type, as that means we've left the page
if (!params.assetType) { if (!params.assetType) {
return return

2
packages/builder/src/pages/builder/[application]/design/_layout.svelte

@ -1,2 +1,2 @@
<!-- routify:options index=1 --> <!-- routify:options index=1 -->
<slot /> <slot />

2
packages/builder/vite.config.js

@ -27,7 +27,7 @@ export default ({ mode }) => {
}), }),
], ],
optimizeDeps: { optimizeDeps: {
include: ['ag-grid-community'], include: ["ag-grid-community"],
exclude: ["@roxi/routify"], exclude: ["@roxi/routify"],
}, },
resolve: { resolve: {

Loading…
Cancel
Save