Skip to content

Commit

Permalink
Merge pull request #1537 from infor-design/1481-grid-checkbox-alignment
Browse files Browse the repository at this point in the history
1481 Fix IdsDataGridCell's checkbox formatter alignment
  • Loading branch information
tmcconechy authored Oct 12, 2023
2 parents f681332 + 7c1575d commit 1c4b0c8
Show file tree
Hide file tree
Showing 6 changed files with 176 additions and 1 deletion.
1 change: 1 addition & 0 deletions doc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
- `[Calendar]` Allow propagation of `dayselected` event from calendar. ([#1470](https://github.com/infor-design/enterprise-wc/issues/1470))
- `[DataGrid]` Added `wrap` attribute to `IdsMenuGroup` so large contextmenu menu-items can be wrapped into a column view. ([#1410](https://github.com/infor-design/enterprise-wc/issues/1410))
- `[DataGrid]` Fixed contextmenu focused menu item in datagrid. ([#1453](https://github.com/infor-design/enterprise-wc/issues/1453))
- `[DataGrid]` Add alignment rules and row-height specific padding to checkbox formatters. ([#1481](https://github.com/infor-design/enterprise-wc/issues/1481))
- `[DataGrid]` Fixed a bug on the size of the `xxs` filter row inputs. ([#1456](https://github.com/infor-design/enterprise-wc/issues/1456))
- `[DataGrid]` Fixed runtime- error on tree-grid when `IdsDataGrid.expandAll()` is executed. ([#1485](https://github.com/infor-design/enterprise-wc/issues/1485))
- `[Icons]` Fixed how icon sizes are applied to correct a bug where icons in safari are the wrong size. ([#1519](https://github.com/infor-design/enterprise-wc/issues/1519))
Expand Down
43 changes: 43 additions & 0 deletions src/components/ids-data-grid/demos/columns-checkbox-alignment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title><%= htmlWebpackPlugin.options.title %></title>
<%= htmlWebpackPlugin.options.font %>
</head>
<body>
<ids-container role="main" padding="8" hidden>
<ids-theme-switcher mode="light"></ids-theme-switcher>
<ids-layout-grid auto-fit="true" padding="md">
<ids-text font-size="12" type="h1">Data Grid (Alignment)</ids-text>
</ids-layout-grid>
<ids-layout-grid auto-fit="true" padding-x="md">
<ids-layout-grid-cell>
<ids-toolbar>
<ids-toolbar-section align="end" favor>
<ids-menu-button id="menu-button" menu="row-height-menu">
<ids-icon icon="more"></ids-icon>
<span class="audible">Settings Menu Button</span>
</ids-menu-button>
<ids-popup-menu id="row-height-menu" target="menu-button" trigger-type="click">
<ids-menu-group select="single">
<ids-menu-header><ids-text font-weight="semi-bold">Style</ids-text></ids-menu-header>
<ids-menu-item value="is-list" toggleable>List</ids-menu-item>
</ids-menu-group>
<ids-menu-group select="single">
<ids-menu-header><ids-text font-weight="semi-bold">Row Height</ids-text></ids-menu-header>
<ids-menu-item value="xxs">Extra Extra Small</ids-menu-item>
<ids-menu-item value="xs">Extra Small</ids-menu-item>
<ids-menu-item value="sm">Small</ids-menu-item>
<ids-menu-item value="md" selected="true">Medium</ids-menu-item>
<ids-menu-item value="lg">Large</ids-menu-item>
</ids-menu-group>
</ids-popup-menu>
</ids-toolbar-section>
</ids-toolbar>

<ids-data-grid id="data-grid-alignment" label="Books"></ids-data-grid>
</ids-layout-grid-cell>
</ids-layout-grid>
</ids-container>
</body>
</html>
78 changes: 78 additions & 0 deletions src/components/ids-data-grid/demos/columns-checkbox-alignment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import type IdsDataGrid from '../ids-data-grid';
import type IdsPopupMenu from '../../ids-popup-menu/ids-popup-menu';
import type IdsMenuItem from '../../ids-menu/ids-menu-item';
import '../ids-data-grid';
import type { IdsDataGridColumn } from '../ids-data-grid-column';
import booksJSON from '../../../assets/data/books.json';

// Example for populating the DataGrid
const dataGrid = document.querySelector<IdsDataGrid>('#data-grid-alignment')!;
const rowHeightMenu = document.querySelector<IdsPopupMenu>('#row-height-menu')!;

// Change row height with popup menu
rowHeightMenu?.addEventListener('selected', (e: Event) => {
const value = (e.target as IdsMenuItem).value;
if (value !== 'is-list') {
dataGrid.rowHeight = value as string;
}
if (value === 'is-list') {
dataGrid.listStyle = !dataGrid.listStyle;
}
});

rowHeightMenu?.addEventListener('deselected', (e: Event) => {
const value = (e.target as IdsMenuItem).value;
if (value === 'is-list') {
dataGrid.listStyle = !dataGrid.listStyle;
}
});

if (dataGrid) {
(async function init() {
// Do an ajax request
const url: any = booksJSON;
const columns: IdsDataGridColumn[] = [];

// Set up columns
columns.push({
id: 'description',
name: 'ID',
field: 'description',
sortable: true,
formatter: dataGrid.formatters.text
});
columns.push({
id: 'inStock',
name: 'Checkbox (left)',
field: 'inStock',
formatter: dataGrid.formatters.checkbox,
sortable: true,
align: 'left'
});
columns.push({
id: 'inStock',
name: 'Checkbox (center)',
field: 'inStock',
formatter: dataGrid.formatters.checkbox,
sortable: true,
align: 'center'
});
columns.push({
id: 'inStock',
name: 'Checkbox (right)',
field: 'inStock',
formatter: dataGrid.formatters.checkbox,
sortable: true,
align: 'right'
});

dataGrid.columns = columns;
const setData = async () => {
const res = await fetch(url);
const data = await res.json();
dataGrid.data = data;
};

setData();
}());
}
3 changes: 3 additions & 0 deletions src/components/ids-data-grid/demos/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@
- link: columns-alignment.html
type: Example
description: Shows column and header alignment
- link: columns-checkbox-alignment.html
type: Example
description: Shows checkbox column alignment
- link: columns-custom-css.html
type: Example
description: Shows initialy hidden columns
Expand Down
32 changes: 32 additions & 0 deletions src/components/ids-data-grid/ids-data-grid-cell.scss
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,12 @@

--ids-input-font-size-sm: var(--ids-data-grid-font-size-sm);
}

.ids-data-grid-cell {
.ids-data-grid-checkbox-container:not(.is-selection-checkbox) {
padding-inline: var(--ids-data-grid-padding-xxs);
}
}
}

[data-row-height='xs'] {
Expand Down Expand Up @@ -355,6 +361,12 @@
.ids-data-grid-cell.is-editing.is-dropdown.is-inline ids-dropdown {
padding: 0 2px;
}

.ids-data-grid-cell {
.ids-data-grid-checkbox-container:not(.is-selection-checkbox) {
padding-inline: var(--ids-data-grid-padding-xs);
}
}
}

[data-row-height='sm'] {
Expand Down Expand Up @@ -385,6 +397,12 @@
--ids-trigger-field-button-margin: -1px;
--ids-button-tertiary-color-background-hover: transparent;
}

.ids-data-grid-cell {
.ids-data-grid-checkbox-container:not(.is-selection-checkbox) {
padding-inline: var(--ids-data-grid-padding-sm);
}
}
}

[data-row-height='md'] {
Expand All @@ -397,6 +415,20 @@
--ids-trigger-field-button-margin: -3px;
--ids-button-tertiary-color-background-hover: transparent;
}

.ids-data-grid-cell {
.ids-data-grid-checkbox-container:not(.is-selection-checkbox) {
padding-inline: var(--ids-data-grid-padding-md);
}
}
}

[data-row-height='lg'] {
.ids-data-grid-cell {
.ids-data-grid-checkbox-container:not(.is-selection-checkbox) {
padding-inline: var(--ids-data-grid-padding-lg);
}
}
}

// List Style Feature
Expand Down
20 changes: 19 additions & 1 deletion src/components/ids-data-grid/ids-data-grid.scss
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,28 @@
.ids-data-grid-checkbox-container {
cursor: var(--ids-cursor-pointer);
display: flex;
justify-content: center;
width: 100%;
}

// Checkbox alignments
.ids-data-grid-cell.align-left {
.ids-data-grid-checkbox-container {
justify-content: start;
}
}

.ids-data-grid-cell.align-center {
.ids-data-grid-checkbox-container {
justify-content: center;
}
}

.ids-data-grid-cell.align-right {
.ids-data-grid-checkbox-container {
justify-content: end;
}
}

.ids-data-grid-checkbox {
@include checkbox-unchecked();

Expand Down

0 comments on commit 1c4b0c8

Please sign in to comment.