@import './button-vars.less';

button {
  appearance: none;
  width: 100%;
}
.button {
  --f7-touch-ripple-color: rgba(var(--f7-theme-color-rgb), 0.25);
  text-decoration: none;
  text-align: center;
  display: flex;
  appearance: none;
  background: none;
  margin: 0;
  white-space: nowrap;
  text-overflow: ellipsis;
  position: relative;
  overflow: hidden;
  font-family: inherit;
  cursor: pointer;
  outline: 0;
  box-sizing: border-box;
  vertical-align: middle;
  justify-content: center;
  align-items: center;
  border: var(--f7-button-border-width, 0px) solid
    var(--f7-button-border-color, var(--f7-theme-color));
  font-size: var(--f7-button-font-size);
  color: var(--f7-button-text-color, var(--f7-theme-color));
  height: var(--f7-button-height);
  line-height: calc(var(--f7-button-height) - var(--f7-button-border-width, 0) * 2);
  padding: var(--f7-button-padding-vertical, 0px) var(--f7-button-padding-horizontal);
  border-radius: var(--f7-button-border-radius);
  min-width: var(--f7-button-min-width);
  font-weight: var(--f7-button-font-weight);
  letter-spacing: var(--f7-button-letter-spacing);
  text-transform: var(--f7-button-text-transform);
  background-color: var(--f7-button-bg-color);
  box-shadow: var(--f7-button-box-shadow);
  &.active-state {
    color: var(--f7-button-pressed-text-color, var(--f7-button-text-color, var(--f7-theme-color)));
  }
  input[type='submit']&,
  input[type='button']&,
  input[type='reset']& {
    width: 100%;
  }

  > i + span,
  > span + span,
  > span ~ i {
    .ltr({
      margin-left: 4px;
    });
    .rtl({
      margin-right: 4px;
    });
  }
}
.subnavbar .button,
.navbar .button,
.toolbar .button,
.searchbar .button {
  color: var(--f7-button-text-color, var(--f7-theme-color));
}

.button-round,
.ios .button-round-ios,
.md .button-round-md {
  --f7-button-border-radius: var(--f7-button-height);
}
.button-fill,
.ios .button-fill-ios,
.md .button-fill-md,
.button-active,
.button.tab-link-active {
  --f7-button-bg-color: var(--f7-button-fill-bg-color, var(--f7-theme-color));
  --f7-button-text-color: var(--f7-button-fill-text-color, #fff);
  --f7-touch-ripple-color: var(--f7-touch-ripple-white);
  .ios .color-white &,
  .ios &.color-white {
    --f7-button-text-color: #000;
  }
}

.button-fill,
.ios .button-fill-ios,
.md .button-fill-md {
  --f7-button-pressed-bg-color: var(--f7-button-fill-pressed-bg-color);
}
.button-active,
.button.tab-link-active {
  --f7-button-pressed-bg-color: var(--f7-button-bg-color);
}

.button-outline,
.ios .button-outline-ios,
.md .button-outline-md {
  --f7-button-border-color: var(--f7-button-outline-border-color, var(--f7-theme-color));
  --f7-button-border-width: var(--f7-button-outline-border-width);
}

.button-tonal,
.ios .button-tonal-ios,
.md .button-tonal-md {
  --f7-button-bg-color: var(--f7-button-tonal-bg-color);
  --f7-button-text-color: var(--f7-button-tonal-text-color);
  --f7-button-pressed-bg-color: var(--f7-button-tonal-pressed-bg-color);
}

.button-large,
.ios .button-large-ios,
.md .button-large-md {
  --f7-button-height: var(--f7-button-large-height);
  --f7-button-font-size: var(--f7-button-large-font-size);
  --f7-button-font-weight: var(--f7-button-large-font-weight);
  --f7-button-text-transform: var(--f7-button-large-text-transform);
}
.button-small,
.ios .button-small-ios,
.md .button-small-md {
  --f7-button-outline-border-width: var(--f7-button-small-outline-border-width);
  --f7-button-height: var(--f7-button-small-height);
  --f7-button-font-size: var(--f7-button-small-font-size);
  --f7-button-font-weight: var(--f7-button-small-font-weight);
  --f7-button-text-transform: var(--f7-button-small-text-transform);
}
.ios .button-small.button-fill,
.ios .button-small-ios.button-fill,
.ios .button-small.button-fill-ios {
  --f7-button-border-width: var(--f7-button-small-outline-border-width);
  --f7-button-pressed-text-color: var(--f7-theme-color);
  --f7-button-pressed-bg-color: transparent;
}

.segmented {
  align-self: center;
  display: flex;
  flex-wrap: nowrap;
  border-radius: var(--f7-button-border-radius);
  box-shadow: var(--f7-button-box-shadow);
  box-sizing: border-box;
  .button,
  button {
    width: 100%;
    flex-shrink: 1;
    min-width: 0;
    border-radius: 0;
  }
  .ltr({
    .button:first-child {
      border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);
    }
    .button:not(.button-outline):first-child {
      border-left: none;
    }
    .button.button-outline {
      &:nth-child(n + 2) {
        border-left: none;
      }
    }
    .button:last-child {
      border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;
    }
    .button-round:first-child {
      border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);
    }
    .button-round:last-child {
      border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;
    }
  });
  .rtl({
    .button:first-child {
      border-radius: 0 var(--f7-button-border-radius) var(--f7-button-border-radius) 0;
    }
    .button:not(.button-outline):first-child {
      border-right: none;
    }
    .button.button-outline {
      &:nth-child(n + 2) {
        border-right: none;
      }
    }
    .button:last-child {
      border-radius: var(--f7-button-border-radius) 0 0 var(--f7-button-border-radius);
    }
    .button-round:first-child {
      border-radius: 0 var(--f7-button-height) var(--f7-button-height) 0;
    }
    .button-round:last-child {
      border-radius: var(--f7-button-height) 0 0 var(--f7-button-height);
    }
  });
  .button:first-child:last-child {
    border-radius: var(--f7-button-border-radius);
  }
}

.segmented-raised,
.ios .segmented-raised-ios,
.md .segmented-raised-md {
  box-shadow: var(--f7-button-raised-box-shadow);
  .button:not(.button-outline) {
    .ltr({
      border-left: 1px solid var(--f7-segmented-raised-divider-color);
    });
    .rtl({
      border-right: 1px solid var(--f7-segmented-raised-divider-color);
    });
  }
}

// Raised
.button-raised,
.ios .button-raised-ios,
.md .button-raised-md {
  --f7-button-box-shadow: var(--f7-button-raised-box-shadow);
  &.active-state {
    --f7-button-box-shadow: var(--f7-button-raised-pressed-box-shadow);
  }
}

// Strong
.segmented-strong,
.ios .segmented-strong-ios,
.md .segmented-strong-md {
  --f7-button-bg-color: transparent;
  --f7-button-hover-bg-color: var(--f7-segmented-strong-button-hover-bg-color);
  --f7-button-text-color: var(--f7-segmented-strong-button-text-color);
  --f7-button-font-weight: var(--f7-segmented-strong-button-font-weight);
  --f7-button-text-transform: var(--f7-segmented-strong-button-text-transform);
  --f7-button-pressed-bg-color: var(--f7-segmented-strong-button-pressed-bg-color);
  position: relative;
  background: var(--f7-segmented-strong-bg-color);
  border-radius: calc(var(--f7-button-border-radius) + 2px);
  box-shadow: none;
  padding: var(--f7-segmented-strong-padding);
  overflow: hidden;

  .button {
    z-index: 1;
    transform: translate3d(0, 0, 0);
  }
  .button,
  .button:first-child,
  .button:last-child {
    border-radius: var(--f7-button-border-radius);
  }
  .button + .button {
    .ltr({
      margin-left: var(--f7-segmented-strong-between-buttons);
    });
    .rtl({
      margin-right: var(--f7-segmented-strong-between-buttons);
    });
  }
  .button.button-active,
  .button.tab-link-active {
    --f7-button-hover-bg-color: transparent;
    --f7-button-bg-color: transparent;
    --f7-button-text-color: var(--f7-segmented-strong-button-active-text-color);
    --f7-button-font-weight: var(--f7-segmented-strong-button-active-font-weight);
  }

  .segmented-highlight {
    --f7-segmented-highlight-num: 1;
    --f7-segmented-highlight-active: 0;
    --f7-segmented-highlight-padding: calc(var(--f7-segmented-strong-padding) * 2);
    --f7-segmented-highlight-between: var(--f7-segmented-strong-between-buttons);
    --f7-segmented-highlight-width: calc(
      (
          100% - var(--f7-segmented-highlight-padding) - var(--f7-segmented-highlight-between) *
            (var(--f7-segmented-highlight-num) - 1)
        ) / var(--f7-segmented-highlight-num)
    );

    position: absolute;
    background-color: var(--f7-segmented-strong-button-active-bg-color);
    border-radius: var(--f7-button-border-radius);
    box-shadow: var(--f7-segmented-strong-button-active-box-shadow);
    left: var(--f7-segmented-strong-padding);
    top: var(--f7-segmented-strong-padding);
    height: calc(100% - var(--f7-segmented-strong-padding) * 2);
    width: var(--f7-segmented-highlight-width);
    z-index: 0;
    transform: translateX(
      calc(
        var(--f7-segmented-highlight-active) * 100% + var(--f7-segmented-highlight-active) *
          var(--f7-segmented-highlight-between)
      )
    );
    transition: 200ms;
  }
}

.segmented-highlight {
  .button:nth-child(2) ~ & {
    --f7-segmented-highlight-num: 2;
  }
  .button:nth-child(3) ~ & {
    --f7-segmented-highlight-num: 3;
  }
  .button:nth-child(4) ~ & {
    --f7-segmented-highlight-num: 4;
  }
  .button:nth-child(5) ~ & {
    --f7-segmented-highlight-num: 5;
  }
  .button:nth-child(6) ~ & {
    --f7-segmented-highlight-num: 6;
  }
  .button:nth-child(7) ~ & {
    --f7-segmented-highlight-num: 7;
  }
  .button:nth-child(8) ~ & {
    --f7-segmented-highlight-num: 8;
  }
  .button:nth-child(9) ~ & {
    --f7-segmented-highlight-num: 9;
  }
  .button:nth-child(10) ~ & {
    --f7-segmented-highlight-num: 10;
  }

  .button-active:nth-child(2) ~ &,
  .tab-link-active:nth-child(2) ~ & {
    --f7-segmented-highlight-active: 1;
  }
  .button-active:nth-child(3) ~ &,
  .tab-link-active:nth-child(3) ~ & {
    --f7-segmented-highlight-active: 2;
  }
  .button-active:nth-child(4) ~ &,
  .tab-link-active:nth-child(4) ~ & {
    --f7-segmented-highlight-active: 3;
  }
  .button-active:nth-child(5) ~ &,
  .tab-link-active:nth-child(5) ~ & {
    --f7-segmented-highlight-active: 4;
  }
  .button-active:nth-child(6) ~ &,
  .tab-link-active:nth-child(6) ~ & {
    --f7-segmented-highlight-active: 5;
  }
  .button-active:nth-child(7) ~ &,
  .tab-link-active:nth-child(7) ~ & {
    --f7-segmented-highlight-active: 6;
  }
  .button-active:nth-child(8) ~ &,
  .tab-link-active:nth-child(8) ~ & {
    --f7-segmented-highlight-active: 7;
  }
  .button-active:nth-child(9) ~ &,
  .tab-link-active:nth-child(9) ~ & {
    --f7-segmented-highlight-active: 8;
  }
  .button-active:nth-child(10) ~ &,
  .tab-link-active:nth-child(10) ~ & {
    --f7-segmented-highlight-active: 9;
  }
}

// Round
.segmented-round,
.ios .segmented-round-ios,
.md .segmented-round-md {
  border-radius: var(--f7-button-height);
  .segmented-highlight {
    border-radius: var(--f7-button-height);
  }
}

.subnavbar .segmented {
  width: 100%;
}

.button-preloader {
  position: relative;
  --f7-preloader-color: var(--f7-button-text-color, var(--f7-theme-color));
  &:not(.button-large) {
    --f7-preloader-size: calc(var(--f7-button-height) - 6px);
  }
  &.button-fill {
    --f7-preloader-color: #fff;
  }
  & > span:not(.preloader) {
    transition: 0.2s;
    display: inline-flex;
    align-items: center;
    align-content: center;
    justify-content: center;
    transform: scale(1);
  }
  & > .preloader {
    position: absolute;
    left: 50%;
    top: 50%;
    transition: 0.2s;
    transition-property: opacity;
    opacity: 0;
    visibility: hidden;
    margin-left: calc(-1 * var(--f7-preloader-size) / 2);
    margin-top: calc(-1 * var(--f7-preloader-size) / 2);
  }

  &.button-loading > span:not(.preloader) {
    opacity: 0;
    transform: scale(0);
  }
  &.button-loading > .preloader {
    opacity: 1;
    visibility: visible;
  }
}

.if-ios-theme({
  @import './button-ios.less';
});
.if-md-theme({
  @import './button-md.less';
});
