@use 'sass:map';
@use '../../palette';

@mixin spacing-theme($theme) {
  $spacingTheme: map.get($theme, spacing);

  $header-row-height: map.get($spacingTheme, header-row-height);
  $row-height: map.get($spacingTheme, row-height);
  $footer-row-height: map.get($spacingTheme, footer-row-height);
  $row-spacing: map.get($spacingTheme, row-spacing);
  $cell-spacing: map.get($spacingTheme, cell-spacing);

  .pbl-ngrid-header-row {
    min-height: $header-row-height;
  }

  .pbl-ngrid-row {
    min-height: $row-height;
  }

  .pbl-ngrid-footer-row {
    min-height: $footer-row-height;
  }

  .pbl-ngrid-cell, .pbl-ngrid-header-cell, .pbl-ngrid-footer-cell {
    padding-left: $cell-spacing;

    [dir='rtl'] & {
      padding-left: 0;
      padding-right: $cell-spacing;
    }

    &:first-of-type {
      padding-left: $row-spacing;

      [dir='rtl'] & {
        padding-left: 0;
        padding-right: $row-spacing;
      }
    }

    &:last-of-type {
      padding-right: $row-spacing;

      [dir='rtl'] & {
        padding-right: $cell-spacing;
        padding-left: $row-spacing;
      }
    }

    &.cdk-table-sticky {
      background: inherit;
    }
  }

  // row-reorder (drag & drop)
  .pbl-ngrid-row-prefix {
    display: none;
    position: absolute;
    cursor: move;
    width: $row-spacing;
    height: 100%;
  }

  .pbl-row-reorder .pbl-ngrid-row-prefix {
    display: block;
  }

}

@mixin predefined-spacing($theme) {

  pbl-ngrid.grid-sm {
    @include spacing-theme(map.merge($theme, ( spacing: map.get(palette.$spacing-theme-defaults, sm) )));
  }

  pbl-ngrid.grid-xs {
    @include spacing-theme(map.merge($theme, ( spacing: map.get(palette.$spacing-theme-defaults, xs) )));
  }
}
