diff --git a/src/scss/widget/tree.scss b/src/scss/widget/tree.scss index 632c472b3d..e3aa1fcf4e 100644 --- a/src/scss/widget/tree.scss +++ b/src/scss/widget/tree.scss @@ -22,7 +22,7 @@ .iconObject { flex-shrink: 0; flex-basis: 20px; margin-right: 6px; } - .arrowWrap { width: 24px; height: 24px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; cursor: default; } + .arrowWrap { width: 24px; height: 24px; position: absolute; z-index: 2; left: -2px; top: -2px; opacity: 0; cursor: default; display: flex; align-items: center; justify-content: center; } .arrowWrap:hover { .icon.arrow { background-color: var(--color-shape-highlight-medium); } } @@ -34,7 +34,7 @@ .clickable { flex-grow: 1; display: flex; flex-direction: row; width: calc(100% - 30px); align-items: center; justify-content: space-between; - line-height: 20px; + line-height: 20px; position: relative; } .name { flex-grow: 1; @include text-overflow-nw; } @@ -62,8 +62,17 @@ .item.isOpen { .icon.arrow { transform: rotate(0deg); } } + + .item.withArrow { + .arrowWrap, + .iconObject { transition: opacity 0.15s ease-in; } + } + .item.withArrow:hover, .item.withArrow.isOpen { + .arrowWrap { opacity: 1; } + .iconObject { opacity: 0; } + } } .widget.widgetTree.isClosed { .contentWrapper { height: 8px; } -} \ No newline at end of file +} diff --git a/src/ts/component/widget/index.tsx b/src/ts/component/widget/index.tsx index b12370b969..4bf1682390 100644 --- a/src/ts/component/widget/index.tsx +++ b/src/ts/component/widget/index.tsx @@ -684,8 +684,8 @@ const WidgetIndex = observer(forwardRef<{}, Props>((props, ref) => { break; }; - case I.WidgetLayout.List: case I.WidgetLayout.Compact: + case I.WidgetLayout.List: case I.WidgetLayout.View: { cn.push('widgetView'); content = ; diff --git a/src/ts/component/widget/tree/item.tsx b/src/ts/component/widget/tree/item.tsx index 04971bb032..59e76f4812 100644 --- a/src/ts/component/widget/tree/item.tsx +++ b/src/ts/component/widget/tree/item.tsx @@ -67,14 +67,10 @@ const TreeItem = observer(forwardRef<{}, Props>((props, ref) => { let more = null; let inner = null; - if (U.Object.isSetLayout(layout) || (U.Object.isCollectionLayout(layout) && !numChildren)) { - arrow = ; - } else if (numChildren > 0) { + cn.push('withArrow'); onArrowClick = onToggleHandler; arrow = ; - } else { - arrow = ; }; if (arrow) { @@ -147,4 +143,4 @@ const TreeItem = observer(forwardRef<{}, Props>((props, ref) => { })); -export default TreeItem; \ No newline at end of file +export default TreeItem; diff --git a/src/ts/component/widget/view/index.tsx b/src/ts/component/widget/view/index.tsx index 7d9ceff256..24678da7fa 100644 --- a/src/ts/component/widget/view/index.tsx +++ b/src/ts/component/widget/view/index.tsx @@ -119,11 +119,8 @@ const WidgetView = observer(forwardRef((p }; const getLimitHandler = (): number => { - let limit = getLimit(parent.content); - if ((layout == I.WidgetLayout.View) && (viewType == I.ViewType.Calendar)) { - limit = 1000; - }; - return limit; + const view = getView(); + return (layout == I.WidgetLayout.View) && (view.type == I.ViewType.Calendar) ? 1000 : getLimit(parent.content); }; const onChangeView = (viewId: string) => { diff --git a/src/ts/lib/util/menu.ts b/src/ts/lib/util/menu.ts index 83f041b04a..7e034bb770 100644 --- a/src/ts/lib/util/menu.ts +++ b/src/ts/lib/util/menu.ts @@ -417,6 +417,7 @@ class UtilMenu { if (treeSkipLayouts.includes(layout)) { options = options.filter(it => it != I.WidgetLayout.Tree); }; + if (!isSet) { options = options.filter(it => ![ I.WidgetLayout.List, I.WidgetLayout.Compact ].includes(it)); } else {