From ed0a8a90b3ae8c73e14a9147974885de516b95cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uan=28=EC=84=9C=EA=B5=B0=EB=82=A8=29?= Date: Mon, 13 Jan 2020 15:12:24 +0900 Subject: [PATCH 1/8] fix(AnalyticalTable): Each column can have groupable, sortable, filterable options --- packages/main/src/components/AnalyticalTable/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/main/src/components/AnalyticalTable/index.tsx b/packages/main/src/components/AnalyticalTable/index.tsx index 7abcf5aa278..dc1c96d61c2 100644 --- a/packages/main/src/components/AnalyticalTable/index.tsx +++ b/packages/main/src/components/AnalyticalTable/index.tsx @@ -331,9 +331,9 @@ const AnalyticalTable: FC = forwardRef((props: TableProps, ref: Ref< id={column.id} {...column.getHeaderProps()} isLastColumn={index === columns.length - 1} - groupable={props.groupable} - sortable={props.sortable} - filterable={props.filterable} + groupable={column.groupable !== undefined ? column.groupable : props.groupable} + sortable={column.sortable !== undefined ? column.sortable : props.sortable} + filterable={column.filterable !== undefined ? column.filterable : props.filterable} onSort={props.onSort} onGroupBy={onGroupByChanged} onDragStart={handleDragStart} From 778331e044c7977efe827bac41447b267c3570aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uan=28=EC=84=9C=EA=B5=B0=EB=82=A8=29?= Date: Wed, 15 Jan 2020 12:21:52 +0900 Subject: [PATCH 2/8] Update packages/main/src/components/AnalyticalTable/index.tsx Co-Authored-By: Marcus Notheis --- packages/main/src/components/AnalyticalTable/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/components/AnalyticalTable/index.tsx b/packages/main/src/components/AnalyticalTable/index.tsx index dc1c96d61c2..06d98d55143 100644 --- a/packages/main/src/components/AnalyticalTable/index.tsx +++ b/packages/main/src/components/AnalyticalTable/index.tsx @@ -331,7 +331,7 @@ const AnalyticalTable: FC = forwardRef((props: TableProps, ref: Ref< id={column.id} {...column.getHeaderProps()} isLastColumn={index === columns.length - 1} - groupable={column.groupable !== undefined ? column.groupable : props.groupable} + groupable={column.groupable ?? props.groupable} sortable={column.sortable !== undefined ? column.sortable : props.sortable} filterable={column.filterable !== undefined ? column.filterable : props.filterable} onSort={props.onSort} From 9e2a9311f1a986986b8348b6c1ec14b5f4d64cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uan=28=EC=84=9C=EA=B5=B0=EB=82=A8=29?= Date: Wed, 15 Jan 2020 12:22:01 +0900 Subject: [PATCH 3/8] Update packages/main/src/components/AnalyticalTable/index.tsx Co-Authored-By: Marcus Notheis --- packages/main/src/components/AnalyticalTable/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/components/AnalyticalTable/index.tsx b/packages/main/src/components/AnalyticalTable/index.tsx index 06d98d55143..c204e34a091 100644 --- a/packages/main/src/components/AnalyticalTable/index.tsx +++ b/packages/main/src/components/AnalyticalTable/index.tsx @@ -333,7 +333,7 @@ const AnalyticalTable: FC = forwardRef((props: TableProps, ref: Ref< isLastColumn={index === columns.length - 1} groupable={column.groupable ?? props.groupable} sortable={column.sortable !== undefined ? column.sortable : props.sortable} - filterable={column.filterable !== undefined ? column.filterable : props.filterable} + filterable={column.filterable ?? props.filterable} onSort={props.onSort} onGroupBy={onGroupByChanged} onDragStart={handleDragStart} From 95f41e28a02f6f745ed5c258b1998f7fcd6512d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uan=28=EC=84=9C=EA=B5=B0=EB=82=A8=29?= Date: Wed, 15 Jan 2020 12:22:10 +0900 Subject: [PATCH 4/8] Update packages/main/src/components/AnalyticalTable/index.tsx Co-Authored-By: Marcus Notheis --- packages/main/src/components/AnalyticalTable/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/components/AnalyticalTable/index.tsx b/packages/main/src/components/AnalyticalTable/index.tsx index c204e34a091..304899c367e 100644 --- a/packages/main/src/components/AnalyticalTable/index.tsx +++ b/packages/main/src/components/AnalyticalTable/index.tsx @@ -332,7 +332,7 @@ const AnalyticalTable: FC = forwardRef((props: TableProps, ref: Ref< {...column.getHeaderProps()} isLastColumn={index === columns.length - 1} groupable={column.groupable ?? props.groupable} - sortable={column.sortable !== undefined ? column.sortable : props.sortable} + sortable={column.sortable ?? props.sortable} filterable={column.filterable ?? props.filterable} onSort={props.onSort} onGroupBy={onGroupByChanged} From e0351677f39c6c136a5fa1442848063279607127 Mon Sep 17 00:00:00 2001 From: gnseo Date: Wed, 12 Feb 2020 16:45:45 +0900 Subject: [PATCH 5/8] fix(withWebComponent): Add handler of events those are not specified in metadata of ui5-webcomponents --- .../main/src/internal/withWebComponent.tsx | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/main/src/internal/withWebComponent.tsx b/packages/main/src/internal/withWebComponent.tsx index d12d491b866..b3f88e936c7 100644 --- a/packages/main/src/internal/withWebComponent.tsx +++ b/packages/main/src/internal/withWebComponent.tsx @@ -52,8 +52,14 @@ export const withWebComponent = ( return Object.keys(getWebComponentMetadata().getSlots()); }; - const getEventsFromMetadata = (): string[] => { - return Object.keys(getWebComponentMetadata().getEvents() || {}).filter((eventName) => !eventName.startsWith('_')); + const getEventsFromMetadata = (otherProps?: object): string[] => { + return Object.keys(getWebComponentMetadata().getEvents() || {}) + .filter((eventName) => !eventName.startsWith('_')) + .concat( + Object.keys(otherProps === undefined ? {} : otherProps) + .filter((key) => key.startsWith('on')) + .map((key) => key.replace('on', '').toLowerCase()) + ); }; const createEventWrapperFor = (eventIdentifier, eventHandler) => (e) => { @@ -97,9 +103,11 @@ export const withWebComponent = ( }, {}); }; + const { className, ...otherProps } = props; + useEffect( () => { - getEventsFromMetadata().forEach((eventName) => { + getEventsFromMetadata(otherProps).forEach((eventName) => { const eventPropName = 'on' + capitalizeFirstLetter(eventName); const eventHandler = props[eventPropName]; @@ -115,16 +123,16 @@ export const withWebComponent = ( } }); }, - getEventsFromMetadata().map((eventName) => props[`on${capitalizeFirstLetter(eventName)}`]) + getEventsFromMetadata(otherProps).map((eventName) => props[`on${capitalizeFirstLetter(eventName)}`]) ); - const { className, ...otherProps } = props; - const propsList = getWebComponentMetadata().getPropsList(); const { regularProps: passedProps, slotProps: actualSlotProps } = Object.entries(otherProps) .filter(([key]) => !getBooleanPropsFromMetadata().includes(key)) - .filter(([key]) => !getEventsFromMetadata().some((eventKey) => `on${capitalizeFirstLetter(eventKey)}` === key)) + .filter( + ([key]) => !getEventsFromMetadata(otherProps).some((eventKey) => `on${capitalizeFirstLetter(eventKey)}` === key) + ) .reduce( (acc, [key, value]) => { if (getSlotsFromMetadata().includes(key)) { From c04ec3a57c1fe92e473494e2db8264c9b5361984 Mon Sep 17 00:00:00 2001 From: GoonNahm Date: Thu, 13 Feb 2020 09:20:26 +0900 Subject: [PATCH 6/8] Update packages/main/src/internal/withWebComponent.tsx Co-Authored-By: Marcus Notheis --- packages/main/src/internal/withWebComponent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/internal/withWebComponent.tsx b/packages/main/src/internal/withWebComponent.tsx index b3f88e936c7..a6413acaf11 100644 --- a/packages/main/src/internal/withWebComponent.tsx +++ b/packages/main/src/internal/withWebComponent.tsx @@ -52,7 +52,7 @@ export const withWebComponent = ( return Object.keys(getWebComponentMetadata().getSlots()); }; - const getEventsFromMetadata = (otherProps?: object): string[] => { + const getEventsFromMetadata = (otherProps: = {}): string[] => { return Object.keys(getWebComponentMetadata().getEvents() || {}) .filter((eventName) => !eventName.startsWith('_')) .concat( From 39d7bf94208e7c191dd128439afbb4c9b89358f6 Mon Sep 17 00:00:00 2001 From: GoonNahm Date: Thu, 13 Feb 2020 09:22:23 +0900 Subject: [PATCH 7/8] Update packages/main/src/internal/withWebComponent.tsx fix(withWebComponent): The argument has default value, so the check logic of argument is no longer needed. Co-Authored-By: Marcus Notheis --- packages/main/src/internal/withWebComponent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/internal/withWebComponent.tsx b/packages/main/src/internal/withWebComponent.tsx index a6413acaf11..0bc469fb821 100644 --- a/packages/main/src/internal/withWebComponent.tsx +++ b/packages/main/src/internal/withWebComponent.tsx @@ -56,7 +56,7 @@ export const withWebComponent = ( return Object.keys(getWebComponentMetadata().getEvents() || {}) .filter((eventName) => !eventName.startsWith('_')) .concat( - Object.keys(otherProps === undefined ? {} : otherProps) + Object.keys(otherProps) .filter((key) => key.startsWith('on')) .map((key) => key.replace('on', '').toLowerCase()) ); From f6881e489b787d8f7f5bb7de7cb6e0a08fd9b5cd Mon Sep 17 00:00:00 2001 From: Marcus Notheis Date: Wed, 12 Feb 2020 16:29:51 -0800 Subject: [PATCH 8/8] Update withWebComponent.tsx --- packages/main/src/internal/withWebComponent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/main/src/internal/withWebComponent.tsx b/packages/main/src/internal/withWebComponent.tsx index 0bc469fb821..372fd6fb601 100644 --- a/packages/main/src/internal/withWebComponent.tsx +++ b/packages/main/src/internal/withWebComponent.tsx @@ -52,7 +52,7 @@ export const withWebComponent = ( return Object.keys(getWebComponentMetadata().getSlots()); }; - const getEventsFromMetadata = (otherProps: = {}): string[] => { + const getEventsFromMetadata = (otherProps = {}): string[] => { return Object.keys(getWebComponentMetadata().getEvents() || {}) .filter((eventName) => !eventName.startsWith('_')) .concat(