Skip to content

Commit

Permalink
Merge branch 'main' into 1229-tree-grid-cell-alignment
Browse files Browse the repository at this point in the history
  • Loading branch information
tmcconechy authored Oct 16, 2023
2 parents ea0db26 + fd5ace3 commit f5637cc
Show file tree
Hide file tree
Showing 15 changed files with 344 additions and 26 deletions.
4 changes: 4 additions & 0 deletions doc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,16 @@
### 1.0.0-beta.16 Fixes

- `[AxisChart]` Fixed responsive axis charts `inherit` setting value. ([#1458](https://github.com/infor-design/enterprise-wc/issues/1458))
- `[Calendar]` Fixed calendar `firstDayOfWeek` setting. ([#1467](https://github.com/infor-design/enterprise-wc/issues/1467))
- `[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))
- `[DataGrid]` Improve/implement style for inline-editable data grid cells. ([#1229](https://github.com/infor-design/enterprise-wc/issues/1229))
- `[DataGrid]` Fixed runtime-error on tree-grid when `IdsDataGrid.expandAll()` is executed. ([#1485](https://github.com/infor-design/enterprise-wc/issues/1485))
- `[DataGrid]` Fixed blank rows on tree-grid after `IdsDataGrid.collapseAll()` is executed. ([#1486](https://github.com/infor-design/enterprise-wc/issues/1486))
- `[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))
- `[Modal]` Removed overflow constraint on modal content area to enable proper display of lists/popups attached to inner components. ([#1436](https://github.com/infor-design/enterprise-wc/issues/1436))
- `[Modal]` Changed the way z-index counting works to prevent a TypeScript/Angular compiler bug. ([#1476](https://github.com/infor-design/enterprise-wc/issues/1476))
Expand Down
42 changes: 42 additions & 0 deletions src/components/ids-calendar/demos/first-day-of-week.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title><%= htmlWebpackPlugin.options.title %></title>
<%= htmlWebpackPlugin.options.font %>
</head>
<body>
<ids-container role="main" padding="8" hidden>
<ids-toolbar>
<ids-toolbar-section align="end" type="fluid">
<ids-menu-button menu="add-event" value="${view}">
<ids-icon icon="add"></ids-icon>
<span class="audible">Add Event</span>
</ids-menu-button>
<ids-popup-menu id="add-event" trigger="click">
<ids-menu-group>
<ids-menu-item value="add-api">
<ids-text>Add Event (API)</ids-text>
</ids-menu-item>
<ids-menu-item value="add-modal">
<ids-text>Add Event (Modal)</ids-text>
</ids-menu-item>
<ids-menu-item value="clear">
<ids-text>Clear Events</ids-text>
</ids-menu-item>
</ids-menu-group>
</ids-popup-menu>

<ids-theme-switcher mode="light" version="new"></ids-theme-switcher>
</ids-toolbar-section>
</ids-toolbar>
<ids-layout-grid auto-fit="true" padding="md">
<ids-text font-size="12" type="h1">Calendar View</ids-text>
</ids-layout-grid>
<ids-layout-grid auto-fit="true" padding-x="md">
<ids-layout-grid-cell>
<ids-calendar date="10/22/2019" view-picker first-day-of-week="6"></ids-calendar>
</ids-layout-grid-cell>
</ids-layout-grid>
</ids-container>
</body>
</html>
29 changes: 29 additions & 0 deletions src/components/ids-calendar/demos/first-day-of-week.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import eventsJSON from '../../../assets/data/events.json';
import eventTypesJSON from '../../../assets/data/event-types.json';

const eventsURL: any = eventsJSON;
const eventTypesURL: any = eventTypesJSON;

/**
* Fetch events.json
* @returns {Promise} events.json content
*/
function getCalendarEvents(): Promise<any> {
return fetch(eventsURL).then((res) => res.json());
}

/**
* Fetch event-types.json
* @returns {Promise} event-types.json content
*/
function getEventTypes(): Promise<any> {
return fetch(eventTypesURL).then((res) => res.json());
}

document.addEventListener('DOMContentLoaded', async () => {
const calendar: any = document.querySelector('ids-calendar');

// Set event types
calendar.eventTypesData = await getEventTypes();
calendar.eventsData = await getCalendarEvents();
});
3 changes: 3 additions & 0 deletions src/components/ids-calendar/demos/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@
- link: example-custom.html
type: Example
description: Custom Calendar View
- link: first-day-of-week.html
type: Example
description: Custom calendar first day of week
47 changes: 41 additions & 6 deletions src/components/ids-calendar/ids-calendar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,9 @@ export default class IdsCalendar extends Base {
show-today="true"
target="#btn-picker"
trigger-elem="#btn-picker"
trigger-type="click"></ids-date-picker-popup>`;
trigger-type="click"
first-day-of-week="${this.firstDayOfWeek || 0}">
</ids-date-picker-popup>`;

const todayBtn = this.#todayBtnTemplate();

Expand Down Expand Up @@ -884,13 +886,27 @@ export default class IdsCalendar extends Base {
view.setAttribute(attributes.MONTH, String(date.getMonth()));
view.setAttribute(attributes.DAY, String(date.getDate()));
} else if (view.tagName === 'IDS-WEEK-VIEW') {
const start = isDayView ? date : firstDayOfWeekDate(date);
const end = isDayView ? date : lastDayOfWeekDate(date);
const { start, end } = this.#getDatesForWeek(date, isDayView);
view.setAttribute(attributes.START_DATE, String(start));
view.setAttribute(attributes.END_DATE, String(end));
}
}

/**
* Get start/end dates for week from provided target date
* @param {Date} date target date
* @param {boolean} isDayView true if day view
* @returns {Record<string, Date>} start/end dates
*/
#getDatesForWeek(date: Date, isDayView: boolean): { start: Date, end: Date } {
const start = isDayView ? date : firstDayOfWeekDate(date, this.firstDayOfWeek);
const end = isDayView ? date : lastDayOfWeekDate(date, this.firstDayOfWeek);
start.setHours(0, 0, 0, 0);
end.setHours(0, 0, 0, 0);

return { start, end };
}

/**
* Inserts view component template
* @param {string} template view component template
Expand Down Expand Up @@ -985,7 +1001,8 @@ export default class IdsCalendar extends Base {
<ids-month-view
month="${date.getMonth()}"
day="${date.getDate()}"
year="${date.getFullYear()}">
year="${date.getFullYear()}"
first-day-of-week="${this.firstDayOfWeek || 0}">
<slot name="MonthViewCalendarEventTemplate" slot="customCalendarEvent"></slot>
</ids-month-view>
`;
Expand All @@ -998,8 +1015,7 @@ export default class IdsCalendar extends Base {
*/
#createWeekTemplate(isDayView = false): string {
const date = this.date;
const start = isDayView ? date : firstDayOfWeekDate(date);
const end = isDayView ? date : lastDayOfWeekDate(date);
const { start, end } = this.#getDatesForWeek(date, isDayView);

return `
<ids-week-view
Expand Down Expand Up @@ -1329,4 +1345,23 @@ export default class IdsCalendar extends Base {

return targetLocale.formatDate(startDate, { month: 'long', year: 'numeric' });
}

onFirstDayOfWeekChange(newValue: number): void {
const view = this.getView();
const picker = this.container?.querySelector('ids-date-picker-popup');

picker?.setAttribute(attributes.FIRST_DAY_OF_WEEK, String(newValue || 0));

if (view?.tagName === 'IDS-MONTH-VIEW') {
view.firstDayOfWeek = newValue;
}

if (view?.tagName === 'IDS-WEEK-VIEW') {
const date = this.date;
const isDayView = this.state.view === 'day';
const { start, end } = this.#getDatesForWeek(date, isDayView);
view.startDate = start;
view.endDate = end;
}
}
}
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 @@ -341,6 +341,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);
}
}
}

// =============================================
Expand Down Expand Up @@ -388,6 +394,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);
}
}
}

// =============================================
Expand All @@ -413,6 +425,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);
}
}
}

// =============================================
Expand All @@ -429,6 +447,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
Loading

0 comments on commit f5637cc

Please sign in to comment.