Skip to content

Commit dbc1ec8

Browse files
chore(release): release 15.0.0 (#302)
Co-authored-by: huaweidevcloud <[email protected]>
1 parent 94d3b7e commit dbc1ec8

File tree

342 files changed

+5221
-2646
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

342 files changed

+5221
-2646
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ To see more in [devui.design](https://devui.design/home).
2323

2424
## Angular Support
2525

26-
Now supports Angular <font color=red>`^14.0.0`</font>
26+
Now supports Angular <font color=red>`^15.0.0`</font>
2727

2828
## Getting Started
2929

README_zh_CN.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ DevUI Design设计系统包含了DevUI规则、设计语言和最佳实践的资
2323

2424
## Angular版本
2525

26-
当前支持的angular版本<font color=red>`^14.0.0`</font>
26+
当前支持的angular版本<font color=red>`^15.0.0`</font>
2727

2828
## 快速开始
2929

devui/accordion/accodion.spec.ts

+288
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
import { Component, DebugElement } from '@angular/core';
2+
import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing';
3+
import { By } from '@angular/platform-browser';
4+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
5+
import { Router } from '@angular/router';
6+
import { RouterTestingModule } from '@angular/router/testing';
7+
import { AccordionComponent } from './accordion.component';
8+
import { AccordionModule } from './accordion.module';
9+
10+
@Component({
11+
template: `
12+
<d-accordion
13+
[data]="menu"
14+
class="menu"
15+
[restrictOneOpen]="restrictOneOpen"
16+
(itemClick)="itemClick($event)"
17+
(menuToggle)="menuToggle($event)"
18+
(activeItemChange)="activeItemChange($event)"
19+
[accordionType]="accordionTypeEmbed ? 'embed' : 'normal'"
20+
></d-accordion>
21+
`,
22+
})
23+
class TestAccordionComponent {
24+
restrictOneOpen = false;
25+
accordionTypeEmbed = false;
26+
menu = [
27+
{
28+
title: 'Content 1',
29+
children: [{ title: 'Child Content 1' }, { title: 'Child Content 2' }, { title: 'Child Content ' }],
30+
},
31+
{
32+
title: 'Content 2(This is a long sentence for option display.)',
33+
children: [
34+
{ title: 'Child Content 1 (This is a long sentence for option display.)' },
35+
{ title: 'Child Content 2' },
36+
{ title: 'Child Content 3' },
37+
],
38+
},
39+
{
40+
title: 'Content 3 (Default Open)',
41+
open: true,
42+
children: [
43+
{ title: 'Child Content 1 (Disabled)', disabled: true },
44+
{ title: 'Child Content 2 (Default Active)', active: true },
45+
{ title: 'Child Content 3' },
46+
],
47+
},
48+
{
49+
title: 'Content 4 (No Child)',
50+
children: [],
51+
},
52+
{
53+
title: 'Content 5 (Disabled)',
54+
disabled: true,
55+
children: [],
56+
},
57+
{
58+
title: 'Content 6 (Dynamic Content)',
59+
needLoadChildren: true,
60+
loading: false,
61+
children: [],
62+
},
63+
];
64+
65+
menuToggle = jasmine.createSpy('menu toggled');
66+
67+
itemClick = jasmine.createSpy('item clicked');
68+
69+
activeItemChange = jasmine.createSpy('active item Changed');
70+
}
71+
72+
@Component({
73+
template: `
74+
<d-accordion
75+
[data]="menu"
76+
class="menu"
77+
[restrictOneOpen]="restrictOneOpen"
78+
[accordionType]="accordionTypeEmbed ? 'embed' : 'normal'"
79+
[itemTemplate]="itemTemplate"
80+
[menuItemTemplate]="menuItemTemplate"
81+
[loadingTemplate]="loadingTemplate"
82+
></d-accordion>
83+
<ng-template #itemTemplate let-item="item">
84+
<div class="custom-item-template">
85+
{{ item.title }}
86+
</div>
87+
<ng-template #menuItemTemplate let-item="item">
88+
<div class="custom-menu-item-template">
89+
{{ item.title }}
90+
</div>
91+
</ng-template>
92+
<ng-template #loadingTemplate let-item="item">
93+
<div class="custom-loading-template">Loading...</div>
94+
</ng-template>
95+
</ng-template>
96+
`,
97+
})
98+
class TestAccordionTemplateComponent {
99+
restrictOneOpen = false;
100+
accordionTypeEmbed = false;
101+
menu = [
102+
{
103+
title: 'Content 1',
104+
children: [{ title: 'Child Content 1' }, { title: 'Child Content 2' }, { title: 'Child Content ' }],
105+
},
106+
{
107+
title: 'Content 2(This is a long sentence for option display.)',
108+
children: [
109+
{ title: 'Child Content 1 (This is a long sentence for option display.)' },
110+
{ title: 'Child Content 2' },
111+
{ title: 'Child Content 3' },
112+
],
113+
},
114+
{
115+
title: 'Content 3 (Default Open)',
116+
open: true,
117+
children: [
118+
{ title: 'Child Content 1 (Disabled)', disabled: true },
119+
{ title: 'Child Content 2 (Default Active)', active: true },
120+
{ title: 'Child Content 3' },
121+
],
122+
},
123+
{
124+
title: 'Content 4 (No Child)',
125+
children: [],
126+
},
127+
{
128+
title: 'Content 5 (Disabled)',
129+
disabled: true,
130+
children: [],
131+
},
132+
{
133+
title: 'Content 6 (Dynamic Content)',
134+
needLoadChildren: true,
135+
loading: false,
136+
children: [],
137+
},
138+
];
139+
}
140+
141+
@Component({
142+
template: ` <d-accordion [data]="menu" class="menu" [linkType]="'routerLink'"></d-accordion> `,
143+
})
144+
class TestAccordionLinkComponent {
145+
constructor(private router: Router) {}
146+
menu = [
147+
{ title: 'Accordion', link: '/components/zh-cn/accordion', disabled: true },
148+
{ title: 'Anchor', link: '/components/zh-cn/anchor?demo#basic' },
149+
{ title: 'Button', link: '/components/zh-cn/button' },
150+
];
151+
152+
get path() {
153+
return this.router.url;
154+
}
155+
}
156+
157+
@Component({
158+
template: ` <d-accordion [data]="menu" class="menu" [linkType]="'hrefLink'" [linkDefaultTarget]="'self'"></d-accordion> `,
159+
})
160+
class TestAccordionHrefLinkComponent {
161+
menu = [
162+
{ title: 'Accordion', link: '/components/zh-cn/accordion', disabled: true },
163+
{ title: 'Anchor', link: '/components/zh-cn/anchor' },
164+
{ title: 'Button', link: '/components/zh-cn/button' },
165+
];
166+
}
167+
168+
describe('Accordion', () => {
169+
beforeEach(waitForAsync(() => {
170+
TestBed.configureTestingModule({
171+
imports: [AccordionModule, RouterTestingModule.withRoutes([]), BrowserAnimationsModule],
172+
declarations: [TestAccordionComponent, TestAccordionLinkComponent, TestAccordionHrefLinkComponent, TestAccordionTemplateComponent],
173+
}).compileComponents();
174+
}));
175+
176+
describe('Accordion', () => {
177+
let testComponent: TestAccordionComponent;
178+
let accordionDebugElement: DebugElement;
179+
let accordionNativeElement: HTMLElement;
180+
let fixture: ComponentFixture<TestAccordionComponent>;
181+
beforeEach(() => {
182+
fixture = TestBed.createComponent(TestAccordionComponent);
183+
testComponent = fixture.componentInstance;
184+
accordionDebugElement = fixture.debugElement.query(By.directive(AccordionComponent));
185+
accordionNativeElement = accordionDebugElement.nativeElement;
186+
fixture.detectChanges();
187+
});
188+
189+
describe('accordion default behavior', () => {
190+
it('accordion demo has created successfully', () => {
191+
expect(testComponent).toBeTruthy();
192+
});
193+
194+
it('accordion item click', fakeAsync(() => {
195+
const accordionItems = accordionNativeElement.querySelectorAll('.devui-accordion-item');
196+
(accordionItems[0].querySelector('d-accordion-menu .devui-accordion-item-title') as HTMLElement).click();
197+
fixture.detectChanges();
198+
tick();
199+
fixture.detectChanges();
200+
expect(testComponent.menuToggle).toHaveBeenCalled();
201+
expect(accordionItems[0].querySelector('.devui-accordion-item-title').classList).toContain('open');
202+
}));
203+
204+
it('accordion item click', () => {
205+
const accordionItems = accordionNativeElement.querySelectorAll('.devui-accordion-item');
206+
(accordionItems[11].querySelector('d-accordion-item') as HTMLElement).click();
207+
fixture.detectChanges();
208+
expect(accordionItems[11].querySelector('.devui-accordion-item-title').classList).toContain('active');
209+
expect(testComponent.itemClick).toHaveBeenCalled();
210+
});
211+
});
212+
});
213+
214+
describe('Accordion Template', () => {
215+
let testComponent: TestAccordionTemplateComponent;
216+
let accordionDebugElement: DebugElement;
217+
let accordionNativeElement: HTMLElement;
218+
let fixture: ComponentFixture<TestAccordionTemplateComponent>;
219+
beforeEach(() => {
220+
fixture = TestBed.createComponent(TestAccordionTemplateComponent);
221+
testComponent = fixture.componentInstance;
222+
accordionDebugElement = fixture.debugElement.query(By.directive(AccordionComponent));
223+
accordionNativeElement = accordionDebugElement.nativeElement;
224+
fixture.detectChanges();
225+
});
226+
227+
describe('accordion default behavior', () => {
228+
it('accordion demo has created successfully', () => {
229+
expect(testComponent).toBeTruthy();
230+
});
231+
232+
it('accordion item custom template render correctly', () => {
233+
const accordionItems = accordionNativeElement.querySelectorAll('.devui-accordion-item');
234+
const customItem = accordionItems[0].querySelector('.custom-item-template');
235+
expect(customItem).toBeTruthy();
236+
});
237+
});
238+
});
239+
240+
describe('Accordion Link', () => {
241+
let testComponent: TestAccordionLinkComponent;
242+
let accordionDebugElement: DebugElement;
243+
let accordionNativeElement: HTMLElement;
244+
let fixture: ComponentFixture<TestAccordionLinkComponent>;
245+
beforeEach(() => {
246+
fixture = TestBed.createComponent(TestAccordionLinkComponent);
247+
testComponent = fixture.componentInstance;
248+
accordionDebugElement = fixture.debugElement.query(By.directive(AccordionComponent));
249+
accordionNativeElement = accordionDebugElement.nativeElement;
250+
fixture.detectChanges();
251+
});
252+
253+
describe('accordion link default behavior', () => {
254+
it('accordion link demo has created successfully', () => {
255+
expect(testComponent).toBeTruthy();
256+
});
257+
258+
it('accordion should be routerLink', () => {
259+
const links = accordionNativeElement.querySelectorAll('d-accordion-item-routerlink');
260+
expect(links.length).toEqual(testComponent.menu.length);
261+
});
262+
});
263+
});
264+
describe('Accordion HrefLink', () => {
265+
let testComponent: TestAccordionHrefLinkComponent;
266+
let accordionDebugElement: DebugElement;
267+
let accordionNativeElement: HTMLElement;
268+
let fixture: ComponentFixture<TestAccordionHrefLinkComponent>;
269+
beforeEach(() => {
270+
fixture = TestBed.createComponent(TestAccordionHrefLinkComponent);
271+
testComponent = fixture.componentInstance;
272+
accordionDebugElement = fixture.debugElement.query(By.directive(AccordionComponent));
273+
accordionNativeElement = accordionDebugElement.nativeElement;
274+
fixture.detectChanges();
275+
});
276+
277+
describe('accordion link default behavior', () => {
278+
it('accordion link demo has created successfully', () => {
279+
expect(testComponent).toBeTruthy();
280+
});
281+
282+
it('accordion should be href', () => {
283+
const links = accordionNativeElement.querySelectorAll('d-accordion-item-hreflink');
284+
expect(links.length).toEqual(testComponent.menu.length);
285+
});
286+
});
287+
});
288+
});

devui/accordion/accordion.component.scss

+2-2
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@
179179
left: 10px;
180180
width: 2px;
181181
height: 40px;
182-
background: $devui-dividing-line;
182+
border-left: 2px solid $devui-dividing-line;
183183
vertical-align: middle;
184184

185185
&.devui-parent-list {
@@ -192,7 +192,7 @@
192192
display: block;
193193
width: 2px;
194194
height: 18px;
195-
background-color: $devui-form-control-line-active;
195+
border-left: 2px solid $devui-form-control-line-active;
196196
position: absolute;
197197
top: 11px;
198198
left: 0;

devui/alert/alert.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { AlertModule } from './alert.module';
66
@Component({
77
template: `
88
<d-alert [type]="type" [showIcon]= "showIcon" (closeEvent)="handleClose($event)" [cssClass]="cssClass">
9-
<span>成功。devcloud一站式云端DevOps平台。</span>
9+
<span>成功。消息提示成功。</span>
1010
</d-alert>
1111
`
1212
})
@@ -58,7 +58,7 @@ describe('alert', () => {
5858
});
5959

6060
it('Alert should have content', () => {
61-
expect(alertElement.querySelector('.devui-alert').textContent).toBe('成功。devcloud一站式云端DevOps平台。');
61+
expect(alertElement.querySelector('.devui-alert').textContent).toBe('成功。消息提示成功。');
6262
});
6363
});
6464
describe('alert type', () => {

0 commit comments

Comments
 (0)