@mj-biz-apps/forms-ng 0.0.0 → 0.2.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/dist/lib/builder/builder-models.d.ts +27 -0
- package/dist/lib/builder/builder-models.d.ts.map +1 -0
- package/dist/lib/builder/builder-models.js +15 -0
- package/dist/lib/builder/builder-models.js.map +1 -0
- package/dist/lib/builder/builder-state.service.d.ts +48 -0
- package/dist/lib/builder/builder-state.service.d.ts.map +1 -0
- package/dist/lib/builder/builder-state.service.js +231 -0
- package/dist/lib/builder/builder-state.service.js.map +1 -0
- package/dist/lib/builder/builder-styles.d.ts +12 -0
- package/dist/lib/builder/builder-styles.d.ts.map +1 -0
- package/dist/lib/builder/builder-styles.js +74 -0
- package/dist/lib/builder/builder-styles.js.map +1 -0
- package/dist/lib/builder/conditional-rule-editor.component.d.ts +53 -0
- package/dist/lib/builder/conditional-rule-editor.component.d.ts.map +1 -0
- package/dist/lib/builder/conditional-rule-editor.component.js +282 -0
- package/dist/lib/builder/conditional-rule-editor.component.js.map +1 -0
- package/dist/lib/builder/design-panel.component.d.ts +71 -0
- package/dist/lib/builder/design-panel.component.d.ts.map +1 -0
- package/dist/lib/builder/design-panel.component.js +530 -0
- package/dist/lib/builder/design-panel.component.js.map +1 -0
- package/dist/lib/builder/design-panel.styles.d.ts +10 -0
- package/dist/lib/builder/design-panel.styles.d.ts.map +1 -0
- package/dist/lib/builder/design-panel.styles.js +78 -0
- package/dist/lib/builder/design-panel.styles.js.map +1 -0
- package/dist/lib/builder/design-state.service.d.ts +51 -0
- package/dist/lib/builder/design-state.service.d.ts.map +1 -0
- package/dist/lib/builder/design-state.service.js +108 -0
- package/dist/lib/builder/design-state.service.js.map +1 -0
- package/dist/lib/builder/distribution-links.d.ts +29 -0
- package/dist/lib/builder/distribution-links.d.ts.map +1 -0
- package/dist/lib/builder/distribution-links.js +53 -0
- package/dist/lib/builder/distribution-links.js.map +1 -0
- package/dist/lib/builder/distribution-manager.component.d.ts +53 -0
- package/dist/lib/builder/distribution-manager.component.d.ts.map +1 -0
- package/dist/lib/builder/distribution-manager.component.js +330 -0
- package/dist/lib/builder/distribution-manager.component.js.map +1 -0
- package/dist/lib/builder/distribution.service.d.ts +62 -0
- package/dist/lib/builder/distribution.service.d.ts.map +1 -0
- package/dist/lib/builder/distribution.service.js +140 -0
- package/dist/lib/builder/distribution.service.js.map +1 -0
- package/dist/lib/builder/entity-names.d.ts +20 -0
- package/dist/lib/builder/entity-names.d.ts.map +1 -0
- package/dist/lib/builder/entity-names.js +20 -0
- package/dist/lib/builder/entity-names.js.map +1 -0
- package/dist/lib/builder/form-builder.component.d.ts +92 -0
- package/dist/lib/builder/form-builder.component.d.ts.map +1 -0
- package/dist/lib/builder/form-builder.component.js +627 -0
- package/dist/lib/builder/form-builder.component.js.map +1 -0
- package/dist/lib/builder/form-builder.styles.d.ts +3 -0
- package/dist/lib/builder/form-builder.styles.d.ts.map +1 -0
- package/dist/lib/builder/form-builder.styles.js +94 -0
- package/dist/lib/builder/form-builder.styles.js.map +1 -0
- package/dist/lib/builder/form-preview-modal.component.d.ts +25 -0
- package/dist/lib/builder/form-preview-modal.component.d.ts.map +1 -0
- package/dist/lib/builder/form-preview-modal.component.js +90 -0
- package/dist/lib/builder/form-preview-modal.component.js.map +1 -0
- package/dist/lib/builder/index.d.ts +31 -0
- package/dist/lib/builder/index.d.ts.map +1 -0
- package/dist/lib/builder/index.js +32 -0
- package/dist/lib/builder/index.js.map +1 -0
- package/dist/lib/builder/json-fields.d.ts +14 -0
- package/dist/lib/builder/json-fields.d.ts.map +1 -0
- package/dist/lib/builder/json-fields.js +100 -0
- package/dist/lib/builder/json-fields.js.map +1 -0
- package/dist/lib/builder/publish.service.d.ts +34 -0
- package/dist/lib/builder/publish.service.d.ts.map +1 -0
- package/dist/lib/builder/publish.service.js +110 -0
- package/dist/lib/builder/publish.service.js.map +1 -0
- package/dist/lib/builder/qr-code.d.ts +26 -0
- package/dist/lib/builder/qr-code.d.ts.map +1 -0
- package/dist/lib/builder/qr-code.js +361 -0
- package/dist/lib/builder/qr-code.js.map +1 -0
- package/dist/lib/builder/question-editor.component.d.ts +41 -0
- package/dist/lib/builder/question-editor.component.d.ts.map +1 -0
- package/dist/lib/builder/question-editor.component.js +228 -0
- package/dist/lib/builder/question-editor.component.js.map +1 -0
- package/dist/lib/builder/question-type-catalog.d.ts +29 -0
- package/dist/lib/builder/question-type-catalog.d.ts.map +1 -0
- package/dist/lib/builder/question-type-catalog.js +43 -0
- package/dist/lib/builder/question-type-catalog.js.map +1 -0
- package/dist/lib/builder/reorder.d.ts +10 -0
- package/dist/lib/builder/reorder.d.ts.map +1 -0
- package/dist/lib/builder/reorder.js +18 -0
- package/dist/lib/builder/reorder.js.map +1 -0
- package/dist/lib/builder/snapshot-builder.d.ts +16 -0
- package/dist/lib/builder/snapshot-builder.d.ts.map +1 -0
- package/dist/lib/builder/snapshot-builder.js +93 -0
- package/dist/lib/builder/snapshot-builder.js.map +1 -0
- package/dist/lib/builder/style-tokens.d.ts +54 -0
- package/dist/lib/builder/style-tokens.d.ts.map +1 -0
- package/dist/lib/builder/style-tokens.js +71 -0
- package/dist/lib/builder/style-tokens.js.map +1 -0
- package/dist/lib/builder/validation-rule-editor.component.d.ts +27 -0
- package/dist/lib/builder/validation-rule-editor.component.d.ts.map +1 -0
- package/dist/lib/builder/validation-rule-editor.component.js +179 -0
- package/dist/lib/builder/validation-rule-editor.component.js.map +1 -0
- package/dist/lib/dashboard/components/distribution-chart.component.d.ts +14 -0
- package/dist/lib/dashboard/components/distribution-chart.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/distribution-chart.component.js +85 -0
- package/dist/lib/dashboard/components/distribution-chart.component.js.map +1 -0
- package/dist/lib/dashboard/components/funnel-chart.component.d.ts +14 -0
- package/dist/lib/dashboard/components/funnel-chart.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/funnel-chart.component.js +101 -0
- package/dist/lib/dashboard/components/funnel-chart.component.js.map +1 -0
- package/dist/lib/dashboard/components/question-breakdown.component.d.ts +16 -0
- package/dist/lib/dashboard/components/question-breakdown.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/question-breakdown.component.js +213 -0
- package/dist/lib/dashboard/components/question-breakdown.component.js.map +1 -0
- package/dist/lib/dashboard/components/response-detail.component.d.ts +11 -0
- package/dist/lib/dashboard/components/response-detail.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/response-detail.component.js +113 -0
- package/dist/lib/dashboard/components/response-detail.component.js.map +1 -0
- package/dist/lib/dashboard/components/response-list.component.d.ts +27 -0
- package/dist/lib/dashboard/components/response-list.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/response-list.component.js +196 -0
- package/dist/lib/dashboard/components/response-list.component.js.map +1 -0
- package/dist/lib/dashboard/components/summary-stats.component.d.ts +12 -0
- package/dist/lib/dashboard/components/summary-stats.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/summary-stats.component.js +112 -0
- package/dist/lib/dashboard/components/summary-stats.component.js.map +1 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts +64 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts.map +1 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.js +397 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.js.map +1 -0
- package/dist/lib/dashboard/index.d.ts +19 -0
- package/dist/lib/dashboard/index.d.ts.map +1 -0
- package/dist/lib/dashboard/index.js +19 -0
- package/dist/lib/dashboard/index.js.map +1 -0
- package/dist/lib/dashboard/models/reporting.model.d.ts +125 -0
- package/dist/lib/dashboard/models/reporting.model.d.ts.map +1 -0
- package/dist/lib/dashboard/models/reporting.model.js +2 -0
- package/dist/lib/dashboard/models/reporting.model.js.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts +21 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.js +83 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.js.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.d.ts +18 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.d.ts.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.js +147 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.js.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting.service.d.ts +45 -0
- package/dist/lib/dashboard/services/forms-reporting.service.d.ts.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting.service.js +230 -0
- package/dist/lib/dashboard/services/forms-reporting.service.js.map +1 -0
- package/dist/lib/dashboard/services/reporting-aggregations.d.ts +40 -0
- package/dist/lib/dashboard/services/reporting-aggregations.d.ts.map +1 -0
- package/dist/lib/dashboard/services/reporting-aggregations.js +379 -0
- package/dist/lib/dashboard/services/reporting-aggregations.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js +104 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js +83 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js +83 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +172 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js +90 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +274 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +91 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js +100 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js +174 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js +118 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js +93 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js +132 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js +77 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js +108 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js +99 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js +100 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js +274 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js +67 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js +90 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js +124 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js +86 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js +67 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js +86 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js +61 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js +63 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js +69 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js +63 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js +98 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js +80 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js +59 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js +84 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js +146 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js +61 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js +59 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js +132 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js.map +1 -0
- package/dist/lib/generated/class-registrations-manifest.d.ts +6 -0
- package/dist/lib/generated/class-registrations-manifest.d.ts.map +1 -0
- package/dist/lib/generated/class-registrations-manifest.js +6 -0
- package/dist/lib/generated/class-registrations-manifest.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +61 -0
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -0
- package/dist/lib/generated/generated-forms.module.js +207 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -0
- package/dist/lib/home/forms-home-dashboard.component.d.ts +61 -0
- package/dist/lib/home/forms-home-dashboard.component.d.ts.map +1 -0
- package/dist/lib/home/forms-home-dashboard.component.js +379 -0
- package/dist/lib/home/forms-home-dashboard.component.js.map +1 -0
- package/dist/lib/home/forms-home.service.d.ts +24 -0
- package/dist/lib/home/forms-home.service.d.ts.map +1 -0
- package/dist/lib/home/forms-home.service.js +92 -0
- package/dist/lib/home/forms-home.service.js.map +1 -0
- package/dist/lib/home/home-aggregations.d.ts +23 -0
- package/dist/lib/home/home-aggregations.d.ts.map +1 -0
- package/dist/lib/home/home-aggregations.js +64 -0
- package/dist/lib/home/home-aggregations.js.map +1 -0
- package/dist/lib/home/home-models.d.ts +60 -0
- package/dist/lib/home/home-models.d.ts.map +1 -0
- package/dist/lib/home/home-models.js +34 -0
- package/dist/lib/home/home-models.js.map +1 -0
- package/dist/lib/home/index.d.ts +13 -0
- package/dist/lib/home/index.d.ts.map +1 -0
- package/dist/lib/home/index.js +13 -0
- package/dist/lib/home/index.js.map +1 -0
- package/dist/lib/widget/api/form-upload.service.d.ts +41 -0
- package/dist/lib/widget/api/form-upload.service.d.ts.map +1 -0
- package/dist/lib/widget/api/form-upload.service.js +124 -0
- package/dist/lib/widget/api/form-upload.service.js.map +1 -0
- package/dist/lib/widget/api/forms-api.config.d.ts +55 -0
- package/dist/lib/widget/api/forms-api.config.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.config.js +40 -0
- package/dist/lib/widget/api/forms-api.config.js.map +1 -0
- package/dist/lib/widget/api/forms-api.graphql.service.d.ts +20 -0
- package/dist/lib/widget/api/forms-api.graphql.service.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.graphql.service.js +96 -0
- package/dist/lib/widget/api/forms-api.graphql.service.js.map +1 -0
- package/dist/lib/widget/api/forms-api.interface.d.ts +45 -0
- package/dist/lib/widget/api/forms-api.interface.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.interface.js +8 -0
- package/dist/lib/widget/api/forms-api.interface.js.map +1 -0
- package/dist/lib/widget/api/forms-api.mock.service.d.ts +12 -0
- package/dist/lib/widget/api/forms-api.mock.service.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.mock.service.js +41 -0
- package/dist/lib/widget/api/forms-api.mock.service.js.map +1 -0
- package/dist/lib/widget/api/mock-form.data.d.ts +8 -0
- package/dist/lib/widget/api/mock-form.data.d.ts.map +1 -0
- package/dist/lib/widget/api/mock-form.data.js +192 -0
- package/dist/lib/widget/api/mock-form.data.js.map +1 -0
- package/dist/lib/widget/api/submission-mapping.d.ts +60 -0
- package/dist/lib/widget/api/submission-mapping.d.ts.map +1 -0
- package/dist/lib/widget/api/submission-mapping.js +47 -0
- package/dist/lib/widget/api/submission-mapping.js.map +1 -0
- package/dist/lib/widget/components/form-one-question.component.d.ts +43 -0
- package/dist/lib/widget/components/form-one-question.component.d.ts.map +1 -0
- package/dist/lib/widget/components/form-one-question.component.js +194 -0
- package/dist/lib/widget/components/form-one-question.component.js.map +1 -0
- package/dist/lib/widget/components/form-progress.component.d.ts +9 -0
- package/dist/lib/widget/components/form-progress.component.d.ts.map +1 -0
- package/dist/lib/widget/components/form-progress.component.js +47 -0
- package/dist/lib/widget/components/form-progress.component.js.map +1 -0
- package/dist/lib/widget/components/form-scroll.component.d.ts +23 -0
- package/dist/lib/widget/components/form-scroll.component.d.ts.map +1 -0
- package/dist/lib/widget/components/form-scroll.component.js +132 -0
- package/dist/lib/widget/components/form-scroll.component.js.map +1 -0
- package/dist/lib/widget/components/questions/form-question.component.d.ts +68 -0
- package/dist/lib/widget/components/questions/form-question.component.d.ts.map +1 -0
- package/dist/lib/widget/components/questions/form-question.component.js +541 -0
- package/dist/lib/widget/components/questions/form-question.component.js.map +1 -0
- package/dist/lib/widget/components/questions/input-mode.d.ts +13 -0
- package/dist/lib/widget/components/questions/input-mode.d.ts.map +1 -0
- package/dist/lib/widget/components/questions/input-mode.js +42 -0
- package/dist/lib/widget/components/questions/input-mode.js.map +1 -0
- package/dist/lib/widget/components/turnstile-challenge.component.d.ts +52 -0
- package/dist/lib/widget/components/turnstile-challenge.component.d.ts.map +1 -0
- package/dist/lib/widget/components/turnstile-challenge.component.js +123 -0
- package/dist/lib/widget/components/turnstile-challenge.component.js.map +1 -0
- package/dist/lib/widget/core/answer-value.d.ts +17 -0
- package/dist/lib/widget/core/answer-value.d.ts.map +1 -0
- package/dist/lib/widget/core/answer-value.js +41 -0
- package/dist/lib/widget/core/answer-value.js.map +1 -0
- package/dist/lib/widget/core/autosave-controller.d.ts +65 -0
- package/dist/lib/widget/core/autosave-controller.d.ts.map +1 -0
- package/dist/lib/widget/core/autosave-controller.js +134 -0
- package/dist/lib/widget/core/autosave-controller.js.map +1 -0
- package/dist/lib/widget/core/client-id.d.ts +17 -0
- package/dist/lib/widget/core/client-id.d.ts.map +1 -0
- package/dist/lib/widget/core/client-id.js +52 -0
- package/dist/lib/widget/core/client-id.js.map +1 -0
- package/dist/lib/widget/core/form-runtime.d.ts +34 -0
- package/dist/lib/widget/core/form-runtime.d.ts.map +1 -0
- package/dist/lib/widget/core/form-runtime.js +123 -0
- package/dist/lib/widget/core/form-runtime.js.map +1 -0
- package/dist/lib/widget/core/one-question-stepper.d.ts +20 -0
- package/dist/lib/widget/core/one-question-stepper.d.ts.map +1 -0
- package/dist/lib/widget/core/one-question-stepper.js +23 -0
- package/dist/lib/widget/core/one-question-stepper.js.map +1 -0
- package/dist/lib/widget/core/submit-phase.d.ts +31 -0
- package/dist/lib/widget/core/submit-phase.d.ts.map +1 -0
- package/dist/lib/widget/core/submit-phase.js +21 -0
- package/dist/lib/widget/core/submit-phase.js.map +1 -0
- package/dist/lib/widget/core/theming.d.ts +17 -0
- package/dist/lib/widget/core/theming.d.ts.map +1 -0
- package/dist/lib/widget/core/theming.js +36 -0
- package/dist/lib/widget/core/theming.js.map +1 -0
- package/dist/lib/widget/core/turnstile-gate.d.ts +42 -0
- package/dist/lib/widget/core/turnstile-gate.d.ts.map +1 -0
- package/dist/lib/widget/core/turnstile-gate.js +61 -0
- package/dist/lib/widget/core/turnstile-gate.js.map +1 -0
- package/dist/lib/widget/core/turnstile-loader.d.ts +34 -0
- package/dist/lib/widget/core/turnstile-loader.d.ts.map +1 -0
- package/dist/lib/widget/core/turnstile-loader.js +68 -0
- package/dist/lib/widget/core/turnstile-loader.js.map +1 -0
- package/dist/lib/widget/core/validation.d.ts +19 -0
- package/dist/lib/widget/core/validation.d.ts.map +1 -0
- package/dist/lib/widget/core/validation.js +105 -0
- package/dist/lib/widget/core/validation.js.map +1 -0
- package/dist/lib/widget/index.d.ts +27 -0
- package/dist/lib/widget/index.d.ts.map +1 -0
- package/dist/lib/widget/index.js +30 -0
- package/dist/lib/widget/index.js.map +1 -0
- package/dist/lib/widget/mj-form.component.d.ts +114 -0
- package/dist/lib/widget/mj-form.component.d.ts.map +1 -0
- package/dist/lib/widget/mj-form.component.js +428 -0
- package/dist/lib/widget/mj-form.component.js.map +1 -0
- package/dist/lib/widget/register-element.d.ts +8 -0
- package/dist/lib/widget/register-element.d.ts.map +1 -0
- package/dist/lib/widget/register-element.js +98 -0
- package/dist/lib/widget/register-element.js.map +1 -0
- package/dist/public-api.d.ts +23 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +33 -0
- package/dist/public-api.js.map +1 -0
- package/dist/widget-entry.d.ts +2 -0
- package/dist/widget-entry.d.ts.map +1 -0
- package/dist/widget-entry.js +20 -0
- package/dist/widget-entry.js.map +1 -0
- package/package.json +53 -5
- package/README.md +0 -3
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import { FormsDistributionChartComponent } from './distribution-chart.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
function FormsQuestionBreakdownComponent_Case_6_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵelement(0, "mj-forms-distribution-chart", 4);
|
|
6
|
+
} if (rf & 2) {
|
|
7
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
8
|
+
i0.ɵɵproperty("buckets", ctx_r0.breakdown.buckets);
|
|
9
|
+
} }
|
|
10
|
+
function FormsQuestionBreakdownComponent_Case_7_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
i0.ɵɵelement(0, "mj-forms-distribution-chart", 4);
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
14
|
+
i0.ɵɵproperty("buckets", ctx_r0.breakdown.buckets);
|
|
15
|
+
} }
|
|
16
|
+
function FormsQuestionBreakdownComponent_Case_8_Conditional_0_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵelementStart(0, "span", 10);
|
|
18
|
+
i0.ɵɵtext(1);
|
|
19
|
+
i0.ɵɵelementEnd();
|
|
20
|
+
} if (rf & 2) {
|
|
21
|
+
const seg_r2 = ctx;
|
|
22
|
+
i0.ɵɵadvance();
|
|
23
|
+
i0.ɵɵtextInterpolate3(" ", seg_r2.promoters, " promoters \u00B7 ", seg_r2.passives, " passives \u00B7 ", seg_r2.detractors, " detractors ");
|
|
24
|
+
} }
|
|
25
|
+
function FormsQuestionBreakdownComponent_Case_8_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "span", 8);
|
|
27
|
+
i0.ɵɵtext(2);
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
i0.ɵɵelementStart(3, "span", 9);
|
|
30
|
+
i0.ɵɵtext(4, "NPS");
|
|
31
|
+
i0.ɵɵelementEnd();
|
|
32
|
+
i0.ɵɵconditionalCreate(5, FormsQuestionBreakdownComponent_Case_8_Conditional_0_Conditional_1_Conditional_5_Template, 2, 3, "span", 10);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
let tmp_5_0;
|
|
36
|
+
const n_r3 = i0.ɵɵnextContext();
|
|
37
|
+
i0.ɵɵadvance(2);
|
|
38
|
+
i0.ɵɵtextInterpolate(n_r3.npsScore);
|
|
39
|
+
i0.ɵɵadvance(3);
|
|
40
|
+
i0.ɵɵconditional((tmp_5_0 = n_r3.npsSegments) ? 5 : -1, tmp_5_0);
|
|
41
|
+
} }
|
|
42
|
+
function FormsQuestionBreakdownComponent_Case_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
44
|
+
i0.ɵɵconditionalCreate(1, FormsQuestionBreakdownComponent_Case_8_Conditional_0_Conditional_1_Template, 6, 2, "div", 6);
|
|
45
|
+
i0.ɵɵelementStart(2, "dl", 7)(3, "div")(4, "dt");
|
|
46
|
+
i0.ɵɵtext(5, "Average");
|
|
47
|
+
i0.ɵɵelementEnd();
|
|
48
|
+
i0.ɵɵelementStart(6, "dd");
|
|
49
|
+
i0.ɵɵtext(7);
|
|
50
|
+
i0.ɵɵelementEnd()();
|
|
51
|
+
i0.ɵɵelementStart(8, "div")(9, "dt");
|
|
52
|
+
i0.ɵɵtext(10, "Min");
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
i0.ɵɵelementStart(11, "dd");
|
|
55
|
+
i0.ɵɵtext(12);
|
|
56
|
+
i0.ɵɵelementEnd()();
|
|
57
|
+
i0.ɵɵelementStart(13, "div")(14, "dt");
|
|
58
|
+
i0.ɵɵtext(15, "Max");
|
|
59
|
+
i0.ɵɵelementEnd();
|
|
60
|
+
i0.ɵɵelementStart(16, "dd");
|
|
61
|
+
i0.ɵɵtext(17);
|
|
62
|
+
i0.ɵɵelementEnd()();
|
|
63
|
+
i0.ɵɵelementStart(18, "div")(19, "dt");
|
|
64
|
+
i0.ɵɵtext(20, "Answered");
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
i0.ɵɵelementStart(21, "dd");
|
|
67
|
+
i0.ɵɵtext(22);
|
|
68
|
+
i0.ɵɵelementEnd()()()();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const n_r3 = ctx;
|
|
71
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
72
|
+
i0.ɵɵadvance();
|
|
73
|
+
i0.ɵɵconditional(n_r3.npsScore !== null ? 1 : -1);
|
|
74
|
+
i0.ɵɵadvance(6);
|
|
75
|
+
i0.ɵɵtextInterpolate(ctx_r0.fmt(n_r3.average));
|
|
76
|
+
i0.ɵɵadvance(5);
|
|
77
|
+
i0.ɵɵtextInterpolate(ctx_r0.fmt(n_r3.min));
|
|
78
|
+
i0.ɵɵadvance(5);
|
|
79
|
+
i0.ɵɵtextInterpolate(ctx_r0.fmt(n_r3.max));
|
|
80
|
+
i0.ɵɵadvance(5);
|
|
81
|
+
i0.ɵɵtextInterpolate(n_r3.answered);
|
|
82
|
+
} }
|
|
83
|
+
function FormsQuestionBreakdownComponent_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
i0.ɵɵconditionalCreate(0, FormsQuestionBreakdownComponent_Case_8_Conditional_0_Template, 23, 5, "div", 5);
|
|
85
|
+
} if (rf & 2) {
|
|
86
|
+
let tmp_1_0;
|
|
87
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
88
|
+
i0.ɵɵconditional((tmp_1_0 = ctx_r0.breakdown.numeric) ? 0 : -1, tmp_1_0);
|
|
89
|
+
} }
|
|
90
|
+
function FormsQuestionBreakdownComponent_Case_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelementStart(0, "p", 11);
|
|
92
|
+
i0.ɵɵtext(1, "No answers yet.");
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} }
|
|
95
|
+
function FormsQuestionBreakdownComponent_Case_9_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵelementStart(0, "li");
|
|
97
|
+
i0.ɵɵtext(1);
|
|
98
|
+
i0.ɵɵelementEnd();
|
|
99
|
+
} if (rf & 2) {
|
|
100
|
+
const t_r4 = ctx.$implicit;
|
|
101
|
+
i0.ɵɵadvance();
|
|
102
|
+
i0.ɵɵtextInterpolate(t_r4);
|
|
103
|
+
} }
|
|
104
|
+
function FormsQuestionBreakdownComponent_Case_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelementStart(0, "ul", 12);
|
|
106
|
+
i0.ɵɵrepeaterCreate(1, FormsQuestionBreakdownComponent_Case_9_Conditional_1_For_2_Template, 2, 1, "li", null, i0.ɵɵrepeaterTrackByIndex);
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
} if (rf & 2) {
|
|
109
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
110
|
+
i0.ɵɵadvance();
|
|
111
|
+
i0.ɵɵrepeater(ctx_r0.breakdown.textAnswers);
|
|
112
|
+
} }
|
|
113
|
+
function FormsQuestionBreakdownComponent_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
i0.ɵɵconditionalCreate(0, FormsQuestionBreakdownComponent_Case_9_Conditional_0_Template, 2, 0, "p", 11)(1, FormsQuestionBreakdownComponent_Case_9_Conditional_1_Template, 3, 0, "ul", 12);
|
|
115
|
+
} if (rf & 2) {
|
|
116
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
117
|
+
i0.ɵɵconditional(ctx_r0.breakdown.textAnswers.length === 0 ? 0 : 1);
|
|
118
|
+
} }
|
|
119
|
+
/**
|
|
120
|
+
* Renders one question's breakdown card, switching by kind:
|
|
121
|
+
* - distribution/boolean → bar chart
|
|
122
|
+
* - numeric → aggregates (with NPS score + segments when applicable)
|
|
123
|
+
* - freeText → verbatim list
|
|
124
|
+
*/
|
|
125
|
+
export class FormsQuestionBreakdownComponent {
|
|
126
|
+
breakdown;
|
|
127
|
+
get typeLabel() {
|
|
128
|
+
return this.breakdown.type;
|
|
129
|
+
}
|
|
130
|
+
fmt(value) {
|
|
131
|
+
if (value === null)
|
|
132
|
+
return '—';
|
|
133
|
+
return Number.isInteger(value) ? String(value) : value.toFixed(2);
|
|
134
|
+
}
|
|
135
|
+
static ɵfac = function FormsQuestionBreakdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormsQuestionBreakdownComponent)(); };
|
|
136
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormsQuestionBreakdownComponent, selectors: [["mj-forms-question-breakdown"]], inputs: { breakdown: "breakdown" }, decls: 10, vars: 4, consts: [[1, "card"], [1, "card-head"], [1, "prompt"], [1, "meta"], [3, "buckets"], [1, "numeric"], [1, "nps"], [1, "agg"], [1, "nps-score"], [1, "nps-label"], [1, "nps-seg"], [1, "empty"], [1, "text-list"]], template: function FormsQuestionBreakdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
137
|
+
i0.ɵɵelementStart(0, "article", 0)(1, "header", 1)(2, "h3", 2);
|
|
138
|
+
i0.ɵɵtext(3);
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
i0.ɵɵelementStart(4, "span", 3);
|
|
141
|
+
i0.ɵɵtext(5);
|
|
142
|
+
i0.ɵɵelementEnd()();
|
|
143
|
+
i0.ɵɵconditionalCreate(6, FormsQuestionBreakdownComponent_Case_6_Template, 1, 1, "mj-forms-distribution-chart", 4)(7, FormsQuestionBreakdownComponent_Case_7_Template, 1, 1, "mj-forms-distribution-chart", 4)(8, FormsQuestionBreakdownComponent_Case_8_Template, 1, 1)(9, FormsQuestionBreakdownComponent_Case_9_Template, 2, 1);
|
|
144
|
+
i0.ɵɵelementEnd();
|
|
145
|
+
} if (rf & 2) {
|
|
146
|
+
let tmp_2_0;
|
|
147
|
+
i0.ɵɵadvance(3);
|
|
148
|
+
i0.ɵɵtextInterpolate(ctx.breakdown.prompt);
|
|
149
|
+
i0.ɵɵadvance(2);
|
|
150
|
+
i0.ɵɵtextInterpolate2("", ctx.typeLabel, " \u00B7 ", ctx.breakdown.answeredCount, " answered");
|
|
151
|
+
i0.ɵɵadvance();
|
|
152
|
+
i0.ɵɵconditional((tmp_2_0 = ctx.breakdown.kind) === "distribution" ? 6 : tmp_2_0 === "boolean" ? 7 : tmp_2_0 === "numeric" ? 8 : tmp_2_0 === "freeText" ? 9 : -1);
|
|
153
|
+
} }, dependencies: [FormsDistributionChartComponent], styles: [".card[_ngcontent-%COMP%] {\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-sm);\n }\n .card-head[_ngcontent-%COMP%] {\n margin-bottom: var(--mj-space-3);\n }\n .prompt[_ngcontent-%COMP%] {\n margin: 0 0 var(--mj-space-1);\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n .meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n .empty[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n margin: 0;\n }\n .nps[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n margin-bottom: var(--mj-space-3);\n }\n .nps-score[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-variant-numeric: tabular-nums;\n }\n .nps-label[_ngcontent-%COMP%] {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n }\n .nps-seg[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n .agg[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));\n gap: var(--mj-space-2);\n margin: 0;\n }\n .agg[_ngcontent-%COMP%] div[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n padding: var(--mj-space-2);\n }\n .agg[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n }\n .agg[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n }\n .text-list[_ngcontent-%COMP%] {\n list-style: none;\n margin: 0;\n padding: 0;\n max-height: 240px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1-5);\n }\n .text-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n padding: var(--mj-space-2);\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n }"], changeDetection: 0 });
|
|
154
|
+
}
|
|
155
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsQuestionBreakdownComponent, [{
|
|
156
|
+
type: Component,
|
|
157
|
+
args: [{ selector: 'mj-forms-question-breakdown', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsDistributionChartComponent], template: `
|
|
158
|
+
<article class="card">
|
|
159
|
+
<header class="card-head">
|
|
160
|
+
<h3 class="prompt">{{ breakdown.prompt }}</h3>
|
|
161
|
+
<span class="meta">{{ typeLabel }} · {{ breakdown.answeredCount }} answered</span>
|
|
162
|
+
</header>
|
|
163
|
+
|
|
164
|
+
@switch (breakdown.kind) {
|
|
165
|
+
@case ('distribution') {
|
|
166
|
+
<mj-forms-distribution-chart [buckets]="breakdown.buckets"></mj-forms-distribution-chart>
|
|
167
|
+
}
|
|
168
|
+
@case ('boolean') {
|
|
169
|
+
<mj-forms-distribution-chart [buckets]="breakdown.buckets"></mj-forms-distribution-chart>
|
|
170
|
+
}
|
|
171
|
+
@case ('numeric') {
|
|
172
|
+
@if (breakdown.numeric; as n) {
|
|
173
|
+
<div class="numeric">
|
|
174
|
+
@if (n.npsScore !== null) {
|
|
175
|
+
<div class="nps">
|
|
176
|
+
<span class="nps-score">{{ n.npsScore }}</span>
|
|
177
|
+
<span class="nps-label">NPS</span>
|
|
178
|
+
@if (n.npsSegments; as seg) {
|
|
179
|
+
<span class="nps-seg">
|
|
180
|
+
{{ seg.promoters }} promoters · {{ seg.passives }} passives · {{ seg.detractors }} detractors
|
|
181
|
+
</span>
|
|
182
|
+
}
|
|
183
|
+
</div>
|
|
184
|
+
}
|
|
185
|
+
<dl class="agg">
|
|
186
|
+
<div><dt>Average</dt><dd>{{ fmt(n.average) }}</dd></div>
|
|
187
|
+
<div><dt>Min</dt><dd>{{ fmt(n.min) }}</dd></div>
|
|
188
|
+
<div><dt>Max</dt><dd>{{ fmt(n.max) }}</dd></div>
|
|
189
|
+
<div><dt>Answered</dt><dd>{{ n.answered }}</dd></div>
|
|
190
|
+
</dl>
|
|
191
|
+
</div>
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
@case ('freeText') {
|
|
195
|
+
@if (breakdown.textAnswers.length === 0) {
|
|
196
|
+
<p class="empty">No answers yet.</p>
|
|
197
|
+
} @else {
|
|
198
|
+
<ul class="text-list">
|
|
199
|
+
@for (t of breakdown.textAnswers; track $index) {
|
|
200
|
+
<li>{{ t }}</li>
|
|
201
|
+
}
|
|
202
|
+
</ul>
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
</article>
|
|
207
|
+
`, styles: ["\n .card {\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-sm);\n }\n .card-head {\n margin-bottom: var(--mj-space-3);\n }\n .prompt {\n margin: 0 0 var(--mj-space-1);\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n .meta {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n .empty {\n color: var(--mj-text-muted);\n font-style: italic;\n margin: 0;\n }\n .nps {\n display: flex;\n align-items: baseline;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n margin-bottom: var(--mj-space-3);\n }\n .nps-score {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-variant-numeric: tabular-nums;\n }\n .nps-label {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary);\n }\n .nps-seg {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n .agg {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));\n gap: var(--mj-space-2);\n margin: 0;\n }\n .agg div {\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n padding: var(--mj-space-2);\n }\n .agg dt {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n }\n .agg dd {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n }\n .text-list {\n list-style: none;\n margin: 0;\n padding: 0;\n max-height: 240px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1-5);\n }\n .text-list li {\n font-size: 13px;\n color: var(--mj-text-primary);\n padding: var(--mj-space-2);\n background: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n }\n "] }]
|
|
208
|
+
}], null, { breakdown: [{
|
|
209
|
+
type: Input,
|
|
210
|
+
args: [{ required: true }]
|
|
211
|
+
}] }); })();
|
|
212
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormsQuestionBreakdownComponent, { className: "FormsQuestionBreakdownComponent", filePath: "lib/dashboard/components/question-breakdown.component.ts", lineNumber: 160 }); })();
|
|
213
|
+
//# sourceMappingURL=question-breakdown.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question-breakdown.component.js","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/question-breakdown.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import type { ResponseDetail } from '../models/reporting.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** Single-response detail: each answer labelled by its question from the snapshot. */
|
|
5
|
+
export declare class FormsResponseDetailComponent {
|
|
6
|
+
detail: ResponseDetail;
|
|
7
|
+
back: EventEmitter<void>;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormsResponseDetailComponent, never>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormsResponseDetailComponent, "mj-forms-response-detail", never, { "detail": { "alias": "detail"; "required": true; }; }, { "back": "back"; }, never, never, true, never>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=response-detail.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-detail.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/response-detail.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,YAAY,EAAiB,MAAM,eAAe,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;;AAEhE,sFAAsF;AACtF,qBAqGa,4BAA4B;IACZ,MAAM,EAAG,cAAc,CAAC;IACzC,IAAI,qBAA4B;yCAF/B,4BAA4B;2CAA5B,4BAA4B;CAGxC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const _forTrack0 = ($index, $item) => $item.questionId;
|
|
4
|
+
function FormsResponseDetailComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵdomElementStart(0, "span", 7);
|
|
6
|
+
i0.ɵɵtext(1);
|
|
7
|
+
i0.ɵɵdomElementEnd();
|
|
8
|
+
} if (rf & 2) {
|
|
9
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
10
|
+
i0.ɵɵadvance();
|
|
11
|
+
i0.ɵɵtextInterpolate1("Submitted ", ctx_r0.detail.submittedAt.toLocaleString());
|
|
12
|
+
} }
|
|
13
|
+
function FormsResponseDetailComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
i0.ɵɵdomElementStart(0, "p", 8);
|
|
15
|
+
i0.ɵɵtext(1, "This response has no answers.");
|
|
16
|
+
i0.ɵɵdomElementEnd();
|
|
17
|
+
} }
|
|
18
|
+
function FormsResponseDetailComponent_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵdomElementStart(0, "div", 10)(1, "dt");
|
|
20
|
+
i0.ɵɵtext(2);
|
|
21
|
+
i0.ɵɵdomElementEnd();
|
|
22
|
+
i0.ɵɵdomElementStart(3, "dd");
|
|
23
|
+
i0.ɵɵtext(4);
|
|
24
|
+
i0.ɵɵdomElementEnd()();
|
|
25
|
+
} if (rf & 2) {
|
|
26
|
+
const a_r2 = ctx.$implicit;
|
|
27
|
+
i0.ɵɵadvance(2);
|
|
28
|
+
i0.ɵɵtextInterpolate(a_r2.prompt);
|
|
29
|
+
i0.ɵɵadvance(2);
|
|
30
|
+
i0.ɵɵtextInterpolate(a_r2.displayValue || "\u2014");
|
|
31
|
+
} }
|
|
32
|
+
function FormsResponseDetailComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵdomElementStart(0, "dl", 9);
|
|
34
|
+
i0.ɵɵrepeaterCreate(1, FormsResponseDetailComponent_Conditional_12_For_2_Template, 5, 2, "div", 10, _forTrack0);
|
|
35
|
+
i0.ɵɵdomElementEnd();
|
|
36
|
+
} if (rf & 2) {
|
|
37
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
38
|
+
i0.ɵɵadvance();
|
|
39
|
+
i0.ɵɵrepeater(ctx_r0.detail.answers);
|
|
40
|
+
} }
|
|
41
|
+
/** Single-response detail: each answer labelled by its question from the snapshot. */
|
|
42
|
+
export class FormsResponseDetailComponent {
|
|
43
|
+
detail;
|
|
44
|
+
back = new EventEmitter();
|
|
45
|
+
static ɵfac = function FormsResponseDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormsResponseDetailComponent)(); };
|
|
46
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormsResponseDetailComponent, selectors: [["mj-forms-response-detail"]], inputs: { detail: "detail" }, outputs: { back: "back" }, decls: 13, vars: 6, consts: [[1, "detail"], [1, "detail-head"], ["type", "button", 1, "back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "meta"], [1, "status"], [1, "respondent"], [1, "ts"], [1, "empty"], [1, "answers"], [1, "answer"]], template: function FormsResponseDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵdomElementStart(0, "div", 0)(1, "header", 1)(2, "button", 2);
|
|
48
|
+
i0.ɵɵdomListener("click", function FormsResponseDetailComponent_Template_button_click_2_listener() { return ctx.back.emit(); });
|
|
49
|
+
i0.ɵɵdomElement(3, "i", 3);
|
|
50
|
+
i0.ɵɵtext(4, " Back to responses ");
|
|
51
|
+
i0.ɵɵdomElementEnd();
|
|
52
|
+
i0.ɵɵdomElementStart(5, "div", 4)(6, "span", 5);
|
|
53
|
+
i0.ɵɵtext(7);
|
|
54
|
+
i0.ɵɵdomElementEnd();
|
|
55
|
+
i0.ɵɵdomElementStart(8, "span", 6);
|
|
56
|
+
i0.ɵɵtext(9);
|
|
57
|
+
i0.ɵɵdomElementEnd();
|
|
58
|
+
i0.ɵɵconditionalCreate(10, FormsResponseDetailComponent_Conditional_10_Template, 2, 1, "span", 7);
|
|
59
|
+
i0.ɵɵdomElementEnd()();
|
|
60
|
+
i0.ɵɵconditionalCreate(11, FormsResponseDetailComponent_Conditional_11_Template, 2, 0, "p", 8)(12, FormsResponseDetailComponent_Conditional_12_Template, 3, 0, "dl", 9);
|
|
61
|
+
i0.ɵɵdomElementEnd();
|
|
62
|
+
} if (rf & 2) {
|
|
63
|
+
i0.ɵɵadvance(6);
|
|
64
|
+
i0.ɵɵclassProp("status--complete", ctx.detail.status === "Complete");
|
|
65
|
+
i0.ɵɵadvance();
|
|
66
|
+
i0.ɵɵtextInterpolate(ctx.detail.status);
|
|
67
|
+
i0.ɵɵadvance(2);
|
|
68
|
+
i0.ɵɵtextInterpolate(ctx.detail.respondent);
|
|
69
|
+
i0.ɵɵadvance();
|
|
70
|
+
i0.ɵɵconditional(ctx.detail.submittedAt ? 10 : -1);
|
|
71
|
+
i0.ɵɵadvance();
|
|
72
|
+
i0.ɵɵconditional(ctx.detail.answers.length === 0 ? 11 : 12);
|
|
73
|
+
} }, styles: [".detail-head[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-bottom: var(--mj-space-4);\n }\n .back[_ngcontent-%COMP%] {\n align-self: flex-start;\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 13px;\n padding: 0;\n }\n .meta[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n align-items: center;\n flex-wrap: wrap;\n }\n .respondent[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n .ts[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n .status[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px var(--mj-space-2);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n .status--complete[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n }\n .empty[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n }\n .answers[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n }\n .answer[_ngcontent-%COMP%] dt[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: var(--mj-space-1);\n }\n .answer[_ngcontent-%COMP%] dd[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n }"], changeDetection: 0 });
|
|
74
|
+
}
|
|
75
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsResponseDetailComponent, [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'mj-forms-response-detail', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
78
|
+
<div class="detail">
|
|
79
|
+
<header class="detail-head">
|
|
80
|
+
<button type="button" class="back" (click)="back.emit()">
|
|
81
|
+
<i class="fa-solid fa-arrow-left"></i> Back to responses
|
|
82
|
+
</button>
|
|
83
|
+
<div class="meta">
|
|
84
|
+
<span class="status" [class.status--complete]="detail.status === 'Complete'">{{ detail.status }}</span>
|
|
85
|
+
<span class="respondent">{{ detail.respondent }}</span>
|
|
86
|
+
@if (detail.submittedAt) {
|
|
87
|
+
<span class="ts">Submitted {{ detail.submittedAt.toLocaleString() }}</span>
|
|
88
|
+
}
|
|
89
|
+
</div>
|
|
90
|
+
</header>
|
|
91
|
+
|
|
92
|
+
@if (detail.answers.length === 0) {
|
|
93
|
+
<p class="empty">This response has no answers.</p>
|
|
94
|
+
} @else {
|
|
95
|
+
<dl class="answers">
|
|
96
|
+
@for (a of detail.answers; track a.questionId) {
|
|
97
|
+
<div class="answer">
|
|
98
|
+
<dt>{{ a.prompt }}</dt>
|
|
99
|
+
<dd>{{ a.displayValue || '—' }}</dd>
|
|
100
|
+
</div>
|
|
101
|
+
}
|
|
102
|
+
</dl>
|
|
103
|
+
}
|
|
104
|
+
</div>
|
|
105
|
+
`, styles: ["\n .detail-head {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-bottom: var(--mj-space-4);\n }\n .back {\n align-self: flex-start;\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: 13px;\n padding: 0;\n }\n .meta {\n display: flex;\n gap: var(--mj-space-2);\n align-items: center;\n flex-wrap: wrap;\n }\n .respondent {\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n .ts {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n .status {\n display: inline-block;\n padding: 2px var(--mj-space-2);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n .status--complete {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n }\n .empty {\n color: var(--mj-text-muted);\n font-style: italic;\n }\n .answers {\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n }\n .answer dt {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: var(--mj-space-1);\n }\n .answer dd {\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n }\n "] }]
|
|
106
|
+
}], null, { detail: [{
|
|
107
|
+
type: Input,
|
|
108
|
+
args: [{ required: true }]
|
|
109
|
+
}], back: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}] }); })();
|
|
112
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormsResponseDetailComponent, { className: "FormsResponseDetailComponent", filePath: "lib/dashboard/components/response-detail.component.ts", lineNumber: 106 }); })();
|
|
113
|
+
//# sourceMappingURL=response-detail.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-detail.component.js","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/response-detail.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;;;IAkBpF,kCAAiB;IAAA,YAAmD;IAAA,oBAAO;;;IAA1D,cAAmD;IAAnD,+EAAmD;;;IAMxE,+BAAiB;IAAA,6CAA6B;IAAA,oBAAI;;;IAK5C,AADF,kCAAoB,SACd;IAAA,YAAc;IAAA,oBAAK;IACvB,6BAAI;IAAA,YAA2B;IACjC,AADiC,oBAAK,EAChC;;;IAFA,eAAc;IAAd,iCAAc;IACd,eAA2B;IAA3B,mDAA2B;;;IAJrC,gCAAoB;IAClB,+GAKC;IACH,oBAAK;;;IANH,cAKC;IALD,oCAKC;;AA7BX,sFAAsF;AAsGtF,MAAM,OAAO,4BAA4B;IACZ,MAAM,CAAkB;IACzC,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;sHAF/B,4BAA4B;6DAA5B,4BAA4B;YA9FjC,AADF,AADF,iCAAoB,gBACU,gBAC+B;YAAtB,4GAAS,eAAW,IAAC;YACtD,0BAAsC;YAAC,mCACzC;YAAA,oBAAS;YAEP,AADF,iCAAkB,cAC6D;YAAA,YAAmB;YAAA,oBAAO;YACvG,kCAAyB;YAAA,YAAuB;YAAA,oBAAO;YACvD,iGAA0B;YAI9B,AADE,oBAAM,EACC;YAIP,AAFF,8FAAmC,yEAE1B;YAUX,oBAAM;;YApBqB,eAAuD;YAAvD,oEAAuD;YAAC,cAAmB;YAAnB,uCAAmB;YACvE,eAAuB;YAAvB,2CAAuB;YAChD,cAEC;YAFD,kDAEC;YAIL,cAWC;YAXD,2DAWC;;;iFAuEM,4BAA4B;cArGxC,SAAS;2BACE,0BAA0B,cACxB,IAAI,mBACC,uBAAuB,CAAC,MAAM,YACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT;;kBAsEA,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;kBACxB,MAAM;;kFAFI,4BAA4B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import type { ResponseListRow } from '../models/reporting.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** Status filter values for the response list. */
|
|
5
|
+
type StatusFilter = 'all' | 'Complete' | 'Partial';
|
|
6
|
+
/**
|
|
7
|
+
* Individual-response list with text search + status filter (simple cross-tab).
|
|
8
|
+
* A semantic, token-styled table — clicking a row emits the response id so the
|
|
9
|
+
* dashboard can open the detail view. Horizontal scroll is contained.
|
|
10
|
+
*/
|
|
11
|
+
export declare class FormsResponseListComponent {
|
|
12
|
+
open: EventEmitter<string>;
|
|
13
|
+
readonly search: import("@angular/core").WritableSignal<string>;
|
|
14
|
+
readonly statusFilter: import("@angular/core").WritableSignal<StatusFilter>;
|
|
15
|
+
readonly statusFilters: {
|
|
16
|
+
value: StatusFilter;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
19
|
+
private readonly _rows;
|
|
20
|
+
set rows(value: ResponseListRow[]);
|
|
21
|
+
readonly filtered: import("@angular/core").Signal<ResponseListRow[]>;
|
|
22
|
+
submittedLabel(r: ResponseListRow): string;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormsResponseListComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormsResponseListComponent, "mj-forms-response-list", never, { "rows": { "alias": "rows"; "required": true; }; }, { "open": "open"; }, never, never, true, never>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=response-list.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-list.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/response-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,YAAY,EAAmC,MAAM,eAAe,CAAC;AAElH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;;AAEjE,kDAAkD;AAClD,KAAK,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD;;;;GAIG;AACH,qBA2Ja,0BAA0B;IAC3B,IAAI,uBAA8B;IAE5C,SAAgB,MAAM,iDAAc;IACpC,SAAgB,YAAY,uDAA+B;IAE3D,SAAgB,aAAa,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAIrE;IAEF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,IACI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,EAEhC;IAED,SAAgB,QAAQ,oDAQrB;IAEI,cAAc,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM;yCA5BtC,0BAA0B;2CAA1B,0BAA0B;CA+BtC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, computed, signal } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
const _forTrack0 = ($index, $item) => $item.value;
|
|
6
|
+
const _forTrack1 = ($index, $item) => $item.responseId;
|
|
7
|
+
function FormsResponseListComponent_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
9
|
+
i0.ɵɵelementStart(0, "button", 6);
|
|
10
|
+
i0.ɵɵlistener("click", function FormsResponseListComponent_For_4_Template_button_click_0_listener() { const f_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.statusFilter.set(f_r2.value)); });
|
|
11
|
+
i0.ɵɵtext(1);
|
|
12
|
+
i0.ɵɵelementEnd();
|
|
13
|
+
} if (rf & 2) {
|
|
14
|
+
const f_r2 = ctx.$implicit;
|
|
15
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
16
|
+
i0.ɵɵclassProp("chip--active", ctx_r2.statusFilter() === f_r2.value);
|
|
17
|
+
i0.ɵɵadvance();
|
|
18
|
+
i0.ɵɵtextInterpolate1(" ", f_r2.label, " ");
|
|
19
|
+
} }
|
|
20
|
+
function FormsResponseListComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
+
i0.ɵɵelementStart(0, "p", 4);
|
|
22
|
+
i0.ɵɵtext(1, "No responses match.");
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} }
|
|
25
|
+
function FormsResponseListComponent_Conditional_6_For_15_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
27
|
+
i0.ɵɵelementStart(0, "tr", 9);
|
|
28
|
+
i0.ɵɵlistener("click", function FormsResponseListComponent_Conditional_6_For_15_Template_tr_click_0_listener() { const r_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.open.emit(r_r5.responseId)); })("keydown.enter", function FormsResponseListComponent_Conditional_6_For_15_Template_tr_keydown_enter_0_listener() { const r_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.open.emit(r_r5.responseId)); });
|
|
29
|
+
i0.ɵɵelementStart(1, "td")(2, "span", 10);
|
|
30
|
+
i0.ɵɵtext(3);
|
|
31
|
+
i0.ɵɵelementEnd()();
|
|
32
|
+
i0.ɵɵelementStart(4, "td");
|
|
33
|
+
i0.ɵɵtext(5);
|
|
34
|
+
i0.ɵɵelementEnd();
|
|
35
|
+
i0.ɵɵelementStart(6, "td", 11);
|
|
36
|
+
i0.ɵɵtext(7);
|
|
37
|
+
i0.ɵɵelementEnd();
|
|
38
|
+
i0.ɵɵelementStart(8, "td");
|
|
39
|
+
i0.ɵɵtext(9);
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
i0.ɵɵelementStart(10, "td", 12);
|
|
42
|
+
i0.ɵɵelement(11, "i", 13);
|
|
43
|
+
i0.ɵɵelementEnd()();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const r_r5 = ctx.$implicit;
|
|
46
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
47
|
+
i0.ɵɵadvance(2);
|
|
48
|
+
i0.ɵɵclassProp("status--complete", r_r5.status === "Complete");
|
|
49
|
+
i0.ɵɵadvance();
|
|
50
|
+
i0.ɵɵtextInterpolate1(" ", r_r5.status, " ");
|
|
51
|
+
i0.ɵɵadvance(2);
|
|
52
|
+
i0.ɵɵtextInterpolate(r_r5.respondent);
|
|
53
|
+
i0.ɵɵadvance(2);
|
|
54
|
+
i0.ɵɵtextInterpolate(r_r5.answeredCount);
|
|
55
|
+
i0.ɵɵadvance(2);
|
|
56
|
+
i0.ɵɵtextInterpolate(ctx_r2.submittedLabel(r_r5));
|
|
57
|
+
} }
|
|
58
|
+
function FormsResponseListComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
i0.ɵɵelementStart(0, "div", 5)(1, "table", 7)(2, "thead")(3, "tr")(4, "th");
|
|
60
|
+
i0.ɵɵtext(5, "Status");
|
|
61
|
+
i0.ɵɵelementEnd();
|
|
62
|
+
i0.ɵɵelementStart(6, "th");
|
|
63
|
+
i0.ɵɵtext(7, "Respondent");
|
|
64
|
+
i0.ɵɵelementEnd();
|
|
65
|
+
i0.ɵɵelementStart(8, "th");
|
|
66
|
+
i0.ɵɵtext(9, "Answered");
|
|
67
|
+
i0.ɵɵelementEnd();
|
|
68
|
+
i0.ɵɵelementStart(10, "th");
|
|
69
|
+
i0.ɵɵtext(11, "Submitted");
|
|
70
|
+
i0.ɵɵelementEnd();
|
|
71
|
+
i0.ɵɵelement(12, "th");
|
|
72
|
+
i0.ɵɵelementEnd()();
|
|
73
|
+
i0.ɵɵelementStart(13, "tbody");
|
|
74
|
+
i0.ɵɵrepeaterCreate(14, FormsResponseListComponent_Conditional_6_For_15_Template, 12, 6, "tr", 8, _forTrack1);
|
|
75
|
+
i0.ɵɵelementEnd()()();
|
|
76
|
+
} if (rf & 2) {
|
|
77
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
78
|
+
i0.ɵɵadvance(14);
|
|
79
|
+
i0.ɵɵrepeater(ctx_r2.filtered());
|
|
80
|
+
} }
|
|
81
|
+
/**
|
|
82
|
+
* Individual-response list with text search + status filter (simple cross-tab).
|
|
83
|
+
* A semantic, token-styled table — clicking a row emits the response id so the
|
|
84
|
+
* dashboard can open the detail view. Horizontal scroll is contained.
|
|
85
|
+
*/
|
|
86
|
+
export class FormsResponseListComponent {
|
|
87
|
+
open = new EventEmitter();
|
|
88
|
+
search = signal('', ...(ngDevMode ? [{ debugName: "search" }] : []));
|
|
89
|
+
statusFilter = signal('all', ...(ngDevMode ? [{ debugName: "statusFilter" }] : []));
|
|
90
|
+
statusFilters = [
|
|
91
|
+
{ value: 'all', label: 'All' },
|
|
92
|
+
{ value: 'Complete', label: 'Complete' },
|
|
93
|
+
{ value: 'Partial', label: 'Partial' },
|
|
94
|
+
];
|
|
95
|
+
_rows = signal([], ...(ngDevMode ? [{ debugName: "_rows" }] : []));
|
|
96
|
+
set rows(value) {
|
|
97
|
+
this._rows.set(value ?? []);
|
|
98
|
+
}
|
|
99
|
+
filtered = computed(() => {
|
|
100
|
+
const term = this.search().trim().toLowerCase();
|
|
101
|
+
const status = this.statusFilter();
|
|
102
|
+
return this._rows().filter((r) => {
|
|
103
|
+
if (status !== 'all' && r.status !== status)
|
|
104
|
+
return false;
|
|
105
|
+
if (term && !r.respondent.toLowerCase().includes(term))
|
|
106
|
+
return false;
|
|
107
|
+
return true;
|
|
108
|
+
});
|
|
109
|
+
}, ...(ngDevMode ? [{ debugName: "filtered" }] : []));
|
|
110
|
+
submittedLabel(r) {
|
|
111
|
+
return r.submittedAt ? r.submittedAt.toLocaleString() : '—';
|
|
112
|
+
}
|
|
113
|
+
static ɵfac = function FormsResponseListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormsResponseListComponent)(); };
|
|
114
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormsResponseListComponent, selectors: [["mj-forms-response-list"]], inputs: { rows: "rows" }, outputs: { open: "open" }, decls: 7, vars: 2, consts: [[1, "toolbar"], ["type", "search", "placeholder", "Search respondent...", "aria-label", "Search responses by respondent", 1, "search", 3, "ngModelChange", "ngModel"], ["role", "group", "aria-label", "Filter by status", 1, "filters"], ["type", "button", 1, "chip", 3, "chip--active"], [1, "empty"], [1, "table-scroll"], ["type", "button", 1, "chip", 3, "click"], [1, "grid"], ["tabindex", "0"], ["tabindex", "0", 3, "click", "keydown.enter"], [1, "status"], [1, "num"], [1, "open-cell"], [1, "fa-solid", "fa-chevron-right"]], template: function FormsResponseListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
115
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "input", 1);
|
|
116
|
+
i0.ɵɵlistener("ngModelChange", function FormsResponseListComponent_Template_input_ngModelChange_1_listener($event) { return ctx.search.set($event); });
|
|
117
|
+
i0.ɵɵelementEnd();
|
|
118
|
+
i0.ɵɵelementStart(2, "div", 2);
|
|
119
|
+
i0.ɵɵrepeaterCreate(3, FormsResponseListComponent_For_4_Template, 2, 3, "button", 3, _forTrack0);
|
|
120
|
+
i0.ɵɵelementEnd()();
|
|
121
|
+
i0.ɵɵconditionalCreate(5, FormsResponseListComponent_Conditional_5_Template, 2, 0, "p", 4)(6, FormsResponseListComponent_Conditional_6_Template, 16, 0, "div", 5);
|
|
122
|
+
} if (rf & 2) {
|
|
123
|
+
i0.ɵɵadvance();
|
|
124
|
+
i0.ɵɵproperty("ngModel", ctx.search());
|
|
125
|
+
i0.ɵɵadvance(2);
|
|
126
|
+
i0.ɵɵrepeater(ctx.statusFilters);
|
|
127
|
+
i0.ɵɵadvance(2);
|
|
128
|
+
i0.ɵɵconditional(ctx.filtered().length === 0 ? 5 : 6);
|
|
129
|
+
} }, dependencies: [FormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: ["[_nghost-%COMP%] {\n display: block;\n }\n .toolbar[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n align-items: center;\n margin-bottom: var(--mj-space-3);\n }\n .search[_ngcontent-%COMP%] {\n flex: 1 1 220px;\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n }\n .filters[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-1);\n }\n .chip[_ngcontent-%COMP%] {\n padding: var(--mj-space-1) var(--mj-space-2-5);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-full);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n cursor: pointer;\n }\n .chip--active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n .empty[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-style: italic;\n margin: 0;\n }\n .table-scroll[_ngcontent-%COMP%] {\n overflow-x: auto;\n }\n .grid[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n .grid[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: var(--mj-space-2);\n color: var(--mj-text-muted);\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n border-bottom: 1px solid var(--mj-border-default);\n }\n .grid[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: var(--mj-space-2);\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n .grid[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n .grid[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n }\n .num[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n }\n .status[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px var(--mj-space-2);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n .status--complete[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n }\n .open-cell[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n text-align: right;\n }"], changeDetection: 0 });
|
|
130
|
+
}
|
|
131
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsResponseListComponent, [{
|
|
132
|
+
type: Component,
|
|
133
|
+
args: [{ selector: 'mj-forms-response-list', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule], template: `
|
|
134
|
+
<div class="toolbar">
|
|
135
|
+
<input
|
|
136
|
+
class="search"
|
|
137
|
+
type="search"
|
|
138
|
+
placeholder="Search respondent..."
|
|
139
|
+
[ngModel]="search()"
|
|
140
|
+
(ngModelChange)="search.set($event)"
|
|
141
|
+
aria-label="Search responses by respondent" />
|
|
142
|
+
<div class="filters" role="group" aria-label="Filter by status">
|
|
143
|
+
@for (f of statusFilters; track f.value) {
|
|
144
|
+
<button
|
|
145
|
+
type="button"
|
|
146
|
+
class="chip"
|
|
147
|
+
[class.chip--active]="statusFilter() === f.value"
|
|
148
|
+
(click)="statusFilter.set(f.value)">
|
|
149
|
+
{{ f.label }}
|
|
150
|
+
</button>
|
|
151
|
+
}
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
@if (filtered().length === 0) {
|
|
156
|
+
<p class="empty">No responses match.</p>
|
|
157
|
+
} @else {
|
|
158
|
+
<div class="table-scroll">
|
|
159
|
+
<table class="grid">
|
|
160
|
+
<thead>
|
|
161
|
+
<tr>
|
|
162
|
+
<th>Status</th>
|
|
163
|
+
<th>Respondent</th>
|
|
164
|
+
<th>Answered</th>
|
|
165
|
+
<th>Submitted</th>
|
|
166
|
+
<th></th>
|
|
167
|
+
</tr>
|
|
168
|
+
</thead>
|
|
169
|
+
<tbody>
|
|
170
|
+
@for (r of filtered(); track r.responseId) {
|
|
171
|
+
<tr (click)="open.emit(r.responseId)" tabindex="0"
|
|
172
|
+
(keydown.enter)="open.emit(r.responseId)">
|
|
173
|
+
<td>
|
|
174
|
+
<span class="status" [class.status--complete]="r.status === 'Complete'">
|
|
175
|
+
{{ r.status }}
|
|
176
|
+
</span>
|
|
177
|
+
</td>
|
|
178
|
+
<td>{{ r.respondent }}</td>
|
|
179
|
+
<td class="num">{{ r.answeredCount }}</td>
|
|
180
|
+
<td>{{ submittedLabel(r) }}</td>
|
|
181
|
+
<td class="open-cell"><i class="fa-solid fa-chevron-right"></i></td>
|
|
182
|
+
</tr>
|
|
183
|
+
}
|
|
184
|
+
</tbody>
|
|
185
|
+
</table>
|
|
186
|
+
</div>
|
|
187
|
+
}
|
|
188
|
+
`, styles: ["\n :host {\n display: block;\n }\n .toolbar {\n display: flex;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n align-items: center;\n margin-bottom: var(--mj-space-3);\n }\n .search {\n flex: 1 1 220px;\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n }\n .filters {\n display: flex;\n gap: var(--mj-space-1);\n }\n .chip {\n padding: var(--mj-space-1) var(--mj-space-2-5);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-full);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n cursor: pointer;\n }\n .chip--active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n .empty {\n color: var(--mj-text-muted);\n font-style: italic;\n margin: 0;\n }\n .table-scroll {\n overflow-x: auto;\n }\n .grid {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n }\n .grid th {\n text-align: left;\n padding: var(--mj-space-2);\n color: var(--mj-text-muted);\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n border-bottom: 1px solid var(--mj-border-default);\n }\n .grid td {\n padding: var(--mj-space-2);\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-border-subtle);\n }\n .grid tbody tr {\n cursor: pointer;\n }\n .grid tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n }\n .num {\n font-variant-numeric: tabular-nums;\n }\n .status {\n display: inline-block;\n padding: 2px var(--mj-space-2);\n border-radius: var(--mj-radius-full);\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n .status--complete {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n }\n .open-cell {\n color: var(--mj-text-muted);\n text-align: right;\n }\n "] }]
|
|
189
|
+
}], null, { open: [{
|
|
190
|
+
type: Output
|
|
191
|
+
}], rows: [{
|
|
192
|
+
type: Input,
|
|
193
|
+
args: [{ required: true }]
|
|
194
|
+
}] }); })();
|
|
195
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormsResponseListComponent, { className: "FormsResponseListComponent", filePath: "lib/dashboard/components/response-list.component.ts", lineNumber: 168 }); })();
|
|
196
|
+
//# sourceMappingURL=response-list.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-list.component.js","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/response-list.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FormSummaryStats } from '../models/reporting.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Top-line stat cards: total responses, completion rate, avg time, last submit. */
|
|
4
|
+
export declare class FormsSummaryStatsComponent {
|
|
5
|
+
stats: FormSummaryStats;
|
|
6
|
+
pct(fraction: number): string;
|
|
7
|
+
get durationLabel(): string;
|
|
8
|
+
get lastLabel(): string;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormsSummaryStatsComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormsSummaryStatsComponent, "mj-forms-summary-stats", never, { "stats": { "alias": "stats"; "required": true; }; }, {}, never, never, true, never>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=summary-stats.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-stats.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/summary-stats.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;;AAElE,oFAAoF;AACpF,qBAwEa,0BAA0B;IACV,KAAK,EAAG,gBAAgB,CAAC;IAE7C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIpC,IAAW,aAAa,IAAI,MAAM,CAOjC;IAED,IAAW,SAAS,IAAI,MAAM,CAI7B;yCApBU,0BAA0B;2CAA1B,0BAA0B;CAqBtC"}
|