@dnb/eufemia 10.42.0 → 10.43.0
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 +21 -0
- package/cjs/components/button/Button.d.ts +17 -0
- package/cjs/components/card/Card.d.ts +1 -1
- package/cjs/components/card/Card.js.map +1 -1
- package/cjs/components/tabs/Tabs.js +1 -1
- package/cjs/components/tabs/Tabs.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +2 -2
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +13 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +15 -5
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/Number.js +14 -4
- package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
- package/cjs/extensions/forms/Field/String/String.d.ts +1 -0
- package/cjs/extensions/forms/Field/String/String.js +21 -2
- package/cjs/extensions/forms/Field/String/String.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +20 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.js +68 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.d.ts +7 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +52 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.d.ts +3 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +40 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/index.d.ts +2 -0
- package/cjs/extensions/forms/Form/Isolation/index.js +27 -0
- package/cjs/extensions/forms/Form/Isolation/index.js.map +1 -0
- package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +6 -2
- package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +26 -10
- package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
- package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Visibility/useVisibility.js +22 -19
- package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
- package/cjs/extensions/forms/Form/index.d.ts +1 -0
- package/cjs/extensions/forms/Form/index.js +7 -0
- package/cjs/extensions/forms/Form/index.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.d.ts +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js +1 -1
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +3 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +3 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +3 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +6 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +11 -11
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/hooks/usePath.d.ts +1 -1
- package/cjs/extensions/forms/hooks/usePath.js +9 -8
- package/cjs/extensions/forms/hooks/usePath.js.map +1 -1
- package/cjs/extensions/forms/types.d.ts +1 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/extensions/payment-card/utils/Types.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/helpers/extendPropsWithContext.js +3 -3
- package/cjs/shared/helpers/extendPropsWithContext.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/components/button/Button.d.ts +17 -0
- package/components/card/Card.d.ts +1 -1
- package/components/card/Card.js.map +1 -1
- package/components/tabs/Tabs.js +1 -1
- package/components/tabs/Tabs.js.map +1 -1
- package/es/components/button/Button.d.ts +17 -0
- package/es/components/card/Card.d.ts +1 -1
- package/es/components/card/Card.js.map +1 -1
- package/es/components/tabs/Tabs.js +1 -1
- package/es/components/tabs/Tabs.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +2 -2
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +13 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +15 -5
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/Number/Number.js +14 -4
- package/es/extensions/forms/Field/Number/Number.js.map +1 -1
- package/es/extensions/forms/Field/String/String.d.ts +1 -0
- package/es/extensions/forms/Field/String/String.js +20 -2
- package/es/extensions/forms/Field/String/String.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/Isolation.d.ts +20 -0
- package/es/extensions/forms/Form/Isolation/Isolation.js +57 -0
- package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.d.ts +7 -0
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +42 -0
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.d.ts +3 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js +30 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/index.d.ts +2 -0
- package/es/extensions/forms/Form/Isolation/index.js +3 -0
- package/es/extensions/forms/Form/Isolation/index.js.map +1 -0
- package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +6 -2
- package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/Visibility.d.ts +26 -10
- package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
- package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/es/extensions/forms/Form/Visibility/useVisibility.js +22 -19
- package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
- package/es/extensions/forms/Form/index.d.ts +1 -0
- package/es/extensions/forms/Form/index.js +1 -0
- package/es/extensions/forms/Form/index.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/Step.d.ts +1 -1
- package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/StepDocs.js +1 -1
- package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +3 -0
- package/es/extensions/forms/constants/locales/en-GB.js +3 -0
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +3 -0
- package/es/extensions/forms/constants/locales/index.d.ts +6 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +3 -0
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +11 -11
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/hooks/usePath.d.ts +1 -1
- package/es/extensions/forms/hooks/usePath.js +8 -8
- package/es/extensions/forms/hooks/usePath.js.map +1 -1
- package/es/extensions/forms/types.d.ts +1 -0
- package/es/extensions/forms/types.js.map +1 -1
- package/es/extensions/payment-card/utils/Types.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/helpers/extendPropsWithContext.js +3 -3
- package/es/shared/helpers/extendPropsWithContext.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +2 -2
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +13 -1
- package/extensions/forms/DataContext/Provider/Provider.js +15 -5
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/Number/Number.js +14 -4
- package/extensions/forms/Field/Number/Number.js.map +1 -1
- package/extensions/forms/Field/String/String.d.ts +1 -0
- package/extensions/forms/Field/String/String.js +21 -2
- package/extensions/forms/Field/String/String.js.map +1 -1
- package/extensions/forms/Form/Isolation/Isolation.d.ts +20 -0
- package/extensions/forms/Form/Isolation/Isolation.js +57 -0
- package/extensions/forms/Form/Isolation/Isolation.js.map +1 -0
- package/extensions/forms/Form/Isolation/IsolationCommitButton.d.ts +7 -0
- package/extensions/forms/Form/Isolation/IsolationCommitButton.js +42 -0
- package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.d.ts +3 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js +30 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -0
- package/extensions/forms/Form/Isolation/index.d.ts +2 -0
- package/extensions/forms/Form/Isolation/index.js +3 -0
- package/extensions/forms/Form/Isolation/index.js.map +1 -0
- package/extensions/forms/Form/SubmitButton/SubmitButton.js +6 -2
- package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/extensions/forms/Form/Visibility/Visibility.d.ts +26 -10
- package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
- package/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
- package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
- package/extensions/forms/Form/Visibility/useVisibility.js +22 -19
- package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
- package/extensions/forms/Form/index.d.ts +1 -0
- package/extensions/forms/Form/index.js +1 -0
- package/extensions/forms/Form/index.js.map +1 -1
- package/extensions/forms/Wizard/Step/Step.d.ts +1 -1
- package/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/extensions/forms/Wizard/Step/StepDocs.js +1 -1
- package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +3 -0
- package/extensions/forms/constants/locales/en-GB.js +3 -0
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +3 -0
- package/extensions/forms/constants/locales/index.d.ts +6 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
- package/extensions/forms/constants/locales/nb-NO.js +3 -0
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +11 -11
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/hooks/usePath.d.ts +1 -1
- package/extensions/forms/hooks/usePath.js +9 -8
- package/extensions/forms/hooks/usePath.js.map +1 -1
- package/extensions/forms/types.d.ts +1 -0
- package/extensions/forms/types.js.map +1 -1
- package/extensions/payment-card/utils/Types.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/helpers/extendPropsWithContext.js +3 -3
- package/shared/helpers/extendPropsWithContext.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +2 -2
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","useTranslation","StringComponent","props","_props$width","_value$toString","fieldBlockContext","translations","errorMessages","path","required","Field","errorRequired","minLength","StringField","errorMinLength","maxLength","errorMaxLength","pattern","errorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n FieldBlockWidth,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const translations = useTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minLength: translations.StringField.errorMinLength,\n maxLength: translations.StringField.errorMaxLength,\n pattern: translations.Field.errorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","DataContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","useTranslation","StringComponent","props","_props$width","_dataContext$props2","_value$toString","dataContext","fieldBlockContext","translations","errorMessages","path","required","Field","errorRequired","minLength","StringField","errorMinLength","maxLength","errorMaxLength","pattern","errorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","onKeyDown","transformInstantly","handleSubmit","handleKeyDown","_dataContext$props","isolate","key","_event$preventDefault","preventDefault","call","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","on_key_down","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport DataContext from '../../DataContext/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n FieldBlockWidth,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n\n // - Events\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n }\n\nfunction StringComponent(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const translations = useTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minLength: translations.StringField.errorMinLength,\n maxLength: translations.StringField.errorMaxLength,\n pattern: translations.Field.errorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n onKeyDown,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const { handleSubmit } = dataContext ?? {}\n const handleKeyDown = useCallback(\n ({ event }: { event: React.KeyboardEvent<HTMLInputElement> }) => {\n if (\n !multiline &&\n dataContext?.props?.isolate &&\n event.key === 'Enter'\n ) {\n handleSubmit() // So we commit the data to the outer context\n event.preventDefault?.() // And prevent the default form submit\n }\n\n onKeyDown?.(event)\n },\n [handleSubmit, dataContext?.props?.isolate, multiline, onKeyDown]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n on_key_down: handleKeyDown,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { JsonObject } from 'json-pointer';
|
|
3
|
+
import { Props as ProviderProps } from '../../DataContext/Provider';
|
|
4
|
+
import IsolationCommitButton from './IsolationCommitButton';
|
|
5
|
+
export type IsolationProps<Data> = Omit<ProviderProps<Data>, 'onSubmit' | 'onSubmitRequest' | 'onSubmitComplete' | 'minimumAsyncBehaviorTime' | 'asyncSubmitTimeout' | 'scrollTopOnSubmit' | 'sessionStorageId' | 'filterSubmitData' | 'globalStatusId'> & {
|
|
6
|
+
/**
|
|
7
|
+
* A ref (function) that you can call in order to commit the data programmatically to the outer context.
|
|
8
|
+
*/
|
|
9
|
+
commitHandleRef?: React.MutableRefObject<() => void>;
|
|
10
|
+
/**
|
|
11
|
+
* Will be called when the isolated context is committed.
|
|
12
|
+
*/
|
|
13
|
+
onCommit?: (data: Data) => void;
|
|
14
|
+
};
|
|
15
|
+
declare function IsolationProvider<Data extends JsonObject>(props: IsolationProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare namespace IsolationProvider {
|
|
17
|
+
var CommitButton: typeof IsolationCommitButton;
|
|
18
|
+
var _supportsSpacingProps: any;
|
|
19
|
+
}
|
|
20
|
+
export default IsolationProvider;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
|
|
7
|
+
import pointer from 'json-pointer';
|
|
8
|
+
import { Context, Provider } from '../../DataContext';
|
|
9
|
+
import { extendDeep } from '../../../../shared/component-helper';
|
|
10
|
+
import IsolationCommitButton from './IsolationCommitButton';
|
|
11
|
+
function IsolationProvider(props) {
|
|
12
|
+
const {
|
|
13
|
+
children,
|
|
14
|
+
onPathChange,
|
|
15
|
+
onCommit,
|
|
16
|
+
commitHandleRef,
|
|
17
|
+
data,
|
|
18
|
+
defaultData
|
|
19
|
+
} = props;
|
|
20
|
+
const nestedContext = useContext(Context);
|
|
21
|
+
const {
|
|
22
|
+
handlePathChange
|
|
23
|
+
} = nestedContext !== null && nestedContext !== void 0 ? nestedContext : {};
|
|
24
|
+
const dataRef = useRef({});
|
|
25
|
+
const getData = useCallback(() => {
|
|
26
|
+
return extendDeep({}, nestedContext === null || nestedContext === void 0 ? void 0 : nestedContext.data, dataRef.current);
|
|
27
|
+
}, [nestedContext === null || nestedContext === void 0 ? void 0 : nestedContext.data]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (commitHandleRef) {
|
|
30
|
+
commitHandleRef.current = () => {
|
|
31
|
+
handlePathChange === null || handlePathChange === void 0 ? void 0 : handlePathChange('/', getData());
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}, [getData, handlePathChange, commitHandleRef]);
|
|
35
|
+
const onPathChangeHandler = useCallback(async (path, value) => {
|
|
36
|
+
pointer.set(dataRef.current, path, value);
|
|
37
|
+
return await (onPathChange === null || onPathChange === void 0 ? void 0 : onPathChange(path, value));
|
|
38
|
+
}, [onPathChange]);
|
|
39
|
+
const providerProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
40
|
+
data,
|
|
41
|
+
defaultData,
|
|
42
|
+
onPathChange: onPathChangeHandler,
|
|
43
|
+
onCommit,
|
|
44
|
+
isolate: true
|
|
45
|
+
});
|
|
46
|
+
providerProps.data = useMemo(() => {
|
|
47
|
+
if (!defaultData && !data) {
|
|
48
|
+
return getData();
|
|
49
|
+
}
|
|
50
|
+
return providerProps.data;
|
|
51
|
+
}, [data, defaultData, getData, providerProps.data]);
|
|
52
|
+
return React.createElement(Provider, providerProps, children);
|
|
53
|
+
}
|
|
54
|
+
IsolationProvider.CommitButton = IsolationCommitButton;
|
|
55
|
+
IsolationProvider._supportsSpacingProps = undefined;
|
|
56
|
+
export default IsolationProvider;
|
|
57
|
+
//# sourceMappingURL=Isolation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useEffect","useMemo","useRef","pointer","Context","Provider","extendDeep","IsolationCommitButton","IsolationProvider","props","children","onPathChange","onCommit","commitHandleRef","data","defaultData","nestedContext","handlePathChange","dataRef","getData","current","onPathChangeHandler","path","value","set","providerProps","_objectSpread","isolate","createElement","CommitButton","_supportsSpacingProps","undefined"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { Context, Provider } from '../../DataContext'\nimport { Props as ProviderProps } from '../../DataContext/Provider'\nimport { Path } from '../../types'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport IsolationCommitButton from './IsolationCommitButton'\n\nexport type IsolationProps<Data> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'filterSubmitData'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n\n /**\n * Will be called when the isolated context is committed.\n */\n onCommit?: (data: Data) => void\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const {\n children,\n onPathChange,\n onCommit,\n commitHandleRef,\n data,\n defaultData,\n } = props\n\n const nestedContext = useContext(Context)\n const { handlePathChange } = nestedContext ?? {}\n\n const dataRef = useRef<Partial<Data>>({})\n const getData = useCallback(() => {\n return extendDeep({}, nestedContext?.data, dataRef.current) as Data\n }, [nestedContext?.data])\n\n useEffect(() => {\n if (commitHandleRef) {\n commitHandleRef.current = () => {\n handlePathChange?.('/', getData())\n }\n }\n }, [getData, handlePathChange, commitHandleRef])\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: any) => {\n pointer.set(dataRef.current, path, value)\n\n return await onPathChange?.(path, value)\n },\n [onPathChange]\n )\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n data,\n defaultData,\n onPathChange: onPathChangeHandler,\n onCommit,\n isolate: true,\n }\n\n // Update the isolated data with the outside context data\n providerProps.data = useMemo(() => {\n if (!defaultData && !data) {\n return getData()\n }\n return providerProps.data\n }, [data, defaultData, getData, providerProps.data])\n\n return <Provider {...providerProps}>{children}</Provider>\n}\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,QACD,OAAO;AACd,OAAOC,OAAO,MAAsB,cAAc;AAClD,SAASC,OAAO,EAAEC,QAAQ,QAAQ,mBAAmB;AAGrD,SAASC,UAAU,QAAQ,qCAAqC;AAChE,OAAOC,qBAAqB,MAAM,yBAAyB;AAyB3D,SAASC,iBAAiBA,CACxBC,KAA2B,EAC3B;EACA,MAAM;IACJC,QAAQ;IACRC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,IAAI;IACJC;EACF,CAAC,GAAGN,KAAK;EAET,MAAMO,aAAa,GAAGjB,UAAU,CAACK,OAAO,CAAC;EACzC,MAAM;IAAEa;EAAiB,CAAC,GAAGD,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,CAAC,CAAC;EAEhD,MAAME,OAAO,GAAGhB,MAAM,CAAgB,CAAC,CAAC,CAAC;EACzC,MAAMiB,OAAO,GAAGrB,WAAW,CAAC,MAAM;IAChC,OAAOQ,UAAU,CAAC,CAAC,CAAC,EAAEU,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEF,IAAI,EAAEI,OAAO,CAACE,OAAO,CAAC;EAC7D,CAAC,EAAE,CAACJ,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEF,IAAI,CAAC,CAAC;EAEzBd,SAAS,CAAC,MAAM;IACd,IAAIa,eAAe,EAAE;MACnBA,eAAe,CAACO,OAAO,GAAG,MAAM;QAC9BH,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,GAAG,EAAEE,OAAO,CAAC,CAAC,CAAC;MACpC,CAAC;IACH;EACF,CAAC,EAAE,CAACA,OAAO,EAAEF,gBAAgB,EAAEJ,eAAe,CAAC,CAAC;EAEhD,MAAMQ,mBAAmB,GAAGvB,WAAW,CACrC,OAAOwB,IAAU,EAAEC,KAAU,KAAK;IAChCpB,OAAO,CAACqB,GAAG,CAACN,OAAO,CAACE,OAAO,EAAEE,IAAI,EAAEC,KAAK,CAAC;IAEzC,OAAO,OAAMZ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGW,IAAI,EAAEC,KAAK,CAAC;EAC1C,CAAC,EACD,CAACZ,YAAY,CACf,CAAC;EAED,MAAMc,aAAmC,GAAAC,aAAA,CAAAA,aAAA,KACpCjB,KAAK;IACRK,IAAI;IACJC,WAAW;IACXJ,YAAY,EAAEU,mBAAmB;IACjCT,QAAQ;IACRe,OAAO,EAAE;EAAI,EACd;EAGDF,aAAa,CAACX,IAAI,GAAGb,OAAO,CAAC,MAAM;IACjC,IAAI,CAACc,WAAW,IAAI,CAACD,IAAI,EAAE;MACzB,OAAOK,OAAO,CAAC,CAAC;IAClB;IACA,OAAOM,aAAa,CAACX,IAAI;EAC3B,CAAC,EAAE,CAACA,IAAI,EAAEC,WAAW,EAAEI,OAAO,EAAEM,aAAa,CAACX,IAAI,CAAC,CAAC;EAEpD,OAAOjB,KAAA,CAAA+B,aAAA,CAACvB,QAAQ,EAAKoB,aAAa,EAAGf,QAAmB,CAAC;AAC3D;AAEAF,iBAAiB,CAACqB,YAAY,GAAGtB,qBAAqB;AACtDC,iBAAiB,CAACsB,qBAAqB,GAAGC,SAAS;AAEnD,eAAevB,iBAAiB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ButtonProps } from '../../../../components/button/Button';
|
|
2
|
+
export type Props = ButtonProps;
|
|
3
|
+
declare function IsolationCommitButton(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare namespace IsolationCommitButton {
|
|
5
|
+
var _supportsSpacingProps: boolean;
|
|
6
|
+
}
|
|
7
|
+
export default IsolationCommitButton;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
5
|
+
const _excluded = ["className", "children", "text"];
|
|
6
|
+
import React, { useCallback, useContext } from 'react';
|
|
7
|
+
import classnames from 'classnames';
|
|
8
|
+
import { useTranslation } from '../../hooks';
|
|
9
|
+
import DataContext from '../../DataContext/Context';
|
|
10
|
+
import Button from '../../../../components/button/Button';
|
|
11
|
+
import { check } from '../../../../icons';
|
|
12
|
+
function IsolationCommitButton(props) {
|
|
13
|
+
const translations = useTranslation().Isolation;
|
|
14
|
+
const {
|
|
15
|
+
className,
|
|
16
|
+
children,
|
|
17
|
+
text
|
|
18
|
+
} = props,
|
|
19
|
+
rest = _objectWithoutProperties(props, _excluded);
|
|
20
|
+
const content = text || children || translations.commitButtonText;
|
|
21
|
+
const {
|
|
22
|
+
handleSubmit,
|
|
23
|
+
props: dataContextProps
|
|
24
|
+
} = useContext(DataContext) || {};
|
|
25
|
+
const {
|
|
26
|
+
isolate
|
|
27
|
+
} = dataContextProps || {};
|
|
28
|
+
const onClickHandler = useCallback(() => {
|
|
29
|
+
if (isolate) {
|
|
30
|
+
handleSubmit === null || handleSubmit === void 0 ? void 0 : handleSubmit();
|
|
31
|
+
}
|
|
32
|
+
}, [handleSubmit, isolate]);
|
|
33
|
+
return React.createElement(Button, _extends({
|
|
34
|
+
variant: "secondary",
|
|
35
|
+
className: classnames('dnb-forms-isolate-button', className),
|
|
36
|
+
icon: check,
|
|
37
|
+
onClick: onClickHandler
|
|
38
|
+
}, rest), content);
|
|
39
|
+
}
|
|
40
|
+
IsolationCommitButton._supportsSpacingProps = true;
|
|
41
|
+
export default IsolationCommitButton;
|
|
42
|
+
//# sourceMappingURL=IsolationCommitButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolationCommitButton.js","names":["React","useCallback","useContext","classnames","useTranslation","DataContext","Button","check","IsolationCommitButton","props","translations","Isolation","className","children","text","rest","_objectWithoutProperties","_excluded","content","commitButtonText","handleSubmit","dataContextProps","isolate","onClickHandler","createElement","_extends","variant","icon","onClick","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationCommitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport { useTranslation } from '../../hooks'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport { check } from '../../../../icons'\n\nexport type Props = ButtonProps\n\nfunction IsolationCommitButton(props: Props) {\n const translations = useTranslation().Isolation\n\n const { className, children, text, ...rest } = props\n\n const content = text || children || translations.commitButtonText\n\n const { handleSubmit, props: dataContextProps } =\n useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (isolate) {\n handleSubmit?.()\n }\n }, [handleSubmit, isolate])\n\n return (\n <Button\n variant=\"secondary\"\n className={classnames('dnb-forms-isolate-button', className)}\n icon={check}\n onClick={onClickHandler}\n {...rest}\n >\n {content}\n </Button>\n )\n}\n\nIsolationCommitButton._supportsSpacingProps = true\nexport default IsolationCommitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,SAASC,KAAK,QAAQ,mBAAmB;AAIzC,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC3C,MAAMC,YAAY,GAAGN,cAAc,CAAC,CAAC,CAACO,SAAS;EAE/C,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAGL,KAAK;IAAdM,IAAI,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA;EAEpD,MAAMC,OAAO,GAAGJ,IAAI,IAAID,QAAQ,IAAIH,YAAY,CAACS,gBAAgB;EAEjE,MAAM;IAAEC,YAAY;IAAEX,KAAK,EAAEY;EAAiB,CAAC,GAC7CnB,UAAU,CAACG,WAAW,CAAC,IAAI,CAAC,CAAC;EAC/B,MAAM;IAAEiB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAGtB,WAAW,CAAC,MAAM;IACvC,IAAIqB,OAAO,EAAE;MACXF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACA,YAAY,EAAEE,OAAO,CAAC,CAAC;EAE3B,OACEtB,KAAA,CAAAwB,aAAA,CAAClB,MAAM,EAAAmB,QAAA;IACLC,OAAO,EAAC,WAAW;IACnBd,SAAS,EAAET,UAAU,CAAC,0BAA0B,EAAES,SAAS,CAAE;IAC7De,IAAI,EAAEpB,KAAM;IACZqB,OAAO,EAAEL;EAAe,GACpBR,IAAI,GAEPG,OACK,CAAC;AAEb;AAEAV,qBAAqB,CAACqB,qBAAqB,GAAG,IAAI;AAClD,eAAerB,qBAAqB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
import { ProviderEvents, ProviderProperties } from '../../DataContext/Provider/ProviderDocs';
|
|
5
|
+
export const IsolationProperties = _objectSpread(_objectSpread({
|
|
6
|
+
commitHandleRef: {
|
|
7
|
+
doc: 'Provide a ref to a function that can be called from any location to commit the data to the form.',
|
|
8
|
+
type: 'React.Ref',
|
|
9
|
+
status: 'optional'
|
|
10
|
+
}
|
|
11
|
+
}, ProviderProperties), {}, {
|
|
12
|
+
minimumAsyncBehaviorTime: undefined,
|
|
13
|
+
asyncSubmitTimeout: undefined,
|
|
14
|
+
scrollTopOnSubmit: undefined,
|
|
15
|
+
sessionStorageId: undefined,
|
|
16
|
+
filterSubmitData: undefined,
|
|
17
|
+
globalStatusId: undefined
|
|
18
|
+
});
|
|
19
|
+
export const IsolationEvents = _objectSpread(_objectSpread({
|
|
20
|
+
onCommit: {
|
|
21
|
+
doc: 'Will be called on a nested form context commit – if validation has passed.',
|
|
22
|
+
type: 'function',
|
|
23
|
+
status: 'optional'
|
|
24
|
+
}
|
|
25
|
+
}, ProviderEvents), {}, {
|
|
26
|
+
onSubmit: undefined,
|
|
27
|
+
onSubmitRequest: undefined,
|
|
28
|
+
onSubmitComplete: undefined
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=IsolationDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolationDocs.js","names":["ProviderEvents","ProviderProperties","IsolationProperties","_objectSpread","commitHandleRef","doc","type","status","minimumAsyncBehaviorTime","undefined","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","filterSubmitData","globalStatusId","IsolationEvents","onCommit","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport {\n ProviderEvents,\n ProviderProperties,\n} from '../../DataContext/Provider/ProviderDocs'\n\nexport const IsolationProperties: PropertiesTableProps = {\n commitHandleRef: {\n doc: 'Provide a ref to a function that can be called from any location to commit the data to the form.',\n type: 'React.Ref',\n status: 'optional',\n },\n ...ProviderProperties,\n minimumAsyncBehaviorTime: undefined,\n asyncSubmitTimeout: undefined,\n scrollTopOnSubmit: undefined,\n sessionStorageId: undefined,\n filterSubmitData: undefined,\n globalStatusId: undefined,\n}\n\nexport const IsolationEvents: PropertiesTableProps = {\n onCommit: {\n doc: 'Will be called on a nested form context commit – if validation has passed.',\n type: 'function',\n status: 'optional',\n },\n ...ProviderEvents,\n onSubmit: undefined,\n onSubmitRequest: undefined,\n onSubmitComplete: undefined,\n}\n"],"mappings":";;;AACA,SACEA,cAAc,EACdC,kBAAkB,QACb,yCAAyC;AAEhD,OAAO,MAAMC,mBAAyC,GAAAC,aAAA,CAAAA,aAAA;EACpDC,eAAe,EAAE;IACfC,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,WAAW;IACjBC,MAAM,EAAE;EACV;AAAC,GACEN,kBAAkB;EACrBO,wBAAwB,EAAEC,SAAS;EACnCC,kBAAkB,EAAED,SAAS;EAC7BE,iBAAiB,EAAEF,SAAS;EAC5BG,gBAAgB,EAAEH,SAAS;EAC3BI,gBAAgB,EAAEJ,SAAS;EAC3BK,cAAc,EAAEL;AAAS,EAC1B;AAED,OAAO,MAAMM,eAAqC,GAAAZ,aAAA,CAAAA,aAAA;EAChDa,QAAQ,EAAE;IACRX,GAAG,EAAE,4EAA4E;IACjFC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AAAC,GACEP,cAAc;EACjBiB,QAAQ,EAAER,SAAS;EACnBS,eAAe,EAAET,SAAS;EAC1BU,gBAAgB,EAAEV;AAAS,EAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["default"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/index.ts"],"sourcesContent":["export { default } from './Isolation'\nexport * from './Isolation'\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,aAAa;AACrC,cAAc,aAAa"}
|
|
@@ -24,8 +24,12 @@ function SubmitButton(props) {
|
|
|
24
24
|
const {
|
|
25
25
|
formState,
|
|
26
26
|
handleSubmit,
|
|
27
|
-
isInsideFormElement
|
|
27
|
+
isInsideFormElement,
|
|
28
|
+
props: dataContextProps
|
|
28
29
|
} = useContext(DataContext) || {};
|
|
30
|
+
const {
|
|
31
|
+
isolate
|
|
32
|
+
} = dataContextProps || {};
|
|
29
33
|
const onClickHandler = useCallback(() => {
|
|
30
34
|
if (!isInsideFormElement) {
|
|
31
35
|
handleSubmit === null || handleSubmit === void 0 ? void 0 : handleSubmit();
|
|
@@ -34,7 +38,7 @@ function SubmitButton(props) {
|
|
|
34
38
|
return React.createElement(Button, _extends({
|
|
35
39
|
className: classnames('dnb-forms-submit-button', className),
|
|
36
40
|
onClick: onClickHandler,
|
|
37
|
-
type:
|
|
41
|
+
type: isolate ? 'button' : 'submit',
|
|
38
42
|
icon: variant === 'send' ? send : null
|
|
39
43
|
}, rest), content, React.createElement(SubmitIndicator, {
|
|
40
44
|
state: showIndicator ? 'pending' : formState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubmitButton.js","names":["React","useCallback","useContext","classnames","DataContext","Button","SubmitIndicator","useTranslation","send","SubmitButton","props","translations","variant","className","showIndicator","children","text","rest","_objectWithoutProperties","_excluded","content","sendText","formState","handleSubmit","isInsideFormElement","onClickHandler","createElement","_extends","onClick","type","icon","state","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport type { ComponentProps } from '../../types'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport SubmitIndicator from '../SubmitIndicator'\nimport useTranslation from '../../hooks/useTranslation'\nimport { send } from '../../../../icons'\n\nexport type Props = {\n /**\n * Show the submit indicator\n */\n showIndicator?: boolean\n} & ComponentProps &\n Omit<ButtonProps, 'variant'> &\n Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>> & {\n variant?: 'send'\n }\n\nfunction SubmitButton(props: Props) {\n const translations = useTranslation().SubmitButton\n\n const { variant, className, showIndicator, children, text, ...rest } =\n props\n\n const content =\n text ||\n children ||\n (variant === 'send' ? translations.sendText : translations.text)\n\n const {
|
|
1
|
+
{"version":3,"file":"SubmitButton.js","names":["React","useCallback","useContext","classnames","DataContext","Button","SubmitIndicator","useTranslation","send","SubmitButton","props","translations","variant","className","showIndicator","children","text","rest","_objectWithoutProperties","_excluded","content","sendText","formState","handleSubmit","isInsideFormElement","dataContextProps","isolate","onClickHandler","createElement","_extends","onClick","type","icon","state","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport type { ComponentProps } from '../../types'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport SubmitIndicator from '../SubmitIndicator'\nimport useTranslation from '../../hooks/useTranslation'\nimport { send } from '../../../../icons'\n\nexport type Props = {\n /**\n * Show the submit indicator\n */\n showIndicator?: boolean\n} & ComponentProps &\n Omit<ButtonProps, 'variant'> &\n Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>> & {\n variant?: 'send'\n }\n\nfunction SubmitButton(props: Props) {\n const translations = useTranslation().SubmitButton\n\n const { variant, className, showIndicator, children, text, ...rest } =\n props\n\n const content =\n text ||\n children ||\n (variant === 'send' ? translations.sendText : translations.text)\n\n const {\n formState,\n handleSubmit,\n isInsideFormElement,\n props: dataContextProps,\n } = useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (!isInsideFormElement) {\n handleSubmit?.()\n }\n }, [isInsideFormElement, handleSubmit])\n\n return (\n <Button\n className={classnames('dnb-forms-submit-button', className)}\n onClick={onClickHandler}\n type={isolate ? 'button' : 'submit'}\n icon={variant === 'send' ? send : null}\n {...rest}\n >\n {content}\n\n <SubmitIndicator\n state={\n showIndicator ? 'pending' : formState // will be enabled in a follow-up PR\n }\n />\n </Button>\n )\n}\n\nSubmitButton._supportsSpacingProps = true\nexport default SubmitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,OAAOC,eAAe,MAAM,oBAAoB;AAChD,OAAOC,cAAc,MAAM,4BAA4B;AACvD,SAASC,IAAI,QAAQ,mBAAmB;AAaxC,SAASC,YAAYA,CAACC,KAAY,EAAE;EAClC,MAAMC,YAAY,GAAGJ,cAAc,CAAC,CAAC,CAACE,YAAY;EAElD,MAAM;MAAEG,OAAO;MAAEC,SAAS;MAAEC,aAAa;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAClEN,KAAK;IADuDO,IAAI,GAAAC,wBAAA,CAChER,KAAK,EAAAS,SAAA;EAEP,MAAMC,OAAO,GACXJ,IAAI,IACJD,QAAQ,KACPH,OAAO,KAAK,MAAM,GAAGD,YAAY,CAACU,QAAQ,GAAGV,YAAY,CAACK,IAAI,CAAC;EAElE,MAAM;IACJM,SAAS;IACTC,YAAY;IACZC,mBAAmB;IACnBd,KAAK,EAAEe;EACT,CAAC,GAAGvB,UAAU,CAACE,WAAW,CAAC,IAAI,CAAC,CAAC;EACjC,MAAM;IAAEsB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAG1B,WAAW,CAAC,MAAM;IACvC,IAAI,CAACuB,mBAAmB,EAAE;MACxBD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACC,mBAAmB,EAAED,YAAY,CAAC,CAAC;EAEvC,OACEvB,KAAA,CAAA4B,aAAA,CAACvB,MAAM,EAAAwB,QAAA;IACLhB,SAAS,EAAEV,UAAU,CAAC,yBAAyB,EAAEU,SAAS,CAAE;IAC5DiB,OAAO,EAAEH,cAAe;IACxBI,IAAI,EAAEL,OAAO,GAAG,QAAQ,GAAG,QAAS;IACpCM,IAAI,EAAEpB,OAAO,KAAK,MAAM,GAAGJ,IAAI,GAAG;EAAK,GACnCS,IAAI,GAEPG,OAAO,EAERpB,KAAA,CAAA4B,aAAA,CAACtB,eAAe;IACd2B,KAAK,EACHnB,aAAa,GAAG,SAAS,GAAGQ;EAC7B,CACF,CACK,CAAC;AAEb;AAEAb,YAAY,CAACyB,qBAAqB,GAAG,IAAI;AACzC,eAAezB,YAAY"}
|
|
@@ -1,30 +1,46 @@
|
|
|
1
1
|
import React, { AriaAttributes } from 'react';
|
|
2
2
|
import { HeightAnimationProps } from '../../../../components/HeightAnimation';
|
|
3
|
-
import type { UseFieldProps } from '../../types';
|
|
3
|
+
import type { Path, UseFieldProps } from '../../types';
|
|
4
4
|
import type { DataAttributes } from '../../hooks/useFieldProps';
|
|
5
5
|
import { FilterData } from '../../DataContext';
|
|
6
6
|
export type VisibleWhen = {
|
|
7
|
-
path:
|
|
7
|
+
path: Path;
|
|
8
8
|
hasValue: unknown;
|
|
9
9
|
} | {
|
|
10
|
-
|
|
10
|
+
itemPath: Path;
|
|
11
|
+
hasValue: unknown;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Will be remove din v11!
|
|
15
|
+
*/
|
|
16
|
+
| {
|
|
17
|
+
path: Path;
|
|
18
|
+
/** @deprecated Use `hasValue` instead */
|
|
19
|
+
withValue: (value: unknown) => boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated Will be remove din v11!
|
|
23
|
+
*/
|
|
24
|
+
| {
|
|
25
|
+
itemPath: Path;
|
|
26
|
+
/** @deprecated Use `hasValue` instead */
|
|
11
27
|
withValue: (value: unknown) => boolean;
|
|
12
28
|
};
|
|
13
29
|
export type Props = {
|
|
14
30
|
visible?: boolean;
|
|
15
31
|
/** Given data context path must be defined to show children */
|
|
16
|
-
pathDefined?:
|
|
32
|
+
pathDefined?: Path;
|
|
17
33
|
/** Given data context path must be undefined to show children */
|
|
18
|
-
pathUndefined?:
|
|
34
|
+
pathUndefined?: Path;
|
|
19
35
|
/** Given data context path must be truthy to show children */
|
|
20
|
-
pathTruthy?:
|
|
36
|
+
pathTruthy?: Path;
|
|
21
37
|
/** Given data context path must be falsy to show children */
|
|
22
|
-
pathFalsy?:
|
|
38
|
+
pathFalsy?: Path;
|
|
23
39
|
/** Given data context path must be true to show children */
|
|
24
|
-
pathTrue?:
|
|
40
|
+
pathTrue?: Path;
|
|
25
41
|
/** Given data context path must be false to show children */
|
|
26
|
-
pathFalse?:
|
|
27
|
-
/** Provide a `path` and a `hasValue`
|
|
42
|
+
pathFalse?: Path;
|
|
43
|
+
/** Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path. */
|
|
28
44
|
visibleWhen?: VisibleWhen;
|
|
29
45
|
/** Same as `visibleWhen`, but with inverted logic. */
|
|
30
46
|
visibleWhenNot?: VisibleWhen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Visibility.js","names":["React","warn","useMountEffect","HeightAnimation","FieldProps","useVisibility","Visibility","_ref","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","visibleWhen","visibleWhenNot","inferData","filterData","animate","keepInDOM","compensateForGap","fieldPropsWhenHidden","children","rest","_objectWithoutProperties","_excluded","check","open","props","createElement","_extends","Boolean","className","hidden","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react'\n\nimport { warn } from '../../../../shared/helpers'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport HeightAnimation, {\n HeightAnimationProps,\n} from '../../../../components/HeightAnimation'\nimport FieldProps from '../FieldProps'\nimport useVisibility from './useVisibility'\n\nimport type { UseFieldProps } from '../../types'\nimport type { DataAttributes } from '../../hooks/useFieldProps'\nimport { FilterData } from '../../DataContext'\n\nexport type VisibleWhen =\n | {\n path:
|
|
1
|
+
{"version":3,"file":"Visibility.js","names":["React","warn","useMountEffect","HeightAnimation","FieldProps","useVisibility","Visibility","_ref","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","visibleWhen","visibleWhenNot","inferData","filterData","animate","keepInDOM","compensateForGap","fieldPropsWhenHidden","children","rest","_objectWithoutProperties","_excluded","check","open","props","createElement","_extends","Boolean","className","hidden","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react'\n\nimport { warn } from '../../../../shared/helpers'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport HeightAnimation, {\n HeightAnimationProps,\n} from '../../../../components/HeightAnimation'\nimport FieldProps from '../FieldProps'\nimport useVisibility from './useVisibility'\n\nimport type { Path, UseFieldProps } from '../../types'\nimport type { DataAttributes } from '../../hooks/useFieldProps'\nimport { FilterData } from '../../DataContext'\n\nexport type VisibleWhen =\n | {\n path: Path\n hasValue: unknown\n }\n | {\n itemPath: Path\n hasValue: unknown\n }\n /**\n * @deprecated Will be remove din v11!\n */\n | {\n path: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n /**\n * @deprecated Will be remove din v11!\n */\n | {\n itemPath: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n\nexport type Props = {\n visible?: boolean\n /** Given data context path must be defined to show children */\n pathDefined?: Path\n /** Given data context path must be undefined to show children */\n pathUndefined?: Path\n /** Given data context path must be truthy to show children */\n pathTruthy?: Path\n /** Given data context path must be falsy to show children */\n pathFalsy?: Path\n /** Given data context path must be true to show children */\n pathTrue?: Path\n /** Given data context path must be false to show children */\n pathFalse?: Path\n /** Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path. */\n visibleWhen?: VisibleWhen\n /** Same as `visibleWhen`, but with inverted logic. */\n visibleWhenNot?: VisibleWhen\n /** Infer visibility calling given derivative function with the whole data set. Should return true/false for visibility. */\n inferData?: (data: unknown) => boolean\n /** Filter data based on provided criteria. The first parameter is the path, the second is the value, and the third is the props, and the fourth is the internal. Return false to filter out the data. */\n filterData?: FilterData\n /** Animate the visibility change */\n animate?: boolean\n /** Keep the content in the DOM, even if it's not visible */\n keepInDOM?: boolean\n /** To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`. */\n compensateForGap?: HeightAnimationProps['compensateForGap']\n /** When visibility is hidden, and `keepInDOM` is true, pass these props to the children */\n fieldPropsWhenHidden?: UseFieldProps & DataAttributes & AriaAttributes\n element?: HeightAnimationProps['element']\n children: React.ReactNode\n\n /** @deprecated Use `visibleWhen` instead */\n pathValue?: string\n /** @deprecated Use `visibleWhen` instead */\n whenValue?: unknown\n}\n\nfunction Visibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n animate,\n keepInDOM,\n compensateForGap,\n fieldPropsWhenHidden,\n children,\n ...rest\n}: Props) {\n useMountEffect(() => {\n if (fieldPropsWhenHidden && !keepInDOM) {\n warn('Using \"fieldPropsWhenHidden\" requires \"keepInDOM\" to be true.')\n }\n })\n\n const { check } = useVisibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n })\n const open = check()\n\n if (animate) {\n const props = !open ? fieldPropsWhenHidden : null\n\n return (\n <HeightAnimation\n open={open}\n keepInDOM={Boolean(keepInDOM)}\n className=\"dnb-forms-visibility\"\n compensateForGap={compensateForGap}\n {...rest}\n >\n <FieldProps {...props}>{children}</FieldProps>\n </HeightAnimation>\n )\n }\n\n if (keepInDOM) {\n const props = !open ? fieldPropsWhenHidden : null\n return (\n <span className=\"dnb-forms-visibility\" hidden={!open}>\n <FieldProps {...props}>{children}</FieldProps>\n </span>\n )\n }\n\n return <>{open ? children : null}</>\n}\n\nVisibility._supportsSpacingProps = 'children'\nexport default Visibility\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAA0B,OAAO;AAE7C,SAASC,IAAI,QAAQ,4BAA4B;AACjD,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,eAAe,MAEf,wCAAwC;AAC/C,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,aAAa,MAAM,iBAAiB;AAuE3C,SAASC,UAAUA,CAAAC,IAAA,EAoBT;EAAA,IApBU;MAClBC,OAAO;MACPC,WAAW;MACXC,aAAa;MACbC,UAAU;MACVC,SAAS;MACTC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,SAAS;MACTC,WAAW;MACXC,cAAc;MACdC,SAAS;MACTC,UAAU;MACVC,OAAO;MACPC,SAAS;MACTC,gBAAgB;MAChBC,oBAAoB;MACpBC;IAEK,CAAC,GAAAlB,IAAA;IADHmB,IAAI,GAAAC,wBAAA,CAAApB,IAAA,EAAAqB,SAAA;EAEP1B,cAAc,CAAC,MAAM;IACnB,IAAIsB,oBAAoB,IAAI,CAACF,SAAS,EAAE;MACtCrB,IAAI,CAAC,+DAA+D,CAAC;IACvE;EACF,CAAC,CAAC;EAEF,MAAM;IAAE4B;EAAM,CAAC,GAAGxB,aAAa,CAAC;IAC9BG,OAAO;IACPC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,WAAW;IACXC,cAAc;IACdC,SAAS;IACTC;EACF,CAAC,CAAC;EACF,MAAMU,IAAI,GAAGD,KAAK,CAAC,CAAC;EAEpB,IAAIR,OAAO,EAAE;IACX,MAAMU,KAAK,GAAG,CAACD,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IAEjD,OACExB,KAAA,CAAAgC,aAAA,CAAC7B,eAAe,EAAA8B,QAAA;MACdH,IAAI,EAAEA,IAAK;MACXR,SAAS,EAAEY,OAAO,CAACZ,SAAS,CAAE;MAC9Ba,SAAS,EAAC,sBAAsB;MAChCZ,gBAAgB,EAAEA;IAAiB,GAC/BG,IAAI,GAER1B,KAAA,CAAAgC,aAAA,CAAC5B,UAAU,EAAK2B,KAAK,EAAGN,QAAqB,CAC9B,CAAC;EAEtB;EAEA,IAAIH,SAAS,EAAE;IACb,MAAMS,KAAK,GAAG,CAACD,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IACjD,OACExB,KAAA,CAAAgC,aAAA;MAAMG,SAAS,EAAC,sBAAsB;MAACC,MAAM,EAAE,CAACN;IAAK,GACnD9B,KAAA,CAAAgC,aAAA,CAAC5B,UAAU,EAAK2B,KAAK,EAAGN,QAAqB,CACzC,CAAC;EAEX;EAEA,OAAOzB,KAAA,CAAAgC,aAAA,CAAAhC,KAAA,CAAAqC,QAAA,QAAGP,IAAI,GAAGL,QAAQ,GAAG,IAAO,CAAC;AACtC;AAEAnB,UAAU,CAACgC,qBAAqB,GAAG,UAAU;AAC7C,eAAehC,UAAU"}
|
|
@@ -30,7 +30,7 @@ export const VisibilityProperties = {
|
|
|
30
30
|
status: 'optional'
|
|
31
31
|
},
|
|
32
32
|
visibleWhen: {
|
|
33
|
-
doc: 'Provide a `path` and a `hasValue`
|
|
33
|
+
doc: 'Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path.',
|
|
34
34
|
type: 'object',
|
|
35
35
|
status: 'optional'
|
|
36
36
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibilityDocs.js","names":["VisibilityProperties","pathDefined","doc","type","status","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","visibleWhen","visibleWhenNot","inferData","visible","animate","keepInDOM","compensateForGap","filterData","fieldPropsWhenHidden","element","children"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/VisibilityDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const VisibilityProperties: PropertiesTableProps = {\n pathDefined: {\n doc: 'Given data context path must be defined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathUndefined: {\n doc: 'Given data context path must be undefined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTruthy: {\n doc: 'Given data context path must be truthy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalsy: {\n doc: 'Given data context path must be falsy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTrue: {\n doc: 'Given data context path must be true to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalse: {\n doc: 'Given data context path must be false to show children.',\n type: 'string',\n status: 'optional',\n },\n visibleWhen: {\n doc: 'Provide a `path` and a `hasValue`
|
|
1
|
+
{"version":3,"file":"VisibilityDocs.js","names":["VisibilityProperties","pathDefined","doc","type","status","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","visibleWhen","visibleWhenNot","inferData","visible","animate","keepInDOM","compensateForGap","filterData","fieldPropsWhenHidden","element","children"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/VisibilityDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const VisibilityProperties: PropertiesTableProps = {\n pathDefined: {\n doc: 'Given data context path must be defined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathUndefined: {\n doc: 'Given data context path must be undefined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTruthy: {\n doc: 'Given data context path must be truthy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalsy: {\n doc: 'Given data context path must be falsy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTrue: {\n doc: 'Given data context path must be true to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalse: {\n doc: 'Given data context path must be false to show children.',\n type: 'string',\n status: 'optional',\n },\n visibleWhen: {\n doc: 'Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path.',\n type: 'object',\n status: 'optional',\n },\n visibleWhenNot: {\n doc: 'Same as `visibleWhen`, but with inverted logic.',\n type: 'object',\n status: 'optional',\n },\n inferData: {\n doc: 'Will be called to decide by external logic, and show/hide contents based on the return value.',\n type: 'function',\n status: 'optional',\n },\n visible: {\n doc: 'Control visibility directly by boolean value.',\n type: 'boolean',\n status: 'optional',\n },\n animate: {\n doc: 'Define if the content should animate during show/hide.',\n type: 'boolean',\n status: 'optional',\n },\n keepInDOM: {\n doc: \"Keep the content in the DOM, even if it's not visible. Can be used to let fields run validation.\",\n type: 'boolean',\n status: 'optional',\n },\n compensateForGap: {\n doc: 'To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`.',\n type: 'string',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter data based on provided criteria. More info about `filterData` can be found in the [Getting Started](/uilib/extensions/forms/getting-started/#filter-data) documentation.',\n type: ['object', 'function'],\n status: 'optional',\n },\n fieldPropsWhenHidden: {\n doc: 'When visibility is hidden, and `keepInDOM` is true, pass these props to the children.',\n type: 'various',\n status: 'optional',\n },\n element: {\n doc: 'Define the type of element. Defaults to `div`. Only for when `animate` is true.',\n type: 'string or React.Element',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,oBAA0C,GAAG;EACxDC,WAAW,EAAE;IACXC,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbH,GAAG,EAAE,6DAA6D;IAClEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,UAAU,EAAE;IACVJ,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,SAAS,EAAE;IACTL,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,QAAQ,EAAE;IACRN,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,SAAS,EAAE;IACTP,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,WAAW,EAAE;IACXR,GAAG,EAAE,8KAA8K;IACnLC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,cAAc,EAAE;IACdT,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,SAAS,EAAE;IACTV,GAAG,EAAE,+FAA+F;IACpGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDS,OAAO,EAAE;IACPX,GAAG,EAAE,+CAA+C;IACpDC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACPZ,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDW,SAAS,EAAE;IACTb,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDY,gBAAgB,EAAE;IAChBd,GAAG,EAAE,gJAAgJ;IACrJC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDa,UAAU,EAAE;IACVf,GAAG,EAAE,iLAAiL;IACtLC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDc,oBAAoB,EAAE;IACpBhB,GAAG,EAAE,uFAAuF;IAC5FC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDe,OAAO,EAAE;IACPjB,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,yBAAyB;IAC/BC,MAAM,EAAE;EACV,CAAC;EACDgB,QAAQ,EAAE;IACRlB,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC"}
|
|
@@ -3,17 +3,16 @@
|
|
|
3
3
|
import { useCallback, useContext, useRef } from 'react';
|
|
4
4
|
import pointer from 'json-pointer';
|
|
5
5
|
import DataContext from '../../DataContext/Context';
|
|
6
|
-
import
|
|
6
|
+
import usePath from '../../hooks/usePath';
|
|
7
7
|
export default function useVisibility(props) {
|
|
8
8
|
const {
|
|
9
9
|
filterDataHandler,
|
|
10
10
|
data: originalData
|
|
11
11
|
} = useContext(DataContext);
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}, [sectionPath]);
|
|
12
|
+
const {
|
|
13
|
+
makePath,
|
|
14
|
+
makeIteratePath
|
|
15
|
+
} = usePath();
|
|
17
16
|
const propsRef = useRef(props);
|
|
18
17
|
propsRef.current = props;
|
|
19
18
|
const check = useCallback(({
|
|
@@ -39,12 +38,16 @@ export default function useVisibility(props) {
|
|
|
39
38
|
if (visibleWhenNot) {
|
|
40
39
|
visibleWhen = visibleWhenNot;
|
|
41
40
|
}
|
|
42
|
-
const
|
|
41
|
+
const path = 'itemPath' in visibleWhen ? makeIteratePath(visibleWhen.itemPath) : makePath(visibleWhen.path);
|
|
42
|
+
const hasPath = pointer.has(data, path);
|
|
43
43
|
if (hasPath) {
|
|
44
|
-
var _visibleWhen, _visibleWhen2;
|
|
45
|
-
const value = pointer.get(data,
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
var _visibleWhen, _visibleWhen$hasValue, _visibleWhen2, _visibleWhen3;
|
|
45
|
+
const value = pointer.get(data, path);
|
|
46
|
+
if ((_visibleWhen = visibleWhen) !== null && _visibleWhen !== void 0 && _visibleWhen['withValue']) {
|
|
47
|
+
console.warn('VisibleWhen: "withValue" is deprecated, use "hasValue" instead');
|
|
48
|
+
}
|
|
49
|
+
const hasValue = (_visibleWhen$hasValue = (_visibleWhen2 = visibleWhen) === null || _visibleWhen2 === void 0 ? void 0 : _visibleWhen2['hasValue']) !== null && _visibleWhen$hasValue !== void 0 ? _visibleWhen$hasValue : (_visibleWhen3 = visibleWhen) === null || _visibleWhen3 === void 0 ? void 0 : _visibleWhen3['withValue'];
|
|
50
|
+
const result = typeof hasValue === 'function' ? hasValue(value) === false : hasValue !== value;
|
|
48
51
|
if (visibleWhenNot) {
|
|
49
52
|
if (!result) {
|
|
50
53
|
return false;
|
|
@@ -56,10 +59,10 @@ export default function useVisibility(props) {
|
|
|
56
59
|
return false;
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
|
-
if (pathDefined && !pointer.has(data,
|
|
62
|
+
if (pathDefined && !pointer.has(data, makePath(pathDefined))) {
|
|
60
63
|
return false;
|
|
61
64
|
}
|
|
62
|
-
if (pathUndefined && pointer.has(data,
|
|
65
|
+
if (pathUndefined && pointer.has(data, makePath(pathUndefined))) {
|
|
63
66
|
return false;
|
|
64
67
|
}
|
|
65
68
|
const getValue = path => {
|
|
@@ -67,26 +70,26 @@ export default function useVisibility(props) {
|
|
|
67
70
|
return pointer.get(data, path);
|
|
68
71
|
}
|
|
69
72
|
};
|
|
70
|
-
if (pathTrue && getValue(
|
|
73
|
+
if (pathTrue && getValue(makePath(pathTrue)) !== true) {
|
|
71
74
|
return false;
|
|
72
75
|
}
|
|
73
|
-
if (pathFalse && getValue(
|
|
76
|
+
if (pathFalse && getValue(makePath(pathFalse)) !== false) {
|
|
74
77
|
return false;
|
|
75
78
|
}
|
|
76
|
-
if (pathTruthy && Boolean(getValue(
|
|
79
|
+
if (pathTruthy && Boolean(getValue(makePath(pathTruthy))) === false) {
|
|
77
80
|
return false;
|
|
78
81
|
}
|
|
79
|
-
if (pathFalsy && Boolean(getValue(
|
|
82
|
+
if (pathFalsy && Boolean(getValue(makePath(pathFalsy))) === true) {
|
|
80
83
|
return false;
|
|
81
84
|
}
|
|
82
85
|
if (inferData && !inferData(data)) {
|
|
83
86
|
return false;
|
|
84
87
|
}
|
|
85
|
-
if (pathValue && getValue(
|
|
88
|
+
if (pathValue && getValue(makePath(pathValue)) !== whenValue) {
|
|
86
89
|
return false;
|
|
87
90
|
}
|
|
88
91
|
return true;
|
|
89
|
-
}, [
|
|
92
|
+
}, [makePath, filterDataHandler, originalData]);
|
|
90
93
|
return {
|
|
91
94
|
check
|
|
92
95
|
};
|