Browse Source

Merge branch 'release' into js2css

代强 3 years ago
parent
commit
fdbaf7bf8d

+ 47 - 0
content/other/locale/index-en-US.md

@@ -95,6 +95,53 @@ class I18nDemo extends React.Component {
 }
 ```
 
+### Custom Internationalization Component
+
+```jsx live=true dir="column" hideInDSM
+import React from 'react';
+import zh_CN from '@douyinfe/semi-ui/lib/es/locale/source/zh_CN';
+import en_GB from '@douyinfe/semi-ui/lib/es/locale/source/en_GB';
+import { LocaleProvider, LocaleConsumer } from '@douyinfe/semi-ui';
+
+class I18nCustomDemo extends React.Component {
+    constructor(props) {
+        super(props);
+    }
+    render() {
+        return (
+            <>
+                <LocaleProvider locale={zh_CN}>
+                    <CustomComponent />
+                </LocaleProvider>
+                <LocaleProvider locale={en_GB}>
+                    <CustomComponent />
+                </LocaleProvider>
+            </>
+        );
+    }
+}
+
+const CUSTOM_TEXT_MAP = {
+    'zh-CN': '你好',
+    'en-GB': 'hello'
+};
+
+class CustomComponent extends React.Component {
+    constructor(props) {
+        super(props);
+    }
+    render() {
+        return <LocaleConsumer componentName="code">
+            {
+                (locale) => (
+                    CUSTOM_TEXT_MAP[locale || 'zh-CN']
+                )
+            }
+        </LocaleConsumer>;
+    }
+}
+```
+
 ### Components that support multilingualism
 
 The example gives all the current multilingual components

+ 47 - 0
content/other/locale/index.md

@@ -94,6 +94,53 @@ class I18nDemo extends React.Component {
 }
 ```
 
+### 自定义国际化组件
+
+```jsx live=true dir="column" hideInDSM
+import React from 'react';
+import zh_CN from '@douyinfe/semi-ui/lib/es/locale/source/zh_CN';
+import en_GB from '@douyinfe/semi-ui/lib/es/locale/source/en_GB';
+import { LocaleProvider, LocaleConsumer } from '@douyinfe/semi-ui';
+
+class I18nCustomDemo extends React.Component {
+    constructor(props) {
+        super(props);
+    }
+    render() {
+        return (
+            <>
+                <LocaleProvider locale={zh_CN}>
+                    <CustomComponent />
+                </LocaleProvider>
+                <LocaleProvider locale={en_GB}>
+                    <CustomComponent />
+                </LocaleProvider>
+            </>
+        );
+    }
+}
+
+const CUSTOM_TEXT_MAP = {
+    'zh-CN': '你好',
+    'en-GB': 'hello'
+};
+
+class CustomComponent extends React.Component {
+    constructor(props) {
+        super(props);
+    }
+    render() {
+        return <LocaleConsumer componentName="code">
+            {
+                (locale) => (
+                    CUSTOM_TEXT_MAP[locale || 'zh-CN']
+                )
+            }
+        </LocaleConsumer>;
+    }
+}
+```
+
 ### 支持多语言的组件
 
 示例给出了目前所有支持多语言的组件

+ 3 - 4
cypress/integration/carousel.spec.js

@@ -1,4 +1,4 @@
-describe('carousel',  () => {
+describe('carousel', () => {
     it('ref method with control', () => {
         cy.visit('http://127.0.0.1:6006/iframe.html?id=carousel--controlled-usage&args=&viewMode=story');
         cy.get('.semi-carousel-content-item-active h3').contains('1');
@@ -40,7 +40,7 @@ describe('carousel',  () => {
         cy.get('.semi-carousel-content-item-active h3').contains('3');
 
         cy.get('div').contains('stop').click();
-        cy.tick(4300);
+        cy.tick(7300);
         cy.get('.semi-carousel-content-item-active h3').contains('3');
 
         cy.get('div').contains('prev').click();
@@ -52,9 +52,8 @@ describe('carousel',  () => {
         cy.get('.semi-carousel-content-item-active h3').contains('3');
 
         cy.get('div').contains('next').click();
-        cy.tick(300);
+        // cy.tick(300);
         cy.get('.semi-carousel-content-item-active h3').contains('4');
-
     });
 
     it('mouseover and mouseleave', () => {

+ 4 - 4
cypress/integration/datePicker.spec.js

@@ -536,19 +536,19 @@ describe('DatePicker', () => {
     it('cashedSelectedValue after selected date', () => {
         cy.visit('http://localhost:6006/iframe.html?id=datepicker--cashed-selected-value&viewMode=story');
         cy.get('[data-cy=date] .semi-input').first().click();
-        cy.get('.semi-datepicker-day').contains("5").click();
+        cy.get('.semi-datepicker-day').contains("5").click({ force: true });
         cy.get('[data-cy=date] .semi-input').first().click();
         cy.get('.semi-popover .semi-datepicker-day-selected').contains('5');
 
         cy.get('[data-cy=dateTime] .semi-input').first().click();
-        cy.get('.semi-datepicker-day').contains("5").click();
+        cy.get('.semi-datepicker-day').contains("5").click({ force: true });
         cy.get('[data-cy=dateTime] .semi-input').first().click();
         cy.get('.semi-popover .semi-datepicker-day-selected').contains('5');
 
         cy.get('[data-cy=dateRange] .semi-input').eq(0).click();
-        cy.get('.semi-datepicker-day').contains("5").click();
+        cy.get('.semi-datepicker-day').contains("5").click({ force: true });
         cy.get('[data-cy=dateRange] .semi-input').eq(1).click();
-        cy.get('.semi-datepicker-day').contains("20").click();
+        cy.get('.semi-datepicker-day').contains("20").click({ force: true });
         cy.get('[data-cy=dateRange] .semi-input').eq(0).click();
         cy.get('.semi-popover .semi-datepicker-day-selected-start').contains('5');
         cy.get('.semi-popover .semi-datepicker-day-selected-end').contains('20');

+ 2 - 1
packages/semi-foundation/cascader/foundation.ts

@@ -522,7 +522,7 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
         this._adapter.notifyDropdownVisibleChange(false);
         this._adapter.unregisterClickOutsideHandler();
         if (this._isFilterable()) {
-            const { selectedKeys } = this.getStates();
+            const { selectedKeys, isSearching } = this.getStates();
             let inputValue = '';
             if (key && !multiple) {
                 inputValue = this.renderDisplayText(key);
@@ -532,6 +532,7 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
             this._adapter.updateStates({ inputValue });
             !multiple && this.toggle2SearchInput(false);
             !multiple && this._adapter.updateFocusState(false);
+            isSearching && this._adapter.updateStates({ isSearching: false });
         }
         this._notifyBlur(e);
     }

+ 2 - 0
packages/semi-foundation/upload/foundation.ts

@@ -706,6 +706,8 @@ class UploadFoundation<P = Record<string, any>, S = Record<string, any>> extends
             this._adapter.updateFileList([]);
             this._adapter.notifyClear();
             this._adapter.notifyChange({ fileList: [] } as any);
+        }).catch(error => {
+            // if user pass reject promise, no need to do anything
         });
     }
 

+ 1 - 0
packages/semi-ui/index.ts

@@ -82,6 +82,7 @@ export { default as Transfer } from './transfer';
 
 
 export { default as LocaleProvider } from './locale/localeProvider';
+export { default as LocaleConsumer } from './locale/localeConsumer';
 
 /** Form */
 export {