Browse Source

Merge branch 'mapsmarketing-layers' into dev

pull/5463/head
Artur Arseniev 3 years ago
parent
commit
e03dfc7483
  1. 2
      dist/css/grapes.min.css
  2. 51
      src/navigator/view/ItemView.ts
  3. 79
      src/styles/scss/_gjs_layers.scss
  4. 1
      src/styles/scss/_gjs_variables.scss
  5. 2
      src/styles/scss/main.scss

2
dist/css/grapes.min.css

File diff suppressed because one or more lines are too long

51
src/navigator/view/ItemView.ts

@ -43,10 +43,10 @@ export default class ItemView extends View {
const count = module.getComponents(model).length; const count = module.getComponents(model).length;
const addClass = !count ? this.clsNoChild : ''; const addClass = !count ? this.clsNoChild : '';
const clsTitle = `${this.clsTitle} ${addClass}`; const clsTitle = `${this.clsTitle} ${addClass}`;
const clsTitleC = `${this.clsTitleC} ${ppfx}one-bg`; const clsTitleC = `${this.clsTitleC}`;
const clsInput = `${this.inputNameCls} ${clsNoEdit} ${ppfx}no-app`; const clsInput = `${this.inputNameCls} ${clsNoEdit} ${ppfx}no-app`;
const level = opt.level + 1; const level = opt.level || 0;
const gut = `${30 + level * 10}px`; const gut = `${level * 10}px`;
const name = model.getName(); const name = model.getName();
const icon = model.getIcon(); const icon = model.getIcon();
const clsBase = `${pfx}layer`; const clsBase = `${pfx}layer`;
@ -54,26 +54,33 @@ export default class ItemView extends View {
const { move, eye, eyeOff, chevron } = icons!; const { move, eye, eyeOff, chevron } = icons!;
return ` return `
${ <div class="${pfx}layer-item ${ppfx}one-bg" data-toggle-select>
hidable <div class="${pfx}layer-item-left">
? `<i class="${pfx}layer-vis" data-toggle-visible> ${
<i class="${pfx}layer-vis-on">${eye}</i> hidable
<i class="${pfx}layer-vis-off">${eyeOff}</i> ? `<i class="${pfx}layer-vis" data-toggle-visible>
</i>` <i class="${pfx}layer-vis-on">${eye}</i>
: '' <i class="${pfx}layer-vis-off">${eyeOff}</i>
} </i>`
<div class="${clsTitleC}"> : ''
<div class="${clsTitle}" style="padding-left: ${gut}" data-toggle-select> }
<div class="${pfx}layer-title-inn" title="${name}"> <div class="${clsTitleC}">
<i class="${this.clsCaret}" data-toggle-open>${chevron}</i> <div class="${clsTitle}" style="padding-left: ${gut}">
${icon ? `<span class="${clsBase}__icon">${icon}</span>` : ''} <div class="${pfx}layer-title-inn" title="${name}">
<span class="${clsInput}" data-name>${name}</span> <i class="${this.clsCaret}" data-toggle-open>${chevron}</i>
${icon ? `<span class="${clsBase}__icon">${icon}</span>` : ''}
<span class="${clsInput}" data-name>${name}</span>
</div>
</div>
</div> </div>
</div> </div>
<div class="${pfx}layer-item-right">
${count ? `<div class="${this.clsCount}" data-count>${count || ''}</div>` : ''}
<div class="${this.clsMove}" data-toggle-move>${move || ''}</div>
</div>
</div> </div>
<div class="${this.clsCount}" data-count>${count || ''}</div> <div class="${this.clsChildren}"></div>
<div class="${this.clsMove}" data-toggle-move>${move || ''}</div> `;
<div class="${this.clsChildren}"></div>`;
} }
public get em(): EditorModel { public get em(): EditorModel {
@ -167,7 +174,7 @@ export default class ItemView extends View {
getVisibilityEl() { getVisibilityEl() {
if (!this.eyeEl) { if (!this.eyeEl) {
this.eyeEl = this.$el.children(`.${this.pfx}layer-vis`); this.eyeEl = this.$el.children('[data-toggle-select]').find('[data-toggle-visible]');
} }
return this.eyeEl; return this.eyeEl;
@ -189,7 +196,7 @@ export default class ItemView extends View {
* @return void * @return void
* */ * */
toggleVisibility(ev?: MouseEvent) { toggleVisibility(ev?: MouseEvent) {
ev?.stopPropagation(); ev?.stopImmediatePropagation();
const { module, model } = this; const { module, model } = this;
module.setVisible(model, !module.isVisible(model)); module.setVisible(model, !module.isVisible(model));
} }

79
src/styles/scss/_gjs_layers.scss

@ -1,5 +1,4 @@
$layerIconSize: 15px !default; $layerIconSize: 15px !default;
$layerNameSpacing: 5px !default;
.#{$nv-prefix} { .#{$nv-prefix} {
&selected-parent { &selected-parent {
@ -14,30 +13,46 @@ $layerNameSpacing: 5px !default;
font-weight: lighter; font-weight: lighter;
text-align: left; text-align: left;
position: relative; position: relative;
background-color: rgba(0, 0, 0, 0.1);
font-size: var(--gjs-font-size); font-size: var(--gjs-font-size);
display: grid; display: grid;
&-hidden { &-item {
@include opacity(0.55); display: flex;
align-items: center;
justify-content: space-between;
padding: 5px 10px;
border-bottom: 1px solid var(--gjs-main-dark-color);
background-color: var(--gjs-secondary-dark-color);
gap: var(--gjs-flex-item-gap);
cursor: pointer;
&-left,
&-right {
display: flex;
align-items: center;
gap: var(--gjs-flex-item-gap);
}
&-left {
width: 100%;
}
} }
&-count { &-hidden {
position: absolute; @include opacity(0.55);
right: 27px;
top: 9px;
} }
&-vis { &-vis {
left: 0;
top: 0;
padding: 7px 5px 7px 10px;
position: absolute;
box-sizing: content-box; box-sizing: content-box;
cursor: pointer; cursor: pointer;
width: 13px;
z-index: 1; z-index: 1;
&-on,
&-off {
display: flex;
width: 13px;
}
&-off { &-off {
display: none; display: none;
} }
@ -47,42 +62,45 @@ $layerNameSpacing: 5px !default;
display: none; display: none;
} }
.#{$nv-prefix}layer-vis-off { .#{$nv-prefix}layer-vis-off {
display: block; display: flex;
} }
} }
} }
&-caret { &-caret {
width: 15px; width: 15px;
padding: 2px;
cursor: pointer; cursor: pointer;
position: absolute;
box-sizing: content-box; box-sizing: content-box;
left: -15px;
top: 0;
transform: rotate(90deg); transform: rotate(90deg);
display: flex;
@include opacity(0.7); @include opacity(0.7);
&:hover { &:hover {
@include opacity(1); @include opacity(1);
} }
}
&.#{$nv-prefix}layer-open { &.open > &-item &-caret {
transform: rotate(180deg); transform: rotate(180deg);
}
} }
&-title { &-title {
@extend .#{$app-prefix}category-title; @extend .#{$app-prefix}category-title;
padding: 3px 10px 5px 30px; padding: 0;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: transparent !important;
border-bottom: none;
&-inn { &-inn {
align-items: center; align-items: center;
position: relative; position: relative;
display: flex; display: flex;
gap: var(--gjs-flex-item-gap);
}
&-c {
width: 100%; width: 100%;
} }
} }
@ -100,13 +118,12 @@ $layerNameSpacing: 5px !default;
} }
&-name { &-name {
padding: $layerNameSpacing 0;
display: inline-block; display: inline-block;
box-sizing: content-box; box-sizing: content-box;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
margin: 0 30px 0 $layerNameSpacing;
max-width: 170px; max-width: 170px;
height: auto;
@extend .#{$app-prefix}no-user-select; @extend .#{$app-prefix}no-user-select;
&--no-edit { &--no-edit {
@ -123,30 +140,26 @@ $layerNameSpacing: 5px !default;
} }
&-no-chld > .#{$nv-prefix}layer-title-inn > .#{$nv-prefix}layer-caret { &-no-chld > .#{$nv-prefix}layer-title-inn > .#{$nv-prefix}layer-caret {
display: none; visibility: hidden;
} }
&-move { &-move {
padding: 9px 7px; display: flex;
position: absolute;
width: 13px; width: 13px;
box-sizing: content-box; box-sizing: content-box;
cursor: move; cursor: move;
right: 0;
top: 0;
} }
&.#{$nv-prefix}hovered .#{$nv-prefix}layer-title { &.#{$nv-prefix}hovered .#{$nv-prefix}layer-item {
background-color: rgba(255, 255, 255, 0.015); background-color: var(--gjs-soft-light-color);
} }
&.#{$nv-prefix}selected .#{$nv-prefix}layer-title { &.#{$nv-prefix}selected .#{$nv-prefix}layer-item {
background-color: rgba(255, 255, 255, 0.1); background-color: var(--gjs-main-light-color);
} }
} }
} }
.#{$app-prefix}layers { .#{$app-prefix}layers {
position: relative; position: relative;
height: 100%; height: 100%;

1
src/styles/scss/_gjs_variables.scss

@ -33,6 +33,7 @@ $mainDkColor: rgba(0, 0, 0, 0.2) !default;/* darken($mainColor, 4%) - #383
$mainDklColor: rgba(0, 0, 0, 0.1) !default; $mainDklColor: rgba(0, 0, 0, 0.1) !default;
$mainLhColor: rgba(255, 255, 255, 0.1) !default; /* #515151 */ $mainLhColor: rgba(255, 255, 255, 0.1) !default; /* #515151 */
$mainLhlColor: rgba(255, 255, 255, 0.7) !default; $mainLhlColor: rgba(255, 255, 255, 0.7) !default;
$softLhColor: rgba(255, 255, 255, 0.015) !default;
$colorBlue: #3b97e3 !default; $colorBlue: #3b97e3 !default;
$colorRed: #dd3636 !default; $colorRed: #dd3636 !default;
$colorYell: #ffca6f !default; $colorYell: #ffca6f !default;

2
src/styles/scss/main.scss

@ -203,6 +203,7 @@ $colorsAll: (one, var(--gjs-primary-color)),
--gjs-secondary-dark-color: #{$mainDklColor}; --gjs-secondary-dark-color: #{$mainDklColor};
--gjs-main-light-color: #{$mainLhColor}; --gjs-main-light-color: #{$mainLhColor};
--gjs-secondary-light-color: #{$mainLhlColor}; --gjs-secondary-light-color: #{$mainLhlColor};
--gjs-soft-light-color: #{$softLhColor};
--gjs-color-blue: #{$colorBlue}; --gjs-color-blue: #{$colorBlue};
--gjs-color-red: #{$colorRed}; --gjs-color-red: #{$colorRed};
--gjs-color-yellow: #{$colorYell}; --gjs-color-yellow: #{$colorYell};
@ -223,6 +224,7 @@ $colorsAll: (one, var(--gjs-primary-color)),
--gjs-font-size: #{$fontSize}; --gjs-font-size: #{$fontSize};
--gjs-placeholder-background-color: #{$placeholderColor}; --gjs-placeholder-background-color: #{$placeholderColor};
--gjs-canvas-top: #{$canvasTop}; --gjs-canvas-top: #{$canvasTop};
--gjs-flex-item-gap: 5px;
} }
.clear{ clear:both } .clear{ clear:both }

Loading…
Cancel
Save