@tft/crispr-forms 14.0.2 → 15.0.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/esm2022/public-api.mjs +4 -0
- package/{esm2020 → esm2022}/src/index.mjs +1 -1
- package/esm2022/src/lib/crispr-forms.module.mjs +55 -0
- package/esm2022/src/lib/display-field.directive.mjs +52 -0
- package/esm2022/src/lib/field-component-map.const.mjs +28 -0
- package/esm2022/src/lib/field.directive.mjs +69 -0
- package/esm2022/src/lib/form/form.component.mjs +62 -0
- package/esm2022/src/lib/form-group-list/form-group-list.component.mjs +97 -0
- package/{esm2020 → esm2022}/src/lib/form-group-list/index.mjs +1 -1
- package/{esm2020 → esm2022}/src/lib/pipes/crispr-pipes.module.mjs +24 -24
- package/esm2022/src/lib/pipes/initial-control-value.pipe.mjs +20 -0
- package/{esm2020 → esm2022}/src/lib/public_api.mjs +2 -2
- package/{esm2020 → esm2022}/src/lib/sub-group/index.mjs +2 -2
- package/esm2022/src/lib/sub-group/sub-group.component.mjs +20 -0
- package/esm2022/src/lib/sub-group/sub-group.module.mjs +42 -0
- package/esm2022/src/lib/ui/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +138 -0
- package/esm2022/src/lib/ui/autocomplete-chiplist-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/autocomplete-chiplist-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/autocomplete-field/autocomplete-field.component.mjs +95 -0
- package/esm2022/src/lib/ui/autocomplete-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/autocomplete-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/button/button.component.mjs +52 -0
- package/esm2022/src/lib/ui/button/index.mjs +2 -0
- package/esm2022/src/lib/ui/button/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/checkbox-field/checkbox-field.component.mjs +42 -0
- package/esm2022/src/lib/ui/checkbox-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/checkbox-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/datepicker-field/datepicker-field.component.mjs +66 -0
- package/esm2022/src/lib/ui/datepicker-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/datepicker-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/divider/divider.component.mjs +25 -0
- package/esm2022/src/lib/ui/divider/index.mjs +2 -0
- package/esm2022/src/lib/ui/divider/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/field-container/field-container.component.mjs +59 -0
- package/esm2022/src/lib/ui/field-container/index.mjs +2 -0
- package/esm2022/src/lib/ui/field-container/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/file-dropzone/file-dropzone.directive.mjs +40 -0
- package/esm2022/src/lib/ui/file-dropzone/index.mjs +2 -0
- package/esm2022/src/lib/ui/file-dropzone/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/file-upload-field/file-upload-field.component.mjs +107 -0
- package/esm2022/src/lib/ui/file-upload-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/file-upload-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/heading/heading.component.mjs +27 -0
- package/esm2022/src/lib/ui/heading/index.mjs +2 -0
- package/esm2022/src/lib/ui/heading/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/image-upload-field/image-upload-field.component.mjs +184 -0
- package/esm2022/src/lib/ui/image-upload-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/image-upload-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/index.mjs +2 -0
- package/esm2022/src/lib/ui/info/index.mjs +2 -0
- package/esm2022/src/lib/ui/info/info.component.mjs +23 -0
- package/esm2022/src/lib/ui/info/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/input-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/input-field/input-field.component.mjs +43 -0
- package/esm2022/src/lib/ui/input-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/option/index.mjs +2 -0
- package/esm2022/src/lib/ui/option/option.component.mjs +16 -0
- package/esm2022/src/lib/ui/option/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/public-api.mjs +7 -0
- package/esm2022/src/lib/ui/radio-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/radio-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/radio-field/radio-field.component.mjs +39 -0
- package/esm2022/src/lib/ui/select-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/select-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/select-field/select-field.component.mjs +73 -0
- package/esm2022/src/lib/ui/selected-file/index.mjs +2 -0
- package/esm2022/src/lib/ui/selected-file/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/selected-file/selected-file.component.mjs +26 -0
- package/esm2022/src/lib/ui/slider-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/slider-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/slider-field/slider-field.component.mjs +46 -0
- package/esm2022/src/lib/ui/textarea-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/textarea-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/textarea-field/textarea-field.component.mjs +42 -0
- package/esm2022/src/lib/ui/unit-conversion-field/index.mjs +2 -0
- package/esm2022/src/lib/ui/unit-conversion-field/public-api.mjs +2 -0
- package/esm2022/src/lib/ui/unit-conversion-field/unit-conversion-field.component.mjs +86 -0
- package/esm2022/src/lib/utils/abstracts/autocomplete-field.abstract.mjs +30 -0
- package/esm2022/src/lib/utils/abstracts/crispr-control.mixin.mjs +27 -0
- package/esm2022/src/lib/utils/abstracts/crispr-display-field.abstract.mjs +14 -0
- package/esm2022/src/lib/utils/abstracts/crispr-field.abstract.mjs +19 -0
- package/esm2022/src/lib/utils/abstracts/index.mjs +5 -0
- package/esm2022/src/lib/utils/functions/buildFormGroupFromConfig.mjs +28 -0
- package/esm2022/src/lib/utils/functions/callOptionsIfFunction.mjs +4 -0
- package/esm2022/src/lib/utils/functions/createControlForType.mjs +19 -0
- package/esm2022/src/lib/utils/functions/filterOptionsByLabel.mjs +11 -0
- package/esm2022/src/lib/utils/functions/image-compression.helpers.mjs +50 -0
- package/esm2022/src/lib/utils/functions/index.mjs +8 -0
- package/esm2022/src/lib/utils/functions/isControlConfig.mjs +7 -0
- package/esm2022/src/lib/utils/functions/observablifyOptions.mjs +29 -0
- package/esm2022/src/lib/utils/index.mjs +2 -0
- package/esm2022/src/lib/utils/models/autocomplete-chiplist-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/autocomplete-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/button.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/checkbox-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/crispr-field.config.mjs +23 -0
- package/esm2022/src/lib/utils/models/datepicker-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/divider.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/file-upload-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/form-group-list.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/heading.config.mjs +3 -0
- package/esm2022/src/lib/utils/models/image-upload-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/index.mjs +18 -0
- package/esm2022/src/lib/utils/models/input-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/radio-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/select-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/slider-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/textarea-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/models/unit-conversion-field.config.mjs +2 -0
- package/esm2022/src/lib/utils/operators/form.operators.mjs +24 -0
- package/esm2022/src/lib/utils/operators/index.mjs +2 -0
- package/esm2022/src/lib/utils/public-api.mjs +5 -0
- package/esm2022/src/lib/utils/tft-crispr-forms-src-lib-utils.mjs +5 -0
- package/{esm2020 → esm2022}/tft-crispr-forms.mjs +4 -4
- package/fesm2022/tft-crispr-forms-index-2dAn0905.mjs +19 -0
- package/fesm2022/tft-crispr-forms-index-2dAn0905.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-76UuF0AI.mjs +36 -0
- package/fesm2022/tft-crispr-forms-index-76UuF0AI.mjs.map +1 -0
- package/{fesm2020/tft-crispr-forms-ui-image-upload-field.mjs → fesm2022/tft-crispr-forms-index-BXwiulEX.mjs} +169 -169
- package/fesm2022/tft-crispr-forms-index-BXwiulEX.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-BfR4XbYi.mjs +110 -0
- package/fesm2022/tft-crispr-forms-index-BfR4XbYi.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-C5X0mk3N.mjs +49 -0
- package/fesm2022/tft-crispr-forms-index-C5X0mk3N.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-CFUop3Cq.mjs +80 -0
- package/fesm2022/tft-crispr-forms-index-CFUop3Cq.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-CFdMVgM0.mjs +91 -0
- package/fesm2022/tft-crispr-forms-index-CFdMVgM0.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-CZdi06Jj.mjs +49 -0
- package/fesm2022/tft-crispr-forms-index-CZdi06Jj.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-C_I9vjqf.mjs +57 -0
- package/fesm2022/tft-crispr-forms-index-C_I9vjqf.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-DE8VOdBd.mjs +102 -0
- package/fesm2022/tft-crispr-forms-index-DE8VOdBd.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-OLo2t0tl.mjs +48 -0
- package/fesm2022/tft-crispr-forms-index-OLo2t0tl.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-OT7kkOgd.mjs +50 -0
- package/fesm2022/tft-crispr-forms-index-OT7kkOgd.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-Ukk3WgS2.mjs +54 -0
- package/fesm2022/tft-crispr-forms-index-Ukk3WgS2.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-rRi6OMY6.mjs +142 -0
- package/fesm2022/tft-crispr-forms-index-rRi6OMY6.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms-index-xAaInTLg.mjs +73 -0
- package/fesm2022/tft-crispr-forms-index-xAaInTLg.mjs.map +1 -0
- package/{fesm2020/tft-crispr-forms-utils.mjs → fesm2022/tft-crispr-forms-src-lib-utils.mjs} +242 -243
- package/fesm2022/tft-crispr-forms-src-lib-utils.mjs.map +1 -0
- package/fesm2022/tft-crispr-forms.mjs +848 -0
- package/fesm2022/tft-crispr-forms.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/package.json +13 -191
- package/public-api.d.ts +3 -3
- package/src/index.d.ts +1 -1
- package/src/lib/crispr-forms.module.d.ts +16 -16
- package/src/lib/display-field.directive.d.ts +23 -23
- package/src/lib/field-component-map.const.d.ts +42 -42
- package/src/lib/field.directive.d.ts +24 -24
- package/src/lib/form/form.component.d.ts +19 -19
- package/src/lib/form-group-list/form-group-list.component.d.ts +40 -38
- package/src/lib/form-group-list/index.d.ts +1 -1
- package/src/lib/pipes/crispr-pipes.module.d.ts +8 -8
- package/src/lib/pipes/initial-control-value.pipe.d.ts +10 -10
- package/src/lib/public_api.d.ts +2 -2
- package/src/lib/sub-group/index.d.ts +2 -2
- package/src/lib/sub-group/sub-group.component.d.ts +24 -22
- package/src/lib/sub-group/sub-group.module.d.ts +12 -12
- package/{ui → src/lib/ui}/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +36 -33
- package/src/lib/ui/autocomplete-chiplist-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/autocomplete-chiplist-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/autocomplete-field/autocomplete-field.component.d.ts +25 -25
- package/src/lib/ui/autocomplete-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/autocomplete-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/button/button.component.d.ts +15 -15
- package/src/lib/ui/button/index.d.ts +1 -0
- package/{ui → src/lib/ui}/button/public-api.d.ts +1 -1
- package/src/lib/ui/checkbox-field/checkbox-field.component.d.ts +23 -0
- package/src/lib/ui/checkbox-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/checkbox-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/datepicker-field/datepicker-field.component.d.ts +32 -30
- package/src/lib/ui/datepicker-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/datepicker-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/divider/divider.component.d.ts +9 -9
- package/src/lib/ui/divider/index.d.ts +1 -0
- package/{ui → src/lib/ui}/divider/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/field-container/field-container.component.d.ts +24 -24
- package/src/lib/ui/field-container/index.d.ts +1 -0
- package/{ui → src/lib/ui}/field-container/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/file-dropzone/file-dropzone.directive.d.ts +10 -10
- package/src/lib/ui/file-dropzone/index.d.ts +1 -0
- package/{ui → src/lib/ui}/file-dropzone/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/file-upload-field/file-upload-field.component.d.ts +39 -37
- package/src/lib/ui/file-upload-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/file-upload-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/heading/heading.component.d.ts +8 -8
- package/src/lib/ui/heading/index.d.ts +1 -0
- package/{ui → src/lib/ui}/heading/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/image-upload-field/image-upload-field.component.d.ts +50 -48
- package/src/lib/ui/image-upload-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/image-upload-field/public-api.d.ts +1 -1
- package/src/lib/ui/index.d.ts +1 -0
- package/src/lib/ui/info/index.d.ts +1 -0
- package/{ui → src/lib/ui}/info/info.component.d.ts +7 -7
- package/{ui → src/lib/ui}/info/public-api.d.ts +1 -1
- package/src/lib/ui/input-field/index.d.ts +1 -0
- package/src/lib/ui/input-field/input-field.component.d.ts +24 -0
- package/{ui → src/lib/ui}/input-field/public-api.d.ts +1 -1
- package/src/lib/ui/option/index.d.ts +1 -0
- package/{ui → src/lib/ui}/option/option.component.d.ts +7 -7
- package/{ui → src/lib/ui}/option/public-api.d.ts +1 -1
- package/src/lib/ui/public-api.d.ts +6 -0
- package/src/lib/ui/radio-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/radio-field/public-api.d.ts +1 -1
- package/src/lib/ui/radio-field/radio-field.component.d.ts +25 -0
- package/src/lib/ui/select-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/select-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/select-field/select-field.component.d.ts +34 -32
- package/src/lib/ui/selected-file/index.d.ts +1 -0
- package/{ui → src/lib/ui}/selected-file/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/selected-file/selected-file.component.d.ts +10 -10
- package/src/lib/ui/slider-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/slider-field/public-api.d.ts +1 -1
- package/src/lib/ui/slider-field/slider-field.component.d.ts +24 -0
- package/src/lib/ui/textarea-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/textarea-field/public-api.d.ts +1 -1
- package/src/lib/ui/textarea-field/textarea-field.component.d.ts +23 -0
- package/src/lib/ui/unit-conversion-field/index.d.ts +1 -0
- package/{ui → src/lib/ui}/unit-conversion-field/public-api.d.ts +1 -1
- package/{ui → src/lib/ui}/unit-conversion-field/unit-conversion-field.component.d.ts +38 -36
- package/{utils → src/lib/utils}/abstracts/autocomplete-field.abstract.d.ts +28 -28
- package/{utils → src/lib/utils}/abstracts/crispr-control.mixin.d.ts +16 -16
- package/{utils → src/lib/utils}/abstracts/crispr-display-field.abstract.d.ts +22 -22
- package/{utils → src/lib/utils}/abstracts/crispr-field.abstract.d.ts +11 -11
- package/{utils → src/lib/utils}/abstracts/index.d.ts +4 -4
- package/{utils → src/lib/utils}/functions/buildFormGroupFromConfig.d.ts +9 -9
- package/{utils → src/lib/utils}/functions/callOptionsIfFunction.d.ts +3 -3
- package/{utils → src/lib/utils}/functions/createControlForType.d.ts +9 -9
- package/{utils → src/lib/utils}/functions/filterOptionsByLabel.d.ts +7 -7
- package/{utils → src/lib/utils}/functions/image-compression.helpers.d.ts +5 -5
- package/{utils → src/lib/utils}/functions/index.d.ts +7 -7
- package/{utils → src/lib/utils}/functions/isControlConfig.d.ts +5 -5
- package/{utils → src/lib/utils}/functions/observablifyOptions.d.ts +12 -12
- package/{ui → src/lib/utils}/index.d.ts +5 -5
- package/{utils → src/lib/utils}/models/autocomplete-chiplist-field.config.d.ts +20 -20
- package/{utils → src/lib/utils}/models/autocomplete-field.config.d.ts +14 -14
- package/{utils → src/lib/utils}/models/button.config.d.ts +17 -17
- package/{utils → src/lib/utils}/models/checkbox-field.config.d.ts +6 -6
- package/{utils → src/lib/utils}/models/crispr-field.config.d.ts +97 -94
- package/{utils → src/lib/utils}/models/datepicker-field.config.d.ts +20 -20
- package/{utils → src/lib/utils}/models/divider.config.d.ts +5 -5
- package/{utils → src/lib/utils}/models/file-upload-field.config.d.ts +33 -33
- package/{utils → src/lib/utils}/models/form-group-list.config.d.ts +18 -18
- package/{utils → src/lib/utils}/models/heading.config.d.ts +6 -6
- package/{utils → src/lib/utils}/models/image-upload-field.config.d.ts +54 -54
- package/{utils → src/lib/utils}/models/index.d.ts +17 -17
- package/{utils → src/lib/utils}/models/input-field.config.d.ts +16 -16
- package/{utils → src/lib/utils}/models/radio-field.config.d.ts +6 -6
- package/{utils → src/lib/utils}/models/select-field.config.d.ts +21 -21
- package/{utils → src/lib/utils}/models/slider-field.config.d.ts +11 -13
- package/{utils → src/lib/utils}/models/textarea-field.config.d.ts +5 -5
- package/{utils → src/lib/utils}/models/unit-conversion-field.config.d.ts +30 -30
- package/{utils → src/lib/utils}/operators/form.operators.d.ts +1 -1
- package/{utils → src/lib/utils}/operators/index.d.ts +1 -1
- package/{utils → src/lib/utils}/public-api.d.ts +4 -4
- package/tft-crispr-forms-15.0.0.tgz +0 -0
- package/esm2020/public-api.mjs +0 -5
- package/esm2020/src/lib/crispr-forms.module.mjs +0 -60
- package/esm2020/src/lib/display-field.directive.mjs +0 -53
- package/esm2020/src/lib/field-component-map.const.mjs +0 -27
- package/esm2020/src/lib/field.directive.mjs +0 -69
- package/esm2020/src/lib/form/form.component.mjs +0 -63
- package/esm2020/src/lib/form-group-list/form-group-list.component.mjs +0 -99
- package/esm2020/src/lib/pipes/initial-control-value.pipe.mjs +0 -21
- package/esm2020/src/lib/sub-group/sub-group.component.mjs +0 -21
- package/esm2020/src/lib/sub-group/sub-group.module.mjs +0 -42
- package/esm2020/ui/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +0 -130
- package/esm2020/ui/autocomplete-chiplist-field/public-api.mjs +0 -2
- package/esm2020/ui/autocomplete-chiplist-field/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs +0 -5
- package/esm2020/ui/autocomplete-field/autocomplete-field.component.mjs +0 -93
- package/esm2020/ui/autocomplete-field/public-api.mjs +0 -2
- package/esm2020/ui/autocomplete-field/tft-crispr-forms-ui-autocomplete-field.mjs +0 -5
- package/esm2020/ui/button/button.component.mjs +0 -49
- package/esm2020/ui/button/public-api.mjs +0 -2
- package/esm2020/ui/button/tft-crispr-forms-ui-button.mjs +0 -5
- package/esm2020/ui/checkbox-field/checkbox-field.component.mjs +0 -42
- package/esm2020/ui/checkbox-field/public-api.mjs +0 -2
- package/esm2020/ui/checkbox-field/tft-crispr-forms-ui-checkbox-field.mjs +0 -5
- package/esm2020/ui/datepicker-field/datepicker-field.component.mjs +0 -63
- package/esm2020/ui/datepicker-field/public-api.mjs +0 -2
- package/esm2020/ui/datepicker-field/tft-crispr-forms-ui-datepicker-field.mjs +0 -5
- package/esm2020/ui/divider/divider.component.mjs +0 -28
- package/esm2020/ui/divider/public-api.mjs +0 -2
- package/esm2020/ui/divider/tft-crispr-forms-ui-divider.mjs +0 -5
- package/esm2020/ui/field-container/field-container.component.mjs +0 -58
- package/esm2020/ui/field-container/public-api.mjs +0 -2
- package/esm2020/ui/field-container/tft-crispr-forms-ui-field-container.mjs +0 -5
- package/esm2020/ui/file-dropzone/file-dropzone.directive.mjs +0 -40
- package/esm2020/ui/file-dropzone/public-api.mjs +0 -2
- package/esm2020/ui/file-dropzone/tft-crispr-forms-ui-file-dropzone.mjs +0 -5
- package/esm2020/ui/file-upload-field/file-upload-field.component.mjs +0 -108
- package/esm2020/ui/file-upload-field/public-api.mjs +0 -2
- package/esm2020/ui/file-upload-field/tft-crispr-forms-ui-file-upload-field.mjs +0 -5
- package/esm2020/ui/heading/heading.component.mjs +0 -31
- package/esm2020/ui/heading/public-api.mjs +0 -2
- package/esm2020/ui/heading/tft-crispr-forms-ui-heading.mjs +0 -5
- package/esm2020/ui/image-upload-field/image-upload-field.component.mjs +0 -179
- package/esm2020/ui/image-upload-field/public-api.mjs +0 -2
- package/esm2020/ui/image-upload-field/tft-crispr-forms-ui-image-upload-field.mjs +0 -5
- package/esm2020/ui/info/info.component.mjs +0 -23
- package/esm2020/ui/info/public-api.mjs +0 -2
- package/esm2020/ui/info/tft-crispr-forms-ui-info.mjs +0 -5
- package/esm2020/ui/input-field/input-field.component.mjs +0 -41
- package/esm2020/ui/input-field/public-api.mjs +0 -2
- package/esm2020/ui/input-field/tft-crispr-forms-ui-input-field.mjs +0 -5
- package/esm2020/ui/option/option.component.mjs +0 -19
- package/esm2020/ui/option/public-api.mjs +0 -2
- package/esm2020/ui/option/tft-crispr-forms-ui-option.mjs +0 -5
- package/esm2020/ui/public-api.mjs +0 -7
- package/esm2020/ui/radio-field/public-api.mjs +0 -2
- package/esm2020/ui/radio-field/radio-field.component.mjs +0 -39
- package/esm2020/ui/radio-field/tft-crispr-forms-ui-radio-field.mjs +0 -5
- package/esm2020/ui/select-field/public-api.mjs +0 -2
- package/esm2020/ui/select-field/select-field.component.mjs +0 -73
- package/esm2020/ui/select-field/tft-crispr-forms-ui-select-field.mjs +0 -5
- package/esm2020/ui/selected-file/public-api.mjs +0 -2
- package/esm2020/ui/selected-file/selected-file.component.mjs +0 -26
- package/esm2020/ui/selected-file/tft-crispr-forms-ui-selected-file.mjs +0 -5
- package/esm2020/ui/slider-field/public-api.mjs +0 -2
- package/esm2020/ui/slider-field/slider-field.component.mjs +0 -44
- package/esm2020/ui/slider-field/tft-crispr-forms-ui-slider-field.mjs +0 -5
- package/esm2020/ui/textarea-field/public-api.mjs +0 -2
- package/esm2020/ui/textarea-field/textarea-field.component.mjs +0 -42
- package/esm2020/ui/textarea-field/tft-crispr-forms-ui-textarea-field.mjs +0 -5
- package/esm2020/ui/tft-crispr-forms-ui.mjs +0 -5
- package/esm2020/ui/unit-conversion-field/public-api.mjs +0 -2
- package/esm2020/ui/unit-conversion-field/tft-crispr-forms-ui-unit-conversion-field.mjs +0 -5
- package/esm2020/ui/unit-conversion-field/unit-conversion-field.component.mjs +0 -84
- package/esm2020/utils/abstracts/autocomplete-field.abstract.mjs +0 -30
- package/esm2020/utils/abstracts/crispr-control.mixin.mjs +0 -27
- package/esm2020/utils/abstracts/crispr-display-field.abstract.mjs +0 -14
- package/esm2020/utils/abstracts/crispr-field.abstract.mjs +0 -20
- package/esm2020/utils/abstracts/index.mjs +0 -5
- package/esm2020/utils/functions/buildFormGroupFromConfig.mjs +0 -28
- package/esm2020/utils/functions/callOptionsIfFunction.mjs +0 -4
- package/esm2020/utils/functions/createControlForType.mjs +0 -19
- package/esm2020/utils/functions/filterOptionsByLabel.mjs +0 -11
- package/esm2020/utils/functions/image-compression.helpers.mjs +0 -50
- package/esm2020/utils/functions/index.mjs +0 -8
- package/esm2020/utils/functions/isControlConfig.mjs +0 -7
- package/esm2020/utils/functions/observablifyOptions.mjs +0 -29
- package/esm2020/utils/models/autocomplete-chiplist-field.config.mjs +0 -2
- package/esm2020/utils/models/autocomplete-field.config.mjs +0 -2
- package/esm2020/utils/models/button.config.mjs +0 -2
- package/esm2020/utils/models/checkbox-field.config.mjs +0 -2
- package/esm2020/utils/models/crispr-field.config.mjs +0 -23
- package/esm2020/utils/models/datepicker-field.config.mjs +0 -2
- package/esm2020/utils/models/divider.config.mjs +0 -2
- package/esm2020/utils/models/file-upload-field.config.mjs +0 -2
- package/esm2020/utils/models/form-group-list.config.mjs +0 -2
- package/esm2020/utils/models/heading.config.mjs +0 -3
- package/esm2020/utils/models/image-upload-field.config.mjs +0 -2
- package/esm2020/utils/models/index.mjs +0 -18
- package/esm2020/utils/models/input-field.config.mjs +0 -2
- package/esm2020/utils/models/radio-field.config.mjs +0 -2
- package/esm2020/utils/models/select-field.config.mjs +0 -2
- package/esm2020/utils/models/slider-field.config.mjs +0 -2
- package/esm2020/utils/models/textarea-field.config.mjs +0 -2
- package/esm2020/utils/models/unit-conversion-field.config.mjs +0 -2
- package/esm2020/utils/operators/form.operators.mjs +0 -24
- package/esm2020/utils/operators/index.mjs +0 -2
- package/esm2020/utils/public-api.mjs +0 -5
- package/esm2020/utils/tft-crispr-forms-utils.mjs +0 -5
- package/fesm2015/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs +0 -138
- package/fesm2015/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-autocomplete-field.mjs +0 -101
- package/fesm2015/tft-crispr-forms-ui-autocomplete-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-button.mjs +0 -55
- package/fesm2015/tft-crispr-forms-ui-button.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-checkbox-field.mjs +0 -49
- package/fesm2015/tft-crispr-forms-ui-checkbox-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-datepicker-field.mjs +0 -71
- package/fesm2015/tft-crispr-forms-ui-datepicker-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-divider.mjs +0 -34
- package/fesm2015/tft-crispr-forms-ui-divider.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-field-container.mjs +0 -64
- package/fesm2015/tft-crispr-forms-ui-field-container.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-file-dropzone.mjs +0 -47
- package/fesm2015/tft-crispr-forms-ui-file-dropzone.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-file-upload-field.mjs +0 -117
- package/fesm2015/tft-crispr-forms-ui-file-upload-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-heading.mjs +0 -37
- package/fesm2015/tft-crispr-forms-ui-heading.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-image-upload-field.mjs +0 -182
- package/fesm2015/tft-crispr-forms-ui-image-upload-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-info.mjs +0 -30
- package/fesm2015/tft-crispr-forms-ui-info.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-input-field.mjs +0 -48
- package/fesm2015/tft-crispr-forms-ui-input-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-option.mjs +0 -26
- package/fesm2015/tft-crispr-forms-ui-option.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-radio-field.mjs +0 -46
- package/fesm2015/tft-crispr-forms-ui-radio-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-select-field.mjs +0 -81
- package/fesm2015/tft-crispr-forms-ui-select-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-selected-file.mjs +0 -33
- package/fesm2015/tft-crispr-forms-ui-selected-file.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-slider-field.mjs +0 -51
- package/fesm2015/tft-crispr-forms-ui-slider-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-textarea-field.mjs +0 -49
- package/fesm2015/tft-crispr-forms-ui-textarea-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui-unit-conversion-field.mjs +0 -93
- package/fesm2015/tft-crispr-forms-ui-unit-conversion-field.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-ui.mjs +0 -12
- package/fesm2015/tft-crispr-forms-ui.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms-utils.mjs +0 -280
- package/fesm2015/tft-crispr-forms-utils.mjs.map +0 -1
- package/fesm2015/tft-crispr-forms.mjs +0 -438
- package/fesm2015/tft-crispr-forms.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs +0 -137
- package/fesm2020/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-autocomplete-field.mjs +0 -100
- package/fesm2020/tft-crispr-forms-ui-autocomplete-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-button.mjs +0 -55
- package/fesm2020/tft-crispr-forms-ui-button.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-checkbox-field.mjs +0 -49
- package/fesm2020/tft-crispr-forms-ui-checkbox-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-datepicker-field.mjs +0 -70
- package/fesm2020/tft-crispr-forms-ui-datepicker-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-divider.mjs +0 -34
- package/fesm2020/tft-crispr-forms-ui-divider.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-field-container.mjs +0 -65
- package/fesm2020/tft-crispr-forms-ui-field-container.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-file-dropzone.mjs +0 -47
- package/fesm2020/tft-crispr-forms-ui-file-dropzone.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-file-upload-field.mjs +0 -115
- package/fesm2020/tft-crispr-forms-ui-file-upload-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-heading.mjs +0 -37
- package/fesm2020/tft-crispr-forms-ui-heading.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-image-upload-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-info.mjs +0 -30
- package/fesm2020/tft-crispr-forms-ui-info.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-input-field.mjs +0 -48
- package/fesm2020/tft-crispr-forms-ui-input-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-option.mjs +0 -26
- package/fesm2020/tft-crispr-forms-ui-option.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-radio-field.mjs +0 -46
- package/fesm2020/tft-crispr-forms-ui-radio-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-select-field.mjs +0 -80
- package/fesm2020/tft-crispr-forms-ui-select-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-selected-file.mjs +0 -33
- package/fesm2020/tft-crispr-forms-ui-selected-file.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-slider-field.mjs +0 -51
- package/fesm2020/tft-crispr-forms-ui-slider-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-textarea-field.mjs +0 -49
- package/fesm2020/tft-crispr-forms-ui-textarea-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui-unit-conversion-field.mjs +0 -91
- package/fesm2020/tft-crispr-forms-ui-unit-conversion-field.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-ui.mjs +0 -12
- package/fesm2020/tft-crispr-forms-ui.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms-utils.mjs.map +0 -1
- package/fesm2020/tft-crispr-forms.mjs +0 -434
- package/fesm2020/tft-crispr-forms.mjs.map +0 -1
- package/tft-crispr-forms-14.0.2.tgz +0 -0
- package/ui/README.md +0 -3
- package/ui/autocomplete-chiplist-field/index.d.ts +0 -5
- package/ui/autocomplete-field/index.d.ts +0 -5
- package/ui/button/index.d.ts +0 -5
- package/ui/checkbox-field/checkbox-field.component.d.ts +0 -21
- package/ui/checkbox-field/index.d.ts +0 -5
- package/ui/datepicker-field/index.d.ts +0 -5
- package/ui/divider/index.d.ts +0 -5
- package/ui/field-container/index.d.ts +0 -5
- package/ui/file-dropzone/index.d.ts +0 -5
- package/ui/file-upload-field/index.d.ts +0 -5
- package/ui/heading/index.d.ts +0 -5
- package/ui/image-upload-field/index.d.ts +0 -5
- package/ui/info/index.d.ts +0 -5
- package/ui/input-field/index.d.ts +0 -5
- package/ui/input-field/input-field.component.d.ts +0 -22
- package/ui/option/index.d.ts +0 -5
- package/ui/public-api.d.ts +0 -5
- package/ui/radio-field/index.d.ts +0 -5
- package/ui/radio-field/radio-field.component.d.ts +0 -23
- package/ui/select-field/index.d.ts +0 -5
- package/ui/selected-file/index.d.ts +0 -5
- package/ui/slider-field/index.d.ts +0 -5
- package/ui/slider-field/slider-field.component.d.ts +0 -25
- package/ui/textarea-field/index.d.ts +0 -5
- package/ui/textarea-field/textarea-field.component.d.ts +0 -21
- package/ui/unit-conversion-field/index.d.ts +0 -5
- package/utils/index.d.ts +0 -5
- /package/{utils → src/lib/utils}/README.md +0 -0
|
@@ -1,438 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Input, Pipe, NgModule, EventEmitter, Component, Output, ViewChild, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/common';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import * as i2 from '@angular/forms';
|
|
6
|
-
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
-
import * as i3$1 from '@tft/form-validation-handler';
|
|
8
|
-
import { FormValidationHandlerModule } from '@tft/form-validation-handler';
|
|
9
|
-
import { __awaiter } from 'tslib';
|
|
10
|
-
import { isControlConfig, ControlType, buildFormGroupFromConfig, crisprControlMixin, CrisprFieldComponent, createControlForType } from '@tft/crispr-forms/utils';
|
|
11
|
-
export * from '@tft/crispr-forms/utils';
|
|
12
|
-
import * as i2$1 from '@angular/material/button';
|
|
13
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
14
|
-
import * as i3$2 from '@angular/material/icon';
|
|
15
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
16
|
-
import * as i3 from '@tft/crispr-forms/ui';
|
|
17
|
-
import { FieldContainerComponent } from '@tft/crispr-forms/ui';
|
|
18
|
-
export * from '@tft/crispr-forms/ui';
|
|
19
|
-
|
|
20
|
-
const FIELD_COMPONENTS = {
|
|
21
|
-
groupList: () => Promise.resolve().then(function () { return index$1; }).then(({ FormGroupListComponent }) => FormGroupListComponent),
|
|
22
|
-
subGroup: () => Promise.resolve().then(function () { return index; }).then(({ SubGroupComponent }) => SubGroupComponent),
|
|
23
|
-
button: () => import('@tft/crispr-forms/ui/button').then(({ ButtonComponent }) => ButtonComponent),
|
|
24
|
-
input: () => import('@tft/crispr-forms/ui/input-field').then(({ InputFieldComponent }) => InputFieldComponent),
|
|
25
|
-
select: () => import('@tft/crispr-forms/ui/select-field').then(({ SelectFieldComponent }) => SelectFieldComponent),
|
|
26
|
-
radio: () => import('@tft/crispr-forms/ui/radio-field').then(({ RadioFieldComponent }) => RadioFieldComponent),
|
|
27
|
-
autocomplete: () => import('@tft/crispr-forms/ui/autocomplete-field').then(({ AutocompleteFieldComponent }) => AutocompleteFieldComponent),
|
|
28
|
-
autocompleteChiplist: () => import('@tft/crispr-forms/ui/autocomplete-chiplist-field').then(({ AutocompleteChiplistFieldComponent }) => AutocompleteChiplistFieldComponent),
|
|
29
|
-
textarea: () => import('@tft/crispr-forms/ui/textarea-field').then(({ TextareaFieldComponent }) => TextareaFieldComponent),
|
|
30
|
-
checkbox: () => import('@tft/crispr-forms/ui/checkbox-field').then(({ CheckboxFieldComponent }) => CheckboxFieldComponent),
|
|
31
|
-
slider: () => import('@tft/crispr-forms/ui/slider-field').then(({ SliderFieldComponent }) => SliderFieldComponent),
|
|
32
|
-
datepicker: () => import('@tft/crispr-forms/ui/datepicker-field').then(({ DatepickerFieldComponent }) => DatepickerFieldComponent),
|
|
33
|
-
fileUpload: () => import('@tft/crispr-forms/ui/file-upload-field').then(({ FileUploadFieldComponent }) => FileUploadFieldComponent),
|
|
34
|
-
imageUpload: () => import('@tft/crispr-forms/ui/image-upload-field').then(({ ImageUploadFieldComponent }) => ImageUploadFieldComponent),
|
|
35
|
-
heading: () => import('@tft/crispr-forms/ui').then(({ HeadingComponent }) => HeadingComponent),
|
|
36
|
-
divider: () => import('@tft/crispr-forms/ui/divider').then(({ DividerComponent }) => DividerComponent),
|
|
37
|
-
unitConversion: () => import('@tft/crispr-forms/ui/unit-conversion-field').then(({ UnitConversionFieldComponent }) => UnitConversionFieldComponent)
|
|
38
|
-
};
|
|
39
|
-
function isControlComponent(component) {
|
|
40
|
-
return component && isControlConfig(component.config) && 'value' in component; // || component.config.controlType === ControlType.BUTTON;
|
|
41
|
-
}
|
|
42
|
-
function isControlOrButtonComponent(component) {
|
|
43
|
-
return isControlComponent(component) || component.config.controlType === ControlType.BUTTON;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
class CrisprFieldDirective {
|
|
47
|
-
constructor(container, renderer, cdr) {
|
|
48
|
-
this.container = container;
|
|
49
|
-
this.renderer = renderer;
|
|
50
|
-
this.cdr = cdr;
|
|
51
|
-
}
|
|
52
|
-
set value(value) {
|
|
53
|
-
this._value = value;
|
|
54
|
-
// This is needed to keep the group list from resetting control values to the initial input value
|
|
55
|
-
this.updateComponentValue(value);
|
|
56
|
-
}
|
|
57
|
-
;
|
|
58
|
-
get value() {
|
|
59
|
-
return this._value;
|
|
60
|
-
}
|
|
61
|
-
ngOnInit() {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
/**
|
|
64
|
-
* create component and set values from config on its instance
|
|
65
|
-
*/
|
|
66
|
-
const component = this.config.component || (yield FIELD_COMPONENTS[this.config.controlType]());
|
|
67
|
-
const componentRef = this.container.createComponent(component);
|
|
68
|
-
this.component = componentRef.instance;
|
|
69
|
-
this.component.config = this.config;
|
|
70
|
-
if (isControlOrButtonComponent(this.component)) {
|
|
71
|
-
this.component.group = this.group;
|
|
72
|
-
}
|
|
73
|
-
this.updateComponentValue(this.value);
|
|
74
|
-
// adds any config classes to the dynamically generated component
|
|
75
|
-
// doing this here keeps us from having to extend a base component into each field component individually
|
|
76
|
-
if (!this.config.classes)
|
|
77
|
-
return;
|
|
78
|
-
this.config.classes.forEach((klass) => {
|
|
79
|
-
// check for passing multiple classes in one array element
|
|
80
|
-
if (klass.includes(' ')) {
|
|
81
|
-
throw Error(`Improperly formatted class. '${klass}' cannot contain spaces.`);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this.renderer.addClass(componentRef.location.nativeElement, klass);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
updateComponentValue(value) {
|
|
90
|
-
if (isControlComponent(this.component)) {
|
|
91
|
-
this.component.value = value;
|
|
92
|
-
// SubGroups won't populate without this detectChanges
|
|
93
|
-
this.cdr.detectChanges();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
CrisprFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
98
|
-
CrisprFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: CrisprFieldDirective, isStandalone: true, selector: "[crisprField]", inputs: { config: "config", group: "group", value: "value" }, ngImport: i0 });
|
|
99
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFieldDirective, decorators: [{
|
|
100
|
-
type: Directive,
|
|
101
|
-
args: [{
|
|
102
|
-
selector: '[crisprField]',
|
|
103
|
-
standalone: true
|
|
104
|
-
}]
|
|
105
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { config: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], group: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], value: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}] } });
|
|
112
|
-
|
|
113
|
-
class InitialControlValuePipe {
|
|
114
|
-
// TODO: does changing any to unknown break anything?
|
|
115
|
-
transform(initialFormValue, fieldConfig) {
|
|
116
|
-
return (initialFormValue && isControlConfig(fieldConfig))
|
|
117
|
-
? initialFormValue[fieldConfig.controlName] || null
|
|
118
|
-
: null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
InitialControlValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InitialControlValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
122
|
-
InitialControlValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: InitialControlValuePipe, name: "initialControlValue" });
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InitialControlValuePipe, decorators: [{
|
|
124
|
-
type: Pipe,
|
|
125
|
-
args: [{
|
|
126
|
-
name: 'initialControlValue'
|
|
127
|
-
}]
|
|
128
|
-
}] });
|
|
129
|
-
|
|
130
|
-
class CrisprPipesModule {
|
|
131
|
-
}
|
|
132
|
-
CrisprPipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
133
|
-
CrisprPipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: CrisprPipesModule, declarations: [InitialControlValuePipe], imports: [CommonModule], exports: [InitialControlValuePipe] });
|
|
134
|
-
CrisprPipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprPipesModule, imports: [CommonModule] });
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprPipesModule, decorators: [{
|
|
136
|
-
type: NgModule,
|
|
137
|
-
args: [{
|
|
138
|
-
imports: [
|
|
139
|
-
CommonModule
|
|
140
|
-
],
|
|
141
|
-
exports: [
|
|
142
|
-
InitialControlValuePipe
|
|
143
|
-
],
|
|
144
|
-
declarations: [
|
|
145
|
-
InitialControlValuePipe
|
|
146
|
-
]
|
|
147
|
-
}]
|
|
148
|
-
}] });
|
|
149
|
-
|
|
150
|
-
class CrisprFormComponent {
|
|
151
|
-
constructor() {
|
|
152
|
-
this.form = new FormGroup({});
|
|
153
|
-
this.value = null;
|
|
154
|
-
this.submitted = new EventEmitter();
|
|
155
|
-
// proxy value and status change events through to consuming component
|
|
156
|
-
this.valueChanges = this.form.valueChanges;
|
|
157
|
-
this.statusChanges = this.form.statusChanges;
|
|
158
|
-
}
|
|
159
|
-
ngOnInit() {
|
|
160
|
-
// build out the form, note that we pass in the form as the third argument and the function modifies it
|
|
161
|
-
buildFormGroupFromConfig(this.config, this.value, this.form);
|
|
162
|
-
}
|
|
163
|
-
handleSubmit() {
|
|
164
|
-
this.form.markAllAsTouched();
|
|
165
|
-
this.submitted.emit(this.form);
|
|
166
|
-
}
|
|
167
|
-
triggerSubmit() {
|
|
168
|
-
this.submitTrigger.nativeElement.click();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
CrisprFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
-
CrisprFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: CrisprFormComponent, isStandalone: true, selector: "crispr-form", inputs: { config: "config", form: "form", value: "value" }, outputs: { submitted: "submitted", valueChanges: "valueChanges", statusChanges: "statusChanges" }, viewQueries: [{ propertyName: "submitTrigger", first: true, predicate: ["submitTrigger"], descendants: true }], ngImport: i0, template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormValidationHandlerModule }, { kind: "directive", type: i3$1.ControlErrorsFormDirective, selector: "form", inputs: ["errorDictionary"] }, { kind: "directive", type: i3$1.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { kind: "ngmodule", type: CrisprPipesModule }, { kind: "pipe", type: InitialControlValuePipe, name: "initialControlValue" }], preserveWhitespaces: true });
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFormComponent, decorators: [{
|
|
174
|
-
type: Component,
|
|
175
|
-
args: [{ selector: 'crispr-form', standalone: true, imports: [
|
|
176
|
-
CommonModule,
|
|
177
|
-
CrisprFieldDirective,
|
|
178
|
-
ReactiveFormsModule,
|
|
179
|
-
FormValidationHandlerModule,
|
|
180
|
-
CrisprPipesModule
|
|
181
|
-
], template: "<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n", styles: [".submit-trigger{display:none}\n"] }]
|
|
182
|
-
}], propDecorators: { config: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], form: [{
|
|
185
|
-
type: Input
|
|
186
|
-
}], value: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], submitted: [{
|
|
189
|
-
type: Output
|
|
190
|
-
}], valueChanges: [{
|
|
191
|
-
type: Output
|
|
192
|
-
}], statusChanges: [{
|
|
193
|
-
type: Output
|
|
194
|
-
}], submitTrigger: [{
|
|
195
|
-
type: ViewChild,
|
|
196
|
-
args: ['submitTrigger']
|
|
197
|
-
}] } });
|
|
198
|
-
|
|
199
|
-
class CrisprDisplayFieldDirective {
|
|
200
|
-
constructor(container, cdr) {
|
|
201
|
-
this.container = container;
|
|
202
|
-
this.cdr = cdr;
|
|
203
|
-
}
|
|
204
|
-
set value(value) {
|
|
205
|
-
this._value = value;
|
|
206
|
-
// This is needed to keep the group list from resetting control values to the initial input value
|
|
207
|
-
this.updateComponentValue(value);
|
|
208
|
-
}
|
|
209
|
-
;
|
|
210
|
-
get value() {
|
|
211
|
-
return this._value;
|
|
212
|
-
}
|
|
213
|
-
ngOnInit() {
|
|
214
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
215
|
-
if (this.component) {
|
|
216
|
-
/**
|
|
217
|
-
* create component and set values from config on its instance
|
|
218
|
-
*/
|
|
219
|
-
const componentRef = this.container.createComponent(this.component);
|
|
220
|
-
this.componentInstance = componentRef.instance;
|
|
221
|
-
this.componentInstance.index = this.index;
|
|
222
|
-
this.updateComponentValue(this.value);
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
updateComponentValue(value) {
|
|
227
|
-
if (!this.componentInstance)
|
|
228
|
-
return;
|
|
229
|
-
this.componentInstance.value = value;
|
|
230
|
-
this.cdr.detectChanges();
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
CrisprDisplayFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprDisplayFieldDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
234
|
-
CrisprDisplayFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: CrisprDisplayFieldDirective, isStandalone: true, selector: "[crisprDisplayField]", inputs: { group: "group", value: "value", component: "component", index: "index" }, ngImport: i0 });
|
|
235
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprDisplayFieldDirective, decorators: [{
|
|
236
|
-
type: Directive,
|
|
237
|
-
args: [{
|
|
238
|
-
selector: '[crisprDisplayField]',
|
|
239
|
-
standalone: true
|
|
240
|
-
}]
|
|
241
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { group: [{
|
|
242
|
-
type: Input
|
|
243
|
-
}], value: [{
|
|
244
|
-
type: Input
|
|
245
|
-
}], component: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], index: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}] } });
|
|
250
|
-
|
|
251
|
-
const defaultConfig = {
|
|
252
|
-
addButtonLabel: 'ADD ITEM',
|
|
253
|
-
minListLength: 1,
|
|
254
|
-
};
|
|
255
|
-
const FormGroupListMixin = crisprControlMixin(CrisprFieldComponent);
|
|
256
|
-
class FormGroupListComponent extends FormGroupListMixin {
|
|
257
|
-
constructor(cdr) {
|
|
258
|
-
super();
|
|
259
|
-
this.cdr = cdr;
|
|
260
|
-
this.defaultConfig = defaultConfig;
|
|
261
|
-
/**
|
|
262
|
-
* By setting this to true when adding/removing items from array,
|
|
263
|
-
* we can block original values from overwriting form values
|
|
264
|
-
* */
|
|
265
|
-
this.blockValue = false;
|
|
266
|
-
this.selectedIndex = null;
|
|
267
|
-
}
|
|
268
|
-
ngOnInit() {
|
|
269
|
-
super.ngOnInit();
|
|
270
|
-
// TODO: this is required to ngFor of controls in template, must be a better way
|
|
271
|
-
}
|
|
272
|
-
setControlValue(values) {
|
|
273
|
-
if (this.control) {
|
|
274
|
-
if ((values === null || values === void 0 ? void 0 : values.length) > 0) {
|
|
275
|
-
// clear any existing values so that new values don't concatenate onto the old
|
|
276
|
-
const currentValues = this.control.value;
|
|
277
|
-
if (currentValues.length) {
|
|
278
|
-
this.control.clear();
|
|
279
|
-
}
|
|
280
|
-
values.forEach(value => this.addGroup(value));
|
|
281
|
-
}
|
|
282
|
-
else if (this.config.displayInitialItem) {
|
|
283
|
-
this.addGroup();
|
|
284
|
-
}
|
|
285
|
-
// needed to ensure new array items render
|
|
286
|
-
setTimeout(() => {
|
|
287
|
-
this.cdr.detectChanges();
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
clickDelete(index) {
|
|
292
|
-
this.blockValue = true;
|
|
293
|
-
this.deleteGroup(index);
|
|
294
|
-
}
|
|
295
|
-
clickAdd() {
|
|
296
|
-
this.blockValue = true;
|
|
297
|
-
this.addGroup();
|
|
298
|
-
}
|
|
299
|
-
addGroup(value = null) {
|
|
300
|
-
this.control.push(createControlForType(this.config.itemConfig, value));
|
|
301
|
-
// needed to ensure new array items render
|
|
302
|
-
setTimeout(() => {
|
|
303
|
-
this.cdr.detectChanges();
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
deleteGroup(index) {
|
|
307
|
-
this.control.removeAt(index);
|
|
308
|
-
}
|
|
309
|
-
clickEditItem(index) {
|
|
310
|
-
this.selectedIndex = index;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
FormGroupListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormGroupListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
314
|
-
FormGroupListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: FormGroupListComponent, isStandalone: true, selector: "crispr-form-group-list", usesInheritance: true, ngImport: i0, template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <ng-container *ngFor=\"let itemControl of control?.controls; let i = index; let last = last\">\n <ng-container *ngIf=\"!config.displayItemComponent || i === selectedIndex || (last && selectedIndex ?? true); else display\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"itemControl\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"itemControl\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #display>\n <div\n class=\"display-field-container\"\n crisprDisplayField\n [component]=\"config.displayItemComponent\"\n [value]=\"itemControl.value\"\n [index]=\"i\">\n <button mat-icon-button (click)=\"clickEditItem(i)\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </ng-template>\n </ng-container>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n", styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}.display-field-container{position:relative}.display-field-container button{position:absolute;top:0;right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }, { kind: "directive", type: CrisprDisplayFieldDirective, selector: "[crisprDisplayField]", inputs: ["group", "value", "component", "index"] }, { kind: "ngmodule", type: CrisprPipesModule }, { kind: "pipe", type: InitialControlValuePipe, name: "initialControlValue" }, { kind: "ngmodule", type: FormValidationHandlerModule }, { kind: "directive", type: i3$1.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
315
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormGroupListComponent, decorators: [{
|
|
316
|
-
type: Component,
|
|
317
|
-
args: [{ selector: 'crispr-form-group-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
318
|
-
CommonModule,
|
|
319
|
-
MatButtonModule,
|
|
320
|
-
MatIconModule,
|
|
321
|
-
FieldContainerComponent,
|
|
322
|
-
ReactiveFormsModule,
|
|
323
|
-
CrisprFieldDirective,
|
|
324
|
-
CrisprDisplayFieldDirective,
|
|
325
|
-
CrisprPipesModule,
|
|
326
|
-
FormValidationHandlerModule
|
|
327
|
-
], template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <ng-container *ngFor=\"let itemControl of control?.controls; let i = index; let last = last\">\n <ng-container *ngIf=\"!config.displayItemComponent || i === selectedIndex || (last && selectedIndex ?? true); else display\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"itemControl\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"itemControl\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #display>\n <div\n class=\"display-field-container\"\n crisprDisplayField\n [component]=\"config.displayItemComponent\"\n [value]=\"itemControl.value\"\n [index]=\"i\">\n <button mat-icon-button (click)=\"clickEditItem(i)\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </ng-template>\n </ng-container>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n", styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}.display-field-container{position:relative}.display-field-container button{position:absolute;top:0;right:0}\n"] }]
|
|
328
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
|
|
329
|
-
|
|
330
|
-
var index$1 = /*#__PURE__*/Object.freeze({
|
|
331
|
-
__proto__: null,
|
|
332
|
-
FormGroupListComponent: FormGroupListComponent
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
const FormGroupMixin = crisprControlMixin(CrisprFieldComponent);
|
|
336
|
-
class SubGroupComponent extends FormGroupMixin {
|
|
337
|
-
ngOnInit() {
|
|
338
|
-
super.ngOnInit();
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
SubGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: SubGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
342
|
-
SubGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: SubGroupComponent, selector: "crispr-sub-group", usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <ng-container\n *ngFor=\"let fieldConfig of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : fieldConfig\"\n [config]=\"fieldConfig\"\n [group]=\"control\">\n </ng-container>\n</crispr-field-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: CrisprFieldDirective, selector: "[crisprField]", inputs: ["config", "group", "value"] }, { kind: "component", type: i3.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { kind: "pipe", type: InitialControlValuePipe, name: "initialControlValue" }], preserveWhitespaces: true });
|
|
343
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: SubGroupComponent, decorators: [{
|
|
344
|
-
type: Component,
|
|
345
|
-
args: [{ selector: 'crispr-sub-group', template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <ng-container\n *ngFor=\"let fieldConfig of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : fieldConfig\"\n [config]=\"fieldConfig\"\n [group]=\"control\">\n </ng-container>\n</crispr-field-container>\n\n" }]
|
|
346
|
-
}] });
|
|
347
|
-
|
|
348
|
-
class SubGroupModule {
|
|
349
|
-
}
|
|
350
|
-
SubGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: SubGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
351
|
-
SubGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: SubGroupModule, declarations: [SubGroupComponent], imports: [CommonModule,
|
|
352
|
-
CrisprFieldDirective,
|
|
353
|
-
FieldContainerComponent,
|
|
354
|
-
CrisprPipesModule,
|
|
355
|
-
// TODO: Does this need to be here?
|
|
356
|
-
FormValidationHandlerModule], exports: [SubGroupComponent] });
|
|
357
|
-
SubGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: SubGroupModule, imports: [CommonModule,
|
|
358
|
-
FieldContainerComponent,
|
|
359
|
-
CrisprPipesModule,
|
|
360
|
-
// TODO: Does this need to be here?
|
|
361
|
-
FormValidationHandlerModule] });
|
|
362
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: SubGroupModule, decorators: [{
|
|
363
|
-
type: NgModule,
|
|
364
|
-
args: [{
|
|
365
|
-
imports: [
|
|
366
|
-
CommonModule,
|
|
367
|
-
CrisprFieldDirective,
|
|
368
|
-
FieldContainerComponent,
|
|
369
|
-
CrisprPipesModule,
|
|
370
|
-
// TODO: Does this need to be here?
|
|
371
|
-
FormValidationHandlerModule
|
|
372
|
-
],
|
|
373
|
-
exports: [
|
|
374
|
-
SubGroupComponent
|
|
375
|
-
],
|
|
376
|
-
declarations: [
|
|
377
|
-
SubGroupComponent
|
|
378
|
-
]
|
|
379
|
-
}]
|
|
380
|
-
}] });
|
|
381
|
-
|
|
382
|
-
var index = /*#__PURE__*/Object.freeze({
|
|
383
|
-
__proto__: null,
|
|
384
|
-
SubGroupComponent: SubGroupComponent,
|
|
385
|
-
SubGroupModule: SubGroupModule
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
/* eslint-disable @nrwl/nx/enforce-module-boundaries */
|
|
389
|
-
class CrisprFormsModule {
|
|
390
|
-
}
|
|
391
|
-
CrisprFormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
392
|
-
CrisprFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: CrisprFormsModule, imports: [CommonModule,
|
|
393
|
-
ReactiveFormsModule,
|
|
394
|
-
FormValidationHandlerModule,
|
|
395
|
-
FormGroupListComponent,
|
|
396
|
-
FieldContainerComponent,
|
|
397
|
-
CrisprFieldDirective,
|
|
398
|
-
CrisprDisplayFieldDirective,
|
|
399
|
-
SubGroupModule,
|
|
400
|
-
CrisprPipesModule,
|
|
401
|
-
CrisprFormComponent], exports: [CrisprFormComponent,
|
|
402
|
-
FieldContainerComponent] });
|
|
403
|
-
CrisprFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFormsModule, imports: [CommonModule,
|
|
404
|
-
ReactiveFormsModule,
|
|
405
|
-
FormValidationHandlerModule,
|
|
406
|
-
FormGroupListComponent,
|
|
407
|
-
FieldContainerComponent,
|
|
408
|
-
SubGroupModule,
|
|
409
|
-
CrisprPipesModule,
|
|
410
|
-
CrisprFormComponent] });
|
|
411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: CrisprFormsModule, decorators: [{
|
|
412
|
-
type: NgModule,
|
|
413
|
-
args: [{
|
|
414
|
-
imports: [
|
|
415
|
-
CommonModule,
|
|
416
|
-
ReactiveFormsModule,
|
|
417
|
-
FormValidationHandlerModule,
|
|
418
|
-
FormGroupListComponent,
|
|
419
|
-
FieldContainerComponent,
|
|
420
|
-
CrisprFieldDirective,
|
|
421
|
-
CrisprDisplayFieldDirective,
|
|
422
|
-
SubGroupModule,
|
|
423
|
-
CrisprPipesModule,
|
|
424
|
-
CrisprFormComponent
|
|
425
|
-
],
|
|
426
|
-
exports: [
|
|
427
|
-
CrisprFormComponent,
|
|
428
|
-
FieldContainerComponent,
|
|
429
|
-
]
|
|
430
|
-
}]
|
|
431
|
-
}] });
|
|
432
|
-
|
|
433
|
-
/**
|
|
434
|
-
* Generated bundle index. Do not edit.
|
|
435
|
-
*/
|
|
436
|
-
|
|
437
|
-
export { CrisprFormComponent, CrisprFormsModule };
|
|
438
|
-
//# sourceMappingURL=tft-crispr-forms.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tft-crispr-forms.mjs","sources":["../../../../libs/crispr-forms/src/lib/field-component-map.const.ts","../../../../libs/crispr-forms/src/lib/field.directive.ts","../../../../libs/crispr-forms/src/lib/pipes/initial-control-value.pipe.ts","../../../../libs/crispr-forms/src/lib/pipes/crispr-pipes.module.ts","../../../../libs/crispr-forms/src/lib/form/form.component.ts","../../../../libs/crispr-forms/src/lib/form/form.component.html","../../../../libs/crispr-forms/src/lib/display-field.directive.ts","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.component.ts","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.component.html","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.component.ts","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.component.html","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.module.ts","../../../../libs/crispr-forms/src/lib/crispr-forms.module.ts","../../../../libs/crispr-forms/tft-crispr-forms.ts"],"sourcesContent":["/* eslint-disable @nrwl/nx/enforce-module-boundaries */\n// tslint:disable-next-line: max-line-length\nimport type { FormGroupListComponent } from './form-group-list/form-group-list.component';\nimport type { SubGroupComponent } from './sub-group/sub-group.component';\nimport type { HeadingComponent } from '@tft/crispr-forms/ui';\nimport type { ImageUploadFieldComponent } from '@tft/crispr-forms/ui/image-upload-field';\nimport type { DatepickerFieldComponent } from '@tft/crispr-forms/ui/datepicker-field';\nimport type { CheckboxFieldComponent } from '@tft/crispr-forms/ui/checkbox-field';\nimport type { TextareaFieldComponent } from '@tft/crispr-forms/ui/textarea-field';\nimport type { AutocompleteFieldComponent } from '@tft/crispr-forms/ui/autocomplete-field';\nimport type { SelectFieldComponent } from '@tft/crispr-forms/ui/select-field';\nimport type { InputFieldComponent, } from '@tft/crispr-forms/ui/input-field';\nimport type { RadioFieldComponent } from '@tft/crispr-forms/ui/radio-field';\nimport type { FileUploadFieldComponent } from '@tft/crispr-forms/ui/file-upload-field';\nimport type { SliderFieldComponent } from '@tft/crispr-forms/ui/slider-field';\nimport type { DividerComponent } from '@tft/crispr-forms/ui/divider';\nimport type { ButtonComponent } from '@tft/crispr-forms/ui/button';\nimport type { UnitConversionFieldComponent } from '@tft/crispr-forms/ui/unit-conversion-field';\n\nimport type { AutocompleteChiplistFieldComponent } from '@tft/crispr-forms/ui/autocomplete-chiplist-field';\n\nimport { isControlConfig, ControlType } from '@tft/crispr-forms/utils';\n\nexport const FIELD_COMPONENTS = {\n groupList: () => import('./form-group-list').then (({FormGroupListComponent}) => FormGroupListComponent),\n subGroup: () => import('./sub-group').then(({ SubGroupComponent}) => SubGroupComponent),\n button: () => import('@tft/crispr-forms/ui/button').then(({ ButtonComponent}) => ButtonComponent),\n input: () => import('@tft/crispr-forms/ui/input-field').then(({ InputFieldComponent}) => InputFieldComponent),\n select: () => import('@tft/crispr-forms/ui/select-field').then(({ SelectFieldComponent}) => SelectFieldComponent),\n radio: () => import('@tft/crispr-forms/ui/radio-field').then(({ RadioFieldComponent}) => RadioFieldComponent),\n autocomplete: () => import('@tft/crispr-forms/ui/autocomplete-field').then(({ AutocompleteFieldComponent}) => AutocompleteFieldComponent),\n autocompleteChiplist: () => import('@tft/crispr-forms/ui/autocomplete-chiplist-field').then(({ AutocompleteChiplistFieldComponent}) => AutocompleteChiplistFieldComponent),\n textarea: () => import('@tft/crispr-forms/ui/textarea-field').then(({ TextareaFieldComponent}) => TextareaFieldComponent),\n checkbox: () => import('@tft/crispr-forms/ui/checkbox-field').then(({ CheckboxFieldComponent}) => CheckboxFieldComponent),\n slider: () => import('@tft/crispr-forms/ui/slider-field').then(({ SliderFieldComponent}) => SliderFieldComponent),\n datepicker: () => import('@tft/crispr-forms/ui/datepicker-field').then(({ DatepickerFieldComponent}) => DatepickerFieldComponent),\n fileUpload: () => import('@tft/crispr-forms/ui/file-upload-field').then(({ FileUploadFieldComponent}) => FileUploadFieldComponent),\n imageUpload: () => import('@tft/crispr-forms/ui/image-upload-field').then(({ ImageUploadFieldComponent}) => ImageUploadFieldComponent),\n heading: () => import('@tft/crispr-forms/ui').then(({ HeadingComponent}) => HeadingComponent),\n divider: () => import('@tft/crispr-forms/ui/divider').then(({ DividerComponent}) => DividerComponent),\n unitConversion: () => import('@tft/crispr-forms/ui/unit-conversion-field').then(({ UnitConversionFieldComponent}) => UnitConversionFieldComponent)\n};\n\nexport function isControlComponent(component: CrisprFieldComponentType): component is CrisprControlComponentType {\n return component && isControlConfig(component.config) && 'value' in component // || component.config.controlType === ControlType.BUTTON;\n}\n\nexport function isControlOrButtonComponent(component: CrisprFieldComponentType): component is CrisprControlOrButton {\n return isControlComponent(component) || component.config.controlType === ControlType.BUTTON;\n}\n\nexport type CrisprControlOrButton = CrisprControlComponentType | ButtonComponent;\n\nexport type CrisprControlComponentType = InputFieldComponent |\n SelectFieldComponent |\n RadioFieldComponent |\n SubGroupComponent |\n FormGroupListComponent |\n AutocompleteFieldComponent |\n AutocompleteChiplistFieldComponent |\n TextareaFieldComponent |\n CheckboxFieldComponent |\n SliderFieldComponent |\n FileUploadFieldComponent |\n ImageUploadFieldComponent|\n DatepickerFieldComponent |\n UnitConversionFieldComponent;\n\nexport type ComponentKeys = keyof typeof FIELD_COMPONENTS;\n// export type CrisprFieldComponent = FIELD_COMPONENTS[ComponentKeys];\n\nexport type CrisprFieldComponentType = CrisprControlComponentType |\n HeadingComponent |\n DividerComponent |\n ButtonComponent;\n\n","import { Directive, Input, ViewContainerRef, Renderer2, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CrisprFieldComponentType, FIELD_COMPONENTS, isControlComponent, isControlOrButtonComponent } from './field-component-map.const';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { AnyFieldConfig, ControlValue } from '@tft/crispr-forms/utils';\n\n@Directive({\n selector: '[crisprField]',\n standalone: true\n})\nexport class CrisprFieldDirective implements OnInit {\n\n @Input() config: AnyFieldConfig;\n @Input() group: FormGroup;\n /**\n * value setter updates the control's value as well\n */\n _value: ControlValue | any[]\n @Input() set value(value: ControlValue | any[]) {\n this._value = value;\n // This is needed to keep the group list from resetting control values to the initial input value\n this.updateComponentValue(value);\n };\n get value() {\n return this._value;\n }\n\n component: CrisprFieldComponentType;\n\n constructor(\n private container: ViewContainerRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n async ngOnInit() {\n /**\n * create component and set values from config on its instance\n */\n const component = this.config.component || await FIELD_COMPONENTS[this.config.controlType]();\n const componentRef = this.container.createComponent<CrisprFieldComponentType>(component);\n\n this.component = componentRef.instance;\n this.component.config = this.config;\n if (isControlOrButtonComponent(this.component)) {\n this.component.group = this.group;\n }\n this.updateComponentValue(this.value);\n // adds any config classes to the dynamically generated component\n // doing this here keeps us from having to extend a base component into each field component individually\n if(!this.config.classes) return;\n this.config.classes.forEach((klass) => {\n // check for passing multiple classes in one array element\n if(klass.includes(' ')) {\n throw Error(`Improperly formatted class. '${klass}' cannot contain spaces.`);\n } else {\n this.renderer.addClass(componentRef.location.nativeElement, klass);\n }\n });\n }\n\n updateComponentValue(value: ControlValue | any[]) {\n if(isControlComponent(this.component)) {\n this.component.value = value;\n // SubGroups won't populate without this detectChanges\n this.cdr.detectChanges();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { ControlValue, AnyFieldConfig, isControlConfig } from '@tft/crispr-forms/utils';\n\n@Pipe({\n name: 'initialControlValue'\n})\nexport class InitialControlValuePipe implements PipeTransform {\n // TODO: does changing any to unknown break anything?\n transform(initialFormValue: {[key: string]: ControlValue | any}, fieldConfig: AnyFieldConfig): unknown {\n return (initialFormValue && isControlConfig(fieldConfig))\n ? initialFormValue[fieldConfig.controlName] || null\n : null;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { InitialControlValuePipe } from \"./initial-control-value.pipe\";\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n InitialControlValuePipe\n ],\n declarations: [\n InitialControlValuePipe\n ]\n})\n\nexport class CrisprPipesModule {\n}\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { CrisprFieldDirective } from '../field.directive';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { ControlGroupValue, FormConfig, buildFormGroupFromConfig } from '@tft/crispr-forms/utils';\n\n@Component({\n selector: 'crispr-form',\n styleUrls: ['form.component.scss'],\n templateUrl: 'form.component.html',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n CrisprFieldDirective,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n CrisprPipesModule\n ],\n})\nexport class CrisprFormComponent implements OnInit {\n // if no form has been passed in by consuming component, we create an empty group to build out\n @Input() config: FormConfig;\n @Input() form: FormGroup = new FormGroup({});\n @Input() value: ControlGroupValue = null;\n\n\n @Output() submitted = new EventEmitter<FormGroup>();\n // proxy value and status change events through to consuming component\n @Output() valueChanges: Observable<any> = this.form.valueChanges;\n @Output() statusChanges: Observable<string> = this.form.statusChanges;\n\n @ViewChild('submitTrigger') submitTrigger: ElementRef<HTMLButtonElement>;\n\n ngOnInit() {\n // build out the form, note that we pass in the form as the third argument and the function modifies it\n buildFormGroupFromConfig(this.config, this.value, this.form);\n }\n\n handleSubmit() {\n this.form.markAllAsTouched();\n this.submitted.emit(this.form);\n }\n\n triggerSubmit() {\n this.submitTrigger.nativeElement.click();\n }\n}\n","<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n","import { Directive, Input, ViewContainerRef, OnInit, ChangeDetectorRef, Type } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { ControlValue, CrisprDisplayFieldComponent } from '@tft/crispr-forms/utils';\n\n@Directive({\n selector: '[crisprDisplayField]',\n standalone: true\n})\nexport class CrisprDisplayFieldDirective implements OnInit {\n\n @Input() group: FormGroup;\n /**\n * value setter updates the control's value as well\n */\n _value: ControlValue | any[]\n @Input() set value(value: ControlValue | any[]) {\n this._value = value;\n // This is needed to keep the group list from resetting control values to the initial input value\n this.updateComponentValue(value);\n };\n get value() {\n return this._value;\n }\n\n @Input() private component: Type<CrisprDisplayFieldComponent>;\n\n @Input() index?: number;\n\n private componentInstance: CrisprDisplayFieldComponent;\n\n constructor(\n private container: ViewContainerRef,\n private cdr: ChangeDetectorRef\n ) {}\n\n async ngOnInit() {\n if (this.component) {\n\n /**\n * create component and set values from config on its instance\n */\n const componentRef = this.container.createComponent(this.component);\n\n this.componentInstance = componentRef.instance;\n this.componentInstance.index = this.index\n this.updateComponentValue(this.value);\n }\n }\n\n updateComponentValue(value: ControlValue | any[]) {\n if(!this.componentInstance) return;\n this.componentInstance.value = value;\n this.cdr.detectChanges();\n }\n}\n","import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CrisprFieldDirective } from '../field.directive';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { CrisprFieldComponent, crisprControlMixin, createControlForType, FormGroupListConfig } from '@tft/crispr-forms/utils';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { FieldContainerComponent } from '@tft/crispr-forms/ui';\nimport { CrisprDisplayFieldDirective } from '../display-field.directive';\n\nconst defaultConfig: Partial<FormGroupListConfig> = {\n addButtonLabel: 'ADD ITEM',\n minListLength: 1,\n};\n\nconst FormGroupListMixin = crisprControlMixin<FormGroupListConfig>(CrisprFieldComponent);\n@Component({\n selector: 'crispr-form-group-list',\n templateUrl: './form-group-list.component.html',\n styleUrls: ['./form-group-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n FieldContainerComponent,\n ReactiveFormsModule,\n CrisprFieldDirective,\n CrisprDisplayFieldDirective,\n CrisprPipesModule,\n FormValidationHandlerModule\n ],\n})\nexport class FormGroupListComponent extends FormGroupListMixin implements OnInit {\n\n defaultConfig = defaultConfig\n group: FormGroup;\n control: FormArray;\n /**\n * By setting this to true when adding/removing items from array,\n * we can block original values from overwriting form values\n * */\n blockValue = false;\n\n selectedIndex: number = null;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n // TODO: this is required to ngFor of controls in template, must be a better way\n }\n\n setControlValue(values: any[]) {\n if(this.control) {\n if(values?.length > 0) {\n // clear any existing values so that new values don't concatenate onto the old\n const currentValues:[] = this.control.value;\n if(currentValues.length) {\n this.control.clear();\n }\n values.forEach(value => this.addGroup(value));\n\n } else if (this.config.displayInitialItem) {\n this.addGroup()\n }\n // needed to ensure new array items render\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n }\n }\n\n clickDelete(index: number) {\n this.blockValue = true;\n this.deleteGroup(index);\n }\n\n clickAdd() {\n this.blockValue = true;\n this.addGroup();\n }\n\n addGroup(value = null) {\n this.control.push(createControlForType(this.config.itemConfig, value));\n // needed to ensure new array items render\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n }\n\n deleteGroup(index: number) {\n this.control.removeAt(index);\n }\n\n clickEditItem(index: number) {\n this.selectedIndex = index;\n }\n}\n","\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <ng-container *ngFor=\"let itemControl of control?.controls; let i = index; let last = last\">\n <ng-container *ngIf=\"!config.displayItemComponent || i === selectedIndex || (last && selectedIndex ?? true); else display\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"itemControl\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"itemControl\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #display>\n <div\n class=\"display-field-container\"\n crisprDisplayField\n [component]=\"config.displayItemComponent\"\n [value]=\"itemControl.value\"\n [index]=\"i\">\n <button mat-icon-button (click)=\"clickEditItem(i)\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n </ng-template>\n </ng-container>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { crisprControlMixin, CrisprFieldComponent, SubGroupConfig } from '@tft/crispr-forms/utils';\n\nconst FormGroupMixin = crisprControlMixin<SubGroupConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-sub-group',\n templateUrl: './sub-group.component.html',\n styleUrls: ['./sub-group.component.scss'],\n // TODO: child image upload controls aren't getting updated appropriately when in OnPush strategy.\n // We can add cdr to this class, but everything that extends it will need the cdr attached\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubGroupComponent extends FormGroupMixin implements OnInit {\n group: FormGroup;\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <ng-container\n *ngFor=\"let fieldConfig of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : fieldConfig\"\n [config]=\"fieldConfig\"\n [group]=\"control\">\n </ng-container>\n</crispr-field-container>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrisprFieldDirective } from '../field.directive';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\nimport { SubGroupComponent } from './sub-group.component';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\nimport { FieldContainerComponent } from '@tft/crispr-forms/ui';\n@NgModule({\n imports: [\n CommonModule,\n CrisprFieldDirective,\n FieldContainerComponent,\n CrisprPipesModule,\n // TODO: Does this need to be here?\n FormValidationHandlerModule\n ],\n exports: [\n SubGroupComponent\n ],\n declarations: [\n SubGroupComponent\n ]\n})\n\nexport class SubGroupModule {\n}\n","/* eslint-disable @nrwl/nx/enforce-module-boundaries */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n// custom modules\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n\n// components\nimport { CrisprFormComponent } from './form/form.component';\nimport { FormGroupListComponent } from './form-group-list';\n// directives\nimport { CrisprFieldDirective } from './field.directive';\nimport { SubGroupModule } from './sub-group';\nimport { CrisprPipesModule } from './pipes/crispr-pipes.module';\nimport { FieldContainerComponent } from '@tft/crispr-forms/ui';\nimport { CrisprDisplayFieldDirective } from './display-field.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n FormGroupListComponent,\n FieldContainerComponent,\n CrisprFieldDirective,\n CrisprDisplayFieldDirective,\n SubGroupModule,\n CrisprPipesModule,\n CrisprFormComponent\n ],\n exports: [\n CrisprFormComponent,\n FieldContainerComponent,\n ]\n})\nexport class CrisprFormsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4.InitialControlValuePipe","i6","i2.CrisprFieldDirective"],"mappings":"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"}
|