@beinformed/ui 1.65.23 → 1.65.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/esm/builder/mergeLayoutHintConfigurations.js +6 -5
- package/esm/builder/mergeLayoutHintConfigurations.js.flow +11 -5
- package/esm/builder/mergeLayoutHintConfigurations.js.map +1 -1
- package/esm/constants/Settings.js +4 -1
- package/esm/constants/Settings.js.flow +3 -3
- package/esm/constants/Settings.js.map +1 -1
- package/esm/hooks/__tests__/useAuthentication.spec.js.flow +100 -132
- package/esm/hooks/useAuthentication.js +21 -11
- package/esm/hooks/useAuthentication.js.flow +29 -26
- package/esm/hooks/useAuthentication.js.map +1 -1
- package/esm/hooks/useModelCatalog.js +1 -1
- package/esm/hooks/useModelCatalog.js.flow +1 -1
- package/esm/hooks/useModelCatalog.js.map +1 -1
- package/esm/hooks/useModularUI.js +1 -1
- package/esm/hooks/useModularUI.js.flow +1 -1
- package/esm/hooks/useModularUI.js.map +1 -1
- package/esm/i18n/Locale.js +3 -1
- package/esm/i18n/Locale.js.flow +2 -2
- package/esm/i18n/Locale.js.map +1 -1
- package/esm/models/actions/ActionCollection.js +1 -1
- package/esm/models/actions/ActionCollection.js.flow +3 -3
- package/esm/models/actions/ActionCollection.js.map +1 -1
- package/esm/models/application/ApplicationModel.js +6 -1
- package/esm/models/application/ApplicationModel.js.flow +7 -2
- package/esm/models/application/ApplicationModel.js.map +1 -1
- package/esm/models/attributes/ChoiceAttributeModel.js +3 -5
- package/esm/models/attributes/ChoiceAttributeModel.js.flow +3 -5
- package/esm/models/attributes/ChoiceAttributeModel.js.map +1 -1
- package/esm/models/attributes/CompositeAttributeModel.js +1 -1
- package/esm/models/attributes/CompositeAttributeModel.js.flow +1 -1
- package/esm/models/attributes/CompositeAttributeModel.js.map +1 -1
- package/esm/models/attributes/NumberAttributeModel.js +3 -1
- package/esm/models/attributes/NumberAttributeModel.js.flow +2 -1
- package/esm/models/attributes/NumberAttributeModel.js.map +1 -1
- package/esm/models/attributes/StringAttributeModel.js +5 -4
- package/esm/models/attributes/StringAttributeModel.js.flow +4 -4
- package/esm/models/attributes/StringAttributeModel.js.map +1 -1
- package/esm/models/attributes/input-constraints/DatetimeFormatConstraint.js +1 -1
- package/esm/models/attributes/input-constraints/DatetimeFormatConstraint.js.flow +1 -1
- package/esm/models/attributes/input-constraints/DatetimeFormatConstraint.js.map +1 -1
- package/esm/models/base/BaseModel.js +6 -5
- package/esm/models/base/BaseModel.js.flow +7 -5
- package/esm/models/base/BaseModel.js.map +1 -1
- package/esm/models/base/ResourceModel.js +6 -7
- package/esm/models/base/ResourceModel.js.flow +4 -4
- package/esm/models/base/ResourceModel.js.map +1 -1
- package/esm/models/concepts/ConceptDetailModel.js +16 -16
- package/esm/models/concepts/ConceptDetailModel.js.flow +16 -19
- package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
- package/esm/models/concepts/SourceReferenceCollection.js +1 -1
- package/esm/models/concepts/SourceReferenceCollection.js.flow +1 -2
- package/esm/models/concepts/SourceReferenceCollection.js.map +1 -1
- package/esm/models/content/ContentLinkModel.js +6 -6
- package/esm/models/content/ContentLinkModel.js.flow +6 -6
- package/esm/models/content/ContentLinkModel.js.map +1 -1
- package/esm/models/filters/BaseFilterModel.js +3 -5
- package/esm/models/filters/BaseFilterModel.js.flow +4 -5
- package/esm/models/filters/BaseFilterModel.js.map +1 -1
- package/esm/models/filters/StringFilterModel.js +3 -2
- package/esm/models/filters/StringFilterModel.js.flow +2 -2
- package/esm/models/filters/StringFilterModel.js.map +1 -1
- package/esm/models/form/FormModel.js +1 -1
- package/esm/models/form/FormModel.js.flow +1 -2
- package/esm/models/form/FormModel.js.map +1 -1
- package/esm/models/form/FormObjectModel.js +1 -1
- package/esm/models/form/FormObjectModel.js.flow +2 -3
- package/esm/models/form/FormObjectModel.js.map +1 -1
- package/esm/models/href/Href.js +2 -2
- package/esm/models/href/Href.js.flow +2 -2
- package/esm/models/href/Href.js.map +1 -1
- package/esm/models/index.js +2 -2
- package/esm/models/index.js.flow +1 -2
- package/esm/models/index.js.map +1 -1
- package/esm/models/links/normalizeLinkJSON.js +1 -1
- package/esm/models/links/normalizeLinkJSON.js.flow +1 -1
- package/esm/models/links/normalizeLinkJSON.js.map +1 -1
- package/esm/modularui/Authenticate.js +7 -2
- package/esm/modularui/Authenticate.js.flow +4 -2
- package/esm/modularui/Authenticate.js.map +1 -1
- package/esm/modularui/ModularUIRequest.js +2 -5
- package/esm/modularui/ModularUIRequest.js.flow +2 -6
- package/esm/modularui/ModularUIRequest.js.map +1 -1
- package/esm/modularui/UploadRequest.js +3 -1
- package/esm/modularui/UploadRequest.js.flow +3 -1
- package/esm/modularui/UploadRequest.js.map +1 -1
- package/esm/react-client/client.js +22 -10
- package/esm/react-client/client.js.flow +17 -11
- package/esm/react-client/client.js.map +1 -1
- package/esm/react-client/contextPath.js +3 -1
- package/esm/react-client/contextPath.js.flow +2 -1
- package/esm/react-client/contextPath.js.map +1 -1
- package/esm/redux/_i18n/I18nActions.js.flow +1 -1
- package/esm/redux/_i18n/I18nActions.js.map +1 -1
- package/esm/redux/_i18n/I18nReducer.js +1 -4
- package/esm/redux/_i18n/I18nReducer.js.flow +1 -4
- package/esm/redux/_i18n/I18nReducer.js.map +1 -1
- package/esm/redux/_modularui/ModularUIActions.js +1 -4
- package/esm/redux/_modularui/ModularUIActions.js.flow +3 -7
- package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
- package/esm/redux/_modularui/ModularUIConnector.js +2 -5
- package/esm/redux/_modularui/ModularUIConnector.js.flow +2 -2
- package/esm/redux/_modularui/ModularUIConnector.js.map +1 -1
- package/esm/redux/_modularui/ModularUIReducer.js +6 -3
- package/esm/redux/_modularui/ModularUIReducer.js.flow +2 -2
- package/esm/redux/_modularui/ModularUIReducer.js.map +1 -1
- package/esm/redux/_modularui/ModularUISelectors.js +12 -18
- package/esm/redux/_modularui/ModularUISelectors.js.flow +13 -14
- package/esm/redux/_modularui/ModularUISelectors.js.map +1 -1
- package/esm/redux/_modularui/withModularUI.js.flow +2 -2
- package/esm/redux/_modularui/withModularUI.js.map +1 -1
- package/esm/redux/actions/Application.js +32 -4
- package/esm/redux/actions/Application.js.flow +34 -5
- package/esm/redux/actions/Application.js.map +1 -1
- package/esm/redux/actions/Authorization.js +23 -26
- package/esm/redux/actions/Authorization.js.flow +30 -30
- package/esm/redux/actions/Authorization.js.map +1 -1
- package/esm/redux/actions/Error.js +2 -0
- package/esm/redux/actions/Error.js.flow +5 -4
- package/esm/redux/actions/Error.js.map +1 -1
- package/esm/redux/actions/Form.js.flow +1 -1
- package/esm/redux/actions/Form.js.map +1 -1
- package/esm/redux/actions/FormAttributeSet.js.flow +1 -1
- package/esm/redux/actions/FormAttributeSet.js.map +1 -1
- package/esm/redux/actions/FormAutosave.js.flow +1 -1
- package/esm/redux/actions/FormAutosave.js.map +1 -1
- package/esm/redux/actions/FormAutosubmit.js.flow +1 -1
- package/esm/redux/actions/FormAutosubmit.js.map +1 -1
- package/esm/redux/actions/FormAutoupdate.js.flow +1 -1
- package/esm/redux/actions/FormAutoupdate.js.map +1 -1
- package/esm/redux/actions/FormValidations.js.flow +1 -1
- package/esm/redux/actions/FormValidations.js.map +1 -1
- package/esm/redux/actions/Notification.js.flow +3 -3
- package/esm/redux/actions/Notification.js.map +1 -1
- package/esm/redux/actions/Preferences.js +4 -4
- package/esm/redux/actions/Preferences.js.flow +6 -10
- package/esm/redux/actions/Preferences.js.map +1 -1
- package/esm/redux/actions/SignIn.js +2 -4
- package/esm/redux/actions/SignIn.js.flow +4 -7
- package/esm/redux/actions/SignIn.js.map +1 -1
- package/esm/redux/actions/SignOut.js.flow +1 -1
- package/esm/redux/actions/SignOut.js.map +1 -1
- package/esm/redux/actions/__tests__/Application.spec.js.flow +67 -29
- package/esm/redux/actions/__tests__/Authorization.spec.js.flow +77 -83
- package/esm/redux/connectors/Form.js.flow +2 -2
- package/esm/redux/connectors/Form.js.map +1 -1
- package/esm/redux/connectors/FormAttributeSet.js.flow +2 -5
- package/esm/redux/connectors/FormAttributeSet.js.map +1 -1
- package/esm/redux/connectors/Progress.js.flow +1 -1
- package/esm/redux/connectors/Progress.js.map +1 -1
- package/esm/redux/connectors/SignIn.js.flow +1 -1
- package/esm/redux/connectors/SignIn.js.map +1 -1
- package/esm/redux/connectors/SignOut.js.flow +1 -1
- package/esm/redux/connectors/SignOut.js.map +1 -1
- package/esm/redux/reducers/ModelCatalogReducer.js +7 -9
- package/esm/redux/reducers/ModelCatalogReducer.js.flow +8 -9
- package/esm/redux/reducers/ModelCatalogReducer.js.map +1 -1
- package/esm/redux/store/configureStore.js +9 -2
- package/esm/redux/store/configureStore.js.flow +13 -2
- package/esm/redux/store/configureStore.js.map +1 -1
- package/esm/redux/types.js.flow +33 -5
- package/esm/redux/types.js.map +1 -1
- package/esm/utils/browser/Cache.js +3 -1
- package/esm/utils/browser/Cache.js.flow +2 -1
- package/esm/utils/browser/Cache.js.map +1 -1
- package/esm/utils/browser/__tests__/Cookies.spec.js.flow +2 -1
- package/esm/utils/datetime/DateTimeUtil.js +6 -5
- package/esm/utils/datetime/DateTimeUtil.js.flow +5 -11
- package/esm/utils/datetime/DateTimeUtil.js.map +1 -1
- package/esm/utils/datetime/__tests__/DateTimeFormat.spec.js.flow +0 -6
- package/esm/utils/fetch/universalFetch.js +7 -8
- package/esm/utils/fetch/universalFetch.js.flow +13 -14
- package/esm/utils/fetch/universalFetch.js.map +1 -1
- package/esm/utils/fetch/xhr.js +2 -5
- package/esm/utils/fetch/xhr.js.flow +2 -6
- package/esm/utils/fetch/xhr.js.map +1 -1
- package/esm/utils/helpers/createHref.js +2 -1
- package/esm/utils/helpers/createHref.js.flow +1 -1
- package/esm/utils/helpers/createHref.js.map +1 -1
- package/esm/utils/helpers/createUUID.js +2 -1
- package/esm/utils/helpers/createUUID.js.flow +1 -1
- package/esm/utils/helpers/createUUID.js.map +1 -1
- package/esm/utils/number/parseNumbers.js +4 -3
- package/esm/utils/number/parseNumbers.js.flow +3 -3
- package/esm/utils/number/parseNumbers.js.map +1 -1
- package/lib/builder/mergeLayoutHintConfigurations.js +6 -5
- package/lib/builder/mergeLayoutHintConfigurations.js.map +1 -1
- package/lib/constants/Settings.js +4 -1
- package/lib/constants/Settings.js.map +1 -1
- package/lib/hooks/useAuthentication.js +21 -11
- package/lib/hooks/useAuthentication.js.map +1 -1
- package/lib/hooks/useModelCatalog.js +1 -1
- package/lib/hooks/useModelCatalog.js.map +1 -1
- package/lib/hooks/useModularUI.js +1 -1
- package/lib/hooks/useModularUI.js.map +1 -1
- package/lib/i18n/Locale.js +3 -1
- package/lib/i18n/Locale.js.map +1 -1
- package/lib/models/actions/ActionCollection.js +1 -1
- package/lib/models/actions/ActionCollection.js.map +1 -1
- package/lib/models/application/ApplicationModel.js +6 -1
- package/lib/models/application/ApplicationModel.js.map +1 -1
- package/lib/models/attributes/ChoiceAttributeModel.js +3 -5
- package/lib/models/attributes/ChoiceAttributeModel.js.map +1 -1
- package/lib/models/attributes/CompositeAttributeModel.js +1 -1
- package/lib/models/attributes/CompositeAttributeModel.js.map +1 -1
- package/lib/models/attributes/NumberAttributeModel.js +3 -1
- package/lib/models/attributes/NumberAttributeModel.js.map +1 -1
- package/lib/models/attributes/StringAttributeModel.js +5 -4
- package/lib/models/attributes/StringAttributeModel.js.map +1 -1
- package/lib/models/attributes/input-constraints/DatetimeFormatConstraint.js +1 -1
- package/lib/models/attributes/input-constraints/DatetimeFormatConstraint.js.map +1 -1
- package/lib/models/base/BaseModel.js +6 -5
- package/lib/models/base/BaseModel.js.map +1 -1
- package/lib/models/base/ResourceModel.js +6 -7
- package/lib/models/base/ResourceModel.js.map +1 -1
- package/lib/models/concepts/ConceptDetailModel.js +16 -16
- package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
- package/lib/models/concepts/SourceReferenceCollection.js +1 -1
- package/lib/models/concepts/SourceReferenceCollection.js.map +1 -1
- package/lib/models/content/ContentLinkModel.js +6 -6
- package/lib/models/content/ContentLinkModel.js.map +1 -1
- package/lib/models/filters/BaseFilterModel.js +3 -5
- package/lib/models/filters/BaseFilterModel.js.map +1 -1
- package/lib/models/filters/StringFilterModel.js +3 -2
- package/lib/models/filters/StringFilterModel.js.map +1 -1
- package/lib/models/form/FormModel.js +1 -1
- package/lib/models/form/FormModel.js.map +1 -1
- package/lib/models/form/FormObjectModel.js +1 -1
- package/lib/models/form/FormObjectModel.js.map +1 -1
- package/lib/models/href/Href.js +2 -2
- package/lib/models/href/Href.js.map +1 -1
- package/lib/models/index.js.map +1 -1
- package/lib/models/links/normalizeLinkJSON.js +1 -1
- package/lib/models/links/normalizeLinkJSON.js.map +1 -1
- package/lib/modularui/Authenticate.js +7 -2
- package/lib/modularui/Authenticate.js.map +1 -1
- package/lib/modularui/ModularUIRequest.js +2 -5
- package/lib/modularui/ModularUIRequest.js.map +1 -1
- package/lib/modularui/UploadRequest.js +3 -1
- package/lib/modularui/UploadRequest.js.map +1 -1
- package/lib/react-client/client.js +22 -10
- package/lib/react-client/client.js.map +1 -1
- package/lib/react-client/contextPath.js +4 -1
- package/lib/react-client/contextPath.js.map +1 -1
- package/lib/redux/_i18n/I18nActions.js.map +1 -1
- package/lib/redux/_i18n/I18nReducer.js +1 -4
- package/lib/redux/_i18n/I18nReducer.js.map +1 -1
- package/lib/redux/_modularui/ModularUIActions.js +1 -4
- package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
- package/lib/redux/_modularui/ModularUIConnector.js +2 -5
- package/lib/redux/_modularui/ModularUIConnector.js.map +1 -1
- package/lib/redux/_modularui/ModularUIReducer.js +6 -3
- package/lib/redux/_modularui/ModularUIReducer.js.map +1 -1
- package/lib/redux/_modularui/ModularUISelectors.js +12 -18
- package/lib/redux/_modularui/ModularUISelectors.js.map +1 -1
- package/lib/redux/_modularui/withModularUI.js.map +1 -1
- package/lib/redux/actions/Application.js +33 -4
- package/lib/redux/actions/Application.js.map +1 -1
- package/lib/redux/actions/Authorization.js +23 -26
- package/lib/redux/actions/Authorization.js.map +1 -1
- package/lib/redux/actions/Error.js +2 -0
- package/lib/redux/actions/Error.js.map +1 -1
- package/lib/redux/actions/Form.js.map +1 -1
- package/lib/redux/actions/FormAttributeSet.js.map +1 -1
- package/lib/redux/actions/FormAutosave.js.map +1 -1
- package/lib/redux/actions/FormAutosubmit.js.map +1 -1
- package/lib/redux/actions/FormAutoupdate.js.map +1 -1
- package/lib/redux/actions/FormValidations.js.map +1 -1
- package/lib/redux/actions/Notification.js.map +1 -1
- package/lib/redux/actions/Preferences.js +4 -4
- package/lib/redux/actions/Preferences.js.map +1 -1
- package/lib/redux/actions/SignIn.js +2 -4
- package/lib/redux/actions/SignIn.js.map +1 -1
- package/lib/redux/actions/SignOut.js.map +1 -1
- package/lib/redux/connectors/Form.js.map +1 -1
- package/lib/redux/connectors/FormAttributeSet.js.map +1 -1
- package/lib/redux/connectors/Progress.js.map +1 -1
- package/lib/redux/connectors/SignIn.js.map +1 -1
- package/lib/redux/connectors/SignOut.js.map +1 -1
- package/lib/redux/reducers/ModelCatalogReducer.js +7 -9
- package/lib/redux/reducers/ModelCatalogReducer.js.map +1 -1
- package/lib/redux/store/configureStore.js +9 -2
- package/lib/redux/store/configureStore.js.map +1 -1
- package/lib/redux/types.js.map +1 -1
- package/lib/utils/browser/Cache.js +3 -1
- package/lib/utils/browser/Cache.js.map +1 -1
- package/lib/utils/datetime/DateTimeUtil.js +6 -5
- package/lib/utils/datetime/DateTimeUtil.js.map +1 -1
- package/lib/utils/fetch/universalFetch.js +7 -8
- package/lib/utils/fetch/universalFetch.js.map +1 -1
- package/lib/utils/fetch/xhr.js +2 -5
- package/lib/utils/fetch/xhr.js.map +1 -1
- package/lib/utils/helpers/createHref.js +2 -1
- package/lib/utils/helpers/createHref.js.map +1 -1
- package/lib/utils/helpers/createUUID.js +3 -1
- package/lib/utils/helpers/createUUID.js.map +1 -1
- package/lib/utils/number/parseNumbers.js +4 -3
- package/lib/utils/number/parseNumbers.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAutosave.js","names":["debounce","ModularUIRequest","FormModel","HTTP_METHODS","VALIDATE_DEBOUNCE_TIMEOUT","AUTOSAVE_STATUS","updateForm","updateAutosave","status","model","type","payload","autosave","dispatch","form","START","formdata","getFormData","selfhref","setParameter","method","POST","data","childmodels","locale","fetch","then","savedForm","lastServerUpdate","FINISHED","debouncedAutosave","autosaveFormObject"],"sources":["../../../src/redux/actions/FormAutosave.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n AUTOSAVE_STATUS,\n} from \"../../constants/Constants\";\n\nimport { updateForm } from \"../_modularui/ModularUIActions\";\n\nimport type { UpdateAutosaveAction, ThunkAction, Dispatch } from \"../types\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateAutosave = (\n status: $Keys<typeof AUTOSAVE_STATUS>,\n model: FormModel,\n): UpdateAutosaveAction => ({\n type: \"UPDATE_AUTOSAVE_STATUS\",\n payload: {\n status,\n model,\n },\n});\n\n/**\n */\nconst autosave = (dispatch: Dispatch, form: FormModel) => {\n dispatch(updateAutosave(AUTOSAVE_STATUS.START, form));\n\n const formdata = form.getFormData(true, false);\n\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"true\"), {\n method: HTTP_METHODS.POST,\n data: formdata,\n childmodels: false,\n locale: form.locale,\n })\n .fetch()\n .then((savedForm) => {\n if (savedForm instanceof FormModel) {\n // update last server update to indicate an update has happened\n // send the existing form to prevent updates in the ui based on autosave results\n form.lastServerUpdate = savedForm.lastServerUpdate;\n\n dispatch(updateForm(form));\n dispatch(updateAutosave(AUTOSAVE_STATUS.FINISHED, savedForm));\n }\n });\n};\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedAutosave = debounce((dispatch, form) => {\n autosave(dispatch, form);\n}, VALIDATE_DEBOUNCE_TIMEOUT);\n\n/**\n */\nexport const autosaveFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedAutosave(dispatch, form);\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,iBAAiB;AAEtC,OAAOC,gBAAgB,MAAM,kCAAkC;AAC/D,OAAOC,SAAS,MAAM,6BAA6B;AAEnD,SACEC,YAAY,EACZC,yBAAyB,EACzBC,eAAe,QACV,2BAA2B;AAElC,SAASC,UAAU,QAAQ,gCAAgC;AAI3D;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAGA,CACrBC,MAAqC,EACrCC,KAAgB,MACU;EAC1BC,IAAI,EAAE,wBAAwB;EAC9BC,OAAO,EAAE;IACPH,MAAM;IACNC;EACF;AACF,CAAC,CAAC;;AAEF;AACA;AACA,MAAMG,QAAQ,GAAGA,CAACC,QAAkB,EAAEC,IAAe,KAAK;EACxDD,QAAQ,CAACN,cAAc,CAACF,eAAe,CAACU,KAAK,EAAED,IAAI,CAAC,CAAC;EAErD,MAAME,QAAQ,GAAGF,IAAI,CAACG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;EAE9C,IAAIhB,gBAAgB,CAACa,IAAI,CAACI,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;IACjEC,MAAM,EAAEjB,YAAY,CAACkB,IAAI;IACzBC,IAAI,EAAEN,QAAQ;IACdO,WAAW,EAAE,KAAK;IAClBC,MAAM,EAAEV,IAAI,CAACU;EACf,CAAC,CAAC,CACCC,KAAK,CAAC,CAAC,CACPC,IAAI,CAAEC,SAAS,IAAK;IACnB,IAAIA,SAAS,YAAYzB,SAAS,EAAE;MAClC;MACA;MACAY,IAAI,CAACc,gBAAgB,GAAGD,SAAS,CAACC,gBAAgB;MAElDf,QAAQ,CAACP,UAAU,CAACQ,IAAI,CAAC,CAAC;MAC1BD,QAAQ,CAACN,cAAc,CAACF,eAAe,CAACwB,QAAQ,EAAEF,SAAS,CAAC,CAAC;IAC/D;EACF,CAAC,CAAC;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,iBAAiB,GAAG9B,QAAQ,CAAC,CAACa,QAAQ,EAAEC,IAAI,KAAK;EACrDF,QAAQ,CAACC,QAAQ,EAAEC,IAAI,CAAC;AAC1B,CAAC,EAAEV,yBAAyB,CAAC;;AAE7B;AACA;AACA,OAAO,MAAM2B,kBAAkB,GAC5BjB,IAAe,IACfD,QAAQ,IACPiB,iBAAiB,CAACjB,QAAQ,EAAEC,IAAI,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormAutosave.js","names":["debounce","ModularUIRequest","FormModel","HTTP_METHODS","VALIDATE_DEBOUNCE_TIMEOUT","AUTOSAVE_STATUS","updateForm","updateAutosave","status","model","type","payload","autosave","dispatch","form","START","formdata","getFormData","selfhref","setParameter","method","POST","data","childmodels","locale","fetch","then","savedForm","lastServerUpdate","FINISHED","debouncedAutosave","autosaveFormObject"],"sources":["../../../src/redux/actions/FormAutosave.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n AUTOSAVE_STATUS,\n} from \"../../constants/Constants\";\n\nimport { updateForm } from \"../_modularui/ModularUIActions\";\n\nimport type { UpdateAutosaveAction, ThunkAction, Dispatch } from \"../types\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateAutosave = (\n status: $Keys<typeof AUTOSAVE_STATUS>,\n model: FormModel,\n): UpdateAutosaveAction => ({\n type: \"UPDATE_AUTOSAVE_STATUS\",\n payload: {\n status,\n model,\n },\n});\n\n/**\n */\nconst autosave = (dispatch: Dispatch, form: FormModel) => {\n dispatch(updateAutosave(AUTOSAVE_STATUS.START, form));\n\n const formdata = form.getFormData(true, false);\n\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"true\"), {\n method: HTTP_METHODS.POST,\n data: formdata,\n childmodels: false,\n locale: form.locale,\n })\n .fetch()\n .then((savedForm) => {\n if (savedForm instanceof FormModel) {\n // update last server update to indicate an update has happened\n // send the existing form to prevent updates in the ui based on autosave results\n form.lastServerUpdate = savedForm.lastServerUpdate;\n\n dispatch(updateForm(form));\n dispatch(updateAutosave(AUTOSAVE_STATUS.FINISHED, savedForm));\n }\n });\n};\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedAutosave = debounce((dispatch, form) => {\n autosave(dispatch, form);\n}, VALIDATE_DEBOUNCE_TIMEOUT);\n\n/**\n */\nexport const autosaveFormObject =\n (form: FormModel): ThunkAction<> =>\n (dispatch) =>\n debouncedAutosave(dispatch, form);\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,iBAAiB;AAEtC,OAAOC,gBAAgB,MAAM,kCAAkC;AAC/D,OAAOC,SAAS,MAAM,6BAA6B;AAEnD,SACEC,YAAY,EACZC,yBAAyB,EACzBC,eAAe,QACV,2BAA2B;AAElC,SAASC,UAAU,QAAQ,gCAAgC;AAI3D;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAGA,CACrBC,MAAqC,EACrCC,KAAgB,MACU;EAC1BC,IAAI,EAAE,wBAAwB;EAC9BC,OAAO,EAAE;IACPH,MAAM;IACNC;EACF;AACF,CAAC,CAAC;;AAEF;AACA;AACA,MAAMG,QAAQ,GAAGA,CAACC,QAAkB,EAAEC,IAAe,KAAK;EACxDD,QAAQ,CAACN,cAAc,CAACF,eAAe,CAACU,KAAK,EAAED,IAAI,CAAC,CAAC;EAErD,MAAME,QAAQ,GAAGF,IAAI,CAACG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;EAE9C,IAAIhB,gBAAgB,CAACa,IAAI,CAACI,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;IACjEC,MAAM,EAAEjB,YAAY,CAACkB,IAAI;IACzBC,IAAI,EAAEN,QAAQ;IACdO,WAAW,EAAE,KAAK;IAClBC,MAAM,EAAEV,IAAI,CAACU;EACf,CAAC,CAAC,CACCC,KAAK,CAAC,CAAC,CACPC,IAAI,CAAEC,SAAS,IAAK;IACnB,IAAIA,SAAS,YAAYzB,SAAS,EAAE;MAClC;MACA;MACAY,IAAI,CAACc,gBAAgB,GAAGD,SAAS,CAACC,gBAAgB;MAElDf,QAAQ,CAACP,UAAU,CAACQ,IAAI,CAAC,CAAC;MAC1BD,QAAQ,CAACN,cAAc,CAACF,eAAe,CAACwB,QAAQ,EAAEF,SAAS,CAAC,CAAC;IAC/D;EACF,CAAC,CAAC;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,iBAAiB,GAAG9B,QAAQ,CAAC,CAACa,QAAQ,EAAEC,IAAI,KAAK;EACrDF,QAAQ,CAACC,QAAQ,EAAEC,IAAI,CAAC;AAC1B,CAAC,EAAEV,yBAAyB,CAAC;;AAE7B;AACA;AACA,OAAO,MAAM2B,kBAAkB,GAC5BjB,IAAe,IACfD,QAAQ,IACPiB,iBAAiB,CAACjB,QAAQ,EAAEC,IAAI,CAAC","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ export const autosubmitFormObject = (
|
|
|
12
12
|
form: FormModel,
|
|
13
13
|
attribute: AttributeType,
|
|
14
14
|
forceUpdate: boolean = false,
|
|
15
|
-
):
|
|
15
|
+
): ThunkAction<> | null => {
|
|
16
16
|
// As long as we have form objects,
|
|
17
17
|
// and the current attribute is not found in the current form object, go back.
|
|
18
18
|
// When a form has a result, the current form object is null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAutosubmit.js","names":["loadModularUI","HTTP_METHODS","FormModel","autosubmitFormObject","form","attribute","forceUpdate","allObjects","length","currentFormObject","hasAttributeByKey","key","setPreviousObject","isChanged","connectKey","selfhref","method","POST","data","formdata","updateHandler","newModel","clonedModel","clone","update"],"sources":["../../../src/redux/actions/FormAutosubmit.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/ModularUIActions\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { ModularUIModel, AttributeType } from \"../../models/types\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const autosubmitFormObject = (\n form: FormModel,\n attribute: AttributeType,\n forceUpdate: boolean = false,\n):
|
|
1
|
+
{"version":3,"file":"FormAutosubmit.js","names":["loadModularUI","HTTP_METHODS","FormModel","autosubmitFormObject","form","attribute","forceUpdate","allObjects","length","currentFormObject","hasAttributeByKey","key","setPreviousObject","isChanged","connectKey","selfhref","method","POST","data","formdata","updateHandler","newModel","clonedModel","clone","update"],"sources":["../../../src/redux/actions/FormAutosubmit.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/ModularUIActions\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { ModularUIModel, AttributeType } from \"../../models/types\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const autosubmitFormObject = (\n form: FormModel,\n attribute: AttributeType,\n forceUpdate: boolean = false,\n): ThunkAction<> | null => {\n // As long as we have form objects,\n // and the current attribute is not found in the current form object, go back.\n // When a form has a result, the current form object is null\n while (\n form.allObjects.length > 0 &&\n (!form.currentFormObject ||\n !form.currentFormObject.hasAttributeByKey(attribute.key))\n ) {\n form.setPreviousObject();\n }\n\n if (form.isChanged() || forceUpdate) {\n return loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateHandler: (newModel: ModularUIModel): ModularUIModel => {\n if (newModel instanceof FormModel) {\n const clonedModel: FormModel = form.clone();\n clonedModel.update(newModel);\n return clonedModel;\n }\n return newModel;\n },\n });\n }\n\n return null;\n};\n"],"mappings":"AACA,SAASA,aAAa,QAAQ,gCAAgC;AAC9D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,OAAOC,SAAS,MAAM,6BAA6B;AAKnD;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAClCC,IAAe,EACfC,SAAwB,EACxBC,WAAoB,GAAG,KAAK,KACH;EACzB;EACA;EACA;EACA,OACEF,IAAI,CAACG,UAAU,CAACC,MAAM,GAAG,CAAC,KACzB,CAACJ,IAAI,CAACK,iBAAiB,IACtB,CAACL,IAAI,CAACK,iBAAiB,CAACC,iBAAiB,CAACL,SAAS,CAACM,GAAG,CAAC,CAAC,EAC3D;IACAP,IAAI,CAACQ,iBAAiB,CAAC,CAAC;EAC1B;EAEA,IAAIR,IAAI,CAACS,SAAS,CAAC,CAAC,IAAIP,WAAW,EAAE;IACnC,OAAON,aAAa,CAACI,IAAI,CAACU,UAAU,EAAEV,IAAI,CAACW,QAAQ,EAAE;MACnDC,MAAM,EAAEf,YAAY,CAACgB,IAAI;MACzBC,IAAI,EAAEd,IAAI,CAACe,QAAQ;MACnBC,aAAa,EAAGC,QAAwB,IAAqB;QAC3D,IAAIA,QAAQ,YAAYnB,SAAS,EAAE;UACjC,MAAMoB,WAAsB,GAAGlB,IAAI,CAACmB,KAAK,CAAC,CAAC;UAC3CD,WAAW,CAACE,MAAM,CAACH,QAAQ,CAAC;UAC5B,OAAOC,WAAW;QACpB;QACA,OAAOD,QAAQ;MACjB;IACF,CAAC,CAAC;EACJ;EAEA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ import type { ThunkAction } from "../types";
|
|
|
12
12
|
export const autoupdateFormObject = (
|
|
13
13
|
form: FormModel,
|
|
14
14
|
attribute: AttributeType,
|
|
15
|
-
):
|
|
15
|
+
): ThunkAction<> | null => {
|
|
16
16
|
// As long as we have form objects,
|
|
17
17
|
// and the current attribute is not found in the current form object, go back.
|
|
18
18
|
// When a form has a result, the current form object is null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAutoupdate.js","names":["loadModularUI","HTTP_METHODS","FormModel","autoupdateFormObject","form","attribute","allObjects","length","currentFormObject","hasAttributeByKey","key","setPreviousObject","isChanged","connectKey","selfhref","setParameter","method","POST","data","formdata","updateHandler","newModel","clonedModel","clone","updateCurrentFormObject"],"sources":["../../../src/redux/actions/FormAutoupdate.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/ModularUIActions\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { AttributeType, ModularUIModel } from \"../../models/types\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const autoupdateFormObject = (\n form: FormModel,\n attribute: AttributeType,\n):
|
|
1
|
+
{"version":3,"file":"FormAutoupdate.js","names":["loadModularUI","HTTP_METHODS","FormModel","autoupdateFormObject","form","attribute","allObjects","length","currentFormObject","hasAttributeByKey","key","setPreviousObject","isChanged","connectKey","selfhref","setParameter","method","POST","data","formdata","updateHandler","newModel","clonedModel","clone","updateCurrentFormObject"],"sources":["../../../src/redux/actions/FormAutoupdate.js"],"sourcesContent":["// @flow\nimport { loadModularUI } from \"../_modularui/ModularUIActions\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { AttributeType, ModularUIModel } from \"../../models/types\";\nimport type { ThunkAction } from \"../types\";\n\n/**\n */\nexport const autoupdateFormObject = (\n form: FormModel,\n attribute: AttributeType,\n): ThunkAction<> | null => {\n // As long as we have form objects,\n // and the current attribute is not found in the current form object, go back.\n // When a form has a result, the current form object is null\n while (\n form.allObjects.length > 0 &&\n (!form.currentFormObject ||\n !form.currentFormObject.hasAttributeByKey(attribute.key))\n ) {\n form.setPreviousObject();\n }\n\n if (form.isChanged()) {\n return loadModularUI(\n form.connectKey,\n form.selfhref.setParameter(\"commit\", \"false\"),\n {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateHandler: (newModel: ModularUIModel): ModularUIModel => {\n if (newModel instanceof FormModel) {\n const clonedModel: FormModel = form.clone();\n clonedModel.updateCurrentFormObject(newModel);\n return clonedModel;\n }\n return newModel;\n },\n },\n );\n }\n\n return null;\n};\n"],"mappings":"AACA,SAASA,aAAa,QAAQ,gCAAgC;AAC9D,SAASC,YAAY,QAAQ,2BAA2B;AAExD,OAAOC,SAAS,MAAM,6BAA6B;AAKnD;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAClCC,IAAe,EACfC,SAAwB,KACC;EACzB;EACA;EACA;EACA,OACED,IAAI,CAACE,UAAU,CAACC,MAAM,GAAG,CAAC,KACzB,CAACH,IAAI,CAACI,iBAAiB,IACtB,CAACJ,IAAI,CAACI,iBAAiB,CAACC,iBAAiB,CAACJ,SAAS,CAACK,GAAG,CAAC,CAAC,EAC3D;IACAN,IAAI,CAACO,iBAAiB,CAAC,CAAC;EAC1B;EAEA,IAAIP,IAAI,CAACQ,SAAS,CAAC,CAAC,EAAE;IACpB,OAAOZ,aAAa,CAClBI,IAAI,CAACS,UAAU,EACfT,IAAI,CAACU,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC7C;MACEC,MAAM,EAAEf,YAAY,CAACgB,IAAI;MACzBC,IAAI,EAAEd,IAAI,CAACe,QAAQ;MACnBC,aAAa,EAAGC,QAAwB,IAAqB;QAC3D,IAAIA,QAAQ,YAAYnB,SAAS,EAAE;UACjC,MAAMoB,WAAsB,GAAGlB,IAAI,CAACmB,KAAK,CAAC,CAAC;UAC3CD,WAAW,CAACE,uBAAuB,CAACH,QAAQ,CAAC;UAC7C,OAAOC,WAAW;QACpB;QACA,OAAOD,QAAQ;MACjB;IACF,CACF,CAAC;EACH;EAEA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormValidations.js","names":["debounce","updateForm","ModularUIRequest","HTTP_METHODS","VALIDATE_DEBOUNCE_TIMEOUT","FormModel","updateValidations","form","formWithValidations","dispatch","getState","currentForm","modularui","connectKey","validatedForm","model","clone","data","debouncedValidateFormObject","selfhref","setParameter","method","POST","validationData","childmodels","isValidationRequest","locale","fetch","then","leading","trailing","validateFormObject"],"sources":["../../../src/redux/actions/FormValidations.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport { updateForm } from \"../_modularui/ModularUIActions\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n} from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\nimport type { ModularUIModel } from \"../../models\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateValidations =\n (form: FormModel, formWithValidations: ModularUIModel) =>\n (dispatch: Dispatch, getState: GetState) => {\n const currentForm = getState().modularui[form.connectKey];\n\n if (currentForm) {\n const validatedForm = currentForm.model.clone();\n if (validatedForm instanceof FormModel) {\n validatedForm.updateValidations(formWithValidations.data);\n }\n\n dispatch(updateForm(validatedForm));\n }\n };\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedValidateFormObject = debounce<\n (dispatch: Dispatch, form: FormModel) => void,\n>(\n (dispatch, form: FormModel) => {\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"false\"), {\n method: HTTP_METHODS.POST,\n data: form.validationData,\n childmodels: false,\n isValidationRequest: true,\n locale: form.locale,\n })\n .fetch()\n .then((formWithValidations) =>\n dispatch(updateValidations(form, formWithValidations)),\n );\n },\n VALIDATE_DEBOUNCE_TIMEOUT,\n {\n leading: true,\n trailing: true,\n },\n);\n\n/**\n */\nexport const validateFormObject =\n (form: FormModel): ThunkAction =>\n (dispatch) =>\n debouncedValidateFormObject(dispatch, form);\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,iBAAiB;AAEtC,SAASC,UAAU,QAAQ,gCAAgC;AAE3D,OAAOC,gBAAgB,MAAM,kCAAkC;AAE/D,SACEC,YAAY,EACZC,yBAAyB,QACpB,2BAA2B;AAElC,OAAOC,SAAS,MAAM,6BAA6B;AAKnD;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GACrBA,CAACC,IAAe,EAAEC,mBAAmC,KACrD,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC1C,MAAMC,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAACE,SAAS,CAACL,IAAI,CAACM,UAAU,CAAC;EAEzD,IAAIF,WAAW,EAAE;IACf,MAAMG,aAAa,GAAGH,WAAW,CAACI,KAAK,CAACC,KAAK,CAAC,CAAC;IAC/C,IAAIF,aAAa,YAAYT,SAAS,EAAE;MACtCS,aAAa,CAACR,iBAAiB,CAACE,mBAAmB,CAACS,IAAI,CAAC;IAC3D;IAEAR,QAAQ,CAACR,UAAU,CAACa,aAAa,CAAC,CAAC;EACrC;AACF,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,2BAA2B,GAAGlB,QAAQ,CAG1C,CAACS,QAAQ,EAAEF,IAAe,KAAK;EAC7B,IAAIL,gBAAgB,CAACK,IAAI,CAACY,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;IAClEC,MAAM,EAAElB,YAAY,CAACmB,IAAI;IACzBL,IAAI,EAAEV,IAAI,CAACgB,cAAc;IACzBC,WAAW,EAAE,KAAK;IAClBC,mBAAmB,EAAE,IAAI;IACzBC,MAAM,EAAEnB,IAAI,CAACmB;EACf,CAAC,CAAC,CACCC,KAAK,CAAC,CAAC,CACPC,IAAI,CAAEpB,mBAAmB,IACxBC,QAAQ,CAACH,iBAAiB,CAACC,IAAI,EAAEC,mBAAmB,CAAC,CACvD,CAAC;AACL,CAAC,EACDJ,yBAAyB,EACzB;EACEyB,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CACF,CAAC;;AAED;AACA;AACA,OAAO,MAAMC,kBAAkB,GAC5BxB,IAAe,IACfE,QAAQ,IACPS,2BAA2B,CAACT,QAAQ,EAAEF,IAAI,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormValidations.js","names":["debounce","updateForm","ModularUIRequest","HTTP_METHODS","VALIDATE_DEBOUNCE_TIMEOUT","FormModel","updateValidations","form","formWithValidations","dispatch","getState","currentForm","modularui","connectKey","validatedForm","model","clone","data","debouncedValidateFormObject","selfhref","setParameter","method","POST","validationData","childmodels","isValidationRequest","locale","fetch","then","leading","trailing","validateFormObject"],"sources":["../../../src/redux/actions/FormValidations.js"],"sourcesContent":["// @flow\nimport debounce from \"lodash/debounce\";\n\nimport { updateForm } from \"../_modularui/ModularUIActions\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport {\n HTTP_METHODS,\n VALIDATE_DEBOUNCE_TIMEOUT,\n} from \"../../constants/Constants\";\n\nimport FormModel from \"../../models/form/FormModel\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\nimport type { ModularUIModel } from \"../../models\";\n\n/**\n * Update validations of the form currently in the reducer\n * because of the debounce timeout there might have been an update on the form during validation\n */\nconst updateValidations =\n (form: FormModel, formWithValidations: ModularUIModel) =>\n (dispatch: Dispatch, getState: GetState) => {\n const currentForm = getState().modularui[form.connectKey];\n\n if (currentForm) {\n const validatedForm = currentForm.model.clone();\n if (validatedForm instanceof FormModel) {\n validatedForm.updateValidations(formWithValidations.data);\n }\n\n dispatch(updateForm(validatedForm));\n }\n };\n\n/**\n * Validates form objects debounced to prevent overloading the (form) service\n * When a form with new errors (or complete) arrives, we send the validations\n * to the current form model where the errors are processed\n * A new form with the new constraints is send to the store\n */\nconst debouncedValidateFormObject = debounce<\n (dispatch: Dispatch, form: FormModel) => void,\n>(\n (dispatch, form: FormModel) => {\n new ModularUIRequest(form.selfhref.setParameter(\"commit\", \"false\"), {\n method: HTTP_METHODS.POST,\n data: form.validationData,\n childmodels: false,\n isValidationRequest: true,\n locale: form.locale,\n })\n .fetch()\n .then((formWithValidations) =>\n dispatch(updateValidations(form, formWithValidations)),\n );\n },\n VALIDATE_DEBOUNCE_TIMEOUT,\n {\n leading: true,\n trailing: true,\n },\n);\n\n/**\n */\nexport const validateFormObject =\n (form: FormModel): ThunkAction<> =>\n (dispatch) =>\n debouncedValidateFormObject(dispatch, form);\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,iBAAiB;AAEtC,SAASC,UAAU,QAAQ,gCAAgC;AAE3D,OAAOC,gBAAgB,MAAM,kCAAkC;AAE/D,SACEC,YAAY,EACZC,yBAAyB,QACpB,2BAA2B;AAElC,OAAOC,SAAS,MAAM,6BAA6B;AAKnD;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GACrBA,CAACC,IAAe,EAAEC,mBAAmC,KACrD,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC1C,MAAMC,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAACE,SAAS,CAACL,IAAI,CAACM,UAAU,CAAC;EAEzD,IAAIF,WAAW,EAAE;IACf,MAAMG,aAAa,GAAGH,WAAW,CAACI,KAAK,CAACC,KAAK,CAAC,CAAC;IAC/C,IAAIF,aAAa,YAAYT,SAAS,EAAE;MACtCS,aAAa,CAACR,iBAAiB,CAACE,mBAAmB,CAACS,IAAI,CAAC;IAC3D;IAEAR,QAAQ,CAACR,UAAU,CAACa,aAAa,CAAC,CAAC;EACrC;AACF,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,2BAA2B,GAAGlB,QAAQ,CAG1C,CAACS,QAAQ,EAAEF,IAAe,KAAK;EAC7B,IAAIL,gBAAgB,CAACK,IAAI,CAACY,QAAQ,CAACC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;IAClEC,MAAM,EAAElB,YAAY,CAACmB,IAAI;IACzBL,IAAI,EAAEV,IAAI,CAACgB,cAAc;IACzBC,WAAW,EAAE,KAAK;IAClBC,mBAAmB,EAAE,IAAI;IACzBC,MAAM,EAAEnB,IAAI,CAACmB;EACf,CAAC,CAAC,CACCC,KAAK,CAAC,CAAC,CACPC,IAAI,CAAEpB,mBAAmB,IACxBC,QAAQ,CAACH,iBAAiB,CAACC,IAAI,EAAEC,mBAAmB,CAAC,CACvD,CAAC;AACL,CAAC,EACDJ,yBAAyB,EACzB;EACEyB,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CACF,CAAC;;AAED;AACA;AACA,OAAO,MAAMC,kBAAkB,GAC5BxB,IAAe,IACfE,QAAQ,IACPS,2BAA2B,CAACT,QAAQ,EAAEF,IAAI,CAAC","ignoreList":[]}
|
|
@@ -25,7 +25,7 @@ export const showNotification =
|
|
|
25
25
|
message: MessageObject,
|
|
26
26
|
error?: ?ErrorResponse,
|
|
27
27
|
timeout?: ?number,
|
|
28
|
-
): ThunkAction =>
|
|
28
|
+
): ThunkAction<> =>
|
|
29
29
|
(dispatch) => {
|
|
30
30
|
dispatch({
|
|
31
31
|
type: "SHOW_NOTIFICATION",
|
|
@@ -65,7 +65,7 @@ const getNotificationMessageId = (form: FormModel) => {
|
|
|
65
65
|
* Show form notification
|
|
66
66
|
*/
|
|
67
67
|
export const showFormNotification =
|
|
68
|
-
(form: FormModel): ThunkAction =>
|
|
68
|
+
(form: FormModel): ThunkAction<> =>
|
|
69
69
|
(dispatch) => {
|
|
70
70
|
dispatch(startProgress());
|
|
71
71
|
|
|
@@ -86,7 +86,7 @@ export const showFormNotification =
|
|
|
86
86
|
* Show error notification
|
|
87
87
|
*/
|
|
88
88
|
export const showXHRErrorNotification =
|
|
89
|
-
(error: ErrorResponse): ThunkAction =>
|
|
89
|
+
(error: ErrorResponse): ThunkAction<> =>
|
|
90
90
|
(dispatch) =>
|
|
91
91
|
dispatch(
|
|
92
92
|
showNotification(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notification.js","names":["startProgress","finishProgress","getSetting","NOTIFICATION_TYPES","dismissNotification","type","showNotification","message","error","timeout","dispatch","payload","setTimeout","getNotificationMessageId","form","actiontype","showFormNotification","SUCCESS","id","showXHRErrorNotification","ERROR","defaultMessage","parameters","properties"],"sources":["../../../src/redux/actions/Notification.js"],"sourcesContent":["// @flow\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { NOTIFICATION_TYPES } from \"../../constants/Constants\";\n\nimport type { DismissNotificationAction, ThunkAction } from \"../types\";\nimport type { MessageObject } from \"../../i18n/types\";\nimport type ErrorResponse from \"../../models/error/ErrorResponse\";\nimport type FormModel from \"../../models/form/FormModel\";\n\n/**\n * Dismiss notification message\n */\nexport const dismissNotification = (): DismissNotificationAction => ({\n type: \"DISMISS_NOTIFICATION\",\n});\n\n/**\n */\nexport const showNotification =\n (\n type: $Keys<typeof NOTIFICATION_TYPES>,\n message: MessageObject,\n error?: ?ErrorResponse,\n timeout?: ?number,\n ): ThunkAction =>\n (dispatch) => {\n dispatch({\n type: \"SHOW_NOTIFICATION\",\n payload: {\n type,\n message,\n error,\n },\n });\n\n if (timeout) {\n setTimeout(() => {\n dispatch(dismissNotification());\n }, timeout);\n }\n };\n\n/**\n */\nconst getNotificationMessageId = (form: FormModel) => {\n if (form.actiontype === \"create\") {\n return \"Notification.Msg.Create\";\n }\n\n if (form.actiontype === \"update\") {\n return \"Notification.Msg.Update\";\n }\n\n if (form.actiontype === \"delete\") {\n return \"Notification.Msg.Delete\";\n }\n\n return \"Notification.Msg.Generic\";\n};\n\n/**\n * Show form notification\n */\nexport const showFormNotification =\n (form: FormModel): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n dispatch(\n showNotification(NOTIFICATION_TYPES.SUCCESS, {\n id: getNotificationMessageId(form),\n }),\n );\n\n setTimeout(() => {\n dispatch(dismissNotification());\n }, getSetting(\"HIDE_NOTIFICATION_TIMEOUT\"));\n\n return dispatch(finishProgress());\n };\n\n/**\n * Show error notification\n */\nexport const showXHRErrorNotification =\n (error: ErrorResponse): ThunkAction =>\n (dispatch) =>\n dispatch(\n showNotification(\n NOTIFICATION_TYPES.ERROR,\n {\n id: error.id,\n defaultMessage: error.message,\n parameters: error.properties,\n },\n error,\n ),\n );\n"],"mappings":"AACA,SAASA,aAAa,EAAEC,cAAc,QAAQ,qBAAqB;AAEnE,SAASC,UAAU,QAAQ,0BAA0B;AAErD,SAASC,kBAAkB,QAAQ,2BAA2B;AAO9D;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,MAAkC;EACnEC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA,OAAO,MAAMC,gBAAgB,GAC3BA,CACED,IAAsC,EACtCE,OAAsB,EACtBC,KAAsB,EACtBC,OAAiB,KAElBC,QAAQ,IAAK;EACZA,QAAQ,CAAC;IACPL,IAAI,EAAE,mBAAmB;IACzBM,OAAO,EAAE;MACPN,IAAI;MACJE,OAAO;MACPC;IACF;EACF,CAAC,CAAC;EAEF,IAAIC,OAAO,EAAE;IACXG,UAAU,CAAC,MAAM;MACfF,QAAQ,CAACN,mBAAmB,CAAC,CAAC,CAAC;IACjC,CAAC,EAAEK,OAAO,CAAC;EACb;AACF,CAAC;;AAEH;AACA;AACA,MAAMI,wBAAwB,GAAIC,IAAe,IAAK;EACpD,IAAIA,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAChC,OAAO,yBAAyB;EAClC;EAEA,IAAID,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAChC,OAAO,yBAAyB;EAClC;EAEA,IAAID,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAChC,OAAO,yBAAyB;EAClC;EAEA,OAAO,0BAA0B;AACnC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAC9BF,IAAe,IACfJ,QAAQ,IAAK;EACZA,QAAQ,CAACV,aAAa,CAAC,CAAC,CAAC;EAEzBU,QAAQ,CACNJ,gBAAgB,CAACH,kBAAkB,CAACc,OAAO,EAAE;IAC3CC,EAAE,EAAEL,wBAAwB,CAACC,IAAI;EACnC,CAAC,CACH,CAAC;EAEDF,UAAU,CAAC,MAAM;IACfF,QAAQ,CAACN,mBAAmB,CAAC,CAAC,CAAC;EACjC,CAAC,EAAEF,UAAU,CAAC,2BAA2B,CAAC,CAAC;EAE3C,OAAOQ,QAAQ,CAACT,cAAc,CAAC,CAAC,CAAC;AACnC,CAAC;;AAEH;AACA;AACA;AACA,OAAO,MAAMkB,wBAAwB,GAClCX,KAAoB,IACpBE,QAAQ,IACPA,QAAQ,CACNJ,gBAAgB,CACdH,kBAAkB,CAACiB,KAAK,EACxB;EACEF,EAAE,EAAEV,KAAK,CAACU,EAAE;EACZG,cAAc,EAAEb,KAAK,CAACD,OAAO;EAC7Be,UAAU,EAAEd,KAAK,CAACe;AACpB,CAAC,EACDf,KACF,CACF,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Notification.js","names":["startProgress","finishProgress","getSetting","NOTIFICATION_TYPES","dismissNotification","type","showNotification","message","error","timeout","dispatch","payload","setTimeout","getNotificationMessageId","form","actiontype","showFormNotification","SUCCESS","id","showXHRErrorNotification","ERROR","defaultMessage","parameters","properties"],"sources":["../../../src/redux/actions/Notification.js"],"sourcesContent":["// @flow\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { NOTIFICATION_TYPES } from \"../../constants/Constants\";\n\nimport type { DismissNotificationAction, ThunkAction } from \"../types\";\nimport type { MessageObject } from \"../../i18n/types\";\nimport type ErrorResponse from \"../../models/error/ErrorResponse\";\nimport type FormModel from \"../../models/form/FormModel\";\n\n/**\n * Dismiss notification message\n */\nexport const dismissNotification = (): DismissNotificationAction => ({\n type: \"DISMISS_NOTIFICATION\",\n});\n\n/**\n */\nexport const showNotification =\n (\n type: $Keys<typeof NOTIFICATION_TYPES>,\n message: MessageObject,\n error?: ?ErrorResponse,\n timeout?: ?number,\n ): ThunkAction<> =>\n (dispatch) => {\n dispatch({\n type: \"SHOW_NOTIFICATION\",\n payload: {\n type,\n message,\n error,\n },\n });\n\n if (timeout) {\n setTimeout(() => {\n dispatch(dismissNotification());\n }, timeout);\n }\n };\n\n/**\n */\nconst getNotificationMessageId = (form: FormModel) => {\n if (form.actiontype === \"create\") {\n return \"Notification.Msg.Create\";\n }\n\n if (form.actiontype === \"update\") {\n return \"Notification.Msg.Update\";\n }\n\n if (form.actiontype === \"delete\") {\n return \"Notification.Msg.Delete\";\n }\n\n return \"Notification.Msg.Generic\";\n};\n\n/**\n * Show form notification\n */\nexport const showFormNotification =\n (form: FormModel): ThunkAction<> =>\n (dispatch) => {\n dispatch(startProgress());\n\n dispatch(\n showNotification(NOTIFICATION_TYPES.SUCCESS, {\n id: getNotificationMessageId(form),\n }),\n );\n\n setTimeout(() => {\n dispatch(dismissNotification());\n }, getSetting(\"HIDE_NOTIFICATION_TIMEOUT\"));\n\n return dispatch(finishProgress());\n };\n\n/**\n * Show error notification\n */\nexport const showXHRErrorNotification =\n (error: ErrorResponse): ThunkAction<> =>\n (dispatch) =>\n dispatch(\n showNotification(\n NOTIFICATION_TYPES.ERROR,\n {\n id: error.id,\n defaultMessage: error.message,\n parameters: error.properties,\n },\n error,\n ),\n );\n"],"mappings":"AACA,SAASA,aAAa,EAAEC,cAAc,QAAQ,qBAAqB;AAEnE,SAASC,UAAU,QAAQ,0BAA0B;AAErD,SAASC,kBAAkB,QAAQ,2BAA2B;AAO9D;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,MAAkC;EACnEC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA,OAAO,MAAMC,gBAAgB,GAC3BA,CACED,IAAsC,EACtCE,OAAsB,EACtBC,KAAsB,EACtBC,OAAiB,KAElBC,QAAQ,IAAK;EACZA,QAAQ,CAAC;IACPL,IAAI,EAAE,mBAAmB;IACzBM,OAAO,EAAE;MACPN,IAAI;MACJE,OAAO;MACPC;IACF;EACF,CAAC,CAAC;EAEF,IAAIC,OAAO,EAAE;IACXG,UAAU,CAAC,MAAM;MACfF,QAAQ,CAACN,mBAAmB,CAAC,CAAC,CAAC;IACjC,CAAC,EAAEK,OAAO,CAAC;EACb;AACF,CAAC;;AAEH;AACA;AACA,MAAMI,wBAAwB,GAAIC,IAAe,IAAK;EACpD,IAAIA,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAChC,OAAO,yBAAyB;EAClC;EAEA,IAAID,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAChC,OAAO,yBAAyB;EAClC;EAEA,IAAID,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAChC,OAAO,yBAAyB;EAClC;EAEA,OAAO,0BAA0B;AACnC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAC9BF,IAAe,IACfJ,QAAQ,IAAK;EACZA,QAAQ,CAACV,aAAa,CAAC,CAAC,CAAC;EAEzBU,QAAQ,CACNJ,gBAAgB,CAACH,kBAAkB,CAACc,OAAO,EAAE;IAC3CC,EAAE,EAAEL,wBAAwB,CAACC,IAAI;EACnC,CAAC,CACH,CAAC;EAEDF,UAAU,CAAC,MAAM;IACfF,QAAQ,CAACN,mBAAmB,CAAC,CAAC,CAAC;EACjC,CAAC,EAAEF,UAAU,CAAC,2BAA2B,CAAC,CAAC;EAE3C,OAAOQ,QAAQ,CAACT,cAAc,CAAC,CAAC,CAAC;AACnC,CAAC;;AAEH;AACA;AACA;AACA,OAAO,MAAMkB,wBAAwB,GAClCX,KAAoB,IACpBE,QAAQ,IACPA,QAAQ,CACNJ,gBAAgB,CACdH,kBAAkB,CAACiB,KAAK,EACxB;EACEF,EAAE,EAAEV,KAAK,CAACU,EAAE;EACZG,cAAc,EAAEb,KAAK,CAACD,OAAO;EAC7Be,UAAU,EAAEd,KAAK,CAACe;AACpB,CAAC,EACDf,KACF,CACF,CAAC","ignoreList":[]}
|
|
@@ -68,9 +68,9 @@ export const setThemePreference = configTheme => {
|
|
|
68
68
|
*/
|
|
69
69
|
export const setAllContentInDataSetting = state => {
|
|
70
70
|
let allContentInDataSetting = false;
|
|
71
|
-
if (typeof preferencesProvider
|
|
71
|
+
if (typeof preferencesProvider?.getModularUIContentInData === "function") {
|
|
72
72
|
allContentInDataSetting = preferencesProvider.getModularUIContentInData();
|
|
73
|
-
} else if (typeof state
|
|
73
|
+
} else if (typeof state?.preferences == "object") {
|
|
74
74
|
allContentInDataSetting = state.preferences[ALL_CONTENT_IN_DATA_SETTING];
|
|
75
75
|
}
|
|
76
76
|
setSetting(ALL_CONTENT_IN_DATA_SETTING, !!allContentInDataSetting);
|
|
@@ -82,9 +82,9 @@ export const setAllContentInDataSetting = state => {
|
|
|
82
82
|
*/
|
|
83
83
|
export const setDateTimeSettings = state => {
|
|
84
84
|
let isIncludeTimeOffsetInDateTimes = false;
|
|
85
|
-
if (typeof preferencesProvider
|
|
85
|
+
if (typeof preferencesProvider?.isIncludeTimeOffsetInDateTimes === "function") {
|
|
86
86
|
isIncludeTimeOffsetInDateTimes = preferencesProvider.isIncludeTimeOffsetInDateTimes();
|
|
87
|
-
} else if (typeof state
|
|
87
|
+
} else if (typeof state?.preferences === "object") {
|
|
88
88
|
isIncludeTimeOffsetInDateTimes = state.preferences[INCLUDE_TIME_OFFSET];
|
|
89
89
|
}
|
|
90
90
|
setSetting(INCLUDE_TIME_OFFSET, !!isIncludeTimeOffsetInDateTimes);
|
|
@@ -27,7 +27,7 @@ const getServerPreferenceValue = (
|
|
|
27
27
|
preferenceName: string,
|
|
28
28
|
defaultValue: PreferenceValue = null,
|
|
29
29
|
type?: string,
|
|
30
|
-
) => {
|
|
30
|
+
): PreferenceValue => {
|
|
31
31
|
let value: PreferenceValue = null;
|
|
32
32
|
if (typeof preferencesProvider !== "undefined") {
|
|
33
33
|
value = preferencesProvider.getPreferenceByName(preferenceName);
|
|
@@ -41,7 +41,7 @@ const getServerPreferenceValue = (
|
|
|
41
41
|
value = value.split(",").map((val) => val.trim());
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
return value;
|
|
44
|
+
return (value: PreferenceValue);
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -104,12 +104,9 @@ export const setAllContentInDataSetting = (
|
|
|
104
104
|
): SetPreferenceAction => {
|
|
105
105
|
let allContentInDataSetting: PreferenceValue = false;
|
|
106
106
|
|
|
107
|
-
if (
|
|
108
|
-
typeof preferencesProvider !== "undefined" &&
|
|
109
|
-
typeof preferencesProvider.getModularUIContentInData !== "undefined"
|
|
110
|
-
) {
|
|
107
|
+
if (typeof preferencesProvider?.getModularUIContentInData === "function") {
|
|
111
108
|
allContentInDataSetting = preferencesProvider.getModularUIContentInData();
|
|
112
|
-
} else if (typeof state
|
|
109
|
+
} else if (typeof state?.preferences == "object") {
|
|
113
110
|
allContentInDataSetting = state.preferences[ALL_CONTENT_IN_DATA_SETTING];
|
|
114
111
|
}
|
|
115
112
|
|
|
@@ -125,12 +122,11 @@ export const setDateTimeSettings = (
|
|
|
125
122
|
): SetPreferenceAction => {
|
|
126
123
|
let isIncludeTimeOffsetInDateTimes: PreferenceValue = false;
|
|
127
124
|
if (
|
|
128
|
-
typeof preferencesProvider
|
|
129
|
-
typeof preferencesProvider.isIncludeTimeOffsetInDateTimes !== "undefined"
|
|
125
|
+
typeof preferencesProvider?.isIncludeTimeOffsetInDateTimes === "function"
|
|
130
126
|
) {
|
|
131
127
|
isIncludeTimeOffsetInDateTimes =
|
|
132
128
|
preferencesProvider.isIncludeTimeOffsetInDateTimes();
|
|
133
|
-
} else if (typeof state
|
|
129
|
+
} else if (typeof state?.preferences === "object") {
|
|
134
130
|
isIncludeTimeOffsetInDateTimes = state.preferences[INCLUDE_TIME_OFFSET];
|
|
135
131
|
}
|
|
136
132
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Preferences.js","names":["isPlainObject","JsonParseException","setSetting","setSettings","ALL_CONTENT_IN_DATA_SETTING","INCLUDE_TIME_OFFSET","LOGIN_TYPE","LOGIN_PASSWORD_SETTING","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGOUT_PATH_SETTING","getServerPreferenceValue","preferenceName","defaultValue","type","value","preferencesProvider","getPreferenceByName","_includesInstanceProperty","call","_context","_mapInstanceProperty","split","val","_trimInstanceProperty","setServerPreference","propertyName","setPreference","propertyValue","payload","setPreferences","preferences","setThemePreference","configTheme","themeData","JSON","parse","error","settings","setAllContentInDataSetting","state","allContentInDataSetting","getModularUIContentInData","setDateTimeSettings","isIncludeTimeOffsetInDateTimes","setLoginPreferences","loginSettings"],"sources":["../../../src/redux/actions/Preferences.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../../utils/helpers/objects\";\n\nimport { JsonParseException } from \"../../exceptions\";\nimport { setSetting, setSettings } from \"../../constants/Settings\";\n\nimport type {\n PreferenceValue,\n ReduxState,\n SetPreferenceAction,\n SetPreferencesAction,\n} from \"../types\";\n\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n INCLUDE_TIME_OFFSET,\n LOGIN_TYPE,\n LOGIN_PASSWORD_SETTING,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGOUT_PATH_SETTING,\n} from \"../../constants\";\n\n/**\n */\nconst getServerPreferenceValue = (\n preferenceName: string,\n defaultValue: PreferenceValue = null,\n type?: string,\n) => {\n let value: PreferenceValue = null;\n if (typeof preferencesProvider !== \"undefined\") {\n value = preferencesProvider.getPreferenceByName(preferenceName);\n }\n\n if (value == null) {\n value = defaultValue;\n }\n\n if (typeof value === \"string\" && type !== \"string\" && value.includes(\",\")) {\n value = value.split(\",\").map((val) => val.trim());\n }\n\n return value;\n};\n\n/**\n */\nexport const setServerPreference = (\n propertyName: string,\n defaultValue: PreferenceValue = null,\n type?: string,\n): SetPreferenceAction => {\n const value = getServerPreferenceValue(propertyName, defaultValue, type);\n return setPreference(propertyName, value);\n};\n\n/**\n */\nexport const setPreference = (\n propertyName: string,\n propertyValue: PreferenceValue = null,\n): SetPreferenceAction => ({\n type: \"SET_PREFERENCE\",\n payload: {\n [propertyName]: propertyValue,\n },\n});\n\n/**\n */\nexport const setPreferences = (preferences: Object): SetPreferencesAction => ({\n type: \"SET_PREFERENCES\",\n payload: {\n ...preferences,\n },\n});\n\n/**\n */\nexport const setThemePreference = (\n configTheme: string,\n): SetPreferenceAction => {\n let themeData;\n\n try {\n themeData = configTheme ? JSON.parse(configTheme) : null;\n } catch (error) {\n throw new JsonParseException(`Theme file contains invalid JSON: ${error}`);\n }\n\n if (themeData && isPlainObject(themeData)) {\n setSettings(themeData.settings);\n }\n\n return setPreference(\"theme\", themeData);\n};\n\n/**\n * Make modular-ui-content-in-data preference available client side\n */\nexport const setAllContentInDataSetting = (\n state?: ReduxState,\n): SetPreferenceAction => {\n let allContentInDataSetting: PreferenceValue = false;\n\n if (
|
|
1
|
+
{"version":3,"file":"Preferences.js","names":["isPlainObject","JsonParseException","setSetting","setSettings","ALL_CONTENT_IN_DATA_SETTING","INCLUDE_TIME_OFFSET","LOGIN_TYPE","LOGIN_PASSWORD_SETTING","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGOUT_PATH_SETTING","getServerPreferenceValue","preferenceName","defaultValue","type","value","preferencesProvider","getPreferenceByName","_includesInstanceProperty","call","_context","_mapInstanceProperty","split","val","_trimInstanceProperty","setServerPreference","propertyName","setPreference","propertyValue","payload","setPreferences","preferences","setThemePreference","configTheme","themeData","JSON","parse","error","settings","setAllContentInDataSetting","state","allContentInDataSetting","getModularUIContentInData","setDateTimeSettings","isIncludeTimeOffsetInDateTimes","setLoginPreferences","loginSettings"],"sources":["../../../src/redux/actions/Preferences.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../../utils/helpers/objects\";\n\nimport { JsonParseException } from \"../../exceptions\";\nimport { setSetting, setSettings } from \"../../constants/Settings\";\n\nimport type {\n PreferenceValue,\n ReduxState,\n SetPreferenceAction,\n SetPreferencesAction,\n} from \"../types\";\n\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n INCLUDE_TIME_OFFSET,\n LOGIN_TYPE,\n LOGIN_PASSWORD_SETTING,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGOUT_PATH_SETTING,\n} from \"../../constants\";\n\n/**\n */\nconst getServerPreferenceValue = (\n preferenceName: string,\n defaultValue: PreferenceValue = null,\n type?: string,\n): PreferenceValue => {\n let value: PreferenceValue = null;\n if (typeof preferencesProvider !== \"undefined\") {\n value = preferencesProvider.getPreferenceByName(preferenceName);\n }\n\n if (value == null) {\n value = defaultValue;\n }\n\n if (typeof value === \"string\" && type !== \"string\" && value.includes(\",\")) {\n value = value.split(\",\").map((val) => val.trim());\n }\n\n return (value: PreferenceValue);\n};\n\n/**\n */\nexport const setServerPreference = (\n propertyName: string,\n defaultValue: PreferenceValue = null,\n type?: string,\n): SetPreferenceAction => {\n const value = getServerPreferenceValue(propertyName, defaultValue, type);\n return setPreference(propertyName, value);\n};\n\n/**\n */\nexport const setPreference = (\n propertyName: string,\n propertyValue: PreferenceValue = null,\n): SetPreferenceAction => ({\n type: \"SET_PREFERENCE\",\n payload: {\n [propertyName]: propertyValue,\n },\n});\n\n/**\n */\nexport const setPreferences = (preferences: Object): SetPreferencesAction => ({\n type: \"SET_PREFERENCES\",\n payload: {\n ...preferences,\n },\n});\n\n/**\n */\nexport const setThemePreference = (\n configTheme: string,\n): SetPreferenceAction => {\n let themeData;\n\n try {\n themeData = configTheme ? JSON.parse(configTheme) : null;\n } catch (error) {\n throw new JsonParseException(`Theme file contains invalid JSON: ${error}`);\n }\n\n if (themeData && isPlainObject(themeData)) {\n setSettings(themeData.settings);\n }\n\n return setPreference(\"theme\", themeData);\n};\n\n/**\n * Make modular-ui-content-in-data preference available client side\n */\nexport const setAllContentInDataSetting = (\n state?: ReduxState,\n): SetPreferenceAction => {\n let allContentInDataSetting: PreferenceValue = false;\n\n if (typeof preferencesProvider?.getModularUIContentInData === \"function\") {\n allContentInDataSetting = preferencesProvider.getModularUIContentInData();\n } else if (typeof state?.preferences == \"object\") {\n allContentInDataSetting = state.preferences[ALL_CONTENT_IN_DATA_SETTING];\n }\n\n setSetting(ALL_CONTENT_IN_DATA_SETTING, !!allContentInDataSetting);\n return setPreference(ALL_CONTENT_IN_DATA_SETTING, allContentInDataSetting);\n};\n\n/**\n * Retrieve settings for date time conversion\n */\nexport const setDateTimeSettings = (\n state?: ReduxState,\n): SetPreferenceAction => {\n let isIncludeTimeOffsetInDateTimes: PreferenceValue = false;\n if (\n typeof preferencesProvider?.isIncludeTimeOffsetInDateTimes === \"function\"\n ) {\n isIncludeTimeOffsetInDateTimes =\n preferencesProvider.isIncludeTimeOffsetInDateTimes();\n } else if (typeof state?.preferences === \"object\") {\n isIncludeTimeOffsetInDateTimes = state.preferences[INCLUDE_TIME_OFFSET];\n }\n\n setSetting(INCLUDE_TIME_OFFSET, !!isIncludeTimeOffsetInDateTimes);\n return setPreference(INCLUDE_TIME_OFFSET, isIncludeTimeOffsetInDateTimes);\n};\n\n/**\n * Retrieves login settings from runtime preferences and sets them as setting in the preference reducer\n */\nexport const setLoginPreferences = (\n state?: ReduxState,\n): SetPreferencesAction => {\n const loginSettings = {\n [LOGIN_TYPE]: getServerPreferenceValue(\n LOGIN_TYPE,\n state?.preferences[LOGIN_TYPE],\n ),\n [LOGIN_PATH_SETTING]: getServerPreferenceValue(\n LOGIN_PATH_SETTING,\n state?.preferences[LOGIN_PATH_SETTING] ??\n `/callback?client_name=FormClient`,\n ),\n [LOGIN_USERNAME_SETTING]: getServerPreferenceValue(\n LOGIN_USERNAME_SETTING,\n state?.preferences[LOGIN_USERNAME_SETTING] ?? \"j_username\",\n ),\n [LOGIN_PASSWORD_SETTING]: getServerPreferenceValue(\n LOGIN_PASSWORD_SETTING,\n state?.preferences[LOGIN_PASSWORD_SETTING] ?? \"j_password\",\n ),\n [LOGOUT_PATH_SETTING]: getServerPreferenceValue(\n LOGOUT_PATH_SETTING,\n state?.preferences[LOGOUT_PATH_SETTING] ?? `/logout`,\n ),\n };\n\n setSettings(loginSettings);\n return setPreferences(loginSettings);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Cache from "../../utils/browser/Cache";
|
|
2
2
|
import Authenticate from "../../modularui/Authenticate";
|
|
3
|
-
import { getApplication } from "../_modularui/ModularUISelectors";
|
|
4
3
|
import { reloadApplication } from "./Application";
|
|
5
4
|
import { startProgress, finishProgress } from "./ProgressIndicator";
|
|
6
5
|
import { push } from "../_router/RouterActions";
|
|
@@ -49,13 +48,12 @@ export const changePassword = () => (dispatch, getState) => {
|
|
|
49
48
|
|
|
50
49
|
/**
|
|
51
50
|
*/
|
|
52
|
-
export const login = (username, password) => async
|
|
51
|
+
export const login = (username, password) => async dispatch => {
|
|
53
52
|
dispatch(startProgress());
|
|
54
53
|
try {
|
|
55
54
|
const response = await new Authenticate().login(username, password);
|
|
56
|
-
await dispatch(reloadApplication());
|
|
55
|
+
const application = await dispatch(reloadApplication());
|
|
57
56
|
Cache.addItem("auth", true);
|
|
58
|
-
const application = getApplication(getState());
|
|
59
57
|
if (application?.userMustChangePassword) {
|
|
60
58
|
dispatch(changePassword());
|
|
61
59
|
} else {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import Cache from "../../utils/browser/Cache";
|
|
3
3
|
import Authenticate from "../../modularui/Authenticate";
|
|
4
|
-
import { getApplication } from "../_modularui/ModularUISelectors";
|
|
5
4
|
|
|
6
5
|
import { reloadApplication } from "./Application";
|
|
7
6
|
import { startProgress, finishProgress } from "./ProgressIndicator";
|
|
@@ -50,7 +49,7 @@ export const loginSuccess = (): LoginSuccessAction => ({
|
|
|
50
49
|
/**
|
|
51
50
|
* Send change password action
|
|
52
51
|
*/
|
|
53
|
-
export const changePassword = (): ThunkAction => (dispatch, getState) => {
|
|
52
|
+
export const changePassword = (): ThunkAction<> => (dispatch, getState) => {
|
|
54
53
|
dispatch({
|
|
55
54
|
type: "CHANGE_PASSWORD",
|
|
56
55
|
});
|
|
@@ -68,17 +67,15 @@ export const changePassword = (): ThunkAction => (dispatch, getState) => {
|
|
|
68
67
|
/**
|
|
69
68
|
*/
|
|
70
69
|
export const login =
|
|
71
|
-
(username: string, password: string): ThunkAction =>
|
|
72
|
-
async (dispatch
|
|
70
|
+
(username: string, password: string): ThunkAction<> =>
|
|
71
|
+
async (dispatch) => {
|
|
73
72
|
dispatch(startProgress());
|
|
74
73
|
|
|
75
74
|
try {
|
|
76
75
|
const response = await new Authenticate().login(username, password);
|
|
77
76
|
|
|
78
|
-
await dispatch(reloadApplication());
|
|
79
|
-
|
|
77
|
+
const application = await dispatch(reloadApplication());
|
|
80
78
|
Cache.addItem("auth", true);
|
|
81
|
-
const application = getApplication(getState());
|
|
82
79
|
|
|
83
80
|
if (application?.userMustChangePassword) {
|
|
84
81
|
dispatch(changePassword());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignIn.js","names":["Cache","Authenticate","
|
|
1
|
+
{"version":3,"file":"SignIn.js","names":["Cache","Authenticate","reloadApplication","startProgress","finishProgress","push","CHANGEPASSWORD_PATH","loginFailed","errorMessage","sendAuthenticationError","type","payload","resetAuthErrors","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","login","username","password","response","application","addItem","userMustChangePassword","error","id"],"sources":["../../../src/redux/actions/SignIn.js"],"sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\n\nimport { push } from \"../_router/RouterActions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n SendAuthenticationErrorAction,\n ResetAuthErrorsAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (\n errorMessage: string,\n): SendAuthenticationErrorAction => sendAuthenticationError(errorMessage);\n\n/**\n * Send authentication error action\n */\nexport const sendAuthenticationError = (\n errorMessage: string,\n): SendAuthenticationErrorAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Resets any authentication errors\n */\nexport const resetAuthErrors = (): ResetAuthErrorsAction => ({\n type: \"AUTHENTICATION_RESET_ERRORS\",\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction<> => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n }),\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction<> =>\n async (dispatch) => {\n dispatch(startProgress());\n\n try {\n const response = await new Authenticate().login(username, password);\n\n const application = await dispatch(reloadApplication());\n Cache.addItem(\"auth\", true);\n\n if (application?.userMustChangePassword) {\n dispatch(changePassword());\n } else {\n dispatch(loginSuccess());\n }\n\n dispatch(finishProgress());\n return response;\n } catch (error) {\n if (error.id === \"Error.ChangePasswordRequired\") {\n await dispatch(reloadApplication());\n Cache.addItem(\"auth\", true);\n dispatch(changePassword());\n } else {\n dispatch(loginFailed(error.id));\n }\n dispatch(finishProgress());\n return error;\n }\n };\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,2BAA2B;AAC7C,OAAOC,YAAY,MAAM,8BAA8B;AAEvD,SAASC,iBAAiB,QAAQ,eAAe;AACjD,SAASC,aAAa,EAAEC,cAAc,QAAQ,qBAAqB;AAEnE,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,mBAAmB,QAAQ,2BAA2B;AAS/D;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GACtBC,YAAoB,IACcC,uBAAuB,CAACD,YAAY,CAAC;;AAEzE;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,GAClCD,YAAoB,KACe;EACnCE,IAAI,EAAE,sBAAsB;EAC5BC,OAAO,EAAEH;AACX,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMI,eAAe,GAAGA,CAAA,MAA8B;EAC3DF,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMG,YAAY,GAAGA,CAAA,MAA2B;EACrDH,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMI,cAAc,GAAGA,CAAA,KAAqB,CAACC,QAAQ,EAAEC,QAAQ,KAAK;EACzED,QAAQ,CAAC;IACPL,IAAI,EAAE;EACR,CAAC,CAAC;EAEF,MAAMO,OAAO,GAAGD,QAAQ,CAAC,CAAC,CAACE,MAAM,CAACC,QAAQ,EAAEC,KAAK,EAAEC,KAAK;EACxD,MAAMC,YAAY,GAAGN,QAAQ,CAAC,CAAC,CAACE,MAAM,CAACC,QAAQ,EAAEC,KAAK,EAAEG,IAAI;EAC5D,OAAOR,QAAQ,CACbV,IAAI,CAACC,mBAAmB,EAAE;IACxBiB,IAAI,EAAED,YAAY,GAAGA,YAAY,GAAGN,QAAQ,CAAC,CAAC,CAACE,MAAM,CAACC,QAAQ;IAC9DE,KAAK,EAAEJ;EACT,CAAC,CACH,CAAC;AACH,CAAC;;AAED;AACA;AACA,OAAO,MAAMO,KAAK,GAChBA,CAACC,QAAgB,EAAEC,QAAgB,KACnC,MAAOX,QAAQ,IAAK;EAClBA,QAAQ,CAACZ,aAAa,CAAC,CAAC,CAAC;EAEzB,IAAI;IACF,MAAMwB,QAAQ,GAAG,MAAM,IAAI1B,YAAY,CAAC,CAAC,CAACuB,KAAK,CAACC,QAAQ,EAAEC,QAAQ,CAAC;IAEnE,MAAME,WAAW,GAAG,MAAMb,QAAQ,CAACb,iBAAiB,CAAC,CAAC,CAAC;IACvDF,KAAK,CAAC6B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;IAE3B,IAAID,WAAW,EAAEE,sBAAsB,EAAE;MACvCf,QAAQ,CAACD,cAAc,CAAC,CAAC,CAAC;IAC5B,CAAC,MAAM;MACLC,QAAQ,CAACF,YAAY,CAAC,CAAC,CAAC;IAC1B;IAEAE,QAAQ,CAACX,cAAc,CAAC,CAAC,CAAC;IAC1B,OAAOuB,QAAQ;EACjB,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,IAAIA,KAAK,CAACC,EAAE,KAAK,8BAA8B,EAAE;MAC/C,MAAMjB,QAAQ,CAACb,iBAAiB,CAAC,CAAC,CAAC;MACnCF,KAAK,CAAC6B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;MAC3Bd,QAAQ,CAACD,cAAc,CAAC,CAAC,CAAC;IAC5B,CAAC,MAAM;MACLC,QAAQ,CAACR,WAAW,CAACwB,KAAK,CAACC,EAAE,CAAC,CAAC;IACjC;IACAjB,QAAQ,CAACX,cAAc,CAAC,CAAC,CAAC;IAC1B,OAAO2B,KAAK;EACd;AACF,CAAC","ignoreList":[]}
|
|
@@ -15,7 +15,7 @@ export const logoutSuccess = (): LogoutSuccessAction => ({
|
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
*/
|
|
18
|
-
export const logout = (): ThunkAction => (dispatch: Dispatch) => {
|
|
18
|
+
export const logout = (): ThunkAction<> => (dispatch: Dispatch) => {
|
|
19
19
|
dispatch(startProgress());
|
|
20
20
|
|
|
21
21
|
return new Authenticate()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignOut.js","names":["Authenticate","startProgress","finishProgress","resetModularUI","reloadApplication","logoutSuccess","type","logout","dispatch","then"],"sources":["../../../src/redux/actions/SignOut.js"],"sourcesContent":["// @flow\nimport Authenticate from \"../../modularui/Authenticate\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { resetModularUI } from \"../_modularui/ModularUIActions\";\nimport { reloadApplication } from \"./Application\";\n\nimport type { Dispatch, LogoutSuccessAction, ThunkAction } from \"../types\";\n\n/**\n * Send logout success action\n */\nexport const logoutSuccess = (): LogoutSuccessAction => ({\n type: \"AUTHENTICATION_LOGOUT\",\n});\n\n/**\n */\nexport const logout = (): ThunkAction => (dispatch: Dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .logout()\n .then(() => dispatch(resetModularUI()))\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n dispatch(logoutSuccess());\n return dispatch(finishProgress());\n });\n};\n"],"mappings":"AACA,OAAOA,YAAY,MAAM,8BAA8B;AACvD,SAASC,aAAa,EAAEC,cAAc,QAAQ,qBAAqB;AACnE,SAASC,cAAc,QAAQ,gCAAgC;AAC/D,SAASC,iBAAiB,QAAQ,eAAe;AAIjD;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAA,MAA4B;EACvDC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAA,
|
|
1
|
+
{"version":3,"file":"SignOut.js","names":["Authenticate","startProgress","finishProgress","resetModularUI","reloadApplication","logoutSuccess","type","logout","dispatch","then"],"sources":["../../../src/redux/actions/SignOut.js"],"sourcesContent":["// @flow\nimport Authenticate from \"../../modularui/Authenticate\";\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { resetModularUI } from \"../_modularui/ModularUIActions\";\nimport { reloadApplication } from \"./Application\";\n\nimport type { Dispatch, LogoutSuccessAction, ThunkAction } from \"../types\";\n\n/**\n * Send logout success action\n */\nexport const logoutSuccess = (): LogoutSuccessAction => ({\n type: \"AUTHENTICATION_LOGOUT\",\n});\n\n/**\n */\nexport const logout = (): ThunkAction<> => (dispatch: Dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .logout()\n .then(() => dispatch(resetModularUI()))\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n dispatch(logoutSuccess());\n return dispatch(finishProgress());\n });\n};\n"],"mappings":"AACA,OAAOA,YAAY,MAAM,8BAA8B;AACvD,SAASC,aAAa,EAAEC,cAAc,QAAQ,qBAAqB;AACnE,SAASC,cAAc,QAAQ,gCAAgC;AAC/D,SAASC,iBAAiB,QAAQ,eAAe;AAIjD;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAA,MAA4B;EACvDC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAA,KAAsBC,QAAkB,IAAK;EACjEA,QAAQ,CAACP,aAAa,CAAC,CAAC,CAAC;EAEzB,OAAO,IAAID,YAAY,CAAC,CAAC,CACtBO,MAAM,CAAC,CAAC,CACRE,IAAI,CAAC,MAAMD,QAAQ,CAACL,cAAc,CAAC,CAAC,CAAC,CAAC,CACtCM,IAAI,CAAC,MAAMD,QAAQ,CAACJ,iBAAiB,CAAC,CAAC,CAAC,CAAC,CACzCK,IAAI,CAAC,MAAM;IACVD,QAAQ,CAACH,aAAa,CAAC,CAAC,CAAC;IACzB,OAAOG,QAAQ,CAACN,cAAc,CAAC,CAAC,CAAC;EACnC,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @flow
|
|
1
2
|
import configureMockStore from "redux-mock-store";
|
|
2
3
|
import thunk from "redux-thunk";
|
|
3
4
|
import { reloadApplication } from "../Application";
|
|
@@ -5,48 +6,85 @@ import { reloadApplication } from "../Application";
|
|
|
5
6
|
import application from "../../../models/application/__mock__/application";
|
|
6
7
|
import Href from "../../../models/href/Href";
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Setup Thunk Extra Argument with a mock subscribe.
|
|
11
|
+
*/
|
|
12
|
+
const thunkExtra = {
|
|
13
|
+
subscribe: jest.fn((cb) => {
|
|
14
|
+
if (typeof cb === "function") {
|
|
15
|
+
setImmediate(cb);
|
|
16
|
+
}
|
|
17
|
+
return jest.fn();
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const middlewares = [thunk.withExtraArgument(thunkExtra)];
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Cast the creator to 'any' to bypass the strict Dispatch
|
|
25
|
+
* definition in the redux-mock-store flow-typed file.
|
|
26
|
+
*/
|
|
27
|
+
const mockStoreCreator: (state: Object) => any =
|
|
28
|
+
configureMockStore(middlewares);
|
|
10
29
|
|
|
11
30
|
describe("application actions", () => {
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
jest.clearAllMocks();
|
|
33
|
+
});
|
|
34
|
+
|
|
12
35
|
it("loads an application when no application exists", async () => {
|
|
13
36
|
expect.assertions(1);
|
|
14
|
-
|
|
37
|
+
|
|
38
|
+
// Use the casted creator here
|
|
39
|
+
const store = mockStoreCreator({
|
|
40
|
+
modularui: {
|
|
41
|
+
"application(/)(en)": { status: "FINISHED", model: application },
|
|
42
|
+
},
|
|
43
|
+
i18n: { locale: "en" },
|
|
44
|
+
});
|
|
15
45
|
|
|
16
46
|
await store.dispatch(reloadApplication());
|
|
17
47
|
|
|
18
|
-
expect(store.getActions()).
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
48
|
+
expect(store.getActions()).toEqual(
|
|
49
|
+
expect.arrayContaining([
|
|
50
|
+
{ type: "START_PROGRESS" },
|
|
51
|
+
expect.objectContaining({
|
|
52
|
+
type: "MODULARUI/FETCH",
|
|
53
|
+
payload: expect.objectContaining({
|
|
54
|
+
key: "application(/)(en)",
|
|
55
|
+
href: new Href("/", "Application"),
|
|
56
|
+
}),
|
|
25
57
|
}),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
]);
|
|
58
|
+
]),
|
|
59
|
+
);
|
|
29
60
|
});
|
|
30
61
|
|
|
31
|
-
it("no reloads when application exists", () => {
|
|
32
|
-
|
|
33
|
-
|
|
62
|
+
it("no reloads when application exists", async () => {
|
|
63
|
+
// Use the casted creator here
|
|
64
|
+
const store = mockStoreCreator({
|
|
65
|
+
modularui: {
|
|
66
|
+
"/": { connectKey: "/", model: application },
|
|
67
|
+
"application(/)(en)": { status: "FINISHED", model: application },
|
|
68
|
+
},
|
|
69
|
+
i18n: { locale: "en" },
|
|
34
70
|
});
|
|
35
71
|
|
|
36
|
-
store.dispatch(reloadApplication());
|
|
72
|
+
await store.dispatch(reloadApplication());
|
|
37
73
|
|
|
38
|
-
expect(store.getActions()).
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
74
|
+
expect(store.getActions()).toEqual(
|
|
75
|
+
expect.arrayContaining([
|
|
76
|
+
expect.objectContaining({
|
|
77
|
+
type: "MODULARUI/REMOVE_KEY",
|
|
78
|
+
payload: "/",
|
|
79
|
+
}),
|
|
80
|
+
{ type: "START_PROGRESS" },
|
|
81
|
+
expect.objectContaining({
|
|
82
|
+
type: "MODULARUI/FETCH",
|
|
83
|
+
payload: expect.objectContaining({
|
|
84
|
+
href: new Href("/", "Application"),
|
|
85
|
+
}),
|
|
48
86
|
}),
|
|
49
|
-
|
|
50
|
-
|
|
87
|
+
]),
|
|
88
|
+
);
|
|
51
89
|
});
|
|
52
90
|
});
|