-
-
+
+
-
-
+
+
+
+
+ {#if $$slots.utils}
+
+
+ {/if}
+
+
+
+ {#if $$slots.header || ($$slots.actions && minimize)}
+
+ {/if}
+ {#if $$slots['custom-attributes']}
+ {#if isSub}{/if}
+ {:else}
+ {#if $$slots.attributes && minimize}{/if}
+ {/if}
+
+
+
+
+ {#if $$slots.actions}
+
+ {/if}
+ {#if $$slots['custom-attributes']}
+
+ {:else}
+ {#if $$slots.attributes}
{/if}
+ {/if}
+ {#if $$slots.aside}
{/if}
+
+
+
+ {#if rightSection !== undefined}
-
+ {:else}
+
+
+
+ {/if}
diff --git a/packages/theme/styles/_colors.scss b/packages/theme/styles/_colors.scss
index b463e03fbe..130a6293a4 100644
--- a/packages/theme/styles/_colors.scss
+++ b/packages/theme/styles/_colors.scss
@@ -80,6 +80,8 @@
--popup-bg-hover: #37373c;
--popup-divider: #313236;
--popup-shadow: rgb(0 0 0 / 20%) 0px 4px 24px;
+ --popup-panel-shadow: rgb(0 0 0 / 55%) 0px 7px 24px;
+ --popup-aside-shadow: rgb(0 0 0 / 25%) 0px 8px 16px;
--card-shadow: rgb(0 0 0 / 50%) 0px 16px 70px;
--card-overlay-color: rgba(28, 29, 31, .5);
--avatar-bg-color: #4f5358;
@@ -220,6 +222,7 @@
--popup-bg-hover: #f8f9fb;
--popup-divider: #eff1f4;
--popup-shadow: rgb(0 0 0 / 20%) 0px 4px 24px; // Dark
+ --popup-panel-shadow: rgb(0 0 0 / 55%) 0px 7px 24px; // Dark
--card-shadow: rgb(0 0 0 / 50%) 0px 16px 70px;
--card-overlay-color: rgba(144, 149, 157, .4);
--avatar-bg-color: #e0e0e0; // HZ
diff --git a/packages/theme/styles/_layouts.scss b/packages/theme/styles/_layouts.scss
index 495005d9a2..84210dab75 100644
--- a/packages/theme/styles/_layouts.scss
+++ b/packages/theme/styles/_layouts.scss
@@ -263,6 +263,12 @@ p:last-child { margin-block-end: 0; }
grid-auto-flow: row;
}
}
+.buttons-divider {
+ min-width: 1px;
+ width: 1px;
+ height: 1.5rem;
+ background-color: var(--divider-color);
+}
.gap-1, .gap-1-5, .gap-2 {
& > *:not(:last-child) { margin-right: .25rem; }
@@ -365,6 +371,7 @@ p:last-child { margin-block-end: 0; }
.pb-3 { padding-bottom: .75rem; }
.pb-4 { padding-bottom: 1rem; }
.px-2 { padding: 0 .5rem; }
+.px-3 { padding: 0 .75rem; }
.px-4 { padding: 0 1rem; }
.p-1 { padding: .25rem; }
@@ -419,6 +426,7 @@ p:last-child { margin-block-end: 0; }
.h-7 { height: 1.75rem; }
.h-8 { height: 2rem; }
.h-9 { height: 2.25rem; }
+.h-14 { height: 3.5rem; }
.h-16 { height: 4rem; }
.h-18 { height: 4.5rem; }
.w-full { width: 100%; }
diff --git a/packages/theme/styles/common.scss b/packages/theme/styles/common.scss
index c75412bf09..f78b0e4756 100644
--- a/packages/theme/styles/common.scss
+++ b/packages/theme/styles/common.scss
@@ -202,3 +202,48 @@
.antiNav-bottomFade { mask-image: linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 1px, rgba(0, 0, 0, 1) calc(100% - 2rem), rgba(0, 0, 0, 0) 100%); }
.antiNav-bothFade { mask-image: linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 2rem, rgba(0, 0, 0, 1) calc(100% - 2rem), rgba(0, 0, 0, 0) 100%); }
.antiNav-noneFade { mask-image: linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 1) 1px, rgba(0, 0, 0, 1) calc(100% - 1px), rgba(0, 0, 0, 0) 100%); }
+
+/* Basic */
+.antiTitle {
+ .icon-wrapper,
+ .title-wrapper {
+ display: flex;
+ flex-wrap: nowrap;
+ min-width: 0;
+ }
+ .title-wrapper {
+ flex-direction: column;
+ flex-grow: 1;
+ }
+ .icon-wrapper { align-items: center; }
+
+ .wrapped-icon {
+ margin-right: .75rem;
+ color: var(--content-color);
+ }
+ .wrapped-title {
+ min-width: 0;
+ font-weight: 500;
+ font-size: 1rem;
+ color: var(--caption-color);
+
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ user-select: none;
+ }
+ .wrapped-subtitle {
+ min-width: 0;
+ font-size: 0.75rem;
+ color: var(--dark-color);
+
+ overflow: hidden;
+ visibility: visible;
+ display: -webkit-box;
+ /* autoprefixer: ignore next */
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ line-clamp: 2;
+ user-select: none;
+ }
+}
diff --git a/packages/theme/styles/panel.scss b/packages/theme/styles/panel.scss
index 1404f161bc..b7965b218c 100644
--- a/packages/theme/styles/panel.scss
+++ b/packages/theme/styles/panel.scss
@@ -55,3 +55,159 @@
}
}
+.popupPanel {
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ min-height: 0;
+ height: 100%;
+ border-radius: .5rem;
+ box-shadow: var(--popup-panel-shadow);
+
+ .popupPanel-title {
+ display: flex;
+ justify-content: stretch;
+ align-items: center;
+ flex-shrink: 0;
+ padding: .5rem .75rem;
+ width: 100%;
+ height: 3rem;
+ max-height: 3rem;
+ background-color: var(--board-card-bg-color);
+ border: 1px solid var(--divider-color);
+ border-bottom: none;
+ border-radius: .5rem .5rem 0 0;
+
+ &__content {
+ flex-grow: 1;
+ margin: 0 .75rem;
+ min-width: 0;
+ min-height: 0;
+
+ &-container {
+ display: flex;
+ justify-content: stretch;
+ min-width: 0;
+ width: 100%;
+ }
+ }
+ }
+
+ .popupPanel-body {
+ position: relative;
+ display: flex;
+ justify-content: stretch;
+ min-width: 0;
+ min-height: 0;
+ width: 100%;
+ height: 100%;
+ background-color: var(--body-color);
+ border: 1px solid var(--divider-color);
+ border-radius: 0 0 .5rem .5rem;
+
+ &__main, &__aside {
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ min-height: 0;
+ height: 100%;
+ }
+
+ &__main {
+ flex-grow: 2;
+ flex-basis: 760px;
+ border: none;
+ border-radius: 0;
+
+ &-header {
+ display: flex;
+ flex-direction: column;
+ margin: 0 auto;
+ padding: .75rem 1.25rem;
+ width: calc(100% - 5rem);
+ min-width: 0;
+ max-width: 900px;
+ border-bottom: 1px solid var(--divider-color);
+
+ .header-row {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ min-width: 0;
+
+ &.between { justify-content: space-between; }
+ }
+ .header-row + .header-row { margin-top: .625rem; }
+ }
+ &-content {
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ flex-shrink: 0;
+ margin-left: auto;
+ margin-right: auto;
+ width: calc(100% - 7.5rem);
+ height: 100%;
+ max-width: 860px;
+ }
+ }
+
+ &__aside {
+ position: relative;
+ width: 25%;
+ min-width: 320px;
+
+ &::before {
+ position: absolute;
+ content: '';
+ top: 1rem;
+ bottom: 1rem;
+ left: 0;
+ width: 0;
+ border-left: 1px solid var(--divider-color);
+ }
+
+ &.float {
+ position: absolute;
+ flex-shrink: 0;
+ top: 0;
+ left: 100%;
+ width: 320px;
+ height: 100%;
+ min-width: 0;
+ background-color: var(--board-card-bg-color);
+ border-top: 1px solid var(--board-card-bg-color);
+ border-left: 1px solid var(--divider-color);
+ box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
+ transition: box-shadow 150ms ease 0s, transform 150ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ transform: translateX(0);
+
+ &::before { content: none; }
+ &.shown {
+ box-shadow: var(--popup-aside-shadow);
+ transform: translateX(-100%);
+
+ &::after {
+ position: absolute;
+ content: '';
+ top: 0;
+ left: 100%;
+ width: 360px;
+ height: 100%;
+ background-color: var(--board-card-bg-color);
+ border: 1px solid var(--board-card-bg-color);
+ }
+ }
+ }
+ }
+
+ &.asideShown {
+ border: none;
+
+ .popupPanel-body__main {
+ border: 1px solid var(--divider-color);
+ border-radius: 0 0 .5rem .5rem;
+ }
+ }
+ }
+}
diff --git a/packages/ui/src/components/Button.svelte b/packages/ui/src/components/Button.svelte
index 434eda4595..3d23a28d95 100644
--- a/packages/ui/src/components/Button.svelte
+++ b/packages/ui/src/components/Button.svelte
@@ -32,6 +32,7 @@
export let width: string | undefined = undefined
export let resetIconSize: boolean = false
export let highlight: boolean = false
+ export let selected: boolean = false
export let focus: boolean = false
export let click: boolean = false
export let title: string | undefined = undefined
@@ -60,6 +61,7 @@
class:border-radius-2={shape === 'round'}
class:border-radius-4={shape === 'circle'}
class:highlight
+ class:selected
disabled={disabled || loading}
style={width ? 'width: ' + width : ''}
{title}
@@ -215,9 +217,8 @@
}
}
}
- &.transparent:hover {
- background-color: var(--button-bg-hover);
- }
+ &.transparent:hover,
+ &.transparent.selected { background-color: var(--button-bg-hover); }
&.link {
padding: 0 0.875rem;
&:hover {
diff --git a/packages/ui/src/components/Panel.svelte b/packages/ui/src/components/Panel.svelte
index f13b35ce8f..9d53fcbc76 100644
--- a/packages/ui/src/components/Panel.svelte
+++ b/packages/ui/src/components/Panel.svelte
@@ -13,152 +13,65 @@
// limitations under the License.
-->
-
-
- {#if showHeader}
-
- {:else}
-
- {/if}
-
- {#if $$slots.subtitle && $$slots.properties && isSubtitle}
-
- {:else}
-
-
-
- {/if}
- {#if rightSection}
-
- {/if}
- {#if $$slots.properties && isProperties}
-
-
-
+
+
-
-
diff --git a/packages/ui/src/components/icons/Details.svelte b/packages/ui/src/components/icons/Details.svelte
new file mode 100644
index 0000000000..4245149f39
--- /dev/null
+++ b/packages/ui/src/components/icons/Details.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts
index 89ddda56bf..1b67901c83 100644
--- a/packages/ui/src/index.ts
+++ b/packages/ui/src/index.ts
@@ -119,6 +119,7 @@ export { default as IconNavNext } from './components/icons/NavNext.svelte'
export { default as IconDPCalendar } from './components/calendar/icons/DPCalendar.svelte'
export { default as IconDPCalendarOver } from './components/calendar/icons/DPCalendarOver.svelte'
export { default as IconOptions } from './components/icons/Options.svelte'
+export { default as IconDetails } from './components/icons/Details.svelte'
export { default as PanelInstance } from './components/PanelInstance.svelte'
export { default as Panel } from './components/Panel.svelte'
diff --git a/packages/ui/src/popups.ts b/packages/ui/src/popups.ts
index 59f9bd3925..f391eca3d8 100644
--- a/packages/ui/src/popups.ts
+++ b/packages/ui/src/popups.ts
@@ -195,6 +195,13 @@ export function fitPopupElement (modalHTML: HTMLElement, element?: PopupAlignmen
newProps.left = '50%'
newProps.transform = 'translateX(-50%)'
show = true
+ } else if (element === 'float') {
+ newProps.top = 'calc(var(--status-bar-height) + .25rem)'
+ newProps.bottom = '.25rem'
+ newProps.width = '40rem'
+ newProps.maxWidth = '40%'
+ newProps.right = '.25rem'
+ show = true
} else if (element === 'account') {
newProps.bottom = '2.75rem'
newProps.left = '5rem'
diff --git a/packages/ui/src/types.ts b/packages/ui/src/types.ts
index a65cdb8999..a6f1a0f222 100644
--- a/packages/ui/src/types.ts
+++ b/packages/ui/src/types.ts
@@ -72,7 +72,7 @@ export interface PopupPositionElement {
h: HorizontalAlignment
}
}
-export type PopupAlignment = PopupPositionElement | null | 'right' | 'top' | 'account' | 'full' | 'content' | 'middle'
+export type PopupAlignment = PopupPositionElement | null | 'right' | 'top' | 'float' | 'account' | 'full' | 'content' | 'middle'
export type TooltipAlignment = 'top' | 'bottom' | 'left' | 'right'
export type VerticalAlignment = 'top' | 'bottom'
export type HorizontalAlignment = 'left' | 'right'
diff --git a/plugins/activity-assets/src/tsdoc-metadata.json b/plugins/activity-assets/src/tsdoc-metadata.json
index 48d844316d..f9032ca5ce 100644
--- a/plugins/activity-assets/src/tsdoc-metadata.json
+++ b/plugins/activity-assets/src/tsdoc-metadata.json
@@ -1,11 +1,11 @@
-// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
-// It should be published with your NPM package. It should not be tracked by Git.
-{
- "tsdocVersion": "0.12",
- "toolPackages": [
- {
- "packageName": "@microsoft/api-extractor",
- "packageVersion": "7.19.2"
- }
- ]
-}
+// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
+// It should be published with your NPM package. It should not be tracked by Git.
+{
+ "tsdocVersion": "0.12",
+ "toolPackages": [
+ {
+ "packageName": "@microsoft/api-extractor",
+ "packageVersion": "7.19.2"
+ }
+ ]
+}
diff --git a/plugins/activity-resources/src/components/Activity.svelte b/plugins/activity-resources/src/components/Activity.svelte
index a07e0336ef..b28a5a42f3 100644
--- a/plugins/activity-resources/src/components/Activity.svelte
+++ b/plugins/activity-resources/src/components/Activity.svelte
@@ -82,31 +82,29 @@
{/if}
{:else}
-
-
-
+
+
+
+
+
-
+ {#if showCommenInput}
+
+
- {#if showCommenInput}
-
-
-
+ {/if}
+
+ {#if txes}
+
+ {#each txes as tx}
+
+ {/each}
+
{/if}
-
- {#if txes}
-
- {#each txes as tx}
-
- {/each}
-
- {/if}
-
-
+
{/if}
diff --git a/plugins/gmail-resources/src/components/Main.svelte b/plugins/gmail-resources/src/components/Main.svelte
index cb01633e95..88df2ee34e 100644
--- a/plugins/gmail-resources/src/components/Main.svelte
+++ b/plugins/gmail-resources/src/components/Main.svelte
@@ -14,31 +14,49 @@
// limitations under the License.
-->
-{#if channel}
- {#if newMessage}
-
- {:else if currentMessage}
-
- {:else}
-
- {/if}
+{#if channel && object}
+
{
+ dispatch('close')
+ }}
+ >
+ {#if newMessage}
+
+ {:else if currentMessage}
+
+ {:else}
+
+ {/if}
+
{/if}
diff --git a/plugins/telegram-resources/package.json b/plugins/telegram-resources/package.json
index 888ccaf19d..549a3986d0 100644
--- a/plugins/telegram-resources/package.json
+++ b/plugins/telegram-resources/package.json
@@ -43,6 +43,7 @@
"@anticrm/core": "~0.6.16",
"@anticrm/notification-resources": "~0.6.0",
"@anticrm/attachment": "~0.6.1",
- "@anticrm/attachment-resources": "~0.6.0"
+ "@anticrm/attachment-resources": "~0.6.0",
+ "@anticrm/panel": "~0.6.0"
}
}
diff --git a/plugins/telegram-resources/src/components/Chat.svelte b/plugins/telegram-resources/src/components/Chat.svelte
index 70d52150a0..ed4f6af3d4 100644
--- a/plugins/telegram-resources/src/components/Chat.svelte
+++ b/plugins/telegram-resources/src/components/Chat.svelte
@@ -16,12 +16,15 @@
-
-
-
- {#if messages && accounts}
-
- {/if}
-
-
+{#if object !== undefined}
+
{
+ dispatch('close')
+ }}
+ >
+
+ You and {formatName(object.name)}
+
+
+
+
+
-