Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Splitter base #6985

Merged
merged 76 commits into from
Apr 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
c499b8a
feat(igxSplitter): Adding basic splitter in repo. Adding basic sample.
Mar 25, 2020
371484c
chore(*): Prefix names with 'igx-'.
Mar 25, 2020
b123582
chore(*): Rename styles.
Mar 26, 2020
f824cf4
chore(*): Refactor styles to accomodate expanders and show a handle f…
Mar 26, 2020
2e732e8
chore(*): Tweak styles for vertical/horziontal type. Add sample for h…
Mar 26, 2020
44b4ef3
chore(*): Use igxDrag to handle drag/drop. Remove redundant directive.
Mar 26, 2020
de1fe1d
chore(*): Trigger change while moving.
Mar 26, 2020
28e31d6
chore(*): Cancel event to prevent element misalingment. Remove unnecc…
Mar 26, 2020
f68b1f9
chore(*): Move styles.
Mar 26, 2020
fc6a7e9
chore(*): Fixing imports, fixing lint.
Mar 27, 2020
d3b0077
Merge branch 'master' into mkirova/splitter-base
ChronosSF Mar 27, 2020
d4b0de6
chore(*): Include icons.
Mar 27, 2020
42d0872
chore(*): Fix style lint.
Mar 27, 2020
cff261d
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
Mar 27, 2020
ebb74b0
chore(*): Add splitter spec file.
Mar 27, 2020
5a86ed8
chore(*): Rename split-bar to splitter-bar for consitency.
Mar 27, 2020
fa92adf
chore(*): Add tests.
Mar 27, 2020
23dd2d0
chore(*): Remove unused code.
Mar 27, 2020
cd8d72d
chore(*): Add "resizable" input for pane to allow/disallow resizing.
Mar 27, 2020
e930238
Merge branch 'master' into mkirova/splitter-base
ChronosSF Mar 27, 2020
29de04a
Merge branch 'master' into mkirova/splitter-base
ChronosSF Mar 30, 2020
c82d65f
Merge branch 'master' into mkirova/splitter-base
ChronosSF Apr 1, 2020
1483eb8
feat(IgxSplitter): Adding expand/collapse functionality #6639
Apr 1, 2020
08f29e7
Merge branch 'master' into mkirova/splitter-base
simeonoff Apr 2, 2020
f4677db
refactor(splitter): add initial styling for all elements
simeonoff Apr 2, 2020
d74b8b5
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
Apr 2, 2020
5d477ac
refactor(IgxSplitter): Applying changes about collapsing
Apr 2, 2020
fd86e05
chore(*): Updating tests.
Apr 2, 2020
ac11e0a
refactor(themes): add initial splitter themes
simeonoff Apr 2, 2020
8e052e6
Merge branch 'mkirova/splitter-base' of github.com:IgniteUI/igniteui-…
simeonoff Apr 2, 2020
b9c1c49
Merge remote-tracking branch 'origin/mkirova/splitter-base' into mdra…
ChronosSF Apr 2, 2020
be37fec
refactor(splitter): improve theme
simeonoff Apr 2, 2020
b87d8af
refactor(splitter): improve theme
simeonoff Apr 2, 2020
42ab929
chore(*): Fix issue with [resizable] input on pane.
Apr 2, 2020
f2ff7cf
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
Apr 2, 2020
50dc57c
Merge branch 'mkirova/splitter-base' into mdragnev/splitter-collapsing
Apr 2, 2020
e0d4a0c
Merge branch 'mdragnev/splitter-collapsing' of https://github.com/Ign…
Apr 2, 2020
dbb31a4
chore(*): Prevent pane from being resized when collapsed.
Apr 2, 2020
02d95f6
chore(*): Refactor toggle logic after changes to sibling collection.
Apr 2, 2020
5062d8f
chore(*): Refactor expand buttons logic when two adjacent panes are c…
Apr 2, 2020
12859f0
Merge pull request #7036 from IgniteUI/mdragnev/splitter-collapsing
ChronosSF Apr 2, 2020
011d5ef
Merge branch 'master' into mkirova/splitter-base
ChronosSF Apr 2, 2020
1fd16fb
feat(splitter): Added arrow keys interactions #6639
Apr 2, 2020
76a5bd2
feat(splitter): Added tests for arrow keys #6639
Apr 3, 2020
8c32bc7
Merge remote-tracking branch 'origin/mkirova/splitter-base' into vmih…
Apr 3, 2020
aa7d92c
chore(*): Add more complex sample with grids Reset sizes if splitter …
Apr 3, 2020
d3b6a38
chore(*): Fix lint.
Apr 3, 2020
b561ce8
chore(*): Adding tests for pane toggle
Apr 3, 2020
f1e8d30
feat(splitter): Allow expand/collapse with keyboard #6639
Apr 6, 2020
bf55b62
Merge branch 'master' into mkirova/splitter-base
ChronosSF Apr 6, 2020
affba94
feat(splitter): Removed fit #6639
Apr 6, 2020
761275e
Merge remote-tracking branch 'origin/mkirova/splitter-base' into vmih…
Apr 6, 2020
8948e63
chore(*): Remove margins for sample.
Apr 6, 2020
85abe17
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
Apr 6, 2020
996b62c
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
3phase Apr 6, 2020
c94ef92
chore(*): Add short description for igxSplitter to the Changelog.
Apr 6, 2020
1825e01
Merge branch 'master' of https://github.com/IgniteUI/igniteui-angular…
3phase Apr 7, 2020
14b2327
fix(igxSplitter): Reset sibling pane sizes when pane is collapsed.
Apr 7, 2020
d0133f6
Merge branch 'master' into mkirova/splitter-base
ChronosSF Apr 8, 2020
1aa058b
chore(*): Minor API doc changes. Adding sample with nested splitters.
Apr 8, 2020
f5c5b30
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
Apr 8, 2020
59ca60a
Merge remote-tracking branch 'origin/mkirova/splitter-base' into vmih…
Apr 8, 2020
df63453
Merge remote-tracking branch 'origin/mkirova/splitter-base' into vmih…
ChronosSF Apr 8, 2020
6a710cf
feat(splitter): Apply suggested changes #6639
Apr 8, 2020
7a7e551
Merge branch 'master' into mkirova/splitter-base
ChronosSF Apr 8, 2020
ec7a0e5
Merge remote-tracking branch 'origin/mkirova/splitter-base' into vmih…
ChronosSF Apr 8, 2020
5242428
feat(splitter): Removed needless properties #6639
Apr 9, 2020
3098536
chore(*): Merge from master.
Apr 9, 2020
eda5191
Merge branch 'mkirova/splitter-base' of https://github.com/IgniteUI/i…
Apr 9, 2020
841a8e9
feat(igxSplitter): Make whole splitter bar draggable. Utilize new igx…
Apr 9, 2020
8fbfe6e
refactor(splitter): update theme with bigger hitbox area
simeonoff Apr 9, 2020
d6de681
Merge branch 'mkirova/splitter-base' of github.com:IgniteUI/igniteui-…
simeonoff Apr 9, 2020
38fd2db
chore(*): Merge from base.
Apr 9, 2020
5fd2317
chore(*): Prevent ctrl+arrow keys on splitter bar.
Apr 9, 2020
bbcdf88
Merge pull request #7052 from IgniteUI/vmihalkov/splitter-keyboard
ChronosSF Apr 9, 2020
3ee197b
Merge branch 'master' into mkirova/splitter-base
ChronosSF Apr 9, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@ All notable changes for each version of this project will be documented in this

### New Features

- `igxSplitter` component added.
- Allows rendering a vertical or horizontal splitter with multiple splitter panes with templatable content.
Panes can be resized or collapsed/expanded via the UI. Splitter orientation is defined via the `type` input.

```html
<igx-splitter [type]="type">
<igx-splitter-pane>
...
</igx-splitter-pane>
<igx-splitter-pane>
...
</igx-splitter-pane>
</igx-splitter>
```

- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
- Added ability to pin rows to top or bottom depending on the new `pinning` input.
And new API methods `pinRow` and `unpinRow`.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/// @group components
/// @author <a href="https://github.com/simeonoff" target="_blank">Simeon Simeonoff</a>
/// @author <a href="https://github.com/simeonoff" target="_blank">Maya Kirova</a>
/// @requires {mixin} bem-block
/// @requires {mixin} bem-elem
/// @requires {mixin} bem-mod
////

@include b(igx-splitter) {
// Register the component in the component registry
$this: str-slice(bem--selector-to-string(&), 2, -1);
@include register-component($this);

@include b(#{$this}-bar) {
@extend %igx-splitter-bar !optional;

@include e(handle) {
@extend %igx-splitter-handle !optional;
@extend %igx-splitter-handle--horizontal !optional;
}

@include e(expander, 'start') {
@extend %igx-splitter-expander !optional;
@extend %igx-splitter-expander--start !optional;
}

@include e(expander, 'end') {
@extend %igx-splitter-expander !optional;
@extend %igx-splitter-expander--end !optional;
}

@include m('vertical') {
@extend %igx-splitter-bar--vertical !optional;

@include e(handle) {
@extend %igx-splitter-handle !optional;
@extend %igx-splitter-handle--vertical !optional;
}

@include e(expander, 'start') {
@extend %igx-splitter-expander !optional;
@extend %igx-splitter-expander--start-vertical !optional;
}

@include e(expander, 'end') {
@extend %igx-splitter-expander !optional;
@extend %igx-splitter-expander--end-vertical !optional;
}
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
////
/// @group themes
@function igx-splitter-theme(
$palette: $default-palette,
$schema: $light-schema,
$elevations: $elevations,

$bar-color: null,
$handle-color: null,
$expander-color: null,
$border-radius: null,
$size: null
) {
$name: 'igx-splitter';
$splitter-schema: ();

@if map-has-key($schema, $name) {
$splitter-schema: map-get($schema, $name);
} @else {
$splitter-schema: $schema;
}

$border-radius-handle: round-borders(
if($border-radius, $border-radius, map-get($splitter-schema, 'border-radius')), 0, 2px
);

$theme: apply-palette($splitter-schema, $palette);

@if not($handle-color) and $bar-color {
$handle-color: text-contrast($bar-color);
}

@if not($expander-color) and $bar-color {
$expander-color: text-contrast($bar-color);
}

@return extend($theme, (
name: $name,
palette: $palette,
bar-color: $bar-color,
handle-color: $handle-color,
expander-color: $expander-color,
border-radius: $border-radius-handle,
size: $size
));
}

/// @param {Map} $theme - The theme used to style the component.
/// @requires {mixin} igx-root-css-vars
/// @requires rem
/// @requires --var
@mixin igx-splitter($theme) {
@include igx-root-css-vars($theme);
$splitter-color: --var($theme, 'bar-color');
$hitbox-size: 4px;
$debug-hitbox: false;
$hitbox-debug-color: rgba(coral, .24);

%handle-area {
position: absolute;
content: '';
width: 100%;
height: $hitbox-size;
background: if($debug-hitbox, $hitbox-debug-color, transparent);
}

%handle-area--vertical {
width: $hitbox-size;
height: 100%;
}

%igx-splitter-bar {
position: relative;
display: flex;
flex-grow: 1;
justify-content: center;
align-items: center;
background: $splitter-color;
border: 1px solid $splitter-color;
cursor: row-resize;
z-index: 99;
opacity: .68;
transition: opacity .15s $ease-out-quad !important;

&::before {
@extend %handle-area;
top: 100%;
}

&::after {
@extend %handle-area;
bottom: 100%;
}

&:hover {
transition: all .25s ease-out;
opacity: 1;
}
}

%igx-splitter-bar--vertical {
flex-direction: column;
height: 100%;
cursor: col-resize;

&::before {
@extend %handle-area--vertical;
top: 0;
right: 100%;
}

&::after {
@extend %handle-area--vertical;
top: 0;
left: 100%;
}
}

%igx-splitter-handle {
background: --var($theme, 'handle-color');
border-radius: --var($theme, 'border-radius');
}

%igx-splitter-handle--horizontal {
width: 25%;
height: --var($theme, 'size');
margin: 0 rem(48px);
}

%igx-splitter-handle--vertical {
width: --var($theme, 'size');
height: 25%;
margin: rem(48px) 0;
}

%igx-splitter-hitbox {
position: absolute;
content: '';
background: if($debug-hitbox, $hitbox-debug-color, transparent);
}

%igx-splitter-expander {
position: relative;
width: 0;
height: 0;
border-right: --var($theme, 'size') solid transparent;
border-left: --var($theme, 'size') solid transparent;
cursor: pointer;
z-index: 1;
}

%igx-splitter-expander--start {
border-bottom: --var($theme, 'size') solid --var($theme, 'expander-color');

&::before {
@extend %igx-splitter-hitbox;
top: calc(100% - #{map-get($theme, 'size')});
left: calc(100% - #{map-get($theme, 'size') * 2});
width: #{map-get($theme, 'size') * 4};
height: #{map-get($theme, 'size') * 3};
}
}

%igx-splitter-expander--end {
border-bottom: unset;
border-top: --var($theme, 'size') solid --var($theme, 'expander-color');

&::before {
@extend %igx-splitter-hitbox;
top: calc(100% - #{map-get($theme, 'size') * 2});
left: calc(100% - #{map-get($theme, 'size') * 2});
width: #{map-get($theme, 'size') * 4};
height: #{map-get($theme, 'size') * 3};
}
}

%igx-splitter-expander--start-vertical {
border-top: --var($theme, 'size') solid transparent;
border-right: --var($theme, 'size') solid --var($theme, 'expander-color');
border-bottom: --var($theme, 'size') solid transparent;
border-left: unset;

&::before {
@extend %igx-splitter-hitbox;
top: calc(100% - #{map-get($theme, 'size') * 2});
left: calc(100% - #{map-get($theme, 'size')});
width: #{map-get($theme, 'size') * 3};
height: #{map-get($theme, 'size') * 4};
}
}

%igx-splitter-expander--end-vertical {
border-top: --var($theme, 'size') solid transparent;
border-right: unset;
border-bottom: --var($theme, 'size') solid transparent;
border-left: --var($theme, 'size') solid --var($theme, 'expander-color');

&::before {
@extend %igx-splitter-hitbox;
left: calc(100% - #{map-get($theme, 'size') * 2});
top: calc(100% - #{map-get($theme, 'size') * 2});
height: #{map-get($theme, 'size') * 4};
width: #{map-get($theme, 'size') * 3};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
@import '../components/radio/radio-component';
@import '../components/scrollbar/scrollbar-component';
@import '../components/slider/slider-component';
@import '../components/splitter/splitter-component';
@import '../components/snackbar/snackbar-component';
@import '../components/switch/switch-component';
@import '../components/tabs/tabs-component';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
@import '../components/switch/switch-theme';
@import '../components/snackbar/snackbar-theme';
@import '../components/slider/slider-theme';
@import '../components/splitter/splitter-theme';
@import '../components/ripple/ripple-theme';
@import '../components/radio/radio-theme';
@import '../components/progress/progress-theme';
Expand Down Expand Up @@ -198,6 +199,14 @@
));
}

@if not(index($exclude, 'igx-splitter')) {
@include igx-splitter(igx-splitter-theme(
$palette,
$schema,
$border-radius: $roundness,
));
}

@if not(index($exclude, 'igx-checkbox')) {
@include igx-checkbox(igx-checkbox-theme(
$palette,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
@import './scrollbar';
@import './slider';
@import './snackbar';
@import './splitter';
@import './switch';
@import './tabs';
@import './time-picker';
Expand Down Expand Up @@ -82,6 +83,7 @@
/// @property {Map} igx-scrollbar [$_dark-scrollbar]
/// @property {Map} igx-slider [$_dark-slider]
/// @property {Map} igx-snackbar [$_dark-snackbar]
/// @property {Map} igx-splitter [$_dark-splitter]
/// @property {Map} igx-switch [$_dark-switch]
/// @property {Map} igx-tabs [$_dark-tabs]
/// @property {Map} igx-time-picker [$_dark-time-picker]
Expand Down Expand Up @@ -124,6 +126,7 @@ $dark-schema: (
igx-scrollbar: $_dark-scrollbar,
igx-slider: $_dark-slider,
igx-snackbar: $_dark-snackbar,
igx-splitter: $_dark-splitter,
igx-switch: $_dark-switch,
igx-tabs: $_dark-tabs,
igx-time-picker: $_dark-time-picker,
Expand Down Expand Up @@ -169,6 +172,7 @@ $dark-schema: (
/// @property {map} igx-scrollbar [$_dark-fluent-scrollbar],
/// @property {map} igx-slider [$_dark-fluent-slider],
/// @property {map} igx-snackbar [$_dark-fluent-snackbar],
/// @property {map} igx-splitter [$_dark-fluent-splitter],
/// @property {map} igx-switch [$_dark-fluent-switch],
/// @property {map} igx-tabs [$_dark-fluent-tabs],
/// @property {map} igx-time-picker [$_dark-fluent-time-picker],
Expand Down Expand Up @@ -211,6 +215,7 @@ $dark-fluent-schema: (
igx-scrollbar: $_dark-fluent-scrollbar,
igx-slider: $_dark-fluent-slider,
igx-snackbar: $_dark-fluent-snackbar,
igx-splitter: $_dark-fluent-splitter,
igx-switch: $_dark-fluent-switch,
igx-tabs: $_dark-fluent-tabs,
igx-time-picker: $_dark-fluent-time-picker,
Expand Down Expand Up @@ -256,6 +261,7 @@ $dark-fluent-schema: (
/// @property {map} igx-scrollbar [$_dark-bootstrap-scrollbar],
/// @property {map} igx-slider [$_dark-bootstrap-slider],
/// @property {map} igx-snackbar [$_dark-bootstrap-snackbar],
/// @property {map} igx-splitter [$_dark-bootstrap-splitter],
/// @property {map} igx-switch [$_dark-bootstrap-switch],
/// @property {map} igx-tabs [$_dark-bootstrap-tabs],
/// @property {map} igx-time-picker [$_dark-bootstrap-time-picker],
Expand Down Expand Up @@ -298,6 +304,7 @@ $dark-bootstrap-schema: (
igx-scrollbar: $_dark-bootstrap-scrollbar,
igx-slider: $_dark-bootstrap-slider,
igx-snackbar: $_dark-bootstrap-snackbar,
igx-splitter: $_dark-bootstrap-splitter,
igx-switch: $_dark-bootstrap-switch,
igx-tabs: $_dark-bootstrap-tabs,
igx-time-picker: $_dark-bootstrap-time-picker,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ $_dark-scrollbar: extend(
igx-color: 'surface',
lighten: 20%
),

track-background: (
igx-color: 'surface',
lighten: 5%
),
)
);

Expand Down
Loading