budibase/packages/bbui/src/ActionButton/ActionButton.svelte

102 lines
2.4 KiB
Svelte
Raw Normal View History

2021-04-09 13:38:48 +02:00
<script>
2021-04-23 09:41:49 +02:00
import "@spectrum-css/actionbutton/dist/index-vars.css"
import { createEventDispatcher } from "svelte"
const dispatch = createEventDispatcher()
2021-04-09 13:38:48 +02:00
2021-04-23 09:41:49 +02:00
export let quiet = false
export let emphasized = false
export let selected = false
export let longPressable = false
export let disabled = false
export let icon = ""
2021-04-27 16:18:52 +02:00
export let size = "M"
export let active = false
export let fullWidth = false
export let noPadding = false
2021-04-23 15:45:10 +02:00
2021-04-23 09:41:49 +02:00
function longPress(element) {
if (!longPressable) return
let timer
2021-04-09 13:38:48 +02:00
2021-04-23 09:41:49 +02:00
const listener = () => {
timer = setTimeout(() => {
dispatch("longpress")
}, 700)
}
2021-04-09 13:38:48 +02:00
2021-04-23 09:41:49 +02:00
element.addEventListener("pointerdown", listener)
2021-04-09 13:38:48 +02:00
2021-04-23 09:41:49 +02:00
return {
destroy() {
clearTimeout(timer)
element.removeEventListener("pointerdown", longPress)
},
2021-04-09 13:38:48 +02:00
}
2021-04-23 09:41:49 +02:00
}
2021-04-09 13:38:48 +02:00
</script>
2021-04-23 09:41:49 +02:00
<button
use:longPress
class:spectrum-ActionButton--quiet={quiet}
class:spectrum-ActionButton--emphasized={emphasized}
class:is-selected={selected}
class:noPadding
class:fullWidth
2021-04-27 16:18:52 +02:00
class="spectrum-ActionButton spectrum-ActionButton--size{size}"
class:active
2021-04-23 09:41:49 +02:00
{disabled}
on:longPress
on:click|preventDefault
>
2021-04-23 09:41:49 +02:00
{#if longPressable}
<svg
class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold"
focusable="false"
aria-hidden="true"
>
2021-04-23 09:41:49 +02:00
<use xlink:href="#spectrum-css-icon-CornerTriangle100" />
</svg>
{/if}
{#if icon}
<svg
2021-04-27 16:18:52 +02:00
class="spectrum-Icon spectrum-Icon--size{size}"
2021-04-23 09:41:49 +02:00
focusable="false"
aria-hidden="true"
aria-label={icon}
>
2021-04-23 09:41:49 +02:00
<use xlink:href="#spectrum-icon-18-{icon}" />
</svg>
{/if}
{#if $$slots}
<span class="spectrum-ActionButton-label"><slot /></span>
{/if}
2021-04-09 13:38:48 +02:00
</button>
<style>
.fullWidth {
width: 100%;
}
.active,
.active svg {
color: var(--spectrum-global-color-blue-600);
}
:global([dir="ltr"] .spectrum-ActionButton .spectrum-Icon) {
margin-left: 0;
transition: color ease-out 130ms;
}
.is-selected:not(.spectrum-ActionButton--emphasized):not(.spectrum-ActionButton--quiet) {
background: var(--spectrum-global-color-gray-300);
Onboarding core components (#9412) * Update BB logo to black * Update top nav bar and core layout * Add redesign for apps pages * Update user and groups pages * More WIP portal redesign! * Fix top nav colours and fix selected tab not updating * Remove log * Update copy on settings pages * Update and standardise page headers and subtitles, and remove side nav titles * Update font styles to allow for easy customisation * Update button styles to always use newStyles, update auth page styles * Update settings pages to new designs * Update structure for account pages * Add initial rewrite of app overview section * Update config checklist to properly center * Update app overview version and name/url screens * Add tooltip to explain why URL cannot be changed until unpublishing * Update overview automation history tab * Update overview backups page * Rewrite app overview access tab * Update table hover colours * Remove scrolling from tables when not required and stop selects from updating their own state locally * Update table styles to support flexible column widths much better * Fix extremely long strings in breadcrumbs not wrapping * Fix multiple issues with long text overflow * Fix flashing in version settings page * Fix loading bugs in app backups page * Add sidebar for portal and use it for automation history. Fix multiple overflow and scrolling issues * Tidy up * Update user details page to use tables and match designs * Update users detail page * Update user and group details pages with new tables * Fix automation error linking from apps page and improve automation fetching logic in automation history * Move theme and API key into user profile dropdown instead of settings * Move settings before account and show plugins for devs * Convert plugins page to table and update components and modals * Update links when going back from the builder * Update plugin search placeholder * Fix URLs in app overview * Properly handle text overflow in plugins table * Remove getting started checklist * Fix checklist removal and fix profile modal * Update email details page to match new designs * Cleanup * Add licensing and env logic to determine which account links to show * Update upgrade button URL for cloud accounts * Update app list to use a more compact style * Make core page layout responsive and update apps list to be responsive * Update mobile design of apps page * Update more pages to be responsive and add mobile specific components * Refactor main portal page into multiple components * Update multiple pages to be responsive and improve loading experience * Make automation history page responsive * Update backups page to be responsive * Update pickers to use absolutely positioned root popover so that overflow does not matter * Fix some responsive styles * Fix update link in app overview * Improve dropdown logic * Lint * Update click outside handler to handle modals properly * Remove log * Fix mobile menu upgrade button not closing menu * Hide groups page if disabled at tenant level * Centralise menu logic and show full menu on mobile * Update app access assignment and fix backups table * Ensure avatars cannot be squished * Standardise disabled field text colour * Allow developer users to access users, groups and usage pages * Allow readonly access to users and groups for developer users * Remove logs * Improve users page loading experience * Improve responsiveness on apps list page and fix discussions link styles * Update spacing on user and group detail page and fix usage page showing wrong copy * Fix logo override not working * Pin minio version to an old one that supports the fs backend in dev * Shrink upgrade button * Shrink user dropdown * Update assignment modal text * Remove clickable visual styles from plugins * Always show groups section in app access page * Update app overview button styles to include more CTAs * Hide edit and view links in more menu on overview page unless on mobile * Make usage stats responsive and fix layout issues * Add core page layout for onboarding to frontend-core * Add initial work on fancy form components for onboarding * Add checkbox component and add error handling to fancy form fields * Add fancy select and improve other fancy components * Update fancy components and fix select rounded corners * Fix mobile styles for split pages * Revert google button * Fix links not working with click handlers * Fix label animation * Improve styles of fancy components * Improve mobile compatibility with fancy button radio * Revert changes to builder files for testing * Tidy up small UI issues * Improve some minor design issues * Fix issue with scroll padding not being applied * Ensure unauthorised users cannot view pages they should not be able to * Lint
2023-01-23 16:38:43 +01:00
border-color: var(--spectrum-global-color-gray-700);
}
.noPadding {
padding: 0;
min-width: 0;
}
.spectrum-ActionButton--quiet {
padding: 0 8px;
}
.is-selected:not(.emphasized) .spectrum-Icon {
color: var(--spectrum-global-color-gray-900);
}
</style>