@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":"useModularUI.js","names":["_react","require","_reactRedux","_reactRouter","_constants","_ModularUIActions","_useDeepCompareEffect","_interopRequireDefault","_useModularUIKey","_Href","useModularUI","modelKey","url","options","dispatch","useDispatch","hrefInstance","useMemo","Href","requestUrl","toString","currentQueryString","querystring","prevQueryRef","useRef","key","useModularUIKey","model","useSelector","state","modularui","requestOptions","merged","method","HTTP_METHODS","GET","removeOnUnmount","origin","contextPath","location","useLocation","redirectLocation","shouldLoad","status","MODULARUI_STATUS","ERROR","current","equals","isReload","useEffect","useDeepCompareEffect","loadModularUI","removeModelByKey","exports"],"sources":["../../src/hooks/useModularUI.js"],"sourcesContent":["// @flow\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../constants\";\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../redux/_modularui/ModularUIActions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\nimport { useModularUIKey } from \"./useModularUIKey\";\n\nimport Href from \"../models/href/Href\";\n\nimport type { RequestModularUIOptions } from \"../utils\";\nimport type { ModelEntry } from \"../redux\";\n\n/**\n * A custom hook to fetch and manage Be Informed modular UI resources.\n * It handles automatic data fetching based on URL/query changes, manages Redux state\n * synchronization, and provides cleanup logic when components unmount.\n *\n * @param {string} modelKey - A unique identifier for the type of model being fetched.\n * @param {string | Href} url - The endpoint URL or Href instance to fetch data from.\n * @param {RequestModularUIOptions} options - Configuration for the request (method, headers, etc.).\n * @returns {ModelEntry} The model data retrieved from the Redux store.\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestModularUIOptions = (({}: any): RequestModularUIOptions),\n): any => {\n const dispatch = useDispatch();\n\n // Normalize the URL input into a Href instance to safely access query params and paths\n const hrefInstance = useMemo(() => new Href(url), [url]);\n const requestUrl = useMemo(() => hrefInstance.toString(), [hrefInstance]);\n const currentQueryString = hrefInstance.querystring;\n\n // Persistence ref to detect if query parameters have changed between renders\n const prevQueryRef = useRef(currentQueryString);\n\n // Generate a unique key for the Redux store based on the model type and the full URL\n const key = useModularUIKey(modelKey, requestUrl);\n\n // Select the specific piece of state corresponding to this modular UI component\n const model = useSelector((state) => state.modularui[key]);\n\n /**\n * Memoize request options to prevent unnecessary re-renders.\n * Merges default settings (GET method, auto-cleanup) with user-provided options.\n */\n const requestOptions = useMemo(() => {\n const merged = {\n method: HTTP_METHODS.GET,\n removeOnUnmount:
|
|
1
|
+
{"version":3,"file":"useModularUI.js","names":["_react","require","_reactRedux","_reactRouter","_constants","_ModularUIActions","_useDeepCompareEffect","_interopRequireDefault","_useModularUIKey","_Href","useModularUI","modelKey","url","options","dispatch","useDispatch","hrefInstance","useMemo","Href","requestUrl","toString","currentQueryString","querystring","prevQueryRef","useRef","key","useModularUIKey","model","useSelector","state","modularui","requestOptions","merged","method","HTTP_METHODS","GET","removeOnUnmount","origin","contextPath","location","useLocation","redirectLocation","shouldLoad","status","MODULARUI_STATUS","ERROR","current","equals","isReload","useEffect","useDeepCompareEffect","loadModularUI","removeModelByKey","exports"],"sources":["../../src/hooks/useModularUI.js"],"sourcesContent":["// @flow\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../constants\";\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../redux/_modularui/ModularUIActions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\nimport { useModularUIKey } from \"./useModularUIKey\";\n\nimport Href from \"../models/href/Href\";\n\nimport type { RequestModularUIOptions } from \"../utils\";\nimport type { ModelEntry } from \"../redux\";\n\n/**\n * A custom hook to fetch and manage Be Informed modular UI resources.\n * It handles automatic data fetching based on URL/query changes, manages Redux state\n * synchronization, and provides cleanup logic when components unmount.\n *\n * @param {string} modelKey - A unique identifier for the type of model being fetched.\n * @param {string | Href} url - The endpoint URL or Href instance to fetch data from.\n * @param {RequestModularUIOptions} options - Configuration for the request (method, headers, etc.).\n * @returns {ModelEntry} The model data retrieved from the Redux store.\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestModularUIOptions = (({}: any): RequestModularUIOptions),\n): any => {\n const dispatch = useDispatch();\n\n // Normalize the URL input into a Href instance to safely access query params and paths\n const hrefInstance = useMemo(() => new Href(url), [url]);\n const requestUrl = useMemo(() => hrefInstance.toString(), [hrefInstance]);\n const currentQueryString = hrefInstance.querystring;\n\n // Persistence ref to detect if query parameters have changed between renders\n const prevQueryRef = useRef(currentQueryString);\n\n // Generate a unique key for the Redux store based on the model type and the full URL\n const key = useModularUIKey(modelKey, requestUrl);\n\n // Select the specific piece of state corresponding to this modular UI component\n const model = useSelector((state) => state.modularui[key]);\n\n /**\n * Memoize request options to prevent unnecessary re-renders.\n * Merges default settings (GET method, auto-cleanup) with user-provided options.\n */\n const requestOptions = useMemo(() => {\n const merged = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: false,\n ...options,\n };\n\n if (url instanceof Href) {\n merged.origin = merged.origin ?? url.origin;\n merged.contextPath = merged.contextPath ?? url.contextPath;\n }\n return merged;\n }, [options, url]);\n\n const location = useLocation();\n const redirectLocation = location.state?.redirectLocation;\n\n /**\n * Determines if a network request should be initiated.\n * Logic includes:\n * - Model doesn't exist yet (Initial load)\n * - Previous request resulted in an error (Retry)\n * - The query parameters changed (Filtering/Paging)\n * - A redirect was triggered specifically for this URL\n * - Manual 'isReload' flag is passed in options\n */\n const shouldLoad =\n model == null ||\n model.status === MODULARUI_STATUS.ERROR ||\n prevQueryRef.current !== currentQueryString ||\n (redirectLocation instanceof Href\n ? redirectLocation.equals(requestUrl)\n : false) ||\n requestOptions.isReload === true;\n\n // Synchronize the ref after the render cycle determines if we should load\n useEffect(() => {\n prevQueryRef.current = currentQueryString;\n }, [currentQueryString]);\n\n // Execute the load action. Deep compare is used on options to prevent\n // infinite loops caused by passing inline object literals.\n useDeepCompareEffect(() => {\n if (requestUrl !== \"\" && shouldLoad) {\n dispatch(loadModularUI(key, requestUrl, requestOptions));\n }\n }, [key, requestUrl, requestOptions, shouldLoad]);\n\n // Cleanup Effect:\n // If 'removeOnUnmount' is true, this removes the model data from the Redux store\n // when the component using this hook is destroyed.\n useEffect(() => {\n if (requestOptions.removeOnUnmount) {\n return () => {\n dispatch(removeModelByKey(key));\n };\n }\n }, [dispatch, key, requestOptions.removeOnUnmount]);\n\n return model;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/i18n/Locale.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _replaceAll = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/replace-all"));
|
|
8
9
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
|
|
9
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
10
11
|
var _formatMessage = _interopRequireDefault(require("format-message"));
|
|
@@ -71,7 +72,8 @@ class Locale {
|
|
|
71
72
|
* This method converts the ${} to {}
|
|
72
73
|
*/
|
|
73
74
|
fixPlaceHoldersInObject(messages = {}) {
|
|
74
|
-
|
|
75
|
+
var _context, _context2;
|
|
76
|
+
return JSON.parse((0, _replaceAll.default)(_context = (0, _replaceAll.default)(_context2 = (0, _stringify.default)(messages)).call(_context2, /'\$\{(?<key>.*?)}'/g, "''{$<key>}''")).call(_context, /\$\{(?<key>.*?)}/g, "{$<key>}"));
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
/**
|
package/lib/i18n/Locale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Locale.js","names":["_formatMessage","_interopRequireDefault","require","_languages","_exceptions","_constants","Locale","constructor","locale","_defineProperty2","default","_code","code","_messages","fixPlaceHoldersInObject","messages","_errors","errors","_nativeName","nativeName","formatMessage","setup","missingTranslation","aLocale","split","length","language","languages","lang","toUpperCase","IllegalStateException","fixPlaceHolders","message","replace","JSON","parse","_stringify","getBaseMessage","id","defaultMessage","messageFromLocale","process","env","NODE_ENV","getSetting","console","debug","parameters","getMessage","update","_default","exports"],"sources":["../../src/i18n/Locale.js"],"sourcesContent":["// @flow\nimport formatMessage from \"format-message\";\n\nimport languages from \"./languages\";\nimport { IllegalStateException } from \"../exceptions\";\n\nimport { getSetting } from \"../constants\";\n\nimport type { LocaleConfiguration, MessageParameters } from \"./types\";\n\n/**\n * Create a locale\n */\nclass Locale {\n _code: string;\n _messages: { [string]: string };\n _errors: { [string]: string };\n _nativeName: ?string;\n\n constructor(locale: LocaleConfiguration) {\n this._code = locale.code;\n\n this._messages = this.fixPlaceHoldersInObject(locale.messages);\n this._errors = this.fixPlaceHoldersInObject(locale.errors);\n\n this._nativeName = locale.nativeName;\n\n formatMessage.setup({\n missingTranslation: \"ignore\",\n });\n }\n\n /**\n * Retrieve locale code\n */\n get code(): string {\n return this._code;\n }\n\n /**\n * Retrieve nativeName\n */\n get nativeName(): string {\n if (this._nativeName) {\n return this._nativeName;\n }\n\n const aLocale = this.code.split(\"-\");\n\n if (aLocale.length > 0) {\n const language = languages.lang[aLocale[0]];\n\n if (language) {\n return (\n language[1] + (aLocale[1] ? ` (${aLocale[1].toUpperCase()})` : \"\")\n );\n }\n }\n\n throw new IllegalStateException(\n `Can not find language name based on locale: ${this.code}`,\n );\n }\n\n /**\n * Exported messages from Be Informed have placeholders in the syntax ${placeholder_name}\n * where the ICU messageformat module uses {placeholder_name}.\n * This method converts the ${} to {}\n */\n fixPlaceHolders(message: ?string): null | string {\n if (typeof message === \"string\") {\n return message\n .replace(/'\\$\\{(?<key>.*?)}'/g, \"''{$<key>}''\")\n .replace(/\\$\\{(?<key>.*?)}/g, \"{$<key>}\");\n }\n\n return null;\n }\n\n /**\n * Exported messages from Be Informed have placeholders in the syntax ${placeholder_name}\n * where the ICU messageformat module uses {placeholder_name}.\n * This method converts the ${} to {}\n */\n fixPlaceHoldersInObject(messages: Object = {}): Object {\n return JSON.parse(\n JSON.stringify(messages)\n .
|
|
1
|
+
{"version":3,"file":"Locale.js","names":["_formatMessage","_interopRequireDefault","require","_languages","_exceptions","_constants","Locale","constructor","locale","_defineProperty2","default","_code","code","_messages","fixPlaceHoldersInObject","messages","_errors","errors","_nativeName","nativeName","formatMessage","setup","missingTranslation","aLocale","split","length","language","languages","lang","toUpperCase","IllegalStateException","fixPlaceHolders","message","replace","_context","_context2","JSON","parse","_replaceAll","_stringify","call","getBaseMessage","id","defaultMessage","messageFromLocale","process","env","NODE_ENV","getSetting","console","debug","parameters","getMessage","update","_default","exports"],"sources":["../../src/i18n/Locale.js"],"sourcesContent":["// @flow\nimport formatMessage from \"format-message\";\n\nimport languages from \"./languages\";\nimport { IllegalStateException } from \"../exceptions\";\n\nimport { getSetting } from \"../constants\";\n\nimport type { LocaleConfiguration, MessageParameters } from \"./types\";\n\n/**\n * Create a locale\n */\nclass Locale {\n _code: string;\n _messages: { [string]: string };\n _errors: { [string]: string };\n _nativeName: ?string;\n\n constructor(locale: LocaleConfiguration) {\n this._code = locale.code;\n\n this._messages = this.fixPlaceHoldersInObject(locale.messages);\n this._errors = this.fixPlaceHoldersInObject(locale.errors);\n\n this._nativeName = locale.nativeName;\n\n formatMessage.setup({\n missingTranslation: \"ignore\",\n });\n }\n\n /**\n * Retrieve locale code\n */\n get code(): string {\n return this._code;\n }\n\n /**\n * Retrieve nativeName\n */\n get nativeName(): string {\n if (this._nativeName) {\n return this._nativeName;\n }\n\n const aLocale = this.code.split(\"-\");\n\n if (aLocale.length > 0) {\n const language = languages.lang[aLocale[0]];\n\n if (language) {\n return (\n language[1] + (aLocale[1] ? ` (${aLocale[1].toUpperCase()})` : \"\")\n );\n }\n }\n\n throw new IllegalStateException(\n `Can not find language name based on locale: ${this.code}`,\n );\n }\n\n /**\n * Exported messages from Be Informed have placeholders in the syntax ${placeholder_name}\n * where the ICU messageformat module uses {placeholder_name}.\n * This method converts the ${} to {}\n */\n fixPlaceHolders(message: ?string): null | string {\n if (typeof message === \"string\") {\n return message\n .replace(/'\\$\\{(?<key>.*?)}'/g, \"''{$<key>}''\")\n .replace(/\\$\\{(?<key>.*?)}/g, \"{$<key>}\");\n }\n\n return null;\n }\n\n /**\n * Exported messages from Be Informed have placeholders in the syntax ${placeholder_name}\n * where the ICU messageformat module uses {placeholder_name}.\n * This method converts the ${} to {}\n */\n fixPlaceHoldersInObject(messages: Object = {}): Object {\n return JSON.parse(\n JSON.stringify(messages)\n .replaceAll(/'\\$\\{(?<key>.*?)}'/g, \"''{$<key>}''\")\n .replaceAll(/\\$\\{(?<key>.*?)}/g, \"{$<key>}\"),\n );\n }\n\n /**\n * Retrieve message by id\n */\n getBaseMessage(id: string, defaultMessage?: string): string {\n if (!id && !defaultMessage) {\n return \"[message: id or defaultMessage missing]\";\n }\n\n const messageFromLocale = this._messages[id] || this._errors[id];\n\n if (\n (typeof process === \"undefined\" ||\n process.env.NODE_ENV !== \"production\") &&\n !messageFromLocale &&\n id &&\n getSetting(\"DEBUG_I18N_MESSAGE_NOT_FOUND\")\n ) {\n // eslint-disable-next-line no-console\n console.debug(\n `Message with id ${id} not found for locale ${this.code} in layout translations`,\n );\n }\n return messageFromLocale || this.fixPlaceHolders(defaultMessage) || id;\n }\n\n /**\n * Format message using formatMessage library\n */\n formatMessage(message: string, parameters?: MessageParameters): string {\n if (parameters) {\n return formatMessage(message, parameters);\n }\n\n return message;\n }\n\n /**\n * Retrieve a messages with replaced parameters\n */\n getMessage(\n id: string,\n defaultMessage?: string,\n parameters?: MessageParameters,\n ): string {\n const message = this.getBaseMessage(id, defaultMessage);\n return this.formatMessage(message, parameters);\n }\n\n /**\n * Add or change messages for this locale. It is not possible to remove messages.\n */\n update(messages: Object = {}, errors: Object = {}) {\n this._messages = {\n ...this._messages,\n ...this.fixPlaceHoldersInObject(messages),\n };\n\n this._errors = {\n ...this._errors,\n ...this.fixPlaceHoldersInObject(errors),\n };\n }\n}\n\nexport default Locale;\n"],"mappings":";;;;;;;;;;AACA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AAIA;AACA;AACA;AACA,MAAMI,MAAM,CAAC;EAMXC,WAAWA,CAACC,MAA2B,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IACvC,IAAI,CAACC,KAAK,GAAGH,MAAM,CAACI,IAAI;IAExB,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,uBAAuB,CAACN,MAAM,CAACO,QAAQ,CAAC;IAC9D,IAAI,CAACC,OAAO,GAAG,IAAI,CAACF,uBAAuB,CAACN,MAAM,CAACS,MAAM,CAAC;IAE1D,IAAI,CAACC,WAAW,GAAGV,MAAM,CAACW,UAAU;IAEpCC,sBAAa,CAACC,KAAK,CAAC;MAClBC,kBAAkB,EAAE;IACtB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,IAAIV,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACD,KAAK;EACnB;;EAEA;AACF;AACA;EACE,IAAIQ,UAAUA,CAAA,EAAW;IACvB,IAAI,IAAI,CAACD,WAAW,EAAE;MACpB,OAAO,IAAI,CAACA,WAAW;IACzB;IAEA,MAAMK,OAAO,GAAG,IAAI,CAACX,IAAI,CAACY,KAAK,CAAC,GAAG,CAAC;IAEpC,IAAID,OAAO,CAACE,MAAM,GAAG,CAAC,EAAE;MACtB,MAAMC,QAAQ,GAAGC,kBAAS,CAACC,IAAI,CAACL,OAAO,CAAC,CAAC,CAAC,CAAC;MAE3C,IAAIG,QAAQ,EAAE;QACZ,OACEA,QAAQ,CAAC,CAAC,CAAC,IAAIH,OAAO,CAAC,CAAC,CAAC,GAAG,KAAKA,OAAO,CAAC,CAAC,CAAC,CAACM,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;MAEtE;IACF;IAEA,MAAM,IAAIC,iCAAqB,CAC7B,+CAA+C,IAAI,CAAClB,IAAI,EAC1D,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACEmB,eAAeA,CAACC,OAAgB,EAAiB;IAC/C,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;MAC/B,OAAOA,OAAO,CACXC,OAAO,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAC9CA,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAC7C;IAEA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACEnB,uBAAuBA,CAACC,QAAgB,GAAG,CAAC,CAAC,EAAU;IAAA,IAAAmB,QAAA,EAAAC,SAAA;IACrD,OAAOC,IAAI,CAACC,KAAK,CACf,IAAAC,WAAA,CAAA5B,OAAA,EAAAwB,QAAA,OAAAI,WAAA,CAAA5B,OAAA,EAAAyB,SAAA,OAAAI,UAAA,CAAA7B,OAAA,EAAeK,QAAQ,CAAC,EAAAyB,IAAA,CAAAL,SAAA,EACV,qBAAqB,EAAE,cAAc,CAAC,EAAAK,IAAA,CAAAN,QAAA,EACtC,mBAAmB,EAAE,UAAU,CAC/C,CAAC;EACH;;EAEA;AACF;AACA;EACEO,cAAcA,CAACC,EAAU,EAAEC,cAAuB,EAAU;IAC1D,IAAI,CAACD,EAAE,IAAI,CAACC,cAAc,EAAE;MAC1B,OAAO,yCAAyC;IAClD;IAEA,MAAMC,iBAAiB,GAAG,IAAI,CAAC/B,SAAS,CAAC6B,EAAE,CAAC,IAAI,IAAI,CAAC1B,OAAO,CAAC0B,EAAE,CAAC;IAEhE,IACE,CAAC,OAAOG,OAAO,KAAK,WAAW,IAC7BA,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,KACvC,CAACH,iBAAiB,IAClBF,EAAE,IACF,IAAAM,qBAAU,EAAC,8BAA8B,CAAC,EAC1C;MACA;MACAC,OAAO,CAACC,KAAK,CACX,mBAAmBR,EAAE,yBAAyB,IAAI,CAAC9B,IAAI,yBACzD,CAAC;IACH;IACA,OAAOgC,iBAAiB,IAAI,IAAI,CAACb,eAAe,CAACY,cAAc,CAAC,IAAID,EAAE;EACxE;;EAEA;AACF;AACA;EACEtB,aAAaA,CAACY,OAAe,EAAEmB,UAA8B,EAAU;IACrE,IAAIA,UAAU,EAAE;MACd,OAAO,IAAA/B,sBAAa,EAACY,OAAO,EAAEmB,UAAU,CAAC;IAC3C;IAEA,OAAOnB,OAAO;EAChB;;EAEA;AACF;AACA;EACEoB,UAAUA,CACRV,EAAU,EACVC,cAAuB,EACvBQ,UAA8B,EACtB;IACR,MAAMnB,OAAO,GAAG,IAAI,CAACS,cAAc,CAACC,EAAE,EAAEC,cAAc,CAAC;IACvD,OAAO,IAAI,CAACvB,aAAa,CAACY,OAAO,EAAEmB,UAAU,CAAC;EAChD;;EAEA;AACF;AACA;EACEE,MAAMA,CAACtC,QAAgB,GAAG,CAAC,CAAC,EAAEE,MAAc,GAAG,CAAC,CAAC,EAAE;IACjD,IAAI,CAACJ,SAAS,GAAG;MACf,GAAG,IAAI,CAACA,SAAS;MACjB,GAAG,IAAI,CAACC,uBAAuB,CAACC,QAAQ;IAC1C,CAAC;IAED,IAAI,CAACC,OAAO,GAAG;MACb,GAAG,IAAI,CAACA,OAAO;MACf,GAAG,IAAI,CAACF,uBAAuB,CAACG,MAAM;IACxC,CAAC;EACH;AACF;AAAC,IAAAqC,QAAA,GAAAC,OAAA,CAAA7C,OAAA,GAEcJ,MAAM","ignoreList":[]}
|
|
@@ -24,7 +24,7 @@ class ActionCollection extends _BaseCollection.default {
|
|
|
24
24
|
} else if (Array.isArray(actionsContributions)) {
|
|
25
25
|
const actionModels = [];
|
|
26
26
|
for (const actionData of actions) {
|
|
27
|
-
const actionContribution = (0, _find.default)(actionsContributions).call(actionsContributions,
|
|
27
|
+
const actionContribution = (0, _find.default)(actionsContributions).call(actionsContributions, contribution => contribution.name === actionData.name && contribution.type !== "service-operation");
|
|
28
28
|
if (actionContribution) {
|
|
29
29
|
actionModels.push(new _ActionModel.default(actionData, actionContribution, modelOptions));
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionCollection.js","names":["_BaseCollection","_interopRequireDefault","require","_ActionModel","ActionCollection","BaseCollection","constructor","actions","actionsContributions","modelOptions","Array","isArray","collection","actionModels","actionData","actionContribution","_find","default","call","name","type","push","ActionModel","getActionByKey","key","_context","newCollection","_filter","action","first","getActionsByType","_context2","_includes","getActionsByLayoutHint","hints","_context3","layouthint","has","hasActionsByLayoutHint","length","routePath","_context4","enabledRoutes","isDisabled","path","_map","selfhref","join","exports"],"sources":["../../../src/models/actions/ActionCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionModel from \"./ActionModel\";\nimport type { ModelOptions } from \"../types\";\n\n/**\n * Collection of actions\n */\nexport default class ActionCollection extends BaseCollection<ActionModel> {\n constructor(\n actions?: Object,\n actionsContributions?: Object,\n modelOptions?: ModelOptions,\n ) {\n super();\n\n // no actions gives an empty collection\n if (!Array.isArray(actions)) {\n this.collection = [];\n } else if (Array.isArray(actionsContributions)) {\n const actionModels = [];\n for (const actionData of actions) {\n const actionContribution = actionsContributions.find(\n (
|
|
1
|
+
{"version":3,"file":"ActionCollection.js","names":["_BaseCollection","_interopRequireDefault","require","_ActionModel","ActionCollection","BaseCollection","constructor","actions","actionsContributions","modelOptions","Array","isArray","collection","actionModels","actionData","actionContribution","_find","default","call","contribution","name","type","push","ActionModel","getActionByKey","key","_context","newCollection","_filter","action","first","getActionsByType","_context2","_includes","getActionsByLayoutHint","hints","_context3","layouthint","has","hasActionsByLayoutHint","length","routePath","_context4","enabledRoutes","isDisabled","path","_map","selfhref","join","exports"],"sources":["../../../src/models/actions/ActionCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionModel from \"./ActionModel\";\nimport type { ModelOptions } from \"../types\";\n\n/**\n * Collection of actions\n */\nexport default class ActionCollection extends BaseCollection<ActionModel> {\n constructor(\n actions?: Object,\n actionsContributions?: Object,\n modelOptions?: ModelOptions,\n ) {\n super();\n\n // no actions gives an empty collection\n if (!Array.isArray(actions)) {\n this.collection = [];\n } else if (Array.isArray(actionsContributions)) {\n const actionModels = [];\n for (const actionData of actions) {\n const actionContribution = actionsContributions.find(\n (contribution) =>\n contribution.name === actionData.name &&\n contribution.type !== \"service-operation\",\n );\n\n if (actionContribution) {\n actionModels.push(\n new ActionModel(actionData, actionContribution, modelOptions),\n );\n }\n }\n\n this.collection = actionModels;\n }\n }\n\n /**\n * Retrieve action by key\n */\n getActionByKey(key: string): ActionModel | null {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) => action.key === key);\n\n return newCollection.first;\n }\n\n /**\n * Retrieve actions by type\n */\n getActionsByType(type: string | Array<string>): ActionCollection {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) =>\n Array.isArray(type) ? type.includes(action.type) : action.type === type,\n );\n\n return newCollection;\n }\n\n /**\n * Retrieve actions including a layout hint\n */\n getActionsByLayoutHint(...hints: Array<string>): ActionCollection {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) =>\n action.layouthint.has(...hints),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if an action with layout hint exists\n */\n hasActionsByLayoutHint(...hints: Array<string>): boolean {\n return this.getActionsByLayoutHint(...hints).length > 0;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n const enabledRoutes = this.collection.filter(\n (action) => !action.isDisabled,\n );\n\n if (enabledRoutes.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = enabledRoutes.map((action) => action.selfhref.path).join(\"|\");\n\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -79,7 +79,12 @@ class ApplicationModel extends _ResourceModel.default {
|
|
|
79
79
|
if (authenticationTypes) {
|
|
80
80
|
var _context;
|
|
81
81
|
//put primary first
|
|
82
|
-
return ((_context = authenticationTypes) == null ? void 0 : Function.call.bind((0, _sort.default)(_context), _context))?.((a, b) =>
|
|
82
|
+
return ((_context = authenticationTypes) == null ? void 0 : Function.call.bind((0, _sort.default)(_context), _context))?.((a, b) => {
|
|
83
|
+
if (a.isPrimary === b.isPrimary) {
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
return a.isPrimary ? -1 : 1;
|
|
87
|
+
});
|
|
83
88
|
}
|
|
84
89
|
return [_constants.DEFAULT_AUTHENTICATION_TYPE];
|
|
85
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationModel.js","names":["_ResourceModel","_interopRequireDefault","require","_LinkModel","_UserServicesModel","_exceptions","_constants","_Cache","ApplicationModel","ResourceModel","constructor","modularuiResponse","_defineProperty2","default","Cache","setItem","primaryAuthenticationType","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","_find","call","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","_context","Function","bind","_sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","modelOptions","_userServices","UserServicesModel","isLoggedIn","userHref","userLink","userMustChangePassword","mustChangePassword","exports"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n // store authentication type in session cache, to make it available when application is no longer available (when not permitted for example)\n Cache.setItem(\"primaryAuthenticationType\", this.primaryAuthenticationType);\n }\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\",\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\",\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n if (authenticationTypes) {\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType)
|
|
1
|
+
{"version":3,"file":"ApplicationModel.js","names":["_ResourceModel","_interopRequireDefault","require","_LinkModel","_UserServicesModel","_exceptions","_constants","_Cache","ApplicationModel","ResourceModel","constructor","modularuiResponse","_defineProperty2","default","Cache","setItem","primaryAuthenticationType","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","_find","call","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","_context","Function","bind","_sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","modelOptions","_userServices","UserServicesModel","isLoggedIn","userHref","userLink","userMustChangePassword","mustChangePassword","exports"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n // store authentication type in session cache, to make it available when application is no longer available (when not permitted for example)\n Cache.setItem(\"primaryAuthenticationType\", this.primaryAuthenticationType);\n }\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\",\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\",\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n if (authenticationTypes) {\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) => {\n if (a.isPrimary === b.isPrimary) {\n return 0;\n }\n\n return a.isPrimary ? -1 : 1;\n },\n );\n }\n\n return [DEFAULT_AUTHENTICATION_TYPE];\n }\n\n /**\n * Returns the primary authentication type\n * @returns {AuthenticationType}\n */\n get primaryAuthenticationType(): AuthenticationType {\n return this.authenticationTypes[0];\n }\n\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\n \"modelcatalog\",\n \"/modelcatalog\",\n \"Model catalog\",\n this.modelOptions,\n );\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices?.userLink) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get userMustChangePassword(): boolean {\n return this.userServices?.mustChangePassword ?? false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -108,12 +108,10 @@ class ChoiceAttributeModel extends _AttributeModel.default {
|
|
|
108
108
|
*/
|
|
109
109
|
get lookupParameterType() {
|
|
110
110
|
const parameterType = this.getContribution("parameterType");
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return _constants.PARAMETER_TYPES.BODY;
|
|
114
|
-
default:
|
|
115
|
-
return _constants.PARAMETER_TYPES.QUERY;
|
|
111
|
+
if (parameterType === "bodyParameter") {
|
|
112
|
+
return _constants.PARAMETER_TYPES.BODY;
|
|
116
113
|
}
|
|
114
|
+
return _constants.PARAMETER_TYPES.QUERY;
|
|
117
115
|
}
|
|
118
116
|
|
|
119
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChoiceAttributeModel.js","names":["_full","require","_objects","_AttributeModel","_interopRequireDefault","_ChoiceAttributeOptionCollection","_ChoiceAttributeOptionModel","_CompositeAttributeModel","_ContentConfigurationElements","_LayoutHints","_constants","ChoiceAttributeModel","AttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty2","default","_referenceDate","getData","Date","toISOString","split","_options","ChoiceAttributeOptionCollection","create","referenceDate","layouthint","has","SORT_OPTIONS","sortOptions","isApplicableModel","contributions","type","optionMode","getContribution","hasLookupLink","lookupLink","lookupListLink","optionType","isUser","getInitialChildModelLinks","links","hasContentConfiguration","hasContentFromData","conceptLink","push","options","setChildModels","models","errors","conceptLinkHref","href","concept","_find","call","model","selfhref","equalsWithParameters","link","getLinkByKey","lookupParameterType","PARAMETER_TYPES","BODY","method","HTTP_METHODS","POST","parameterType","QUERY","lookupListLabel","lookupList","label","date","selected","_context","_map","option","code","readonlyvalue","_context2","join","initvalue","Array","isArray","_initvalue","length","getValue","_context3","hasValue","getInputValue","toggleOption","_context4","_includes","disableOption","enableOption","isMultiple","deselectAll","select","inputvalue","deselect","addOption","_context5","opt","choicetype","_context6","hint","multiplechoice","isTree","some","reset","mergeAttribute","oldAttribute","addNotExistingOptions","removeNotExistingOptions","readonly","mergeOptions","isValid","update","value","updateLastModification","values","forEach","val","isChoiceAttributeOptionModel","equals","newVal","klona","add","toString","updateByAttribute","otherAttribute","CompositeAttributeModel","otherValue","getChildrenIds","console","error","addMissingError","receivedAttribute","isChangedSince","_errorCollection","addServerError","_hasContentConfiguration","contentConfiguration","_context7","content","optionElements","optionElementConfig","optionElement","contentElement","RENDER_SECTION_LABEL","ContentConfigurationElements","placeholder","id","message","properties","ANSWER_OPTION_KEY","_context8","optionKey","foundOption","getContentConfiguredLabel","readonlyWidth","ATTRIBUTE_WIDTH","MEDIUM","exports"],"sources":["../../../src/models/attributes/ChoiceAttributeModel.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\n\nimport { has } from \"../../utils/helpers/objects\";\n\nimport AttributeModel from \"./AttributeModel\";\nimport ChoiceAttributeOptionCollection from \"./ChoiceAttributeOptionCollection\";\nimport ChoiceAttributeOptionModel from \"./ChoiceAttributeOptionModel\";\nimport CompositeAttributeModel from \"./CompositeAttributeModel\";\nimport ContentConfigurationElements from \"../contentconfiguration/ContentConfigurationElements\";\n\nimport {\n RENDER_SECTION_LABEL,\n SORT_OPTIONS,\n} from \"../../constants/LayoutHints\";\nimport {\n ATTRIBUTE_WIDTH,\n PARAMETER_TYPES,\n HTTP_METHODS,\n} from \"../../constants\";\n\nimport type {\n ModularUIModel,\n AttributeType,\n FormErrorAnchor,\n ModelOptions,\n} from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Model for a choice attribute\n */\nexport default class ChoiceAttributeModel extends AttributeModel {\n _referenceDate: ISO_DATE;\n _options: ChoiceAttributeOptionCollection;\n _hasContentConfiguration: boolean;\n\n /**\n * Constructs a choice attribute\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this._referenceDate = this.getData(\n \"referenceDate\",\n new Date().toISOString().split(\"T\")[0],\n );\n this._options = ChoiceAttributeOptionCollection.create(\n attribute,\n attributeContributions,\n { ...modelOptions, referenceDate: this.referenceDate },\n );\n\n if (this.layouthint.has(SORT_OPTIONS)) {\n this._options.sortOptions = true;\n }\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return (\n contributions.type !== \"composite\" &&\n contributions.type !== \"boolean\" &&\n (contributions.type === \"choice\" ||\n contributions.type === \"array\" ||\n has(contributions, \"enumerated\") ||\n has(contributions, \"options\"))\n );\n }\n\n /**\n */\n get type(): string {\n const optionMode = this.getContribution(\"optionMode\", \"\");\n const hasLookupLink = this.lookupLink || this.lookupListLink;\n\n if (\n optionMode === \"lookup\" ||\n (optionMode === \"dynamicWithThreshold\" && hasLookupLink)\n ) {\n return \"lookup\";\n }\n\n return \"choice\";\n }\n\n /**\n */\n get optionType(): string {\n return this.contributions?.optionType ?? \"generic\";\n }\n\n /**\n */\n get isUser(): boolean {\n return this.optionType === \"user\";\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const links = [];\n\n if (this.hasContentConfiguration) {\n if (!this.hasContentFromData && this.conceptLink) {\n links.push(this.conceptLink);\n }\n\n links.push(...this.options.getInitialChildModelLinks());\n }\n\n return links;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n const conceptLinkHref = this.conceptLink?.href;\n if (conceptLinkHref) {\n this.concept = models.find(\n (model) =>\n model.type === \"ConceptDetail\" &&\n model.selfhref.equalsWithParameters(conceptLinkHref),\n );\n }\n\n this.options.setChildModels(models, errors);\n }\n\n /**\n * Retrieve lookup service link\n */\n get lookupLink(): LinkModel | null {\n const link = this.links.getLinkByKey(\"lookupOptions\");\n if (link && this.lookupParameterType === PARAMETER_TYPES.BODY) {\n link.method = HTTP_METHODS.POST;\n }\n return link;\n }\n\n /**\n * Indicate if the lookup must be done with POST or GET\n */\n get lookupParameterType(): $Values<typeof PARAMETER_TYPES> {\n const parameterType = this.getContribution(\"parameterType\");\n switch (parameterType) {\n case \"bodyParameter\":\n return PARAMETER_TYPES.BODY;\n default:\n return PARAMETER_TYPES.QUERY;\n }\n }\n\n /**\n * Retrieve lookup service as list link\n */\n get lookupListLink(): LinkModel | null {\n return this.links.getLinkByKey(\"lookupList\");\n }\n\n /**\n */\n get lookupListLabel(): string {\n return this.contributions.lookupList?.label ?? \"\";\n }\n\n /**\n * Retrieve reference date of attribute which can be used as entryDate for content\n */\n get referenceDate(): ISO_DATE {\n return this._referenceDate;\n }\n\n /**\n * Set reference date for concepts and content\n */\n set referenceDate(date: string) {\n this._referenceDate = date;\n\n this.options.referenceDate = date;\n }\n\n /**\n * Retrieve available choice options\n */\n get options(): ChoiceAttributeOptionCollection {\n return this._options;\n }\n\n /**\n * Getting all enabled options\n */\n get selected(): Array<string> {\n // $FlowFixMe[incompatible-call]\n return this.options.selected.map<string, ChoiceAttributeOptionModel>(\n (option: ChoiceAttributeOptionModel) => option.code,\n );\n }\n\n /**\n * Flatten options and filter out the options that are not selected\n */\n get readonlyvalue(): string {\n return this.options.selected.map((option) => option.label).join(\", \");\n }\n\n /**\n */\n get initvalue(): any {\n if (Array.isArray(this._initvalue) && this._initvalue.length === 0) {\n return null;\n }\n\n return this._initvalue;\n }\n\n /**\n * Retrieve list of selected options, joined with comma\n */\n getValue(): string | null {\n return this.options.selected.length > 0\n ? this.options.selected.map((option) => option.code).join(\",\")\n : null;\n }\n\n /**\n */\n hasValue(): boolean {\n return this.options.selected.length > 0;\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.selected.join(\",\");\n }\n\n /**\n * Setting an option selected or unselected based on the current state\n */\n toggleOption(code: string) {\n if (this.selected.includes(code)) {\n this.disableOption(code);\n } else {\n this.enableOption(code);\n }\n }\n\n /**\n * Enable a option\n */\n enableOption(code: string) {\n if (!this.isMultiple) {\n this.options.deselectAll();\n }\n\n this.options.select(code);\n this.inputvalue = this.getInputValue();\n }\n\n /**\n * Disable a option\n */\n disableOption(code: string) {\n this.options.deselect(code);\n this.inputvalue = this.getInputValue();\n }\n\n /**\n * Add a new option to the collection of lookup options\n */\n addOption(option: Object) {\n if (!this.isMultiple) {\n this.options.deselectAll();\n }\n\n if (this.options.find((opt) => opt.code === option.code) === null) {\n this.options.addOption(option.code, option);\n }\n }\n\n /**\n * Getting the type of choice filter. For instance checkbox, radiobutton, combobox.\n */\n get choicetype():\n | \"checkbox\"\n | \"radiobutton\"\n | \"combobox\"\n | \"list\"\n | \"listview\"\n | \"table\"\n | \"longlist\"\n | \"toggle\" {\n return (\n [\n \"checkbox\",\n \"radiobutton\",\n \"combobox\",\n \"list\",\n \"listview\",\n \"table\",\n \"longlist\",\n \"toggle\",\n ].find((hint) => this.layouthint.has(hint)) || \"checkbox\"\n );\n }\n\n /**\n * Can multiple options be selected\n */\n get isMultiple(): boolean {\n return this.contributions.multiplechoice || this.choicetype === \"checkbox\";\n }\n\n /**\n * Check if options need to be rendered as tree\n */\n get isTree(): boolean {\n return (\n has(this.contributions, \"options\") &&\n this.contributions.options.some((option) => has(option, \"children\"))\n );\n }\n\n /**\n * Reset choice attribute to unselected list\n */\n reset() {\n this.options.deselectAll();\n }\n\n /**\n */\n mergeAttribute(\n oldAttribute: AttributeType,\n addNotExistingOptions: boolean = false,\n removeNotExistingOptions: boolean = false,\n ) {\n // when attribute is readonly, don't merge the options no modifications necessary\n if (!this.readonly && oldAttribute instanceof ChoiceAttributeModel) {\n this.concept = oldAttribute.concept;\n this.options.mergeOptions(\n oldAttribute.options,\n addNotExistingOptions ?? this.type === \"lookup\",\n removeNotExistingOptions,\n );\n this.options.deselectAll();\n\n if (oldAttribute.isValid && oldAttribute.inputvalue !== null) {\n this.update(oldAttribute.inputvalue);\n }\n }\n }\n\n /**\n * Update attribute by name and value\n */\n update(value: any): ChoiceAttributeModel {\n if (this.readonly) {\n return this;\n }\n\n this.updateLastModification();\n\n let values = [];\n\n if (Array.isArray(value)) {\n values = value;\n } else if (typeof value === \"string\" && this.isMultiple) {\n values = value.split(\",\");\n } else if (value != null) {\n values = [value];\n }\n values.forEach((val) => {\n if (typeof val === \"object\" && val.isChoiceAttributeOptionModel) {\n // option does not exist in existing options, add it. This can happen when lookup list has other options then lookup options\n if (!this.options.some((option) => option.equals(val))) {\n const newVal = klona(val);\n newVal.selected = false;\n this.options.add(newVal);\n }\n this.toggleOption(val.code);\n } else if (\n (typeof val === \"number\" ||\n typeof val === \"string\" ||\n typeof val === \"boolean\") &&\n this.options.some((option) => option.code.toString() === val.toString())\n ) {\n this.toggleOption(val.toString());\n }\n });\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (\n otherAttribute instanceof ChoiceAttributeModel ||\n otherAttribute instanceof CompositeAttributeModel\n ) {\n let otherValue;\n if (otherAttribute instanceof ChoiceAttributeModel) {\n otherValue = otherAttribute.options.selected;\n } else if (otherAttribute instanceof CompositeAttributeModel) {\n otherValue = otherAttribute.getChildrenIds();\n }\n if (otherValue !== null) {\n this.update(otherValue);\n }\n } else {\n console.error(\n `update of choice attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n * Registers a missing error that was received from the server\n */\n addMissingError(receivedAttribute?: AttributeType): void {\n if (this.isChangedSince(0)) {\n this._errorCollection.addServerError(\"Constraint.Missing\");\n }\n // update choice options\n if (receivedAttribute instanceof ChoiceAttributeModel) {\n this.mergeAttribute(receivedAttribute, true, true);\n }\n }\n\n /**\n */\n set hasContentConfiguration(hasContentConfiguration: boolean) {\n this._hasContentConfiguration =\n this.contentConfiguration !== null || hasContentConfiguration;\n }\n\n /**\n */\n get hasContentConfiguration(): boolean {\n return this._hasContentConfiguration;\n }\n\n /**\n * Get content configuration configured on the attribute.\n * Only applicable for taxonomy element and knowledge codemaps,\n * content configuration for instrument questions is available on the form object\n */\n get contentConfiguration(): ContentConfigurationElements | null {\n if (\n !this.contributions.content ||\n !this.contributions.content.optionElements\n ) {\n return null;\n }\n\n // Add RENDER_SECTION_LABEL to all content configuration to make sure the label of a section is always rendered on taxonomy and knowlege codemaps\n const optionElementConfig = this.contributions.content.optionElements.map(\n (optionElement) => {\n if (\"contentElement\" in optionElement) {\n return {\n contentElement: {\n ...optionElement.contentElement,\n layouthint: [RENDER_SECTION_LABEL],\n },\n };\n }\n\n return optionElement;\n },\n );\n\n return new ContentConfigurationElements(optionElementConfig);\n }\n\n /**\n * Get placeholder text\n */\n get placeholder(): string {\n return this.getContribution(\"placeholder\", \"\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n\n const ANSWER_OPTION_KEY = \"answer-option-key\";\n\n if (properties && has(properties, ANSWER_OPTION_KEY)) {\n const optionKey = properties[ANSWER_OPTION_KEY];\n const foundOption = this.options.find(\n (option) => option.code === optionKey,\n );\n if (foundOption) {\n properties[ANSWER_OPTION_KEY] = foundOption.getContentConfiguredLabel(\n this.contentConfiguration,\n );\n }\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ChoiceAttributeModel.js","names":["_full","require","_objects","_AttributeModel","_interopRequireDefault","_ChoiceAttributeOptionCollection","_ChoiceAttributeOptionModel","_CompositeAttributeModel","_ContentConfigurationElements","_LayoutHints","_constants","ChoiceAttributeModel","AttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty2","default","_referenceDate","getData","Date","toISOString","split","_options","ChoiceAttributeOptionCollection","create","referenceDate","layouthint","has","SORT_OPTIONS","sortOptions","isApplicableModel","contributions","type","optionMode","getContribution","hasLookupLink","lookupLink","lookupListLink","optionType","isUser","getInitialChildModelLinks","links","hasContentConfiguration","hasContentFromData","conceptLink","push","options","setChildModels","models","errors","conceptLinkHref","href","concept","_find","call","model","selfhref","equalsWithParameters","link","getLinkByKey","lookupParameterType","PARAMETER_TYPES","BODY","method","HTTP_METHODS","POST","parameterType","QUERY","lookupListLabel","lookupList","label","date","selected","_context","_map","option","code","readonlyvalue","_context2","join","initvalue","Array","isArray","_initvalue","length","getValue","_context3","hasValue","getInputValue","toggleOption","_context4","_includes","disableOption","enableOption","isMultiple","deselectAll","select","inputvalue","deselect","addOption","_context5","opt","choicetype","_context6","hint","multiplechoice","isTree","some","reset","mergeAttribute","oldAttribute","addNotExistingOptions","removeNotExistingOptions","readonly","mergeOptions","isValid","update","value","updateLastModification","values","forEach","val","isChoiceAttributeOptionModel","equals","newVal","klona","add","toString","updateByAttribute","otherAttribute","CompositeAttributeModel","otherValue","getChildrenIds","console","error","addMissingError","receivedAttribute","isChangedSince","_errorCollection","addServerError","_hasContentConfiguration","contentConfiguration","_context7","content","optionElements","optionElementConfig","optionElement","contentElement","RENDER_SECTION_LABEL","ContentConfigurationElements","placeholder","id","message","properties","ANSWER_OPTION_KEY","_context8","optionKey","foundOption","getContentConfiguredLabel","readonlyWidth","ATTRIBUTE_WIDTH","MEDIUM","exports"],"sources":["../../../src/models/attributes/ChoiceAttributeModel.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\n\nimport { has } from \"../../utils/helpers/objects\";\n\nimport AttributeModel from \"./AttributeModel\";\nimport ChoiceAttributeOptionCollection from \"./ChoiceAttributeOptionCollection\";\nimport ChoiceAttributeOptionModel from \"./ChoiceAttributeOptionModel\";\nimport CompositeAttributeModel from \"./CompositeAttributeModel\";\nimport ContentConfigurationElements from \"../contentconfiguration/ContentConfigurationElements\";\n\nimport {\n RENDER_SECTION_LABEL,\n SORT_OPTIONS,\n} from \"../../constants/LayoutHints\";\nimport {\n ATTRIBUTE_WIDTH,\n PARAMETER_TYPES,\n HTTP_METHODS,\n} from \"../../constants\";\n\nimport type {\n ModularUIModel,\n AttributeType,\n FormErrorAnchor,\n ModelOptions,\n} from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Model for a choice attribute\n */\nexport default class ChoiceAttributeModel extends AttributeModel {\n _referenceDate: ISO_DATE;\n _options: ChoiceAttributeOptionCollection;\n _hasContentConfiguration: boolean;\n\n /**\n * Constructs a choice attribute\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this._referenceDate = this.getData(\n \"referenceDate\",\n new Date().toISOString().split(\"T\")[0],\n );\n this._options = ChoiceAttributeOptionCollection.create(\n attribute,\n attributeContributions,\n { ...modelOptions, referenceDate: this.referenceDate },\n );\n\n if (this.layouthint.has(SORT_OPTIONS)) {\n this._options.sortOptions = true;\n }\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return (\n contributions.type !== \"composite\" &&\n contributions.type !== \"boolean\" &&\n (contributions.type === \"choice\" ||\n contributions.type === \"array\" ||\n has(contributions, \"enumerated\") ||\n has(contributions, \"options\"))\n );\n }\n\n /**\n */\n get type(): string {\n const optionMode = this.getContribution(\"optionMode\", \"\");\n const hasLookupLink = this.lookupLink || this.lookupListLink;\n\n if (\n optionMode === \"lookup\" ||\n (optionMode === \"dynamicWithThreshold\" && hasLookupLink)\n ) {\n return \"lookup\";\n }\n\n return \"choice\";\n }\n\n /**\n */\n get optionType(): string {\n return this.contributions?.optionType ?? \"generic\";\n }\n\n /**\n */\n get isUser(): boolean {\n return this.optionType === \"user\";\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const links = [];\n\n if (this.hasContentConfiguration) {\n if (!this.hasContentFromData && this.conceptLink) {\n links.push(this.conceptLink);\n }\n\n links.push(...this.options.getInitialChildModelLinks());\n }\n\n return links;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n const conceptLinkHref = this.conceptLink?.href;\n if (conceptLinkHref) {\n this.concept = models.find(\n (model) =>\n model.type === \"ConceptDetail\" &&\n model.selfhref.equalsWithParameters(conceptLinkHref),\n );\n }\n\n this.options.setChildModels(models, errors);\n }\n\n /**\n * Retrieve lookup service link\n */\n get lookupLink(): LinkModel | null {\n const link = this.links.getLinkByKey(\"lookupOptions\");\n if (link && this.lookupParameterType === PARAMETER_TYPES.BODY) {\n link.method = HTTP_METHODS.POST;\n }\n return link;\n }\n\n /**\n * Indicate if the lookup must be done with POST or GET\n */\n get lookupParameterType(): $Values<typeof PARAMETER_TYPES> {\n const parameterType = this.getContribution(\"parameterType\");\n if (parameterType === \"bodyParameter\") {\n return PARAMETER_TYPES.BODY;\n }\n return PARAMETER_TYPES.QUERY;\n }\n\n /**\n * Retrieve lookup service as list link\n */\n get lookupListLink(): LinkModel | null {\n return this.links.getLinkByKey(\"lookupList\");\n }\n\n /**\n */\n get lookupListLabel(): string {\n return this.contributions.lookupList?.label ?? \"\";\n }\n\n /**\n * Retrieve reference date of attribute which can be used as entryDate for content\n */\n get referenceDate(): ISO_DATE {\n return this._referenceDate;\n }\n\n /**\n * Set reference date for concepts and content\n */\n set referenceDate(date: string) {\n this._referenceDate = date;\n\n this.options.referenceDate = date;\n }\n\n /**\n * Retrieve available choice options\n */\n get options(): ChoiceAttributeOptionCollection {\n return this._options;\n }\n\n /**\n * Getting all enabled options\n */\n get selected(): Array<string> {\n // $FlowFixMe[incompatible-call]\n return this.options.selected.map<string, ChoiceAttributeOptionModel>(\n (option: ChoiceAttributeOptionModel) => option.code,\n );\n }\n\n /**\n * Flatten options and filter out the options that are not selected\n */\n get readonlyvalue(): string {\n return this.options.selected.map((option) => option.label).join(\", \");\n }\n\n /**\n */\n get initvalue(): any {\n if (Array.isArray(this._initvalue) && this._initvalue.length === 0) {\n return null;\n }\n\n return this._initvalue;\n }\n\n /**\n * Retrieve list of selected options, joined with comma\n */\n getValue(): string | null {\n return this.options.selected.length > 0\n ? this.options.selected.map((option) => option.code).join(\",\")\n : null;\n }\n\n /**\n */\n hasValue(): boolean {\n return this.options.selected.length > 0;\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.selected.join(\",\");\n }\n\n /**\n * Setting an option selected or unselected based on the current state\n */\n toggleOption(code: string) {\n if (this.selected.includes(code)) {\n this.disableOption(code);\n } else {\n this.enableOption(code);\n }\n }\n\n /**\n * Enable a option\n */\n enableOption(code: string) {\n if (!this.isMultiple) {\n this.options.deselectAll();\n }\n\n this.options.select(code);\n this.inputvalue = this.getInputValue();\n }\n\n /**\n * Disable a option\n */\n disableOption(code: string) {\n this.options.deselect(code);\n this.inputvalue = this.getInputValue();\n }\n\n /**\n * Add a new option to the collection of lookup options\n */\n addOption(option: Object) {\n if (!this.isMultiple) {\n this.options.deselectAll();\n }\n\n if (this.options.find((opt) => opt.code === option.code) === null) {\n this.options.addOption(option.code, option);\n }\n }\n\n /**\n * Getting the type of choice filter. For instance checkbox, radiobutton, combobox.\n */\n get choicetype():\n | \"checkbox\"\n | \"radiobutton\"\n | \"combobox\"\n | \"list\"\n | \"listview\"\n | \"table\"\n | \"longlist\"\n | \"toggle\" {\n return (\n [\n \"checkbox\",\n \"radiobutton\",\n \"combobox\",\n \"list\",\n \"listview\",\n \"table\",\n \"longlist\",\n \"toggle\",\n ].find((hint) => this.layouthint.has(hint)) || \"checkbox\"\n );\n }\n\n /**\n * Can multiple options be selected\n */\n get isMultiple(): boolean {\n return this.contributions.multiplechoice || this.choicetype === \"checkbox\";\n }\n\n /**\n * Check if options need to be rendered as tree\n */\n get isTree(): boolean {\n return (\n has(this.contributions, \"options\") &&\n this.contributions.options.some((option) => has(option, \"children\"))\n );\n }\n\n /**\n * Reset choice attribute to unselected list\n */\n reset() {\n this.options.deselectAll();\n }\n\n /**\n */\n mergeAttribute(\n oldAttribute: AttributeType,\n addNotExistingOptions: boolean = false,\n removeNotExistingOptions: boolean = false,\n ) {\n // when attribute is readonly, don't merge the options no modifications necessary\n if (!this.readonly && oldAttribute instanceof ChoiceAttributeModel) {\n this.concept = oldAttribute.concept;\n this.options.mergeOptions(\n oldAttribute.options,\n addNotExistingOptions ?? this.type === \"lookup\",\n removeNotExistingOptions,\n );\n this.options.deselectAll();\n\n if (oldAttribute.isValid && oldAttribute.inputvalue !== null) {\n this.update(oldAttribute.inputvalue);\n }\n }\n }\n\n /**\n * Update attribute by name and value\n */\n update(value: any): ChoiceAttributeModel {\n if (this.readonly) {\n return this;\n }\n\n this.updateLastModification();\n\n let values = [];\n\n if (Array.isArray(value)) {\n values = value;\n } else if (typeof value === \"string\" && this.isMultiple) {\n values = value.split(\",\");\n } else if (value != null) {\n values = [value];\n }\n values.forEach((val) => {\n if (typeof val === \"object\" && val.isChoiceAttributeOptionModel) {\n // option does not exist in existing options, add it. This can happen when lookup list has other options then lookup options\n if (!this.options.some((option) => option.equals(val))) {\n const newVal = klona(val);\n newVal.selected = false;\n this.options.add(newVal);\n }\n this.toggleOption(val.code);\n } else if (\n (typeof val === \"number\" ||\n typeof val === \"string\" ||\n typeof val === \"boolean\") &&\n this.options.some((option) => option.code.toString() === val.toString())\n ) {\n this.toggleOption(val.toString());\n }\n });\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (\n otherAttribute instanceof ChoiceAttributeModel ||\n otherAttribute instanceof CompositeAttributeModel\n ) {\n let otherValue;\n if (otherAttribute instanceof ChoiceAttributeModel) {\n otherValue = otherAttribute.options.selected;\n } else if (otherAttribute instanceof CompositeAttributeModel) {\n otherValue = otherAttribute.getChildrenIds();\n }\n if (otherValue !== null) {\n this.update(otherValue);\n }\n } else {\n console.error(\n `update of choice attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n * Registers a missing error that was received from the server\n */\n addMissingError(receivedAttribute?: AttributeType): void {\n if (this.isChangedSince(0)) {\n this._errorCollection.addServerError(\"Constraint.Missing\");\n }\n // update choice options\n if (receivedAttribute instanceof ChoiceAttributeModel) {\n this.mergeAttribute(receivedAttribute, true, true);\n }\n }\n\n /**\n */\n set hasContentConfiguration(hasContentConfiguration: boolean) {\n this._hasContentConfiguration =\n this.contentConfiguration !== null || hasContentConfiguration;\n }\n\n /**\n */\n get hasContentConfiguration(): boolean {\n return this._hasContentConfiguration;\n }\n\n /**\n * Get content configuration configured on the attribute.\n * Only applicable for taxonomy element and knowledge codemaps,\n * content configuration for instrument questions is available on the form object\n */\n get contentConfiguration(): ContentConfigurationElements | null {\n if (\n !this.contributions.content ||\n !this.contributions.content.optionElements\n ) {\n return null;\n }\n\n // Add RENDER_SECTION_LABEL to all content configuration to make sure the label of a section is always rendered on taxonomy and knowlege codemaps\n const optionElementConfig = this.contributions.content.optionElements.map(\n (optionElement) => {\n if (\"contentElement\" in optionElement) {\n return {\n contentElement: {\n ...optionElement.contentElement,\n layouthint: [RENDER_SECTION_LABEL],\n },\n };\n }\n\n return optionElement;\n },\n );\n\n return new ContentConfigurationElements(optionElementConfig);\n }\n\n /**\n * Get placeholder text\n */\n get placeholder(): string {\n return this.getContribution(\"placeholder\", \"\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n\n const ANSWER_OPTION_KEY = \"answer-option-key\";\n\n if (properties && has(properties, ANSWER_OPTION_KEY)) {\n const optionKey = properties[ANSWER_OPTION_KEY];\n const foundOption = this.options.find(\n (option) => option.code === optionKey,\n );\n if (foundOption) {\n properties[ANSWER_OPTION_KEY] = foundOption.getContentConfiguredLabel(\n this.contentConfiguration,\n );\n }\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -356,7 +356,7 @@ class CompositeAttributeModel extends _AttributeModel.default {
|
|
|
356
356
|
equals(otherAttribute) {
|
|
357
357
|
return this.key === otherAttribute.key && this.parentKey === otherAttribute.parentKey || this.children.some(
|
|
358
358
|
//$FlowFixMe[method-unbinding]
|
|
359
|
-
child => child.equals
|
|
359
|
+
child => child.equals?.(otherAttribute));
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeAttributeModel.js","names":["_AttributeModel","_interopRequireDefault","require","_CompositeAttributeChildCollection","_ConstraintCollection","_RangeConstraint","_MandatoryRangeConstraint","_constants","_exceptions","_NumberAttributeModel","_DatetimeAttributeModel","CompositeAttributeModel","AttributeModel","constructor","data","contributions","modelOptions","_defineProperty2","default","_children","CompositeAttributeChildCollection","create","setChildrenOptionality","isApplicableModel","type","_includes","call","getInitialChildModelLinks","children","setChildModels","models","errors","key","isRange","_context","Function","bind","isRangeAttribute","attribute","NumberAttributeModel","DatetimeAttributeModel","start","all","end","size","getInputValue","hasValue","some","child","constraintCollection","constraints","ConstraintCollection","add","_serverConstraints","addConstraints","setUseClientsideValidation","enabled","_useClientsideValidation","forEach","validate","value","useClientsideValidation","isValid","setIsValid","getIsValid","startAttribute","endAttribute","allChildsEntered","every","RangeConstraint","mandatory","allChildsOptional","MandatoryRangeConstraint","hasServerErrors","errorCollection","serverErrors","length","hasErrors","hasItems","reset","getChildByAttribute","_context2","_find","equals","getChildByKey","_context3","mergeAttribute","oldAttribute","concept","withChildAttribute","update","changedAttribute","IllegalArgumentException","updateLastModification","updateByAttribute","otherAttribute","otherChild","console","error","childrenAreOptional","configuredMandatory","readonly","readonlyvalue","initvalue","getFormData","name","getValue","getChildrenIds","values","Array","isArray","_map","val","_id","isResult","_isResult","indicateContentConfiguration","contentConfiguration","parentKey","readonlyWidth","ATTRIBUTE_WIDTH","LARGE","EXTRA_LARGE","MEDIUM","_default","exports"],"sources":["../../../src/models/attributes/CompositeAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\n\nimport CompositeAttributeChildCollection from \"./CompositeAttributeChildCollection\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RangeConstraint from \"./input-constraints/RangeConstraint\";\nimport MandatoryRangeConstraint from \"./input-constraints/MandatoryRangeConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\n\nimport type { ModularUIModel, AttributeType, ModelOptions } from \"../types\";\nimport type ContentConfiguration from \"../contentconfiguration/ContentConfiguration\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n */\nclass CompositeAttributeModel extends AttributeModel {\n _children: CompositeAttributeChildCollection;\n\n /**\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n this._children = CompositeAttributeChildCollection.create(\n data,\n contributions,\n modelOptions,\n );\n\n this.setChildrenOptionality();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const type = contributions?.type;\n return type && (type === \"composite\" || type.includes(\"range\"));\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.children.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.children.setChildModels(models, errors);\n }\n\n /**\n */\n get type(): string {\n // temp fix for results and given answers on list result detail panel\n if (this.key === \"results\" || this.key === \"givenAnswers\") {\n return \"composite\";\n }\n\n return this.isRange ? \"range\" : \"composite\";\n }\n\n /**\n */\n get isRange(): boolean {\n return this.contributions?.type?.includes(\"range\");\n }\n\n /**\n */\n get children(): CompositeAttributeChildCollection {\n return this._children;\n }\n\n /**\n */\n set children(children: CompositeAttributeChildCollection) {\n this._children = children;\n }\n\n /**\n */\n isRangeAttribute(attribute: AttributeType): boolean {\n return (\n attribute instanceof NumberAttributeModel ||\n attribute instanceof DatetimeAttributeModel\n );\n }\n\n /**\n */\n get start(): AttributeType | null {\n return this.children.all[0];\n }\n\n /**\n */\n get end(): AttributeType {\n return this.children.all[this.children.size - 1];\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.children.getInputValue();\n }\n\n /**\n * Check if at least one child has value\n */\n hasValue(): boolean {\n return this.children.some((child) => child.hasValue());\n }\n\n /**\n */\n get constraintCollection(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this._serverConstraints);\n constraints.add(this.addConstraints());\n\n return constraints;\n }\n\n /**\n * Used to programmatically overwrite the setting USE_CLIENTSIDE_VALIDATION\n */\n setUseClientsideValidation(enabled: boolean) {\n super._useClientsideValidation = enabled;\n\n this.children.all.forEach((child) =>\n child.setUseClientsideValidation(enabled),\n );\n }\n\n /**\n * Validate input\n */\n // eslint-disable-next-line no-unused-vars\n validate(value: string): boolean {\n // when client side validation is disabled, this attribute is always valid\n if (!this.useClientsideValidation()) {\n return true;\n }\n\n let isValid = this.children.validate();\n\n if (isValid) {\n isValid = this.constraintCollection.validate();\n }\n\n this.setIsValid(isValid);\n return this.getIsValid();\n }\n\n /**\n */\n get isValid(): boolean {\n return this.validate(\"\");\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n const startAttribute = this.start;\n const endAttribute = this.end;\n if (this.isRange && startAttribute != null && endAttribute != null) {\n const allChildsEntered = this.children.every((child) => child.hasValue());\n if (allChildsEntered) {\n constraints.add(new RangeConstraint(startAttribute, endAttribute));\n }\n }\n\n if (this.isRange && this.mandatory && startAttribute !== null) {\n const allChildsOptional = this.children.every(\n (child) => !child.mandatory,\n );\n if (allChildsOptional) {\n constraints.add(\n new MandatoryRangeConstraint(startAttribute.type, this.children),\n );\n }\n }\n\n return constraints;\n }\n\n /**\n */\n hasServerErrors(): boolean {\n return (\n this.errorCollection.serverErrors.length > 0 ||\n this.children.some((child) => child.hasServerErrors())\n );\n }\n\n /**\n */\n hasErrors(): boolean {\n return (\n this.errorCollection.hasItems ||\n this.children.some((child) => child.hasErrors())\n );\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.children.reset();\n }\n\n /**\n */\n getChildByAttribute(attribute: AttributeType): ?AttributeType {\n return this.children.find((child) => {\n if (child.equals(attribute)) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByAttribute(attribute);\n }\n\n return false;\n });\n }\n\n /**\n */\n getChildByKey(key: string): ?AttributeType {\n return (\n this.children.find((child) => {\n if (child.key === key) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByKey(key);\n }\n\n return false;\n }) || null\n );\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n this.concept = oldAttribute.concept;\n\n this.children.forEach((child) => {\n if (oldAttribute instanceof CompositeAttributeModel) {\n const withChildAttribute = oldAttribute.getChildByKey(child.key);\n if (withChildAttribute) {\n child.mergeAttribute(withChildAttribute);\n }\n }\n });\n }\n\n /**\n */\n update(\n value: string,\n changedAttribute: ?AttributeType,\n ): CompositeAttributeModel {\n if (!changedAttribute) {\n throw new IllegalArgumentException(\n \"Composite attribute needs changed attribute on update call\",\n );\n }\n\n this.updateLastModification();\n\n this.children.forEach((child) => {\n if (child instanceof CompositeAttributeModel) {\n child.update(value, changedAttribute);\n } else if (child.equals(changedAttribute)) {\n child.update(value);\n }\n });\n\n this.setChildrenOptionality();\n\n this.validate(value);\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n if (otherAttribute instanceof CompositeAttributeModel) {\n otherAttribute.children.forEach((otherChild) => {\n const child = this.getChildByAttribute(otherChild);\n if (child) {\n child.updateByAttribute(otherChild);\n }\n });\n } else {\n console.error(\n `update of composite attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n */\n setChildrenOptionality() {\n const childrenAreOptional =\n !this.mandatory && this.children.every((child) => child.value === null);\n\n this.children.forEach((child) => {\n child.mandatory =\n childrenAreOptional || !child.configuredMandatory\n ? false\n : child.configuredMandatory;\n });\n }\n\n /**\n */\n get readonly(): boolean {\n return super.readonly || this.children.every((child) => child.readonly);\n }\n\n /**\n */\n set readonly(readonly: boolean) {\n super.readonly = readonly;\n }\n\n /**\n */\n get readonlyvalue(): string {\n return this.children.readonlyvalue;\n }\n\n /**\n */\n get initvalue(): any {\n return this.children.initvalue;\n }\n\n /**\n */\n getFormData(): { [string]: any } | null {\n return { [this.name]: this.value };\n }\n\n /**\n */\n getValue(): any {\n return this.children.value;\n }\n\n /**\n */\n getChildrenIds(): Array<string> {\n const values = this.data.value;\n if (Array.isArray(values)) {\n return values.map((val) => val._id);\n } else if (values != null) {\n return [values._id];\n }\n return [];\n }\n\n /**\n */\n get isResult(): boolean {\n return this._isResult;\n }\n\n /**\n */\n set isResult(isResult: boolean) {\n this._isResult = isResult;\n\n this.children.forEach((child) => {\n child.isResult = isResult;\n });\n }\n\n /**\n */\n indicateContentConfiguration(contentConfiguration: ContentConfiguration) {\n if (contentConfiguration) {\n this.children.forEach((child) => {\n child.indicateContentConfiguration(contentConfiguration);\n });\n }\n }\n\n /**\n */\n equals(otherAttribute: AttributeType): boolean {\n return (\n (this.key === otherAttribute.key &&\n this.parentKey === otherAttribute.parentKey) ||\n this.children.some(\n //$FlowFixMe[method-unbinding]\n (child) => child.equals && child.equals(otherAttribute),\n )\n );\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"composite\") {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // range\n switch (this.start?.type) {\n case \"datetime\":\n return ATTRIBUTE_WIDTH.LARGE;\n case \"timestamp\":\n return ATTRIBUTE_WIDTH.EXTRA_LARGE;\n default:\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n }\n}\n\nexport default CompositeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CompositeAttributeModel.js","names":["_AttributeModel","_interopRequireDefault","require","_CompositeAttributeChildCollection","_ConstraintCollection","_RangeConstraint","_MandatoryRangeConstraint","_constants","_exceptions","_NumberAttributeModel","_DatetimeAttributeModel","CompositeAttributeModel","AttributeModel","constructor","data","contributions","modelOptions","_defineProperty2","default","_children","CompositeAttributeChildCollection","create","setChildrenOptionality","isApplicableModel","type","_includes","call","getInitialChildModelLinks","children","setChildModels","models","errors","key","isRange","_context","Function","bind","isRangeAttribute","attribute","NumberAttributeModel","DatetimeAttributeModel","start","all","end","size","getInputValue","hasValue","some","child","constraintCollection","constraints","ConstraintCollection","add","_serverConstraints","addConstraints","setUseClientsideValidation","enabled","_useClientsideValidation","forEach","validate","value","useClientsideValidation","isValid","setIsValid","getIsValid","startAttribute","endAttribute","allChildsEntered","every","RangeConstraint","mandatory","allChildsOptional","MandatoryRangeConstraint","hasServerErrors","errorCollection","serverErrors","length","hasErrors","hasItems","reset","getChildByAttribute","_context2","_find","equals","getChildByKey","_context3","mergeAttribute","oldAttribute","concept","withChildAttribute","update","changedAttribute","IllegalArgumentException","updateLastModification","updateByAttribute","otherAttribute","otherChild","console","error","childrenAreOptional","configuredMandatory","readonly","readonlyvalue","initvalue","getFormData","name","getValue","getChildrenIds","values","Array","isArray","_map","val","_id","isResult","_isResult","indicateContentConfiguration","contentConfiguration","parentKey","readonlyWidth","ATTRIBUTE_WIDTH","LARGE","EXTRA_LARGE","MEDIUM","_default","exports"],"sources":["../../../src/models/attributes/CompositeAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\n\nimport CompositeAttributeChildCollection from \"./CompositeAttributeChildCollection\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RangeConstraint from \"./input-constraints/RangeConstraint\";\nimport MandatoryRangeConstraint from \"./input-constraints/MandatoryRangeConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\n\nimport type { ModularUIModel, AttributeType, ModelOptions } from \"../types\";\nimport type ContentConfiguration from \"../contentconfiguration/ContentConfiguration\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n */\nclass CompositeAttributeModel extends AttributeModel {\n _children: CompositeAttributeChildCollection;\n\n /**\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n this._children = CompositeAttributeChildCollection.create(\n data,\n contributions,\n modelOptions,\n );\n\n this.setChildrenOptionality();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const type = contributions?.type;\n return type && (type === \"composite\" || type.includes(\"range\"));\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.children.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.children.setChildModels(models, errors);\n }\n\n /**\n */\n get type(): string {\n // temp fix for results and given answers on list result detail panel\n if (this.key === \"results\" || this.key === \"givenAnswers\") {\n return \"composite\";\n }\n\n return this.isRange ? \"range\" : \"composite\";\n }\n\n /**\n */\n get isRange(): boolean {\n return this.contributions?.type?.includes(\"range\");\n }\n\n /**\n */\n get children(): CompositeAttributeChildCollection {\n return this._children;\n }\n\n /**\n */\n set children(children: CompositeAttributeChildCollection) {\n this._children = children;\n }\n\n /**\n */\n isRangeAttribute(attribute: AttributeType): boolean {\n return (\n attribute instanceof NumberAttributeModel ||\n attribute instanceof DatetimeAttributeModel\n );\n }\n\n /**\n */\n get start(): AttributeType | null {\n return this.children.all[0];\n }\n\n /**\n */\n get end(): AttributeType {\n return this.children.all[this.children.size - 1];\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.children.getInputValue();\n }\n\n /**\n * Check if at least one child has value\n */\n hasValue(): boolean {\n return this.children.some((child) => child.hasValue());\n }\n\n /**\n */\n get constraintCollection(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this._serverConstraints);\n constraints.add(this.addConstraints());\n\n return constraints;\n }\n\n /**\n * Used to programmatically overwrite the setting USE_CLIENTSIDE_VALIDATION\n */\n setUseClientsideValidation(enabled: boolean) {\n super._useClientsideValidation = enabled;\n\n this.children.all.forEach((child) =>\n child.setUseClientsideValidation(enabled),\n );\n }\n\n /**\n * Validate input\n */\n // eslint-disable-next-line no-unused-vars\n validate(value: string): boolean {\n // when client side validation is disabled, this attribute is always valid\n if (!this.useClientsideValidation()) {\n return true;\n }\n\n let isValid = this.children.validate();\n\n if (isValid) {\n isValid = this.constraintCollection.validate();\n }\n\n this.setIsValid(isValid);\n return this.getIsValid();\n }\n\n /**\n */\n get isValid(): boolean {\n return this.validate(\"\");\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n const startAttribute = this.start;\n const endAttribute = this.end;\n if (this.isRange && startAttribute != null && endAttribute != null) {\n const allChildsEntered = this.children.every((child) => child.hasValue());\n if (allChildsEntered) {\n constraints.add(new RangeConstraint(startAttribute, endAttribute));\n }\n }\n\n if (this.isRange && this.mandatory && startAttribute !== null) {\n const allChildsOptional = this.children.every(\n (child) => !child.mandatory,\n );\n if (allChildsOptional) {\n constraints.add(\n new MandatoryRangeConstraint(startAttribute.type, this.children),\n );\n }\n }\n\n return constraints;\n }\n\n /**\n */\n hasServerErrors(): boolean {\n return (\n this.errorCollection.serverErrors.length > 0 ||\n this.children.some((child) => child.hasServerErrors())\n );\n }\n\n /**\n */\n hasErrors(): boolean {\n return (\n this.errorCollection.hasItems ||\n this.children.some((child) => child.hasErrors())\n );\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.children.reset();\n }\n\n /**\n */\n getChildByAttribute(attribute: AttributeType): ?AttributeType {\n return this.children.find((child) => {\n if (child.equals(attribute)) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByAttribute(attribute);\n }\n\n return false;\n });\n }\n\n /**\n */\n getChildByKey(key: string): ?AttributeType {\n return (\n this.children.find((child) => {\n if (child.key === key) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByKey(key);\n }\n\n return false;\n }) || null\n );\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n this.concept = oldAttribute.concept;\n\n this.children.forEach((child) => {\n if (oldAttribute instanceof CompositeAttributeModel) {\n const withChildAttribute = oldAttribute.getChildByKey(child.key);\n if (withChildAttribute) {\n child.mergeAttribute(withChildAttribute);\n }\n }\n });\n }\n\n /**\n */\n update(\n value: string,\n changedAttribute: ?AttributeType,\n ): CompositeAttributeModel {\n if (!changedAttribute) {\n throw new IllegalArgumentException(\n \"Composite attribute needs changed attribute on update call\",\n );\n }\n\n this.updateLastModification();\n\n this.children.forEach((child) => {\n if (child instanceof CompositeAttributeModel) {\n child.update(value, changedAttribute);\n } else if (child.equals(changedAttribute)) {\n child.update(value);\n }\n });\n\n this.setChildrenOptionality();\n\n this.validate(value);\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n if (otherAttribute instanceof CompositeAttributeModel) {\n otherAttribute.children.forEach((otherChild) => {\n const child = this.getChildByAttribute(otherChild);\n if (child) {\n child.updateByAttribute(otherChild);\n }\n });\n } else {\n console.error(\n `update of composite attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n */\n setChildrenOptionality() {\n const childrenAreOptional =\n !this.mandatory && this.children.every((child) => child.value === null);\n\n this.children.forEach((child) => {\n child.mandatory =\n childrenAreOptional || !child.configuredMandatory\n ? false\n : child.configuredMandatory;\n });\n }\n\n /**\n */\n get readonly(): boolean {\n return super.readonly || this.children.every((child) => child.readonly);\n }\n\n /**\n */\n set readonly(readonly: boolean) {\n super.readonly = readonly;\n }\n\n /**\n */\n get readonlyvalue(): string {\n return this.children.readonlyvalue;\n }\n\n /**\n */\n get initvalue(): any {\n return this.children.initvalue;\n }\n\n /**\n */\n getFormData(): { [string]: any } | null {\n return { [this.name]: this.value };\n }\n\n /**\n */\n getValue(): any {\n return this.children.value;\n }\n\n /**\n */\n getChildrenIds(): Array<string> {\n const values = this.data.value;\n if (Array.isArray(values)) {\n return values.map((val) => val._id);\n } else if (values != null) {\n return [values._id];\n }\n return [];\n }\n\n /**\n */\n get isResult(): boolean {\n return this._isResult;\n }\n\n /**\n */\n set isResult(isResult: boolean) {\n this._isResult = isResult;\n\n this.children.forEach((child) => {\n child.isResult = isResult;\n });\n }\n\n /**\n */\n indicateContentConfiguration(contentConfiguration: ContentConfiguration) {\n if (contentConfiguration) {\n this.children.forEach((child) => {\n child.indicateContentConfiguration(contentConfiguration);\n });\n }\n }\n\n /**\n */\n equals(otherAttribute: AttributeType): boolean {\n return (\n (this.key === otherAttribute.key &&\n this.parentKey === otherAttribute.parentKey) ||\n this.children.some(\n //$FlowFixMe[method-unbinding]\n (child) => child.equals?.(otherAttribute),\n )\n );\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"composite\") {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // range\n switch (this.start?.type) {\n case \"datetime\":\n return ATTRIBUTE_WIDTH.LARGE;\n case \"timestamp\":\n return ATTRIBUTE_WIDTH.EXTRA_LARGE;\n default:\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n }\n}\n\nexport default CompositeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -74,8 +74,10 @@ class NumberAttributeModel extends _AttributeModel.default {
|
|
|
74
74
|
* Gets the maximum digits based on the format
|
|
75
75
|
*/
|
|
76
76
|
get maxDigits() {
|
|
77
|
+
var _context;
|
|
77
78
|
const format = this.format;
|
|
78
|
-
if (format
|
|
79
|
+
if (((_context = format) == null ? void 0 : Function.call.bind((0, _includes.default)(_context), _context))?.(".")) {
|
|
80
|
+
// $FlowIssue
|
|
79
81
|
return format.split(".")[1].length;
|
|
80
82
|
}
|
|
81
83
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberAttributeModel.js","names":["_objects","require","_formatValue","_interopRequireDefault","_parseNumbers","_AttributeModel","_ConstraintCollection","_constants","_LayoutHints","_NumberBoundaryConstraint","_NumberFormatConstraint","_NumberGroupingConstraint","NumberAttributeModel","AttributeModel","isApplicableModel","contributions","type","getInitialInputValue","value","formatValue","groupingSeparator","getContribution","decimalSeparator","minNumber","minimum","maxNumber","maximum","maxDigits","format","_includes","default","call","split","length","unit","placeholder","addConstraints","constraints","ConstraintCollection","add","NumberFormatConstraint","NumberGroupingConstraint","NumberBoundaryConstraint","reset","inputvalue","toString","readonlyvalue","isPlainObject","getInputValue","_inputvalue","validate","outputNumber","parseToNumber","isNaN","parseNumberToString","getValue","_value","Number","update","updateLastModification","updateByAttribute","otherAttribute","console","error","isHidden","layouthint","has","INITIAL_TOTAL_FILESIZE","MAX_TOTAL_FILESIZE","CASEVIEW_LINK","readonlyWidth","ATTRIBUTE_WIDTH","SMALL","exports"],"sources":["../../../src/models/attributes/NumberAttributeModel.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../../utils/helpers/objects\";\nimport formatValue from \"../../utils/number/formatValue\";\nimport {\n parseNumberToString,\n parseToNumber,\n} from \"../../utils/number/parseNumbers\";\n\nimport AttributeModel from \"./AttributeModel\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport {\n CASEVIEW_LINK,\n INITIAL_TOTAL_FILESIZE,\n MAX_TOTAL_FILESIZE,\n} from \"../../constants/LayoutHints\";\n\nimport NumberBoundaryConstraint from \"./input-constraints/NumberBoundaryConstraint\";\nimport NumberFormatConstraint from \"./input-constraints/NumberFormatConstraint\";\nimport NumberGroupingConstraint from \"./input-constraints/NumberGroupingConstraint\";\n\nimport type { AttributeType } from \"../types\";\n\n/**\n * Number attribute\n */\nexport default class NumberAttributeModel extends AttributeModel {\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return contributions.type === \"number\" || contributions.type === \"integer\";\n }\n\n /**\n */\n get type(): string {\n return \"number\";\n }\n\n /**\n * Get initial value\n */\n getInitialInputValue(value?: string): string {\n if (value == null) {\n return \"\";\n }\n\n return this.formatValue(value);\n }\n\n /**\n * Get grouping separator\n */\n get groupingSeparator(): string {\n return this.getContribution(\"groupingSeparator\", \"\");\n }\n\n /**\n * Get decimal separator\n */\n get decimalSeparator(): string {\n return this.getContribution(\"decimalSeparator\", \"\");\n }\n\n /**\n * Get minimum value\n */\n get minNumber(): ?number {\n return this.contributions.minimum;\n }\n\n /**\n * Get maximum value\n */\n get maxNumber(): ?number {\n return this.contributions.maximum;\n }\n\n /**\n * Gets the maximum digits based on the format\n */\n get maxDigits(): number {\n const format = this.format;\n\n if (format != null && format.includes(\".\")) {\n return format.split(\".\")[1].length;\n }\n\n return 0;\n }\n\n /**\n * Get unit text\n */\n get unit(): string {\n return this.getContribution(\"unit\", \"\");\n }\n\n /**\n * Get placeholder text\n */\n get placeholder(): string {\n return this.getContribution(\"placeholder\", \"\");\n }\n\n /**\n * Add number constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(\n new NumberFormatConstraint(\n this.groupingSeparator,\n this.decimalSeparator,\n this.format,\n ),\n );\n constraints.add(\n new NumberGroupingConstraint(\n this.groupingSeparator,\n this.decimalSeparator,\n this.format,\n ),\n );\n constraints.add(\n new NumberBoundaryConstraint(\n this.minNumber,\n this.maxNumber,\n this.groupingSeparator,\n this.decimalSeparator,\n this.format,\n ),\n );\n\n return constraints;\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.inputvalue = \"\";\n }\n\n /**\n */\n formatValue(value: ?number | ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n return formatValue(\n value,\n this.format,\n this.groupingSeparator,\n this.decimalSeparator,\n );\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (!isPlainObject(this.value)) {\n return this.formatValue(this.value);\n }\n\n return this.value;\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this._inputvalue = value;\n this.validate(value);\n\n const outputNumber = parseToNumber(\n value,\n this.groupingSeparator,\n this.decimalSeparator,\n );\n\n this.value = isNaN(outputNumber) ? null : parseNumberToString(outputNumber);\n }\n\n /**\n * Getting the value of the attribute\n */\n getValue(): number | null {\n const value = this._value;\n\n return value == null || value === \"\" ? null : Number(value);\n }\n\n /**\n * Update the attribute by name and value\n */\n update(value: string): NumberAttributeModel {\n if (value === this.inputvalue) {\n return this;\n }\n\n this.updateLastModification();\n this.inputvalue = value || \"\";\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof NumberAttributeModel) {\n this.update(otherAttribute.value);\n } else {\n console.error(\n `update of number attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n */\n get isHidden(): boolean {\n return (\n super.isHidden ||\n this.layouthint.has(\n INITIAL_TOTAL_FILESIZE,\n MAX_TOTAL_FILESIZE,\n CASEVIEW_LINK,\n )\n );\n }\n\n /**\n */\n set isHidden(isHidden: boolean) {\n super.isHidden = isHidden;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"NumberAttributeModel.js","names":["_objects","require","_formatValue","_interopRequireDefault","_parseNumbers","_AttributeModel","_ConstraintCollection","_constants","_LayoutHints","_NumberBoundaryConstraint","_NumberFormatConstraint","_NumberGroupingConstraint","NumberAttributeModel","AttributeModel","isApplicableModel","contributions","type","getInitialInputValue","value","formatValue","groupingSeparator","getContribution","decimalSeparator","minNumber","minimum","maxNumber","maximum","maxDigits","_context","format","Function","call","bind","_includes","default","split","length","unit","placeholder","addConstraints","constraints","ConstraintCollection","add","NumberFormatConstraint","NumberGroupingConstraint","NumberBoundaryConstraint","reset","inputvalue","toString","readonlyvalue","isPlainObject","getInputValue","_inputvalue","validate","outputNumber","parseToNumber","isNaN","parseNumberToString","getValue","_value","Number","update","updateLastModification","updateByAttribute","otherAttribute","console","error","isHidden","layouthint","has","INITIAL_TOTAL_FILESIZE","MAX_TOTAL_FILESIZE","CASEVIEW_LINK","readonlyWidth","ATTRIBUTE_WIDTH","SMALL","exports"],"sources":["../../../src/models/attributes/NumberAttributeModel.js"],"sourcesContent":["// @flow\nimport { isPlainObject } from \"../../utils/helpers/objects\";\nimport formatValue from \"../../utils/number/formatValue\";\nimport {\n parseNumberToString,\n parseToNumber,\n} from \"../../utils/number/parseNumbers\";\n\nimport AttributeModel from \"./AttributeModel\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport {\n CASEVIEW_LINK,\n INITIAL_TOTAL_FILESIZE,\n MAX_TOTAL_FILESIZE,\n} from \"../../constants/LayoutHints\";\n\nimport NumberBoundaryConstraint from \"./input-constraints/NumberBoundaryConstraint\";\nimport NumberFormatConstraint from \"./input-constraints/NumberFormatConstraint\";\nimport NumberGroupingConstraint from \"./input-constraints/NumberGroupingConstraint\";\n\nimport type { AttributeType } from \"../types\";\n\n/**\n * Number attribute\n */\nexport default class NumberAttributeModel extends AttributeModel {\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return contributions.type === \"number\" || contributions.type === \"integer\";\n }\n\n /**\n */\n get type(): string {\n return \"number\";\n }\n\n /**\n * Get initial value\n */\n getInitialInputValue(value?: string): string {\n if (value == null) {\n return \"\";\n }\n\n return this.formatValue(value);\n }\n\n /**\n * Get grouping separator\n */\n get groupingSeparator(): string {\n return this.getContribution(\"groupingSeparator\", \"\");\n }\n\n /**\n * Get decimal separator\n */\n get decimalSeparator(): string {\n return this.getContribution(\"decimalSeparator\", \"\");\n }\n\n /**\n * Get minimum value\n */\n get minNumber(): ?number {\n return this.contributions.minimum;\n }\n\n /**\n * Get maximum value\n */\n get maxNumber(): ?number {\n return this.contributions.maximum;\n }\n\n /**\n * Gets the maximum digits based on the format\n */\n get maxDigits(): number {\n const format = this.format;\n\n if (format?.includes(\".\")) {\n // $FlowIssue\n return format.split(\".\")[1].length;\n }\n\n return 0;\n }\n\n /**\n * Get unit text\n */\n get unit(): string {\n return this.getContribution(\"unit\", \"\");\n }\n\n /**\n * Get placeholder text\n */\n get placeholder(): string {\n return this.getContribution(\"placeholder\", \"\");\n }\n\n /**\n * Add number constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(\n new NumberFormatConstraint(\n this.groupingSeparator,\n this.decimalSeparator,\n this.format,\n ),\n );\n constraints.add(\n new NumberGroupingConstraint(\n this.groupingSeparator,\n this.decimalSeparator,\n this.format,\n ),\n );\n constraints.add(\n new NumberBoundaryConstraint(\n this.minNumber,\n this.maxNumber,\n this.groupingSeparator,\n this.decimalSeparator,\n this.format,\n ),\n );\n\n return constraints;\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.inputvalue = \"\";\n }\n\n /**\n */\n formatValue(value: ?number | ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n return formatValue(\n value,\n this.format,\n this.groupingSeparator,\n this.decimalSeparator,\n );\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (!isPlainObject(this.value)) {\n return this.formatValue(this.value);\n }\n\n return this.value;\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this._inputvalue = value;\n this.validate(value);\n\n const outputNumber = parseToNumber(\n value,\n this.groupingSeparator,\n this.decimalSeparator,\n );\n\n this.value = isNaN(outputNumber) ? null : parseNumberToString(outputNumber);\n }\n\n /**\n * Getting the value of the attribute\n */\n getValue(): number | null {\n const value = this._value;\n\n return value == null || value === \"\" ? null : Number(value);\n }\n\n /**\n * Update the attribute by name and value\n */\n update(value: string): NumberAttributeModel {\n if (value === this.inputvalue) {\n return this;\n }\n\n this.updateLastModification();\n this.inputvalue = value || \"\";\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof NumberAttributeModel) {\n this.update(otherAttribute.value);\n } else {\n console.error(\n `update of number attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n */\n get isHidden(): boolean {\n return (\n super.isHidden ||\n this.layouthint.has(\n INITIAL_TOTAL_FILESIZE,\n MAX_TOTAL_FILESIZE,\n CASEVIEW_LINK,\n )\n );\n }\n\n /**\n */\n set isHidden(isHidden: boolean) {\n super.isHidden = isHidden;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|