Regression: Update Uikit (#16515)

* improve form events

* fix initial state

* fix lint

* merge state

* Update Fuselage and Apps-Engine packages

Co-authored-by: Douglas Gubert <d-gubert@users.noreply.github.com>
pull/16522/head
Guilherme Gazzo 6 years ago committed by GitHub
parent 7e4570ee8a
commit e004a6c4ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 15
      app/ui-message/client/blocks/MessageBlock.js
  2. 30
      app/ui-message/client/blocks/ModalBlock.js
  3. 14
      client/components/admin/settings/inputs/SelectSettingInput.js
  4. 56
      package-lock.json
  5. 12
      package.json

@ -62,6 +62,7 @@ export const modalBlockWithContext = ({
const id = `modal_id_${ useUniqueId() }`;
const { view, ...data } = useReactiveValue(props.data);
const values = useReactiveValue(props.values);
const ref = useRef();
// Auto focus
@ -71,7 +72,7 @@ export const modalBlockWithContext = ({
// restore the focus after the component unmount
useEffect(() => () => previousFocus && previousFocus.focus(), []);
// Handle Tab, Shift + Tab, Enter and Escape
const handleKeyUp = useCallback((event) => {
const handleKeyDown = useCallback((event) => {
if (event.keyCode === 13) { // ENTER
return onSubmit();
}
@ -120,21 +121,21 @@ export const modalBlockWithContext = ({
onClose();
return false;
};
document.addEventListener('keydown', handleKeyUp);
document.addEventListener('keydown', handleKeyDown);
element.addEventListener('click', close);
return () => {
document.removeEventListener('keydown', handleKeyUp);
document.removeEventListener('keydown', handleKeyDown);
element.removeEventListener('click', close);
};
}, handleKeyUp);
}, handleKeyDown);
const { appInfo = { base64Icon: thumb } } = data;
return (
<kitContext.Provider value={{ ...context, ...data }}>
<kitContext.Provider value={{ ...context, ...data, values }}>
<AnimatedVisibility visibility={AnimatedVisibility.UNHIDING}>
<Modal open id={id} ref={ref}>
<Modal.Header>
{/* <Modal.Thumb url={`api/apps/${ context.appId }/icon`} /> */}
<Modal.Thumb url={thumb} />
<Modal.Thumb title={appInfo.name} url={appInfo.base64Icon} />
<Modal.Title>{textParser([title])}</Modal.Title>
<Modal.Close tabIndex={-1} onClick={onClose} />
</Modal.Header>

@ -33,17 +33,35 @@ Template.ModalBlock.onRendered(async function() {
this.node = this.find('.js-modal-block').parentElement;
ActionManager.on(viewId, handleUpdate);
const filterInputFields = ({ type, element }) => type === 'input' && element.initialValue;
const mapElementToState = ({ element, blockId }) => [element.actionId, { value: element.initialValue, blockId }];
const filterInputFields = ({ element, elements = [] }) => {
if (element && element.initialValue) {
return true;
}
if (elements.length && elements.map((element) => ({ element })).filter(filterInputFields).length) {
return true;
}
};
const mapElementToState = ({ element, blockId, elements = [] }) => {
if (elements.length) {
return elements.map((element) => ({ element, blockId })).filter(filterInputFields).map(mapElementToState);
}
return [element.actionId, { value: element.initialValue, blockId }];
};
this.state = new ReactiveDict(this.data.view.blocks.filter(filterInputFields).map(mapElementToState).reduce((obj, el) => {
if (Array.isArray(el[0])) {
return { ...obj, ...Object.fromEntries(el) };
}
return { ...obj, [el[0]]: el[1] };
}, {}));
const groupStateByBlockIdMap = (obj, [key, { blockId, value }]) => {
obj[blockId] = obj[blockId] || {};
obj[blockId][key] = value;
return obj;
};
const groupStateByBlockId = (obj) => Object.entries(obj).reduce(groupStateByBlockIdMap, {});
this.state = new ReactiveDict(Object.fromEntries(this.data.view.blocks.filter(filterInputFields).map(mapElementToState)));
ReactDOM.render(
React.createElement(
modalBlockWithContext({
@ -104,7 +122,7 @@ Template.ModalBlock.onRendered(async function() {
},
...this.data,
}),
{ data: () => state.get() },
{ data: () => state.get(), values: () => this.state.all() },
),
this.node,
);

@ -2,7 +2,7 @@ import {
Box,
Field,
Flex,
SelectInput,
Select,
} from '@rocket.chat/fuselage';
import React from 'react';
@ -36,7 +36,7 @@ export function SelectSettingInput({
</Box>
</Flex.Container>
<Field.Row>
<SelectInput
<Select
data-qa-setting-id={_id}
id={_id}
value={value}
@ -45,11 +45,11 @@ export function SelectSettingInput({
readOnly={readonly}
autoComplete={autocomplete === false ? 'off' : undefined}
onChange={handleChange}
>
{values.map(({ key, i18nLabel }) =>
<SelectInput.Option key={key} value={key}>{t(i18nLabel)}</SelectInput.Option>,
)}
</SelectInput>
options={values.map(({ key, i18nLabel }) => [
key,
t(i18nLabel),
])}
/>
</Field.Row>
{/* <Select
data-qa-setting-id={_id}

56
package-lock.json generated

@ -2681,9 +2681,9 @@
}
},
"@rocket.chat/apps-engine": {
"version": "1.12.0-beta.2719",
"resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.12.0-beta.2719.tgz",
"integrity": "sha512-YCnA0l8rTkd1KURTpDWUYJNyD8FhvDowW+GNrIxx3/FPXFy4HnxEFPC4dpTYupgKgFSJFGbUaRlS2pk6mz5cBw==",
"version": "1.12.0-beta.2731",
"resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.12.0-beta.2731.tgz",
"integrity": "sha512-xWaN7opGMpE4VwE1gVizpCp685oOuk5+If7lIh+6ypDm62wGOA6gS2fzj8HH+X1ajDr9ZPRIoDfv8DIZ1Q078Q==",
"requires": {
"adm-zip": "^0.4.9",
"cryptiles": "^4.1.3",
@ -2711,50 +2711,36 @@
}
},
"@rocket.chat/fuselage": {
"version": "0.2.0-alpha.21",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage/-/fuselage-0.2.0-alpha.21.tgz",
"integrity": "sha512-SDE4v1RKL9QajIMPD+wNTZZV0OShCEa3qhF5rJCiuAUxXJKRfDVBc9fvsEZnAwtT3bJ9it2Ixvb3936NbdADoQ==",
"version": "0.2.0-ui-kit.90",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage/-/fuselage-0.2.0-ui-kit.90.tgz",
"integrity": "sha512-ZMpH2FgYurSgDO3PZ1p5ge404AE9T4RcI86ErbJ/aLuqkk2exjX7D03DYo4m1layfqJRZohz7VZBv8YivwVr4Q==",
"requires": {
"@rocket.chat/fuselage-tokens": "^0.2.0-alpha.21",
"@rocket.chat/icons": "^0.2.0-alpha.21"
},
"dependencies": {
"@rocket.chat/icons": {
"version": "0.2.0-alpha.21",
"resolved": "https://registry.npmjs.org/@rocket.chat/icons/-/icons-0.2.0-alpha.21.tgz",
"integrity": "sha512-FPzliTIteR3xbw1cTsigE8zt53pw9yagkhr9weEwJDCUNtgTiKG/gg1+PA7MI4965O6RTaGRhluqQVvfq0jz7w=="
}
"@rocket.chat/fuselage-tokens": "^0.2.0-alpha.18",
"@rocket.chat/icons": "^0.2.0-alpha.18"
}
},
"@rocket.chat/fuselage-hooks": {
"version": "0.2.0-alpha.21",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-hooks/-/fuselage-hooks-0.2.0-alpha.21.tgz",
"integrity": "sha512-/JySyjKCL2YOadNRZgu7HHZZasXGqK71G8XJGBOKTUkQGtMOLJEiGIL+pW/aGh/Ii0zGmMR7RYw9pckU/Zvqfw=="
"version": "0.2.0-dev.91",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-hooks/-/fuselage-hooks-0.2.0-dev.91.tgz",
"integrity": "sha512-oK+tgZNHPlTtxB1zS3lI5aRW64HhO3l8nxzdiLJKnh+4N+yqkCE/HR2LUvdrAhvAfp4d2EaE7FROtYwjqgwuKg=="
},
"@rocket.chat/fuselage-tokens": {
"version": "0.2.0-alpha.21",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-tokens/-/fuselage-tokens-0.2.0-alpha.21.tgz",
"integrity": "sha512-xBlAfAO9v8M6nHrKl4cptY7rtHZbpHp0KLDR+5HL1zTaIr/s4oOXONiW9IGXt3HO5tXwTUuLU25oewqPp54sGQ=="
"version": "0.2.0-alpha.22",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-tokens/-/fuselage-tokens-0.2.0-alpha.22.tgz",
"integrity": "sha512-m6iDvQPPd2p+vhHEyjnB5QO+ojO2nj8jXVZhpsHCeHCbTst0DTJtwpZEmqgcbKTH5V6zMmg+Q4Oli26aPOFzJw=="
},
"@rocket.chat/fuselage-ui-kit": {
"version": "0.2.0-dev.88",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-ui-kit/-/fuselage-ui-kit-0.2.0-dev.88.tgz",
"integrity": "sha512-f8IdgWbBVTV7oJy+0cCk0ZO9QRqTig+0Cq9p0yWwN6RFMQE+V4AYKLs4BUEgKhmDSw8v47xT/MPK/eyrPNozEg==",
"version": "0.2.0-ui-kit.90",
"resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-ui-kit/-/fuselage-ui-kit-0.2.0-ui-kit.90.tgz",
"integrity": "sha512-zNoIlGbsusUp0fiu05oAOAppxGMyUO6GWPTBxSpXIvHAjtyAGS9OefCbW6Biz1fQnR3j9rjApmKeeijn2aDLaQ==",
"requires": {
"@rocket.chat/ui-kit": "^0.2.0-dev.88+52fcedb"
},
"dependencies": {
"@rocket.chat/ui-kit": {
"version": "0.2.0-ui-kit.85",
"resolved": "https://registry.npmjs.org/@rocket.chat/ui-kit/-/ui-kit-0.2.0-ui-kit.85.tgz",
"integrity": "sha512-7PfLHD/yO0M+JOmYfDsVecFhaBsHgZSJQojzHB2A63yytstgHWxo+LT1id/+OuXerppTewJK9NBp7LL2PuELNA=="
}
"@rocket.chat/ui-kit": "^0.2.0-alpha.18"
}
},
"@rocket.chat/icons": {
"version": "0.2.0-alpha.21",
"resolved": "https://registry.npmjs.org/@rocket.chat/icons/-/icons-0.2.0-alpha.21.tgz",
"integrity": "sha512-FPzliTIteR3xbw1cTsigE8zt53pw9yagkhr9weEwJDCUNtgTiKG/gg1+PA7MI4965O6RTaGRhluqQVvfq0jz7w=="
"version": "0.2.0-dev.91",
"resolved": "https://registry.npmjs.org/@rocket.chat/icons/-/icons-0.2.0-dev.91.tgz",
"integrity": "sha512-7LeRINkMWD7x9WlNVa9IEKajFz8fK3+CJbW0X00pMqXBCV7zHVew7OgWg32vY1JzPnL0Tj+X9wnWM8A4tGJFSw=="
},
"@rocket.chat/livechat": {
"version": "1.3.0",

@ -122,12 +122,12 @@
"@google-cloud/language": "^3.7.0",
"@google-cloud/storage": "^2.3.1",
"@google-cloud/vision": "^1.8.0",
"@rocket.chat/apps-engine": "^1.12.0-beta.2719",
"@rocket.chat/fuselage": "^0.2.0-alpha.21",
"@rocket.chat/fuselage-hooks": "^0.2.0-alpha.21",
"@rocket.chat/fuselage-ui-kit": "^0.2.0-dev.88",
"@rocket.chat/icons": "^0.2.0-alpha.21",
"@rocket.chat/ui-kit": "^0.2.0-dev.88",
"@rocket.chat/apps-engine": "^1.12.0-beta.2731",
"@rocket.chat/fuselage": "^0.2.0-alpha.23",
"@rocket.chat/fuselage-hooks": "^0.2.0-alpha.23",
"@rocket.chat/fuselage-ui-kit": "^0.2.0-alpha.23",
"@rocket.chat/icons": "^0.2.0-alpha.23",
"@rocket.chat/ui-kit": "^0.2.0-alpha.23",
"@slack/client": "^4.8.0",
"adm-zip": "RocketChat/adm-zip",
"archiver": "^3.0.0",

Loading…
Cancel
Save