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

Cherry-picks to release branch #28492

Merged
merged 18 commits into from
Dec 5, 2024
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
dd04a5e
🎹 Pagination: Create Overview demo page. (React) (#28484)
siarhei-arzamasau Dec 3, 2024
06f2bab
DataGrid - Sticky columns: Fix auto scrolling during keyboard navigat…
Alyar666 Dec 3, 2024
e9557de
DataGrid - Sticky Columns: Fix alternating rows for generic.greenmist…
Alyar666 Dec 3, 2024
b62aae5
Chat: Rearrange jquery demo code struture (#28483)
nikkithelegendarypokemonster Dec 4, 2024
6dba42f
T1265009: Research Incomplete string escaping or encoding (#28487)
Raushen Dec 4, 2024
edbf2c4
Scheduler a11y - fixes (#28470)
pomahtri Dec 4, 2024
ab737ec
🎹 Pagination: Create Overview demo page. (Angular) (#28490)
siarhei-arzamasau Dec 4, 2024
41114bf
Remove deprecated angular metadata (#28442)
alexslavr Dec 4, 2024
69d695b
Pagination: describe demo (#28468)
vladaskorohodova Dec 4, 2024
5487143
Chat Overview demo: fix Vue bindings (#28496)
ksercs Dec 4, 2024
f4372d7
Button - r1 - fix hovering if svg icon is used (T1266442) (#28495)
pomahtri Dec 4, 2024
e38d14e
Replace dxi-toolbar-item with a component-specific configuration comp…
dxvladislavvolkov Dec 4, 2024
24c097d
Button: no error should be raised when hovering if svg icon is used (…
ksercs Dec 4, 2024
e0abce0
Scheduler a11y: fix Overview demo contrast issues (#28200)
pomahtri Dec 4, 2024
bc2c1d2
TestCafe scenario tests: unskip platform scenarios testing (add flaky…
EugeniyKiyashko Dec 4, 2024
6b04dd1
DataGrid - Sticky Columns: Fix display of fixed columns at different …
Alyar666 Dec 4, 2024
289c6ee
🎹 Pagination: Create Overview demo page. (Vue) (#28494)
siarhei-arzamasau Dec 4, 2024
70f711a
Fix dxi-dxo collision in angular base nested components (#28498)
alexslavr Dec 5, 2024
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
48 changes: 24 additions & 24 deletions apps/demos/Demos/Chat/Customization/jQuery/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,6 @@ $(() => {
messageTimestampFormat: messageTimestampFormat[0],
}).dxChat('instance');

$('#chat-disabled').dxCheckBox({
value: false,
text: 'Disable Chat',
onValueChanged(data) {
chat.option('disabled', data.value);
},
});

$('#show-day-headers').dxCheckBox({
value: true,
text: 'Show Day Headers',
onValueChanged(data) {
chat.option('showDayHeaders', data.value);
},
});

$('#show-message-timestamp').dxCheckBox({
value: true,
text: 'Show Message Timestamp',
onValueChanged(data) {
chat.option('showMessageTimestamp', data.value);
},
});

$('#show-avatar').dxCheckBox({
value: true,
text: 'Show Avatar',
Expand All @@ -50,6 +26,14 @@ $(() => {
},
});

$('#show-day-headers').dxCheckBox({
value: true,
text: 'Show Day Headers',
onValueChanged(data) {
chat.option('showDayHeaders', data.value);
},
});

$('#day-headers-format').dxSelectBox({
items: dayHeaderFormat,
value: dayHeaderFormat[0],
Expand All @@ -59,6 +43,14 @@ $(() => {
},
});

$('#show-message-timestamp').dxCheckBox({
value: true,
text: 'Show Message Timestamp',
onValueChanged(data) {
chat.option('showMessageTimestamp', data.value);
},
});

$('#message-timestamp-format').dxSelectBox({
items: messageTimestampFormat,
value: messageTimestampFormat[0],
Expand All @@ -67,4 +59,12 @@ $(() => {
chat.option('messageTimestampFormat', data.value);
},
});

$('#chat-disabled').dxCheckBox({
value: false,
text: 'Disable Chat',
onValueChanged(data) {
chat.option('disabled', data.value);
},
});
});
119 changes: 62 additions & 57 deletions apps/demos/Demos/Chat/Overview/Vue/App.vue
Original file line number Diff line number Diff line change
@@ -1,62 +1,67 @@
<template>
<DxChat
v-model:items="messages"
v-model:user="currentUser"
v-model:typing-users="userChatTypingUsers"
@message-entered="onMessageEntered($event)"
@typing-start="userChatTypingStart()"
@typing-end="userChatTypingEnd()"
></DxChat>
<DxChat
v-model:items="messages"
v-model:user="supportAgent"
v-model:typing-users="supportChatTypingUsers"
@message-entered="onMessageEntered($event)"
@typing-start="supportChatTypingStart()"
@typing-end="supportChatTypingEnd()"
></DxChat>
<DxChat
v-model:items="messages"
v-model:user="currentUser"
v-model:typing-users="userChatTypingUsers"
@message-entered="onMessageEntered($event)"
@typing-start="userChatTypingStart()"
@typing-end="userChatTypingEnd()"
/>
<DxChat
v-model:items="messages"
v-model:user="supportAgent"
v-model:typing-users="supportChatTypingUsers"
@message-entered="onMessageEntered($event)"
@typing-start="supportChatTypingStart()"
@typing-end="supportChatTypingEnd()"
/>
</template>

<style scoped>
#app {
display: flex;
gap: 20px;
}

.dx-chat {
height: 710px;
}

.dx-avatar {
border: 1px solid var(--dx-color-border);
}
</style>

<script setup lang="ts">
import { ref } from 'vue';
import DxChat from 'devextreme-vue/chat';
import { messages, supportAgent, currentUser } from './data.ts';

const userChatTypingUsers = ref([]);
const supportChatTypingUsers = ref([]);

function onMessageEntered(event) {
messages.value = [...messages.value, event.message];
}

function userChatTypingStart() {
supportChatTypingUsers.value = [currentUser.value];
}

function userChatTypingEnd() {
supportChatTypingUsers.value = [];
}

function supportChatTypingStart() {
userChatTypingUsers.value = [supportAgent.value];
}

function supportChatTypingEnd() {
userChatTypingUsers.value = [];
}
import { ref } from 'vue';
import DxChat from 'devextreme-vue/chat';
import {
messages as initialMessages,
supportAgent,
currentUser,
} from './data.ts';

const messages = ref(initialMessages);
const userChatTypingUsers = ref([]);
const supportChatTypingUsers = ref([]);

function onMessageEntered(event) {
messages.value = [...messages.value, event.message];
}

function userChatTypingStart() {
supportChatTypingUsers.value = [currentUser];
}

function userChatTypingEnd() {
supportChatTypingUsers.value = [];
}

function supportChatTypingStart() {
userChatTypingUsers.value = [supportAgent];
}

function supportChatTypingEnd() {
userChatTypingUsers.value = [];
}
</script>

<style scoped>
#app {
display: flex;
gap: 20px;
}

.dx-chat {
height: 710px;
}

.dx-avatar {
border: 1px solid var(--dx-color-border);
}
</style>
100 changes: 100 additions & 0 deletions apps/demos/Demos/Pagination/Overview/Angular/app/app.component.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
body {
overflow-x: hidden;
}

.demo-container {
display: flex;
flex-direction: column;
align-items: center;
}

.container {
min-width: 720px;
width: 100%;
}

::ng-deep .employees {
display: flex;
flex-wrap: wrap;
gap: 16px;
min-height: 644px;
padding-bottom: 24px;
}

::ng-deep employee-card {
width: 100%;
max-height: 312px;
align-self: stretch;
overflow: hidden;
border: var(--dx-border-width) solid var(--dx-color-border);
border-radius: var(--dx-border-radius);
background-color: var(--dx-component-color-bg);
}

::ng-deep .employees.employees--forth employee-card {
min-width: 250px;
width: 390px;
flex-basis: calc(50% - 10px);
}

::ng-deep .employees.employees--six employee-card {
flex-basis: calc(33.3% - 12.5px);
}

::ng-deep .employees__img-wrapper {
height: 180px;
position: relative;
overflow: hidden;
border-bottom: var(--dx-border-width) solid var(--dx-color-border);
background-color: #fff;
}

::ng-deep .employees__img {
display: block;
height: 220px;
position: absolute;
content: "";
left: 50%;
top: 0;
transform: translateX(-50%);
}

::ng-deep .employees__info {
padding: 24px;
}

::ng-deep .employees__info-row {
margin-bottom: 8px;
text-wrap: nowrap;
}

::ng-deep .employees__info-label {
display: inline-block;
font-weight: 600;
vertical-align: middle;
}

::ng-deep .employees.employees--forth .employees__info-label {
width: 160px;
}

::ng-deep .employees.employees--six .employees__info-label {
width: 80px;
}

::ng-deep .employees__info-value {
display: inline-block;
text-wrap: nowrap;
text-overflow: ellipsis;
vertical-align: middle;
overflow: hidden;
white-space:nowrap
}

::ng-deep .employees.employees--forth .employees__info-value {
max-width: 180px;
}

::ng-deep .employees.employees--six .employees__info-value {
max-width: 120px;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
<dx-data-grid
id="gridContainer"
[dataSource]="customers"
[columns]="['CompanyName', 'City', 'State', 'Phone', 'Fax']"
[showBorders]="true"
>
</dx-data-grid>
<div class="container">
<div
class="employees"
[ngClass]="pageSize === 4 ? 'employees--forth' : 'employees--six'"
>
@for (employee of pageEmployees; track employee.ID) {
<employee-card [employee]="employee"></employee-card>
}
</div>

<dx-pagination
[showInfo]="showInfo"
[showNavigationButtons]="showNavigationButtons"
[allowedPageSizes]="allowedPageSizes"
[itemCount]="itemCount"
[pageIndex]="pageIndex"
[pageSize]="pageSize"
(pageIndexChange)="onPageIndexChange($event)"
(pageSizeChange)="onPageSizeChange($event)"
>
</dx-pagination>
</div>
44 changes: 38 additions & 6 deletions apps/demos/Demos/Pagination/Overview/Angular/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { NgModule, Component, enableProdMode } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { DxDataGridModule } from 'devextreme-angular';
import { Customer, Service } from './app.service';
import { DxPaginationModule } from 'devextreme-angular';
import { Employee, Service } from './app.service';
import { EmployeeCard } from './employee-card/employee-card.component';

if (!/localhost/.test(document.location.host)) {
enableProdMode();
Expand All @@ -17,22 +18,53 @@ if (window && window.config.packageConfigPaths) {
@Component({
selector: 'demo-app',
templateUrl: `.${modulePrefix}/app.component.html`,
styleUrls: [`.${modulePrefix}/app.component.css`],
providers: [Service],
})
export class AppComponent {
customers: Customer[];
employees: Employee[];

pageEmployees: Employee[];

itemCount: number;

readonly allowedPageSizes = [4, 6];

showInfo = true;

showNavigationButtons = true;

pageIndex = 1;

pageSize = 4;

onPageIndexChange(val) {
this.pageIndex = val;
this.setPageEmployees();
}

onPageSizeChange(val) {
this.pageSize = val;
this.setPageEmployees();
}

setPageEmployees() {
this.pageEmployees = this.employees.slice((this.pageIndex - 1) * this.pageSize, this.pageIndex * this.pageSize);
}

constructor(service: Service) {
this.customers = service.getCustomers();
this.employees = service.getEmployees();
this.itemCount = this.employees.length;
this.setPageEmployees();
}
}

@NgModule({
imports: [
BrowserModule,
DxDataGridModule,
DxPaginationModule,
],
declarations: [AppComponent],
declarations: [AppComponent, EmployeeCard],
bootstrap: [AppComponent],
})
export class AppModule { }
Expand Down
Loading
Loading