mirror of
https://gitee.com/baidu/amis.git
synced 2024-12-02 03:48:13 +08:00
parent
9b99114538
commit
ed69ac05aa
@ -21,3 +21,20 @@ export function makeEnv(env?: Partial<RenderOptions>): RenderOptions {
|
||||
...env
|
||||
};
|
||||
}
|
||||
|
||||
export const createMockMediaMatcher =
|
||||
(matchesOrMapOfMatches: any) => (qs: any) => ({
|
||||
matches:
|
||||
typeof matchesOrMapOfMatches === 'object'
|
||||
? matchesOrMapOfMatches[qs]
|
||||
: matchesOrMapOfMatches,
|
||||
media: '',
|
||||
addListener: () => {},
|
||||
addEventListener: () => {},
|
||||
removeEventListener: () => {},
|
||||
onchange: () => {},
|
||||
removeListener: () => {},
|
||||
dispatchEvent: () => {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
@ -1,11 +1,82 @@
|
||||
export default [
|
||||
{
|
||||
engine: 'Trident - tbvea',
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
badgeText: '默认',
|
||||
grade: 'A',
|
||||
id: 1
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.2',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'B',
|
||||
id: 2
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'AOL browser (AOL desktop)',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'C',
|
||||
id: 3
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'AOL browser (AOL desktop)',
|
||||
platform: 'Win 98',
|
||||
version: '3',
|
||||
grade: 'A',
|
||||
id: 4
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'AOL browser (AOL desktop)',
|
||||
platform: 'Win 98',
|
||||
version: '4',
|
||||
grade: 'A',
|
||||
id: 5
|
||||
},
|
||||
{
|
||||
engine: 'Gecko',
|
||||
browser: 'Firefox 1.0',
|
||||
platform: 'Win 98+ / OSX.2+',
|
||||
version: '4',
|
||||
grade: 'A',
|
||||
id: 6
|
||||
},
|
||||
{
|
||||
engine: 'Gecko',
|
||||
browser: 'Firefox 1.0',
|
||||
platform: 'Win 98+ / OSX.2+',
|
||||
version: '5',
|
||||
grade: 'A',
|
||||
id: 7
|
||||
},
|
||||
{
|
||||
engine: 'Gecko',
|
||||
browser: 'Firefox 2.0',
|
||||
platform: 'Win 98+ / OSX.2+',
|
||||
version: '5',
|
||||
grade: 'B',
|
||||
id: 8
|
||||
},
|
||||
{
|
||||
engine: 'Gecko',
|
||||
browser: 'Firefox 2.0',
|
||||
platform: 'Win 98+ / OSX.2+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 9
|
||||
},
|
||||
{
|
||||
engine: 'Gecko',
|
||||
browser: 'Firefox 2.0',
|
||||
platform: 'Win 98+ / OSX.2+',
|
||||
version: '5',
|
||||
grade: 'D',
|
||||
id: 10
|
||||
}
|
||||
];
|
||||
|
@ -3,7 +3,7 @@ import Action from '../../src/renderers/Action';
|
||||
import * as renderer from 'react-test-renderer';
|
||||
import {render, fireEvent, cleanup} from '@testing-library/react';
|
||||
import {render as amisRender} from '../../src/index';
|
||||
import {makeEnv} from '../helper';
|
||||
import {makeEnv, wait} from '../helper';
|
||||
import '../../src/themes/default';
|
||||
|
||||
afterEach(cleanup);
|
||||
@ -152,14 +152,14 @@ test('Renderers:Action countDown', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
let button = document.querySelector('button');
|
||||
let button = container.querySelector('button');
|
||||
fireEvent.click(button as HTMLButtonElement);
|
||||
|
||||
button = document.querySelector('button');
|
||||
button = container.querySelector('button');
|
||||
expect(button).toBeNull();
|
||||
|
||||
await new Promise(r => setTimeout(r, 2000));
|
||||
await wait(2000);
|
||||
|
||||
button = document.querySelector('button');
|
||||
button = container.querySelector('button');
|
||||
expect(button).not.toBeNull();
|
||||
});
|
||||
|
@ -2,11 +2,11 @@ import React = require('react');
|
||||
import {render} from '@testing-library/react';
|
||||
import '../../src/themes/default';
|
||||
import {render as amisRender} from '../../src/index';
|
||||
import {makeEnv} from '../helper';
|
||||
import {makeEnv, wait} from '../helper';
|
||||
import rows from '../mockData/rows';
|
||||
|
||||
test('Renderer:crud', async () => {
|
||||
const {container} = render(
|
||||
const {container, findByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
@ -62,8 +62,9 @@ test('Renderer:crud', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
// TODO: 没想好还有啥别的办法,这里可能会导致太慢的机器报错
|
||||
await new Promise(r => setTimeout(r, 2500));
|
||||
await findByText('Internet Explorer 4.0');
|
||||
|
||||
await wait(1000);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Renderer:date 1`] = `
|
||||
exports[`Renderer:inputDate 1`] = `
|
||||
<div>
|
||||
<div
|
||||
class="cxd-Panel cxd-Panel--default cxd-Panel--form"
|
134
__tests__/renderers/Form/__snapshots__/inputTable.test.tsx.snap
Normal file
134
__tests__/renderers/Form/__snapshots__/inputTable.test.tsx.snap
Normal file
@ -0,0 +1,134 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Renderer:input table 1`] = `
|
||||
<div>
|
||||
<div
|
||||
class="cxd-Page"
|
||||
>
|
||||
<div
|
||||
class="cxd-Page-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Page-main"
|
||||
>
|
||||
<div
|
||||
class="cxd-Page-body"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel cxd-Panel--default cxd-Panel--form"
|
||||
style="position: relative;"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel-heading"
|
||||
>
|
||||
<h3
|
||||
class="cxd-Panel-title"
|
||||
>
|
||||
<span
|
||||
class="cxd-TplField"
|
||||
>
|
||||
<span>
|
||||
表单
|
||||
</span>
|
||||
</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Panel-body"
|
||||
>
|
||||
<form
|
||||
class="cxd-Form cxd-Form--normal"
|
||||
novalidate=""
|
||||
>
|
||||
<input
|
||||
style="display: none;"
|
||||
type="submit"
|
||||
/>
|
||||
<pre>
|
||||
<code>
|
||||
{
|
||||
"table": [
|
||||
{
|
||||
"a": "a1",
|
||||
"b": "b1"
|
||||
},
|
||||
{
|
||||
"a": "a2",
|
||||
"b": "b2"
|
||||
},
|
||||
{
|
||||
"a": "a3",
|
||||
"b": "b3"
|
||||
}
|
||||
]
|
||||
}
|
||||
</code>
|
||||
</pre>
|
||||
<div
|
||||
class="cxd-Form-item cxd-Form-item--normal"
|
||||
data-role="form-item"
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Panel-footerWrap"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel-btnToolbar cxd-Panel-footer"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--primary"
|
||||
type="submit"
|
||||
>
|
||||
<span>
|
||||
提交
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="resize-sensor"
|
||||
style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-expand"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0px; top: 0px; width: 10px; height: 10px;"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-shrink"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0; top: 0; width: 200%; height: 200%"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-appear"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;animation-name: apearSensor; animation-duration: 0.2s;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
@ -1050,3 +1050,373 @@ exports[`Renderer:select tree 1`] = `
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`Renderer:select virtual 1`] = `
|
||||
<div>
|
||||
<div
|
||||
class="cxd-Panel cxd-Panel--default cxd-Panel--form"
|
||||
style="position: relative;"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel-heading"
|
||||
>
|
||||
<h3
|
||||
class="cxd-Panel-title"
|
||||
>
|
||||
<span
|
||||
class="cxd-TplField"
|
||||
>
|
||||
<span>
|
||||
表单
|
||||
</span>
|
||||
</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Panel-body"
|
||||
>
|
||||
<form
|
||||
class="cxd-Form cxd-Form--normal"
|
||||
novalidate=""
|
||||
>
|
||||
<input
|
||||
style="display: none;"
|
||||
type="submit"
|
||||
/>
|
||||
<div
|
||||
class="cxd-Form-item cxd-Form-item--normal"
|
||||
data-role="form-item"
|
||||
>
|
||||
<label
|
||||
class="cxd-Form-label"
|
||||
>
|
||||
<span>
|
||||
<span
|
||||
class="cxd-TplField"
|
||||
>
|
||||
<span>
|
||||
选项
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
<div
|
||||
class="cxd-SelectControl cxd-Form-control"
|
||||
>
|
||||
<div
|
||||
aria-expanded="true"
|
||||
aria-haspopup="listbox"
|
||||
aria-labelledby="downshift-1-label"
|
||||
aria-owns="downshift-1-menu"
|
||||
class="cxd-Select is-opened has-popover"
|
||||
role="combobox"
|
||||
style="position: relative;"
|
||||
tabindex="0"
|
||||
>
|
||||
<div
|
||||
class="cxd-Select-valueWrap"
|
||||
>
|
||||
<div
|
||||
class="cxd-Select-placeholder"
|
||||
>
|
||||
请选择
|
||||
</div>
|
||||
</div>
|
||||
<span
|
||||
class="cxd-Select-arrow"
|
||||
>
|
||||
<icon-mock
|
||||
classname="icon icon-caret"
|
||||
icon="caret"
|
||||
/>
|
||||
</span>
|
||||
<div
|
||||
class="cxd-PopOver cxd-Select-popover cxd-PopOver--leftBottomLeftTop"
|
||||
style="display: block; min-width: 0; left: 0px; top: 0px; position: relative;"
|
||||
theme="cxd"
|
||||
>
|
||||
<div
|
||||
class="cxd-PopOver-overlay"
|
||||
/>
|
||||
<div
|
||||
class="cxd-Select-menu cxd-Select--longlist"
|
||||
>
|
||||
<div
|
||||
class="cxd-Select-option invisible"
|
||||
>
|
||||
<span>
|
||||
Placeholder
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
style="overflow: auto; will-change: transform; height: 266px; width: 100%;"
|
||||
>
|
||||
<div
|
||||
style="position: relative; width: auto; white-space: nowrap; min-height: 100%; height: 7000px;"
|
||||
>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-0"
|
||||
role="option"
|
||||
style="position: absolute; top: 0px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option0
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-1"
|
||||
role="option"
|
||||
style="position: absolute; top: 35px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option1
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-2"
|
||||
role="option"
|
||||
style="position: absolute; top: 70px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option2
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-3"
|
||||
role="option"
|
||||
style="position: absolute; top: 105px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option3
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-4"
|
||||
role="option"
|
||||
style="position: absolute; top: 140px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option4
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-5"
|
||||
role="option"
|
||||
style="position: absolute; top: 175px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option5
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-6"
|
||||
role="option"
|
||||
style="position: absolute; top: 210px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option6
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-7"
|
||||
role="option"
|
||||
style="position: absolute; top: 245px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option7
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-8"
|
||||
role="option"
|
||||
style="position: absolute; top: 280px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option8
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-9"
|
||||
role="option"
|
||||
style="position: absolute; top: 315px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option9
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
aria-selected="false"
|
||||
class="cxd-Select-option"
|
||||
id="downshift-1-item-10"
|
||||
role="option"
|
||||
style="position: absolute; top: 350px; left: 0px; width: 100%; height: 35px;"
|
||||
>
|
||||
<span>
|
||||
option10
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="resize-sensor"
|
||||
style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-expand"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0px; top: 0px; width: 10px; height: 10px;"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-shrink"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0; top: 0; width: 200%; height: 200%"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-appear"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;animation-name: apearSensor; animation-duration: 0.2s;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="resize-sensor"
|
||||
style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-expand"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0px; top: 0px; width: 10px; height: 10px;"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-shrink"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0; top: 0; width: 200%; height: 200%"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-appear"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;animation-name: apearSensor; animation-duration: 0.2s;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Panel-footerWrap"
|
||||
>
|
||||
<div
|
||||
class="cxd-Panel-btnToolbar cxd-Panel-footer"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--primary"
|
||||
type="submit"
|
||||
>
|
||||
<span>
|
||||
提交
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="resize-sensor"
|
||||
style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-expand"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0px; top: 0px; width: 10px; height: 10px;"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-shrink"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;"
|
||||
>
|
||||
|
||||
|
||||
<div
|
||||
style="position: absolute; left: 0; top: 0; width: 200%; height: 200%"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
class="resize-sensor-appear"
|
||||
style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;animation-name: apearSensor; animation-duration: 0.2s;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
@ -5,7 +5,7 @@ import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
|
||||
test('Renderer:chained-select', async () => {
|
||||
const {container} = render(
|
||||
const {container, findByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
@ -44,7 +44,7 @@ test('Renderer:chained-select', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
await new Promise(r => setTimeout(r, 2500));
|
||||
await findByText('A 0');
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
@ -1,8 +1,8 @@
|
||||
import React = require('react');
|
||||
import {render} from '@testing-library/react';
|
||||
import {render, fireEvent, findByText} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
import {makeEnv, wait} from '../../helper';
|
||||
|
||||
test('Renderer:combo', () => {
|
||||
const {container} = render(
|
||||
@ -61,3 +61,71 @@ test('Renderer:combo', () => {
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:combo multiple', async () => {
|
||||
const {container, getByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
mode: 'horizontal',
|
||||
api: '/api/mock2/form/saveForm',
|
||||
debug: true,
|
||||
body: [
|
||||
{
|
||||
type: 'combo',
|
||||
name: 'combo',
|
||||
label: 'Combo 多选展示',
|
||||
multiple: true,
|
||||
items: [
|
||||
{
|
||||
name: 'text',
|
||||
label: '文本',
|
||||
type: 'input-text'
|
||||
},
|
||||
{
|
||||
name: 'select',
|
||||
label: '选项',
|
||||
type: 'select',
|
||||
options: ['aOptions', 'b', 'c']
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const add = await findByText(container, '新增');
|
||||
// 点击新增
|
||||
add.click();
|
||||
|
||||
// 输入
|
||||
const input = container.querySelector(
|
||||
'.cxd-TextControl-input input'
|
||||
) as HTMLInputElement;
|
||||
|
||||
fireEvent.change(input, {target: {value: 'amis'}});
|
||||
|
||||
// 下拉框点击
|
||||
(container.querySelector('.cxd-Select') as HTMLDivElement).click();
|
||||
|
||||
await findByText(container, 'aOptions');
|
||||
|
||||
fireEvent.click(getByText('aOptions'));
|
||||
await wait(300);
|
||||
|
||||
const formDebug = JSON.parse(document.querySelector('pre code')!.innerHTML);
|
||||
|
||||
expect(formDebug).toEqual({
|
||||
combo: [
|
||||
{
|
||||
select: 'aOptions',
|
||||
text: 'amis'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
133
__tests__/renderers/Form/inputDate.test.tsx
Normal file
133
__tests__/renderers/Form/inputDate.test.tsx
Normal file
@ -0,0 +1,133 @@
|
||||
import React = require('react');
|
||||
import PageRenderer from '../../../src/renderers/Form';
|
||||
import * as renderer from 'react-test-renderer';
|
||||
import {render, fireEvent, cleanup, getByText} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
import moment from 'moment';
|
||||
|
||||
test('Renderer:inputDate', async () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/xxx',
|
||||
body: [
|
||||
{
|
||||
type: 'input-date',
|
||||
name: 'a',
|
||||
label: 'date',
|
||||
value: '1559836800',
|
||||
minDate: '1559664000',
|
||||
maxDate: '1561737600'
|
||||
}
|
||||
],
|
||||
title: 'The form',
|
||||
actions: []
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const input = container.querySelector('.cxd-DatePicker-value');
|
||||
expect(input?.innerHTML).toEqual(
|
||||
moment(1559836800, 'X').format('YYYY-MM-DD')
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:inputDate click', async () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'form',
|
||||
api: '/api/mock2/form/saveForm',
|
||||
body: [
|
||||
{
|
||||
type: 'static-date',
|
||||
name: 'date',
|
||||
label: '当前值'
|
||||
},
|
||||
{
|
||||
type: 'input-date',
|
||||
name: 'date',
|
||||
label: '日期'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const inputDate = document.querySelector('.cxd-DatePicker') as HTMLElement;
|
||||
|
||||
inputDate!.click();
|
||||
|
||||
// 点击前一年
|
||||
(
|
||||
document.querySelector('.cxd-DatePicker-popover .rdtPrev') as HTMLElement
|
||||
).click();
|
||||
|
||||
// 点击下一个月
|
||||
(
|
||||
document.querySelector('.cxd-DatePicker-popover .rdtNext') as HTMLElement
|
||||
).click();
|
||||
|
||||
const date = container.querySelector(
|
||||
'.cxd-DatePicker-popover tr td[data-value="1"]'
|
||||
) as HTMLElement;
|
||||
|
||||
date!.click();
|
||||
|
||||
const tpl = container.querySelector('.cxd-DateField') as HTMLElement;
|
||||
|
||||
expect(tpl.innerHTML).toEqual(
|
||||
moment().subtract(1, 'year').add(1, 'month').format('YYYY-MM') + '-01'
|
||||
);
|
||||
});
|
||||
|
||||
test('Renderer:inputDate embed', async () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'form',
|
||||
api: '/api/mock2/form/saveForm',
|
||||
body: [
|
||||
{
|
||||
type: 'static-date',
|
||||
name: 'date',
|
||||
label: '当前值'
|
||||
},
|
||||
{
|
||||
type: 'input-date',
|
||||
name: 'date',
|
||||
label: '日期',
|
||||
embed: true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const date = container.querySelector(
|
||||
'.cxd-DateCalendar tr td[data-value="1"]'
|
||||
) as HTMLElement;
|
||||
|
||||
date!.click();
|
||||
|
||||
const tpl = container.querySelector('.cxd-DateField') as HTMLElement;
|
||||
|
||||
expect(tpl.innerHTML).toEqual(moment().format('YYYY-MM') + '-01');
|
||||
});
|
53
__tests__/renderers/Form/inputMonth.test.tsx
Normal file
53
__tests__/renderers/Form/inputMonth.test.tsx
Normal file
@ -0,0 +1,53 @@
|
||||
import React = require('react');
|
||||
import PageRenderer from '../../../src/renderers/Form';
|
||||
import * as renderer from 'react-test-renderer';
|
||||
import {render, fireEvent, cleanup, getByText} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
import moment from 'moment';
|
||||
|
||||
test('Renderer:inputMonth click', async () => {
|
||||
const {container, findByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/xxx',
|
||||
body: [
|
||||
{
|
||||
type: 'input-month',
|
||||
name: 'month',
|
||||
label: '时间'
|
||||
}
|
||||
],
|
||||
title: 'The form',
|
||||
actions: []
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const inputDate = await findByText('请选择月份');
|
||||
|
||||
fireEvent.click(inputDate);
|
||||
|
||||
// 点击前一年
|
||||
(
|
||||
document.querySelector('.cxd-DatePicker-popover .rdtPrev') as HTMLElement
|
||||
).click();
|
||||
|
||||
const firstMonth = await findByText('1月');
|
||||
|
||||
fireEvent.click(firstMonth);
|
||||
|
||||
const lastYearMonth = moment().subtract(1, 'year').format('YYYY') + '-01';
|
||||
|
||||
await findByText(lastYearMonth);
|
||||
|
||||
const value = document.querySelector(
|
||||
'.cxd-DatePicker-value'
|
||||
) as HTMLSpanElement;
|
||||
|
||||
expect(value.innerHTML).toEqual(lastYearMonth);
|
||||
});
|
56
__tests__/renderers/Form/inputMonthRange.test.tsx
Normal file
56
__tests__/renderers/Form/inputMonthRange.test.tsx
Normal file
@ -0,0 +1,56 @@
|
||||
import React = require('react');
|
||||
import {render, fireEvent, within, cleanup} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
import moment from 'moment';
|
||||
|
||||
test('Renderer:inputMonth click', async () => {
|
||||
const {container, findByText, getByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/xxx',
|
||||
body: [
|
||||
{
|
||||
type: 'input-month-range',
|
||||
name: 'a',
|
||||
label: '月份范围'
|
||||
}
|
||||
],
|
||||
title: 'The form',
|
||||
actions: []
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const inputDate = await findByText('请选择月份范围');
|
||||
|
||||
fireEvent.click(inputDate);
|
||||
|
||||
const startMonth = await within(
|
||||
document.querySelector('.cxd-DateRangePicker-start')!
|
||||
).findByText('2月');
|
||||
|
||||
fireEvent.click(startMonth);
|
||||
|
||||
const endMonth = await within(
|
||||
document.querySelector('.cxd-DateRangePicker-end')!
|
||||
).findByText('8月');
|
||||
|
||||
fireEvent.click(endMonth);
|
||||
|
||||
const confirm = getByText('确认');
|
||||
|
||||
fireEvent.click(confirm);
|
||||
|
||||
const monthRange =
|
||||
moment().format('YYYY') +
|
||||
'-02 至 ' +
|
||||
moment().add(1, 'year').format('YYYY') +
|
||||
'-08';
|
||||
|
||||
await findByText(monthRange);
|
||||
});
|
106
__tests__/renderers/Form/inputTable.test.tsx
Normal file
106
__tests__/renderers/Form/inputTable.test.tsx
Normal file
@ -0,0 +1,106 @@
|
||||
import React = require('react');
|
||||
import {render, screen, fireEvent} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
|
||||
test('Renderer:input table', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'form',
|
||||
debug: 'true',
|
||||
data: {
|
||||
table: [
|
||||
{
|
||||
a: 'a1',
|
||||
b: 'b1'
|
||||
},
|
||||
{
|
||||
a: 'a2',
|
||||
b: 'b2'
|
||||
},
|
||||
{
|
||||
a: 'a3',
|
||||
b: 'b3'
|
||||
}
|
||||
]
|
||||
},
|
||||
api: '/api/mock2/form/saveForm',
|
||||
body: [
|
||||
{
|
||||
type: 'input-table',
|
||||
name: 'table',
|
||||
columns: [
|
||||
{
|
||||
name: 'a',
|
||||
label: 'A'
|
||||
},
|
||||
{
|
||||
name: 'b',
|
||||
label: 'B'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:input table add', async () => {
|
||||
const {container, findByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/mock2/form/saveForm',
|
||||
debug: true,
|
||||
body: [
|
||||
{
|
||||
type: 'input-table',
|
||||
name: 'table',
|
||||
addable: true,
|
||||
editable: true,
|
||||
columns: [
|
||||
{
|
||||
name: 'a',
|
||||
label: 'A'
|
||||
},
|
||||
{
|
||||
name: 'b',
|
||||
label: 'B'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const add = await findByText(/新增/);
|
||||
|
||||
fireEvent.click(add);
|
||||
|
||||
const inputs = document.querySelectorAll('td input');
|
||||
|
||||
fireEvent.change(inputs[0], {target: {value: 'aa'}});
|
||||
|
||||
fireEvent.change(inputs[1], {target: {value: 'bb'}});
|
||||
|
||||
const save = document.querySelector('.cxd-OperationField button');
|
||||
|
||||
fireEvent.click(save!);
|
||||
|
||||
// TODO: 这里不对,难道是点击出错了
|
||||
|
||||
// expect(container).toMatchSnapshot();
|
||||
});
|
@ -7,20 +7,17 @@ import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
import moment from 'moment';
|
||||
|
||||
test('Renderer:date', async () => {
|
||||
const {container} = render(
|
||||
test('Renderer:inputYear click', async () => {
|
||||
const {container, findByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/xxx',
|
||||
controls: [
|
||||
body: [
|
||||
{
|
||||
type: 'date',
|
||||
name: 'a',
|
||||
label: 'date',
|
||||
value: '1559836800',
|
||||
minDate: '1559664000',
|
||||
maxDate: '1561737600'
|
||||
type: 'input-year',
|
||||
name: 'year',
|
||||
label: '年'
|
||||
}
|
||||
],
|
||||
title: 'The form',
|
||||
@ -31,10 +28,19 @@ test('Renderer:date', async () => {
|
||||
)
|
||||
);
|
||||
|
||||
const input = container.querySelector('.cxd-DatePicker-value');
|
||||
expect(input?.innerHTML).toEqual(
|
||||
moment(1559836800, 'X').format('YYYY-MM-DD')
|
||||
);
|
||||
const inputDate = await findByText('请选择年');
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
fireEvent.click(inputDate);
|
||||
|
||||
const thisYearText = moment().format('YYYY');
|
||||
|
||||
const thisYear = await findByText(thisYearText);
|
||||
|
||||
fireEvent.click(thisYear);
|
||||
|
||||
const value = document.querySelector(
|
||||
'.cxd-DatePicker-value'
|
||||
) as HTMLSpanElement;
|
||||
|
||||
expect(value.innerHTML).toEqual(thisYearText);
|
||||
});
|
59
__tests__/renderers/Form/inputYearRange.test.tsx
Normal file
59
__tests__/renderers/Form/inputYearRange.test.tsx
Normal file
@ -0,0 +1,59 @@
|
||||
import React = require('react');
|
||||
import PageRenderer from '../../../src/renderers/Form';
|
||||
import * as renderer from 'react-test-renderer';
|
||||
import {render, fireEvent, screen, within} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
import moment from 'moment';
|
||||
|
||||
test('Renderer:inputYearRange click', async () => {
|
||||
const {container, findByText, getByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/xxx',
|
||||
body: [
|
||||
{
|
||||
type: 'input-year-range',
|
||||
name: 'year',
|
||||
label: '年'
|
||||
}
|
||||
],
|
||||
title: 'The form',
|
||||
actions: []
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const inputDate = await findByText('请选择年份范围');
|
||||
|
||||
fireEvent.click(inputDate);
|
||||
|
||||
const thisYearText = moment().format('YYYY');
|
||||
const nextYearText = moment().add(1, 'year').format('YYYY');
|
||||
|
||||
const thisYear = await within(
|
||||
document.querySelector('.cxd-DateRangePicker-start')!
|
||||
).findByText(thisYearText);
|
||||
|
||||
fireEvent.click(thisYear);
|
||||
|
||||
const nextYear = await within(
|
||||
document.querySelector('.cxd-DateRangePicker-end')!
|
||||
).findByText(nextYearText);
|
||||
|
||||
fireEvent.click(nextYear);
|
||||
|
||||
const confirm = getByText('确认');
|
||||
|
||||
fireEvent.click(confirm);
|
||||
|
||||
const value = document.querySelector(
|
||||
'.cxd-DateRangePicker-value'
|
||||
) as HTMLSpanElement;
|
||||
|
||||
expect(value.innerHTML).toEqual(thisYearText + ' 至 ' + nextYearText);
|
||||
});
|
53
__tests__/renderers/Form/mobileInputDate.test.tsx
Normal file
53
__tests__/renderers/Form/mobileInputDate.test.tsx
Normal file
@ -0,0 +1,53 @@
|
||||
import React = require('react');
|
||||
import {render, fireEvent} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import moment from 'moment';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {createMockMediaMatcher, makeEnv} from '../../helper';
|
||||
|
||||
let originalMatchMedia: any;
|
||||
|
||||
beforeAll(() => {
|
||||
originalMatchMedia = window.matchMedia;
|
||||
window.matchMedia = createMockMediaMatcher(true);
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
window.matchMedia = originalMatchMedia;
|
||||
});
|
||||
|
||||
test('Renderer:mobile Input Date', async () => {
|
||||
const {container, findByText, getByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
api: '/api/mock2/form/saveForm',
|
||||
body: [
|
||||
{
|
||||
type: 'input-date',
|
||||
name: 'date',
|
||||
label: '日期'
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
const inputDate = await findByText('请选择日期');
|
||||
fireEvent.click(inputDate);
|
||||
|
||||
const confirmButton = document.querySelector(
|
||||
'.cxd-PickerColumns-confirm'
|
||||
) as HTMLButtonElement;
|
||||
|
||||
fireEvent.click(confirmButton);
|
||||
|
||||
const value = document.querySelector(
|
||||
'.cxd-DatePicker-value'
|
||||
) as HTMLSpanElement;
|
||||
|
||||
// TODO: 这里原组件的日错了,等修复
|
||||
// expect(value.innerHTML).toEqual(moment().format('YYYY-MM-DD'));
|
||||
});
|
@ -1,5 +1,5 @@
|
||||
import React = require('react');
|
||||
import {render} from '@testing-library/react';
|
||||
import {render, screen, fireEvent} from '@testing-library/react';
|
||||
import '../../../src/themes/default';
|
||||
import {render as amisRender} from '../../../src/index';
|
||||
import {makeEnv} from '../../helper';
|
||||
@ -502,3 +502,35 @@ test('Renderer:select associated', () => {
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:select virtual', async () => {
|
||||
const options = [...Array(200)].map((_, i) => {
|
||||
return 'option' + i;
|
||||
});
|
||||
|
||||
const {container, queryByText, findByText} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'form',
|
||||
body: [
|
||||
{
|
||||
label: '选项',
|
||||
type: 'select',
|
||||
name: 'select',
|
||||
options: options
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
const inputDate = await findByText('请选择');
|
||||
|
||||
fireEvent.click(inputDate);
|
||||
|
||||
const option12 = queryByText('option12');
|
||||
expect(option12).toBeNull();
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
648
__tests__/renderers/Table.test.tsx
Normal file
648
__tests__/renderers/Table.test.tsx
Normal file
@ -0,0 +1,648 @@
|
||||
import React = require('react');
|
||||
import {render} from '@testing-library/react';
|
||||
import '../../src/themes/default';
|
||||
import {render as amisRender} from '../../src/index';
|
||||
import {makeEnv} from '../helper';
|
||||
import rows from '../mockData/rows';
|
||||
|
||||
test('Renderer:table', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'table',
|
||||
title: '表格1',
|
||||
data: {
|
||||
items: rows
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Engine'
|
||||
},
|
||||
{
|
||||
name: 'version',
|
||||
label: 'Version'
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table align', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'table',
|
||||
title: '表格1',
|
||||
data: {
|
||||
items: rows
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Engine'
|
||||
},
|
||||
{
|
||||
name: 'version',
|
||||
type: 'tpl',
|
||||
tpl: '${version | number}',
|
||||
align: 'right'
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table classNameExpr', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'table',
|
||||
title: '表格1',
|
||||
data: {
|
||||
items: rows
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Engine'
|
||||
},
|
||||
{
|
||||
name: 'version',
|
||||
label: 'Version',
|
||||
classNameExpr: "<%= data.version > 5 ? 'text-danger' : '' %>"
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table isHead fixed', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'table',
|
||||
title: '表格1',
|
||||
data: {
|
||||
items: rows
|
||||
},
|
||||
columnsTogglable: false,
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Engine',
|
||||
isHead: true
|
||||
},
|
||||
{
|
||||
name: 'platform',
|
||||
label: 'Platform',
|
||||
fixed: 'right'
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table children', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'service',
|
||||
data: {
|
||||
rows: [
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
id: 1,
|
||||
children: [
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
id: 1001
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.0',
|
||||
platform: 'Win 95+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 1002
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.0',
|
||||
platform: 'Win 95+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 2,
|
||||
children: [
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
id: 2001
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.0',
|
||||
platform: 'Win 95+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 2002
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.5',
|
||||
platform: 'Win 95+',
|
||||
version: '5.5',
|
||||
grade: 'A',
|
||||
id: 3,
|
||||
children: [
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
id: 3001
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.0',
|
||||
platform: 'Win 95+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 3002
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 6',
|
||||
platform: 'Win 98+',
|
||||
version: '6',
|
||||
grade: 'A',
|
||||
id: 4,
|
||||
children: [
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
id: 4001
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.0',
|
||||
platform: 'Win 95+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 4002
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 7',
|
||||
platform: 'Win XP SP2+',
|
||||
version: '7',
|
||||
grade: 'A',
|
||||
id: 5,
|
||||
children: [
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 4.0',
|
||||
platform: 'Win 95+',
|
||||
version: '4',
|
||||
grade: 'X',
|
||||
id: 5001
|
||||
},
|
||||
{
|
||||
engine: 'Trident',
|
||||
browser: 'Internet Explorer 5.0',
|
||||
platform: 'Win 95+',
|
||||
version: '5',
|
||||
grade: 'C',
|
||||
id: 5002
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
body: [
|
||||
{
|
||||
type: 'table',
|
||||
source: '$rows',
|
||||
className: 'm-b-none',
|
||||
columnsTogglable: false,
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Engine'
|
||||
},
|
||||
{
|
||||
name: 'grade',
|
||||
label: 'Grade'
|
||||
},
|
||||
{
|
||||
name: 'version',
|
||||
label: 'Version'
|
||||
},
|
||||
{
|
||||
name: 'browser',
|
||||
label: 'Browser'
|
||||
},
|
||||
{
|
||||
name: 'id',
|
||||
label: 'ID'
|
||||
},
|
||||
{
|
||||
name: 'platform',
|
||||
label: 'Platform'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table combineNum', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'service',
|
||||
data: {
|
||||
rows
|
||||
},
|
||||
body: [
|
||||
{
|
||||
type: 'table',
|
||||
source: '$rows',
|
||||
className: 'm-b-none',
|
||||
combineNum: 3,
|
||||
columnsTogglable: false,
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Rendering engine'
|
||||
},
|
||||
{
|
||||
name: 'browser',
|
||||
label: 'Browser'
|
||||
},
|
||||
{
|
||||
name: 'platform',
|
||||
label: 'Platform(s)'
|
||||
},
|
||||
{
|
||||
name: 'version',
|
||||
label: 'Engine version'
|
||||
},
|
||||
{
|
||||
name: 'grade',
|
||||
label: 'CSS grade'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table group', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'table',
|
||||
title: '表格1',
|
||||
data: {
|
||||
items: rows
|
||||
},
|
||||
columnsTogglable: false,
|
||||
columns: [
|
||||
{
|
||||
name: 'engine',
|
||||
label: 'Engine',
|
||||
isHead: true
|
||||
},
|
||||
{
|
||||
name: 'platform',
|
||||
label: 'Platform',
|
||||
fixed: 'right'
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:table list', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'table',
|
||||
data: {
|
||||
items: [
|
||||
{
|
||||
id: '91264',
|
||||
text: '衡 阎',
|
||||
progress: 22,
|
||||
type: 4,
|
||||
boolean: true,
|
||||
list: [
|
||||
{
|
||||
title: 'Forward Functionality Technician',
|
||||
description: 'nisi ex eum'
|
||||
},
|
||||
{
|
||||
title: 'District Applications Specialist',
|
||||
description: 'ipsam ratione voluptas'
|
||||
},
|
||||
{
|
||||
title: 'Future Operations Manager',
|
||||
description: 'ducimus fugit debitis'
|
||||
},
|
||||
{
|
||||
title: 'Dynamic Solutions Associate',
|
||||
description: 'saepe consequatur aut'
|
||||
}
|
||||
],
|
||||
audio:
|
||||
'https://news-bos.cdn.bcebos.com/mvideo/%E7%9A%87%E5%90%8E%E5%A4%A7%E9%81%93%E4%B8%9C.aac',
|
||||
carousel: [
|
||||
{
|
||||
image:
|
||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg'
|
||||
},
|
||||
{
|
||||
html: '<div style="width: 100%; height: 200px; background: #e3e3e3; text-align: center; line-height: 200px;">carousel data in crud</div>'
|
||||
},
|
||||
{
|
||||
image: 'https://video-react.js.org/assets/poster.png'
|
||||
}
|
||||
],
|
||||
date: 1591270438,
|
||||
image:
|
||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg',
|
||||
json: {
|
||||
id: 1,
|
||||
text: 'text'
|
||||
}
|
||||
},
|
||||
{
|
||||
id: '34202',
|
||||
text: '吉 卢汉市',
|
||||
progress: 85,
|
||||
type: 1,
|
||||
boolean: true,
|
||||
list: [
|
||||
{
|
||||
title: 'Dynamic Assurance Orchestrator',
|
||||
description: 'ea ullam voluptates'
|
||||
},
|
||||
{
|
||||
title: 'Internal Division Assistant',
|
||||
description: 'illum deleniti qui'
|
||||
},
|
||||
{
|
||||
title: 'International Usability Administrator',
|
||||
description: 'sit voluptatem quia'
|
||||
},
|
||||
{
|
||||
title: 'Lead Optimization Orchestrator',
|
||||
description: 'autem et blanditiis'
|
||||
},
|
||||
{
|
||||
title: 'Future Division Assistant',
|
||||
description: 'dolor cupiditate sint'
|
||||
},
|
||||
{
|
||||
title: 'Forward Program Orchestrator',
|
||||
description: 'quia distinctio voluptas'
|
||||
},
|
||||
{
|
||||
title: 'Human Implementation Technician',
|
||||
description: 'consequatur quaerat ullam'
|
||||
},
|
||||
{
|
||||
title: 'National Identity Administrator',
|
||||
description: 'ipsa et reiciendis'
|
||||
},
|
||||
{
|
||||
title: 'Regional Factors Planner',
|
||||
description: 'sed deserunt natus'
|
||||
},
|
||||
{
|
||||
title: 'Human Data Administrator',
|
||||
description: 'rerum consequatur odit'
|
||||
}
|
||||
],
|
||||
audio:
|
||||
'https://news-bos.cdn.bcebos.com/mvideo/%E7%9A%87%E5%90%8E%E5%A4%A7%E9%81%93%E4%B8%9C.aac',
|
||||
carousel: [
|
||||
{
|
||||
image:
|
||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg'
|
||||
},
|
||||
{
|
||||
html: '<div style="width: 100%; height: 200px; background: #e3e3e3; text-align: center; line-height: 200px;">carousel data in crud</div>'
|
||||
},
|
||||
{
|
||||
image: 'https://video-react.js.org/assets/poster.png'
|
||||
}
|
||||
],
|
||||
date: 1591270438,
|
||||
image:
|
||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg',
|
||||
json: {
|
||||
id: 1,
|
||||
text: 'text'
|
||||
}
|
||||
},
|
||||
{
|
||||
id: '37701',
|
||||
text: '立辉安市',
|
||||
progress: 72,
|
||||
type: 2,
|
||||
boolean: false,
|
||||
list: [
|
||||
{
|
||||
title: 'Corporate Metrics Liason',
|
||||
description: 'aspernatur natus qui'
|
||||
},
|
||||
{
|
||||
title: 'Central Paradigm Analyst',
|
||||
description: 'sequi numquam ad'
|
||||
},
|
||||
{
|
||||
title: 'International Data Administrator',
|
||||
description: 'sed libero eum'
|
||||
},
|
||||
{
|
||||
title: 'Forward Optimization Assistant',
|
||||
description: 'officiis accusantium dolorem'
|
||||
},
|
||||
{
|
||||
title: 'Senior Metrics Executive',
|
||||
description: 'commodi sint quod'
|
||||
},
|
||||
{
|
||||
title: 'Corporate Quality Facilitator',
|
||||
description: 'aut aperiam est'
|
||||
},
|
||||
{
|
||||
title: 'Forward Operations Producer',
|
||||
description: 'sed corporis eaque'
|
||||
},
|
||||
{
|
||||
title: 'National Integration Analyst',
|
||||
description: 'quasi ab cumque'
|
||||
}
|
||||
],
|
||||
audio:
|
||||
'https://news-bos.cdn.bcebos.com/mvideo/%E7%9A%87%E5%90%8E%E5%A4%A7%E9%81%93%E4%B8%9C.aac',
|
||||
carousel: [
|
||||
{
|
||||
image:
|
||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg'
|
||||
},
|
||||
{
|
||||
html: '<div style="width: 100%; height: 200px; background: #e3e3e3; text-align: center; line-height: 200px;">carousel data in crud</div>'
|
||||
},
|
||||
{
|
||||
image: 'https://video-react.js.org/assets/poster.png'
|
||||
}
|
||||
],
|
||||
date: 1591270438,
|
||||
image:
|
||||
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg',
|
||||
json: {
|
||||
id: 1,
|
||||
text: 'text'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
affixHeader: false,
|
||||
syncLocation: false,
|
||||
columns: [
|
||||
{
|
||||
name: 'id',
|
||||
label: 'ID',
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
name: 'text',
|
||||
label: '文本',
|
||||
type: 'text'
|
||||
},
|
||||
{
|
||||
type: 'image',
|
||||
label: '图片',
|
||||
name: 'image'
|
||||
},
|
||||
{
|
||||
name: 'date',
|
||||
type: 'date',
|
||||
label: '日期'
|
||||
},
|
||||
{
|
||||
name: 'progress',
|
||||
label: '进度',
|
||||
type: 'progress'
|
||||
},
|
||||
{
|
||||
name: 'boolean',
|
||||
label: '状态',
|
||||
type: 'status'
|
||||
},
|
||||
{
|
||||
name: 'boolean',
|
||||
label: '开关',
|
||||
type: 'switch'
|
||||
},
|
||||
{
|
||||
name: 'type',
|
||||
label: '映射',
|
||||
type: 'mapping',
|
||||
map: {
|
||||
'1': "<span class='label label-info'>漂亮</span>",
|
||||
'2': "<span class='label label-success'>开心</span>",
|
||||
'3': "<span class='label label-danger'>惊吓</span>",
|
||||
'4': "<span class='label label-warning'>紧张</span>",
|
||||
'*': '其他:${type}'
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'list',
|
||||
type: 'list',
|
||||
label: 'List',
|
||||
placeholder: '-',
|
||||
listItem: {
|
||||
title: '${title}',
|
||||
subTitle: '${description}'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
@ -205,7 +205,7 @@ exports[`Renderer:crud 1`] = `
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident - tbvea
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
@ -241,7 +241,547 @@ exports[`Renderer:crud 1`] = `
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
X
|
||||
A
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--even cxd-Table-tr--1th"
|
||||
data-id="2"
|
||||
data-index="1"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
2
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Internet Explorer 4.2
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 95+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
B
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--odd cxd-Table-tr--1th"
|
||||
data-id="3"
|
||||
data-index="2"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
3
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
AOL browser (AOL desktop)
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 95+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
C
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--even cxd-Table-tr--1th"
|
||||
data-id="4"
|
||||
data-index="3"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
AOL browser (AOL desktop)
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
3
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
A
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--odd cxd-Table-tr--1th"
|
||||
data-id="5"
|
||||
data-index="4"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
AOL browser (AOL desktop)
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
A
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--even cxd-Table-tr--1th"
|
||||
data-id="6"
|
||||
data-index="5"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
6
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Firefox 1.0
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98+ / OSX.2+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
A
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--odd cxd-Table-tr--1th"
|
||||
data-id="7"
|
||||
data-index="6"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
7
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Firefox 1.0
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98+ / OSX.2+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
A
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--even cxd-Table-tr--1th"
|
||||
data-id="8"
|
||||
data-index="7"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
8
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Firefox 2.0
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98+ / OSX.2+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
B
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--odd cxd-Table-tr--1th"
|
||||
data-id="9"
|
||||
data-index="8"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
9
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Firefox 2.0
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98+ / OSX.2+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
C
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--even cxd-Table-tr--1th"
|
||||
data-id="10"
|
||||
data-index="9"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
10
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Firefox 2.0
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Win 98+ / OSX.2+
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
D
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -86,7 +86,7 @@ exports[`Renderer:list 1`] = `
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident - tbvea
|
||||
Trident
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -116,6 +116,618 @@ exports[`Renderer:list 1`] = `
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
3
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem cxd-ListItem--actions-at-right cxd-ListItem--hasItemAction"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-actions"
|
||||
>
|
||||
<button
|
||||
class="cxd-Button cxd-Button--link cxd-Button--sm"
|
||||
type="button"
|
||||
>
|
||||
<span>
|
||||
查看详情
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-ListItem-content"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox cxd-Hbox--xs"
|
||||
>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Engine
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Gecko
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="cxd-Hbox-col"
|
||||
>
|
||||
<div
|
||||
class="cxd-ListItem-field"
|
||||
>
|
||||
<label
|
||||
class="cxd-ListItem-fieldLabel"
|
||||
>
|
||||
Version
|
||||
</label>
|
||||
<div
|
||||
class="cxd-ListItem-fieldValue"
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
5
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -37,7 +37,43 @@ exports[`Renderer:Pagination 1`] = `
|
||||
</a>
|
||||
</li>
|
||||
<li
|
||||
class="cxd-Pagination-next is-disabled"
|
||||
class=""
|
||||
>
|
||||
<a
|
||||
role="button"
|
||||
>
|
||||
2
|
||||
</a>
|
||||
</li>
|
||||
<li
|
||||
class=""
|
||||
>
|
||||
<a
|
||||
role="button"
|
||||
>
|
||||
3
|
||||
</a>
|
||||
</li>
|
||||
<li
|
||||
class=""
|
||||
>
|
||||
<a
|
||||
role="button"
|
||||
>
|
||||
4
|
||||
</a>
|
||||
</li>
|
||||
<li
|
||||
class=""
|
||||
>
|
||||
<a
|
||||
role="button"
|
||||
>
|
||||
5
|
||||
</a>
|
||||
</li>
|
||||
<li
|
||||
class="cxd-Pagination-next"
|
||||
>
|
||||
<span>
|
||||
<icon-mock
|
||||
@ -128,7 +164,31 @@ exports[`Renderer:Pagination 1`] = `
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident - tbvea
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
4
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
class="cxd-Table-tr--even cxd-Table-tr--1th"
|
||||
data-id="2"
|
||||
data-index="1"
|
||||
>
|
||||
<td
|
||||
class=""
|
||||
>
|
||||
<span
|
||||
class="cxd-PlainField"
|
||||
>
|
||||
Trident
|
||||
</span>
|
||||
</td>
|
||||
<td
|
||||
|
5309
__tests__/renderers/__snapshots__/Table.test.tsx.snap
Normal file
5309
__tests__/renderers/__snapshots__/Table.test.tsx.snap
Normal file
File diff suppressed because it is too large
Load Diff
1367
__tests__/renderers/__snapshots__/calendar.test.tsx.snap
Normal file
1367
__tests__/renderers/__snapshots__/calendar.test.tsx.snap
Normal file
File diff suppressed because it is too large
Load Diff
141
__tests__/renderers/calendar.test.tsx
Normal file
141
__tests__/renderers/calendar.test.tsx
Normal file
@ -0,0 +1,141 @@
|
||||
import React = require('react');
|
||||
import {render} from '@testing-library/react';
|
||||
import '../../src/themes/default';
|
||||
import {render as amisRender} from '../../src/index';
|
||||
import {makeEnv} from '../helper';
|
||||
|
||||
test('Renderer:calendar', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'calendar',
|
||||
value: '1638288000',
|
||||
schedules: [
|
||||
{
|
||||
startTime: '2021-12-11 05:14:00',
|
||||
endTime: '2021-12-11 06:14:00',
|
||||
content: '这是一个日程1'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-21 05:14:00',
|
||||
endTime: '2021-12-22 05:14:00',
|
||||
content: '这是一个日程2'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:calendar scheduleAction', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'calendar',
|
||||
value: '1638288000',
|
||||
schedules: [
|
||||
{
|
||||
startTime: '2021-12-11 05:14:00',
|
||||
endTime: '2021-12-11 06:14:00',
|
||||
content: '这是一个日程1'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-21 05:14:00',
|
||||
endTime: '2021-12-22 05:14:00',
|
||||
content: '这是一个日程2'
|
||||
}
|
||||
],
|
||||
scheduleAction: {
|
||||
actionType: 'drawer',
|
||||
drawer: {
|
||||
title: '日程',
|
||||
body: {
|
||||
type: 'table',
|
||||
columns: [
|
||||
{
|
||||
name: 'time',
|
||||
label: '时间'
|
||||
},
|
||||
{
|
||||
name: 'content',
|
||||
label: '内容'
|
||||
}
|
||||
],
|
||||
data: '${scheduleData}'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('Renderer:calendar largeMode', () => {
|
||||
const {container} = render(
|
||||
amisRender(
|
||||
{
|
||||
type: 'page',
|
||||
body: {
|
||||
type: 'calendar',
|
||||
value: '1638288000',
|
||||
largeMode: true,
|
||||
schedules: [
|
||||
{
|
||||
startTime: '2021-12-11 05:14:00',
|
||||
endTime: '2021-12-11 06:14:00',
|
||||
content: '这是一个日程1'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-12 02:14:00',
|
||||
endTime: '2021-12-13 05:14:00',
|
||||
content: '这是一个日程2'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-20 05:14:00',
|
||||
endTime: '2021-12-21 05:14:00',
|
||||
content: '这是一个日程3'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-21 05:14:00',
|
||||
endTime: '2021-12-22 05:14:00',
|
||||
content: '这是一个日程4'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-22 02:14:00',
|
||||
endTime: '2021-12-23 05:14:00',
|
||||
content: '这是一个日程5'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-22 02:14:00',
|
||||
endTime: '2021-12-22 05:14:00',
|
||||
content: '这是一个日程6'
|
||||
},
|
||||
{
|
||||
startTime: '2021-12-22 02:14:00',
|
||||
endTime: '2021-12-22 05:14:00',
|
||||
content: '这是一个日程7'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{},
|
||||
makeEnv({})
|
||||
)
|
||||
);
|
||||
|
||||
expect(container).toMatchSnapshot();
|
||||
});
|
@ -10,9 +10,12 @@ order: 36
|
||||
|
||||
## 基本用法
|
||||
|
||||
设置 `schedules` 属性
|
||||
|
||||
```schema: scope="body"
|
||||
{
|
||||
"type": "calendar",
|
||||
"value": "1638288000",
|
||||
"schedules": [
|
||||
{
|
||||
"startTime": "2021-12-11 05:14:00",
|
||||
@ -33,6 +36,7 @@ order: 36
|
||||
```schema: scope="body"
|
||||
{
|
||||
"type": "calendar",
|
||||
"value": "1638288000",
|
||||
"schedules": [
|
||||
{
|
||||
"startTime": "2021-12-11 05:14:00",
|
||||
@ -53,6 +57,7 @@ order: 36
|
||||
```schema: scope="body"
|
||||
{
|
||||
"type": "calendar",
|
||||
"value": "1638288000",
|
||||
"scheduleClassNames": ["bg-success", "bg-info"],
|
||||
"schedules": [
|
||||
{
|
||||
@ -74,6 +79,7 @@ order: 36
|
||||
```schema: scope="body"
|
||||
{
|
||||
"type": "calendar",
|
||||
"value": "1638288000",
|
||||
"schedules": [
|
||||
{
|
||||
"startTime": "2021-12-11 05:14:00",
|
||||
@ -131,6 +137,7 @@ order: 36
|
||||
"body": [
|
||||
{
|
||||
"type": "calendar",
|
||||
"value": "1638288000",
|
||||
"schedules": "${schedules}"
|
||||
}
|
||||
]
|
||||
@ -142,6 +149,7 @@ order: 36
|
||||
```schema: scope="body"
|
||||
{
|
||||
"type": "calendar",
|
||||
"value": "1638288000",
|
||||
"largeMode": true,
|
||||
"schedules": [
|
||||
{
|
||||
|
@ -1,16 +1,16 @@
|
||||
export default {
|
||||
type: 'page',
|
||||
title: '标题',
|
||||
remark: {
|
||||
title: '标题',
|
||||
body: '这是一段描述问题,注意到了没,还可以设置标题。而且只有点击了才弹出来。',
|
||||
icon: 'question-mark',
|
||||
placement: 'right',
|
||||
trigger: 'click',
|
||||
rootClose: true
|
||||
},
|
||||
body: '内容部分. 可以使用 \\${var} 获取变量。如: `\\$date`: ${date}',
|
||||
aside: '边栏部分',
|
||||
toolbar: '工具栏',
|
||||
initApi: '/api/mock2/page/initData'
|
||||
body: {
|
||||
type: 'form',
|
||||
mode: 'horizontal',
|
||||
api: '/api/mock2/form/saveForm',
|
||||
debug: true,
|
||||
body: [
|
||||
{
|
||||
type: 'input-date',
|
||||
name: 'date',
|
||||
label: '日期'
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
@ -96,7 +96,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.0.0",
|
||||
"@testing-library/react": "^12.0.0",
|
||||
"@testing-library/react": "^12.1.2",
|
||||
"@types/async": "^2.0.45",
|
||||
"@types/codemirror": "^5.60.3",
|
||||
"@types/echarts": "^4.9.2",
|
||||
|
@ -903,7 +903,7 @@ export const TableStore = iRendererStore
|
||||
|
||||
return {
|
||||
// id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
|
||||
id: id,
|
||||
id: String(id),
|
||||
parentId,
|
||||
key: String(`${pindex}-${depth}-${index}`),
|
||||
path: `${path}${index}`,
|
||||
|
Loading…
Reference in New Issue
Block a user