@abp/ng.theme.shared 5.0.0-beta.1 → 5.0.0-beta.3-1
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/README.md +3 -3
- package/bundles/abp-ng.theme.shared-extensions.umd.js +6 -6
- package/bundles/abp-ng.theme.shared-extensions.umd.js.map +1 -1
- package/bundles/abp-ng.theme.shared-testing.umd.js.map +1 -1
- package/bundles/abp-ng.theme.shared.umd.js +49 -115
- package/bundles/abp-ng.theme.shared.umd.js.map +1 -1
- package/esm2015/extensions/lib/adapters/date-time.adapter.js.map +1 -1
- package/esm2015/extensions/lib/adapters/date.adapter.js.map +1 -1
- package/esm2015/extensions/lib/adapters/time.adapter.js.map +1 -1
- package/esm2015/extensions/lib/components/abstract-actions/abstract-actions.component.js.map +1 -1
- package/esm2015/extensions/lib/components/date-time-picker/date-time-picker.component.js +37 -37
- package/esm2015/extensions/lib/components/date-time-picker/date-time-picker.component.js.map +1 -1
- package/esm2015/extensions/lib/components/extensible-form/extensible-form-prop.component.js +1 -1
- package/esm2015/extensions/lib/components/extensible-form/extensible-form-prop.component.js.map +1 -1
- package/esm2015/extensions/lib/components/extensible-form/extensible-form.component.js +1 -1
- package/esm2015/extensions/lib/components/extensible-form/extensible-form.component.js.map +1 -1
- package/esm2015/extensions/lib/components/extensible-table/extensible-table.component.js +1 -1
- package/esm2015/extensions/lib/components/extensible-table/extensible-table.component.js.map +1 -1
- package/esm2015/extensions/lib/components/grid-actions/grid-actions.component.js +1 -1
- package/esm2015/extensions/lib/components/grid-actions/grid-actions.component.js.map +1 -1
- package/esm2015/extensions/lib/components/page-toolbar/page-toolbar.component.js +1 -1
- package/esm2015/extensions/lib/components/page-toolbar/page-toolbar.component.js.map +1 -1
- package/esm2015/extensions/lib/constants/extra-properties.js.map +1 -1
- package/esm2015/extensions/lib/directives/disabled.directive.js.map +1 -1
- package/esm2015/extensions/lib/directives/prop-data.directive.js.map +1 -1
- package/esm2015/extensions/lib/enums/props.enum.js.map +1 -1
- package/esm2015/extensions/lib/models/actions.js.map +1 -1
- package/esm2015/extensions/lib/models/entity-actions.js.map +1 -1
- package/esm2015/extensions/lib/models/entity-props.js.map +1 -1
- package/esm2015/extensions/lib/models/form-props.js.map +1 -1
- package/esm2015/extensions/lib/models/internal/object-extensions.js.map +1 -1
- package/esm2015/extensions/lib/models/object-extensions.js.map +1 -1
- package/esm2015/extensions/lib/models/props.js.map +1 -1
- package/esm2015/extensions/lib/models/toolbar-actions.js.map +1 -1
- package/esm2015/extensions/lib/services/extensions.service.js.map +1 -1
- package/esm2015/extensions/lib/tokens/extensions.token.js.map +1 -1
- package/esm2015/extensions/lib/ui-extensions.module.js.map +1 -1
- package/esm2015/extensions/lib/utils/actions.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/enum.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/factory.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/form-props.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/localization.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/props.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/state.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/typeahead.util.js.map +1 -1
- package/esm2015/extensions/lib/utils/validation.util.js.map +1 -1
- package/esm2015/extensions/public-api.js.map +1 -1
- package/esm2015/lib/animations/bounce.animations.js.map +1 -1
- package/esm2015/lib/animations/collapse.animations.js.map +1 -1
- package/esm2015/lib/animations/fade.animations.js.map +1 -1
- package/esm2015/lib/animations/index.js.map +1 -1
- package/esm2015/lib/animations/modal.animations.js.map +1 -1
- package/esm2015/lib/animations/slide.animations.js.map +1 -1
- package/esm2015/lib/animations/toast.animations.js.map +1 -1
- package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +1 -1
- package/esm2015/lib/components/breadcrumb/breadcrumb.component.js.map +1 -1
- package/esm2015/lib/components/breadcrumb-items/breadcrumb-items.component.js +1 -1
- package/esm2015/lib/components/breadcrumb-items/breadcrumb-items.component.js.map +1 -1
- package/esm2015/lib/components/button/button.component.js +26 -26
- package/esm2015/lib/components/button/button.component.js.map +1 -1
- package/esm2015/lib/components/confirmation/confirmation.component.js +1 -1
- package/esm2015/lib/components/confirmation/confirmation.component.js.map +1 -1
- package/esm2015/lib/components/http-error-wrapper/http-error-wrapper.component.js +1 -1
- package/esm2015/lib/components/http-error-wrapper/http-error-wrapper.component.js.map +1 -1
- package/esm2015/lib/components/loader-bar/loader-bar.component.js +24 -24
- package/esm2015/lib/components/loader-bar/loader-bar.component.js.map +1 -1
- package/esm2015/lib/components/loading/loading.component.js +29 -29
- package/esm2015/lib/components/loading/loading.component.js.map +1 -1
- package/esm2015/lib/components/modal/modal-close.directive.js.map +1 -1
- package/esm2015/lib/components/modal/modal-ref.service.js.map +1 -1
- package/esm2015/lib/components/modal/modal.component.js +1 -1
- package/esm2015/lib/components/modal/modal.component.js.map +1 -1
- package/esm2015/lib/components/toast/toast.component.js +1 -1
- package/esm2015/lib/components/toast/toast.component.js.map +1 -1
- package/esm2015/lib/components/toast-container/toast-container.component.js +1 -1
- package/esm2015/lib/components/toast-container/toast-container.component.js.map +1 -1
- package/esm2015/lib/constants/styles.js +180 -179
- package/esm2015/lib/constants/styles.js.map +1 -1
- package/esm2015/lib/constants/validation.js.map +1 -1
- package/esm2015/lib/directives/ellipsis.directive.js.map +1 -1
- package/esm2015/lib/directives/index.js.map +1 -1
- package/esm2015/lib/directives/loading.directive.js.map +1 -1
- package/esm2015/lib/directives/ngx-datatable-default.directive.js.map +1 -1
- package/esm2015/lib/directives/ngx-datatable-list.directive.js.map +1 -1
- package/esm2015/lib/enums/index.js.map +1 -1
- package/esm2015/lib/enums/route-names.js.map +1 -1
- package/esm2015/lib/handlers/document-dir.handler.js +33 -0
- package/esm2015/lib/handlers/document-dir.handler.js.map +1 -0
- package/esm2015/lib/handlers/error.handler.js.map +1 -1
- package/esm2015/lib/handlers/index.js +1 -1
- package/esm2015/lib/handlers/index.js.map +1 -1
- package/esm2015/lib/models/common.js.map +1 -1
- package/esm2015/lib/models/confirmation.js.map +1 -1
- package/esm2015/lib/models/index.js.map +1 -1
- package/esm2015/lib/models/nav-item.js.map +1 -1
- package/esm2015/lib/models/statistics.js.map +1 -1
- package/esm2015/lib/models/toaster.js.map +1 -1
- package/esm2015/lib/providers/index.js.map +1 -1
- package/esm2015/lib/providers/ng-bootstrap-config.provider.js.map +1 -1
- package/esm2015/lib/providers/route.provider.js.map +1 -1
- package/esm2015/lib/services/confirmation.service.js.map +1 -1
- package/esm2015/lib/services/index.js.map +1 -1
- package/esm2015/lib/services/nav-items.service.js.map +1 -1
- package/esm2015/lib/services/page-alert.service.js.map +1 -1
- package/esm2015/lib/services/toaster.service.js.map +1 -1
- package/esm2015/lib/theme-shared.module.js +10 -9
- package/esm2015/lib/theme-shared.module.js.map +1 -1
- package/esm2015/lib/tokens/append-content.token.js.map +1 -1
- package/esm2015/lib/tokens/http-error.token.js.map +1 -1
- package/esm2015/lib/tokens/index.js +0 -1
- package/esm2015/lib/tokens/index.js.map +1 -1
- package/esm2015/lib/tokens/ngx-datatable-messages.token.js.map +1 -1
- package/esm2015/lib/tokens/suppress-unsaved-changes-warning.token.js.map +1 -1
- package/esm2015/lib/utils/date-parser-formatter.js.map +1 -1
- package/esm2015/lib/utils/index.js.map +1 -1
- package/esm2015/lib/utils/validation-utils.js.map +1 -1
- package/esm2015/public-api.js +0 -1
- package/esm2015/public-api.js.map +1 -1
- package/esm2015/testing/lib/models/config.js.map +1 -1
- package/esm2015/testing/lib/models/index.js.map +1 -1
- package/esm2015/testing/lib/theme-shared-testing.module.js.map +1 -1
- package/esm2015/testing/public-api.js.map +1 -1
- package/fesm2015/abp-ng.theme.shared-extensions.js +42 -42
- package/fesm2015/abp-ng.theme.shared-extensions.js.map +1 -1
- package/fesm2015/abp-ng.theme.shared-testing.js.map +1 -1
- package/fesm2015/abp-ng.theme.shared.js +307 -362
- package/fesm2015/abp-ng.theme.shared.js.map +1 -1
- package/lib/constants/styles.d.ts +1 -2
- package/lib/handlers/document-dir.handler.d.ts +13 -0
- package/lib/handlers/index.d.ts +1 -1
- package/lib/tokens/index.d.ts +0 -1
- package/package.json +4 -4
- package/public-api.d.ts +0 -1
- package/esm2015/lib/handlers/lazy-style.handler.js +0 -89
- package/esm2015/lib/handlers/lazy-style.handler.js.map +0 -1
- package/esm2015/lib/tokens/lazy-styles.token.js +0 -3
- package/esm2015/lib/tokens/lazy-styles.token.js.map +0 -1
- package/lib/handlers/lazy-style.handler.d.ts +0 -23
- package/lib/tokens/lazy-styles.token.d.ts +0 -2
- package/styles/bootstrap-rtl.min.css +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time.adapter.js","sourceRoot":"","sources":["../../../../../../../packages/theme-shared/extensions/src/lib/adapters/date-time.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAI3C,MAAM,OAAO,eAAe;IAG1B,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YACnB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;YACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;SAC1B,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,KAA+B;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,KAAK,iCACH,IAAI,EAAE,GAAG,CAAC,cAAc,EAAE,EAC1B,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAClB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,IACN,IAAI,CAAC,KAAK,GACV,KAAK,CACT,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,GAAG,CAAC,EACf,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,CACb,CAAC;QAEF,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;;4GAhDU,eAAe;gHAAf,eAAe;2FAAf,eAAe;kBAD3B,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\nimport { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\n\n@Injectable()\nexport class DateTimeAdapter {\n value: NgbDateTimeStruct;\n\n fromModel(value: string | Date): NgbDateTimeStruct | null {\n if (!value) return null;\n\n const date = new Date(value);\n\n if (isNaN(date as unknown as number)) return null;\n\n this.value = {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n second: date.getSeconds(),\n };\n\n return this.value;\n }\n\n toModel(value: NgbDateTimeStruct | null): string {\n if (!value) return '';\n\n const now = new Date();\n\n value = {\n year: now.getUTCFullYear(),\n month: now.getMonth() + 1,\n day: now.getDate(),\n hour: 0,\n minute: 0,\n second: 0,\n ...this.value,\n ...value,\n };\n\n const date = new Date(\n value.year,\n value.month - 1,\n value.day,\n value.hour,\n value.minute,\n value.second,\n );\n\n return new Date(date).toISOString();\n }\n}\n\ntype NgbDateTimeStruct = NgbDateStruct & NgbTimeStruct;\n"]}
|
|
1
|
+
{"version":3,"file":"date-time.adapter.js","sourceRoot":"","sources":["../../../../../../../packages/theme-shared/extensions/src/lib/adapters/date-time.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAI3C,MAAM,OAAO,eAAe;IAG1B,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YACnB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;YACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;SAC1B,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,KAA+B;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,KAAK,iCACH,IAAI,EAAE,GAAG,CAAC,cAAc,EAAE,EAC1B,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAClB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,IACN,IAAI,CAAC,KAAK,GACV,KAAK,CACT,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,GAAG,CAAC,EACf,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,CACb,CAAC;QAEF,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;;4GAhDU,eAAe;gHAAf,eAAe;2FAAf,eAAe;kBAD3B,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Injectable()\r\nexport class DateTimeAdapter {\r\n value: NgbDateTimeStruct;\r\n\r\n fromModel(value: string | Date): NgbDateTimeStruct | null {\r\n if (!value) return null;\r\n\r\n const date = new Date(value);\r\n\r\n if (isNaN(date as unknown as number)) return null;\r\n\r\n this.value = {\r\n year: date.getFullYear(),\r\n month: date.getMonth() + 1,\r\n day: date.getDate(),\r\n hour: date.getHours(),\r\n minute: date.getMinutes(),\r\n second: date.getSeconds(),\r\n };\r\n\r\n return this.value;\r\n }\r\n\r\n toModel(value: NgbDateTimeStruct | null): string {\r\n if (!value) return '';\r\n\r\n const now = new Date();\r\n\r\n value = {\r\n year: now.getUTCFullYear(),\r\n month: now.getMonth() + 1,\r\n day: now.getDate(),\r\n hour: 0,\r\n minute: 0,\r\n second: 0,\r\n ...this.value,\r\n ...value,\r\n };\r\n\r\n const date = new Date(\r\n value.year,\r\n value.month - 1,\r\n value.day,\r\n value.hour,\r\n value.minute,\r\n value.second,\r\n );\r\n\r\n return new Date(date).toISOString();\r\n }\r\n}\r\n\r\ntype NgbDateTimeStruct = NgbDateStruct & NgbTimeStruct;\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.adapter.js","sourceRoot":"","sources":["../../../../../../../packages/theme-shared/extensions/src/lib/adapters/date.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAiB,MAAM,4BAA4B,CAAC;;AAG3E,MAAM,OAAO,WAAY,SAAQ,cAAsB;IACrD,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,IAAU,CAAC;QAEf,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SACxB;QAED,IAAI,KAAK,CAAC,IAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;SACzB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAA2B;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAE3D,OAAO,aAAa,CAAC;IACvB,CAAC;IAES,MAAM,CAAC,KAAa;QAC5B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACrF,CAAC;;wGAjCU,WAAW;4GAAX,WAAW;2FAAX,WAAW;kBADvB,UAAU","sourcesContent":["import { formatDate } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { NgbDateAdapter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\n\n@Injectable()\nexport class DateAdapter extends NgbDateAdapter<string> {\n fromModel(value: string | Date): NgbDateStruct | null {\n if (!value) return null;\n\n let date: Date;\n\n if (typeof value === 'string') {\n date = this.dateOf(value);\n } else {\n date = new Date(value);\n }\n\n if (isNaN(date as unknown as number)) return null;\n\n return {\n day: date.getDate(),\n month: date.getMonth() + 1,\n year: date.getFullYear(),\n };\n }\n\n toModel(value: NgbDateStruct | null): string {\n if (!value) return '';\n\n const date = new Date(value.year, value.month - 1, value.day);\n const formattedDate = formatDate(date, 'yyyy-MM-dd', 'en');\n\n return formattedDate;\n }\n\n protected dateOf(value: string): Date {\n const dateUtc = new Date(Date.parse(value));\n return new Date(dateUtc.getTime() + Math.abs(dateUtc.getTimezoneOffset() * 60000));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date.adapter.js","sourceRoot":"","sources":["../../../../../../../packages/theme-shared/extensions/src/lib/adapters/date.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAiB,MAAM,4BAA4B,CAAC;;AAG3E,MAAM,OAAO,WAAY,SAAQ,cAAsB;IACrD,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,IAAU,CAAC;QAEf,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SACxB;QAED,IAAI,KAAK,CAAC,IAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;SACzB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAA2B;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAE3D,OAAO,aAAa,CAAC;IACvB,CAAC;IAES,MAAM,CAAC,KAAa;QAC5B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACrF,CAAC;;wGAjCU,WAAW;4GAAX,WAAW;2FAAX,WAAW;kBADvB,UAAU","sourcesContent":["import { formatDate } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDateAdapter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Injectable()\r\nexport class DateAdapter extends NgbDateAdapter<string> {\r\n fromModel(value: string | Date): NgbDateStruct | null {\r\n if (!value) return null;\r\n\r\n let date: Date;\r\n\r\n if (typeof value === 'string') {\r\n date = this.dateOf(value);\r\n } else {\r\n date = new Date(value);\r\n }\r\n\r\n if (isNaN(date as unknown as number)) return null;\r\n\r\n return {\r\n day: date.getDate(),\r\n month: date.getMonth() + 1,\r\n year: date.getFullYear(),\r\n };\r\n }\r\n\r\n toModel(value: NgbDateStruct | null): string {\r\n if (!value) return '';\r\n\r\n const date = new Date(value.year, value.month - 1, value.day);\r\n const formattedDate = formatDate(date, 'yyyy-MM-dd', 'en');\r\n\r\n return formattedDate;\r\n }\r\n\r\n protected dateOf(value: string): Date {\r\n const dateUtc = new Date(Date.parse(value));\r\n return new Date(dateUtc.getTime() + Math.abs(dateUtc.getTimezoneOffset() * 60000));\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.adapter.js","sourceRoot":"","sources":["../../../../../../../packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAiB,MAAM,4BAA4B,CAAC;;AAG3E,MAAM,OAAO,WAAY,SAAQ,cAAsB;IACrD,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpB,IAAI,KAAK,CAAC,IAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;YACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAA2B;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,OAAO,aAAa,CAAC;IACvB,CAAC;;wGAxBU,WAAW;4GAAX,WAAW;2FAAX,WAAW;kBADvB,UAAU;;AA4BX,SAAS,SAAS,CAAC,KAAoB;IACrC,OAAO,2CAA2C,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC","sourcesContent":["import { formatDate } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { NgbTimeAdapter, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\n\n@Injectable()\nexport class TimeAdapter extends NgbTimeAdapter<string> {\n fromModel(value: string | Date): NgbTimeStruct | null {\n if (!value) return null;\n\n const date = isTimeStr(value)\n ? new Date(0, 0, 1, ...value.split(':').map(Number))\n : new Date(value);\n\n if (isNaN(date as unknown as number)) return null;\n\n return {\n hour: date.getHours(),\n minute: date.getMinutes(),\n second: date.getSeconds(),\n };\n }\n\n toModel(value: NgbTimeStruct | null): string {\n if (!value) return '';\n\n const date = new Date(0, 0, 1, value.hour, value.minute, value.second);\n const formattedDate = formatDate(date, 'HH:mm', 'en');\n\n return formattedDate;\n }\n}\n\nfunction isTimeStr(value: string | Date): value is string {\n return /^((2[123])|[01][0-9])(\\:[0-5][0-9]){1,2}$/.test(String(value));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"time.adapter.js","sourceRoot":"","sources":["../../../../../../../packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAiB,MAAM,4BAA4B,CAAC;;AAG3E,MAAM,OAAO,WAAY,SAAQ,cAAsB;IACrD,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpB,IAAI,KAAK,CAAC,IAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;YACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAA2B;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,OAAO,aAAa,CAAC;IACvB,CAAC;;wGAxBU,WAAW;4GAAX,WAAW;2FAAX,WAAW;kBADvB,UAAU;;AA4BX,SAAS,SAAS,CAAC,KAAoB;IACrC,OAAO,2CAA2C,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC","sourcesContent":["import { formatDate } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbTimeAdapter, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Injectable()\r\nexport class TimeAdapter extends NgbTimeAdapter<string> {\r\n fromModel(value: string | Date): NgbTimeStruct | null {\r\n if (!value) return null;\r\n\r\n const date = isTimeStr(value)\r\n ? new Date(0, 0, 1, ...value.split(':').map(Number))\r\n : new Date(value);\r\n\r\n if (isNaN(date as unknown as number)) return null;\r\n\r\n return {\r\n hour: date.getHours(),\r\n minute: date.getMinutes(),\r\n second: date.getSeconds(),\r\n };\r\n }\r\n\r\n toModel(value: NgbTimeStruct | null): string {\r\n if (!value) return '';\r\n\r\n const date = new Date(0, 0, 1, value.hour, value.minute, value.second);\r\n const formattedDate = formatDate(date, 'HH:mm', 'en');\r\n\r\n return formattedDate;\r\n }\r\n}\r\n\r\nfunction isTimeStr(value: string | Date): value is string {\r\n return /^((2[123])|[01][0-9])(\\:[0-5][0-9]){1,2}$/.test(String(value));\r\n}\r\n"]}
|
package/esm2015/extensions/lib/components/abstract-actions/abstract-actions.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-actions.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAc,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;;AAE9F,0DAA0D;AAC1D,WAAW;AAEX,MAAM,OAAgB,wBAAoD,SAAQ,UAEjF;IAOC,YAAY,QAAkB;QAC5B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAuB,CAAC;IACvE,CAAC;;qHAjBmB,wBAAwB;yGAAxB,wBAAwB;2FAAxB,wBAAwB;kBAD7C,SAAS;+FAQU,MAAM;sBAAvB,KAAK","sourcesContent":["import { Directive, Injector, Input } from '@angular/core';\nimport { ActionData, ActionList } from '../../models/actions';\nimport { ExtensionsService } from '../../services/extensions.service';\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\n\n// Fix for https://github.com/angular/angular/issues/23904\n// @dynamic\n@Directive()\nexport abstract class AbstractActionsComponent<L extends ActionList<any>> extends ActionData<\n InferredRecord<L>\n> {\n readonly actionList: L;\n\n readonly getInjected: InferredData<L>['getInjected'];\n\n @Input() readonly record: InferredData<L>['record'];\n\n constructor(injector: Injector) {\n super();\n\n this.getInjected = injector.get.bind(injector);\n const extensions = injector.get(ExtensionsService);\n const name = injector.get(EXTENSIONS_IDENTIFIER);\n const type = injector.get(EXTENSIONS_ACTION_TYPE);\n this.actionList = extensions[type].get(name).actions as unknown as L;\n }\n}\n\ntype InferredData<L> = ActionData<InferredRecord<L>>;\ntype InferredRecord<L> = L extends ActionList<infer R> ? R : never;\n"]}
|
|
1
|
+
{"version":3,"file":"abstract-actions.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAc,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;;AAE9F,0DAA0D;AAC1D,WAAW;AAEX,MAAM,OAAgB,wBAAoD,SAAQ,UAEjF;IAOC,YAAY,QAAkB;QAC5B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAuB,CAAC;IACvE,CAAC;;qHAjBmB,wBAAwB;yGAAxB,wBAAwB;2FAAxB,wBAAwB;kBAD7C,SAAS;+FAQU,MAAM;sBAAvB,KAAK","sourcesContent":["import { Directive, Injector, Input } from '@angular/core';\r\nimport { ActionData, ActionList } from '../../models/actions';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\n\r\n// Fix for https://github.com/angular/angular/issues/23904\r\n// @dynamic\r\n@Directive()\r\nexport abstract class AbstractActionsComponent<L extends ActionList<any>> extends ActionData<\r\n InferredRecord<L>\r\n> {\r\n readonly actionList: L;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n @Input() readonly record: InferredData<L>['record'];\r\n\r\n constructor(injector: Injector) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n const extensions = injector.get(ExtensionsService);\r\n const name = injector.get(EXTENSIONS_IDENTIFIER);\r\n const type = injector.get(EXTENSIONS_ACTION_TYPE);\r\n this.actionList = extensions[type].get(name).actions as unknown as L;\r\n }\r\n}\r\n\r\ntype InferredData<L> = ActionData<InferredRecord<L>>;\r\ntype InferredRecord<L> = L extends ActionList<infer R> ? R : never;\r\n"]}
|
|
@@ -21,25 +21,25 @@ export class DateTimePickerComponent {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
DateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
-
DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: DateTimePickerComponent, selector: "abp-date-time-picker", inputs: { prop: "prop", meridian: "meridian" }, viewQueries: [{ propertyName: "date", first: true, predicate: NgbInputDatepicker, descendants: true }, { propertyName: "time", first: true, predicate: NgbTimepicker, descendants: true }], exportAs: ["abpDateTimePicker"], ngImport: i0, template: `
|
|
25
|
-
<input
|
|
26
|
-
[id]="prop.id"
|
|
27
|
-
[formControlName]="prop.name"
|
|
28
|
-
(ngModelChange)="setTime($event)"
|
|
29
|
-
(click)="datepicker.open()"
|
|
30
|
-
(keyup.space)="datepicker.open()"
|
|
31
|
-
ngbDatepicker
|
|
32
|
-
#datepicker="ngbDatepicker"
|
|
33
|
-
type="text"
|
|
34
|
-
class="form-control"
|
|
35
|
-
/>
|
|
36
|
-
<ngb-timepicker
|
|
37
|
-
#timepicker
|
|
38
|
-
[formControlName]="prop.name"
|
|
39
|
-
(ngModelChange)="setDate($event)"
|
|
40
|
-
[meridian]="meridian"
|
|
41
|
-
></ngb-timepicker>
|
|
42
|
-
`, isInline: true, components: [{ type: i1.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }], directives: [{ type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "
|
|
24
|
+
DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: DateTimePickerComponent, selector: "abp-date-time-picker", inputs: { prop: "prop", meridian: "meridian" }, viewQueries: [{ propertyName: "date", first: true, predicate: NgbInputDatepicker, descendants: true }, { propertyName: "time", first: true, predicate: NgbTimepicker, descendants: true }], exportAs: ["abpDateTimePicker"], ngImport: i0, template: `
|
|
25
|
+
<input
|
|
26
|
+
[id]="prop.id"
|
|
27
|
+
[formControlName]="prop.name"
|
|
28
|
+
(ngModelChange)="setTime($event)"
|
|
29
|
+
(click)="datepicker.open()"
|
|
30
|
+
(keyup.space)="datepicker.open()"
|
|
31
|
+
ngbDatepicker
|
|
32
|
+
#datepicker="ngbDatepicker"
|
|
33
|
+
type="text"
|
|
34
|
+
class="form-control"
|
|
35
|
+
/>
|
|
36
|
+
<ngb-timepicker
|
|
37
|
+
#timepicker
|
|
38
|
+
[formControlName]="prop.name"
|
|
39
|
+
(ngModelChange)="setDate($event)"
|
|
40
|
+
[meridian]="meridian"
|
|
41
|
+
></ngb-timepicker>
|
|
42
|
+
`, isInline: true, components: [{ type: i1.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }], directives: [{ type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.ValidationDirective, selector: "[formControl],[formControlName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }], viewProviders: [
|
|
43
43
|
{
|
|
44
44
|
provide: ControlContainer,
|
|
45
45
|
useFactory: selfFactory,
|
|
@@ -59,24 +59,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImpor
|
|
|
59
59
|
args: [{
|
|
60
60
|
exportAs: 'abpDateTimePicker',
|
|
61
61
|
selector: 'abp-date-time-picker',
|
|
62
|
-
template: `
|
|
63
|
-
<input
|
|
64
|
-
[id]="prop.id"
|
|
65
|
-
[formControlName]="prop.name"
|
|
66
|
-
(ngModelChange)="setTime($event)"
|
|
67
|
-
(click)="datepicker.open()"
|
|
68
|
-
(keyup.space)="datepicker.open()"
|
|
69
|
-
ngbDatepicker
|
|
70
|
-
#datepicker="ngbDatepicker"
|
|
71
|
-
type="text"
|
|
72
|
-
class="form-control"
|
|
73
|
-
/>
|
|
74
|
-
<ngb-timepicker
|
|
75
|
-
#timepicker
|
|
76
|
-
[formControlName]="prop.name"
|
|
77
|
-
(ngModelChange)="setDate($event)"
|
|
78
|
-
[meridian]="meridian"
|
|
79
|
-
></ngb-timepicker>
|
|
62
|
+
template: `
|
|
63
|
+
<input
|
|
64
|
+
[id]="prop.id"
|
|
65
|
+
[formControlName]="prop.name"
|
|
66
|
+
(ngModelChange)="setTime($event)"
|
|
67
|
+
(click)="datepicker.open()"
|
|
68
|
+
(keyup.space)="datepicker.open()"
|
|
69
|
+
ngbDatepicker
|
|
70
|
+
#datepicker="ngbDatepicker"
|
|
71
|
+
type="text"
|
|
72
|
+
class="form-control"
|
|
73
|
+
/>
|
|
74
|
+
<ngb-timepicker
|
|
75
|
+
#timepicker
|
|
76
|
+
[formControlName]="prop.name"
|
|
77
|
+
(ngModelChange)="setDate($event)"
|
|
78
|
+
[meridian]="meridian"
|
|
79
|
+
></ngb-timepicker>
|
|
80
80
|
`,
|
|
81
81
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
82
82
|
viewProviders: [
|
package/esm2015/extensions/lib/components/date-time-picker/date-time-picker.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time-picker.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;;;;;AAyCvD,MAAM,OAAO,uBAAuB;IAOlC,YAA4B,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QAL3C,aAAQ,GAAG,KAAK,CAAC;IAK6B,CAAC;IAExD,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;;oHAfU,uBAAuB;wGAAvB,uBAAuB,kJAIvB,kBAAkB,uEAClB,aAAa,iFAzCd;;;;;;;;;;;;;;;;;;GAkBT,
|
|
1
|
+
{"version":3,"file":"date-time-picker.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;;;;;AAyCvD,MAAM,OAAO,uBAAuB;IAOlC,YAA4B,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QAL3C,aAAQ,GAAG,KAAK,CAAC;IAK6B,CAAC;IAExD,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;;oHAfU,uBAAuB;wGAAvB,uBAAuB,kJAIvB,kBAAkB,uEAClB,aAAa,iFAzCd;;;;;;;;;;;;;;;;;;GAkBT,21CAEc;QACb;YACE,OAAO,EAAE,gBAAgB;YACzB,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;SAC3D;QACD;YACE,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,eAAe;SAC1B;QACD;YACE,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,eAAe;SAC1B;KACF;2FAEU,uBAAuB;kBAvCnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;GAkBT;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE;wBACb;4BACE,OAAO,EAAE,gBAAgB;4BACzB,UAAU,EAAE,WAAW;4BACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;yBAC3D;wBACD;4BACE,OAAO,EAAE,cAAc;4BACvB,QAAQ,EAAE,eAAe;yBAC1B;wBACD;4BACE,OAAO,EAAE,cAAc;4BACvB,QAAQ,EAAE,eAAe;yBAC1B;qBACF;iBACF;wGAEU,IAAI;sBAAZ,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBAEyB,IAAI;sBAAlC,SAAS;uBAAC,kBAAkB;gBACH,IAAI;sBAA7B,SAAS;uBAAC,aAAa","sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n Optional,\r\n SkipSelf,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbInputDatepicker,\r\n NgbTimeAdapter,\r\n NgbTimepicker,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { DateTimeAdapter } from '../../adapters/date-time.adapter';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\n\r\n@Component({\r\n exportAs: 'abpDateTimePicker',\r\n selector: 'abp-date-time-picker',\r\n template: `\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setTime($event)\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop.name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian\"\r\n ></ngb-timepicker>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n {\r\n provide: NgbDateAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n {\r\n provide: NgbTimeAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n ],\r\n})\r\nexport class DateTimePickerComponent {\r\n @Input() prop: FormProp;\r\n @Input() meridian = false;\r\n\r\n @ViewChild(NgbInputDatepicker) date: NgbInputDatepicker;\r\n @ViewChild(NgbTimepicker) time: NgbTimepicker;\r\n\r\n constructor(public readonly cdRef: ChangeDetectorRef) {}\r\n\r\n setDate(datestr: string) {\r\n this.date.writeValue(datestr);\r\n }\r\n\r\n setTime(datestr: string) {\r\n this.time.writeValue(datestr);\r\n }\r\n}\r\n"]}
|
|
@@ -123,7 +123,7 @@ export class ExtensibleFormPropComponent {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
ExtensibleFormPropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ExtensibleFormPropComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i1.ConfigStateService }, { token: i2.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component });
|
|
126
|
-
ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: { data: "data", prop: "prop", first: "first" }, viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\" *abpPermission=\"prop.permission\" [ngSwitch]=\"getComponent(prop)\">\n <ng-template ngSwitchCase=\"input\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <input\n #field\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n [autocomplete]=\"prop.autocomplete\"\n [type]=\"getType(prop)\"\n [abpDisabled]=\"disabled\"\n [readonly]=\"readonly\"\n class=\"form-control\"\n />\n </ng-template>\n\n <ng-template ngSwitchCase=\"hidden\">\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\n </ng-template>\n\n <ng-template ngSwitchCase=\"checkbox\">\n <div class=\"
|
|
126
|
+
ExtensibleFormPropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: { data: "data", prop: "prop", first: "first" }, viewQueries: [{ propertyName: "fieldRef", first: true, predicate: ["field"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"mb-3 form-group\" *abpPermission=\"prop.permission\" [ngSwitch]=\"getComponent(prop)\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n</div>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\"\r\n >{{ prop.displayName | abpLocalization }} {{ asterisk }}</label\r\n >\r\n</ng-template>\r\n", components: [{ type: i3.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }, { type: i4.DateTimePickerComponent, selector: "abp-date-time-picker", inputs: ["prop", "meridian"], exportAs: ["abpDateTimePicker"] }], directives: [{ type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.ValidationDirective, selector: "[formControl],[formControlName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }, { type: i7.DisabledDirective, selector: "[abpDisabled]", inputs: ["abpDisabled"] }, { type: i6.ValidationTargetDirective, selector: "[validationTarget]" }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { type: i6.ValidationStyleDirective, selector: "[validationStyle]" }, { type: i3.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "placement", "container", "editable", "focusFirst", "showHint", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate", "popupClass"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i5.AsyncPipe, "abpLocalization": i1.LocalizationPipe }, viewProviders: [
|
|
127
127
|
{
|
|
128
128
|
provide: ControlContainer,
|
|
129
129
|
useFactory: selfFactory,
|
package/esm2015/extensions/lib/components/extensible-form/extensible-form-prop.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensible-form-prop.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.html"],"names":[],"mappings":"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","sourcesContent":["import { ABP, AbpValidators, ConfigStateService, TrackByService } from '@abp/ng.core';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnChanges,\n Optional,\n SimpleChanges,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroup,\n FormGroupDirective,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { NgbDateAdapter, NgbTimeAdapter } from '@ng-bootstrap/ng-bootstrap';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { DateAdapter } from '../../adapters/date.adapter';\nimport { TimeAdapter } from '../../adapters/time.adapter';\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\nimport { ePropType } from '../../enums/props.enum';\nimport { FormProp } from '../../models/form-props';\nimport { PropData } from '../../models/props';\nimport { selfFactory } from '../../utils/factory.util';\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\n\n@Component({\n selector: 'abp-extensible-form-prop',\n templateUrl: './extensible-form-prop.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n { provide: NgbDateAdapter, useClass: DateAdapter },\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\n ],\n})\nexport class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {\n @Input() data: PropData;\n\n @Input() prop: FormProp;\n\n @Input() first: boolean;\n\n @ViewChild('field') private fieldRef: ElementRef<HTMLElement>;\n\n asterisk = '';\n\n options$: Observable<ABP.Option<any>[]> = of([]);\n\n validators: ValidatorFn[] = [];\n\n readonly: boolean;\n\n disabled: boolean;\n\n private readonly form: FormGroup;\n\n typeaheadModel: any;\n\n setTypeaheadValue(selectedOption: ABP.Option<string>) {\n this.typeaheadModel = selectedOption || { key: null, value: null };\n const { key, value } = this.typeaheadModel;\n const [keyControl, valueControl] = this.getTypeaheadControls();\n if (valueControl.value && !value) valueControl.markAsDirty();\n keyControl.setValue(key);\n valueControl.setValue(value);\n }\n\n search = (text$: Observable<string>) =>\n text$\n ? text$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(text => this.prop.options(this.data, text)),\n )\n : of([]);\n\n typeaheadFormatter = (option: ABP.Option<any>) => option.key;\n\n get meridian() {\n return (\n this.configState.getDeep('localization.currentCulture.dateTimeFormat.shortTimePattern') || ''\n ).includes('tt');\n }\n\n get isInvalid() {\n const control = this.form.get(this.prop.name);\n return control.touched && control.invalid;\n }\n\n constructor(\n public readonly cdRef: ChangeDetectorRef,\n public readonly track: TrackByService,\n protected configState: ConfigStateService,\n groupDirective: FormGroupDirective,\n ) {\n this.form = groupDirective.form;\n }\n\n private getTypeaheadControls() {\n const { name } = this.prop;\n const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\n const keyControl =\n this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\n this.form.get(addTypeaheadTextSuffix(name));\n const valueControl = this.form.get(extraPropName) || this.form.get(name);\n return [keyControl, valueControl];\n }\n\n private setAsterisk() {\n this.asterisk = this.validators.some(isRequired) ? '*' : '';\n }\n\n ngAfterViewInit() {\n if (this.first && this.fieldRef) {\n this.fieldRef.nativeElement.focus();\n }\n }\n\n getComponent(prop: FormProp): string {\n switch (prop.type) {\n case ePropType.Boolean:\n return 'checkbox';\n case ePropType.Date:\n return 'date';\n case ePropType.DateTime:\n return 'dateTime';\n case ePropType.Hidden:\n return 'hidden';\n case ePropType.MultiSelect:\n return 'multiselect';\n case ePropType.Text:\n return 'textarea';\n case ePropType.Time:\n return 'time';\n case ePropType.Typeahead:\n return 'typeahead';\n default:\n return prop.options ? 'select' : 'input';\n }\n }\n\n getType(prop: FormProp): string {\n switch (prop.type) {\n case ePropType.Date:\n case ePropType.String:\n return 'text';\n case ePropType.Boolean:\n return 'checkbox';\n case ePropType.Number:\n return 'number';\n case ePropType.Email:\n return 'email';\n case ePropType.Password:\n return 'password';\n default:\n return 'hidden';\n }\n }\n\n ngOnChanges({ prop }: SimpleChanges) {\n const currentProp = prop?.currentValue;\n const { options, readonly, disabled, validators } = currentProp || {};\n\n if (options) this.options$ = options(this.data);\n if (readonly) this.readonly = readonly(this.data);\n if (disabled) this.disabled = disabled(this.data);\n if (validators) {\n this.validators = validators(this.data);\n this.setAsterisk();\n }\n\n const [keyControl, valueControl] = this.getTypeaheadControls();\n if (keyControl && valueControl)\n this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\n }\n}\n\nfunction isRequired(validator: ValidatorFn) {\n return validator === Validators.required || validator === AbpValidators.required;\n}\n","<div class=\"form-group\" *abpPermission=\"prop.permission\" [ngSwitch]=\"getComponent(prop)\">\n <ng-template ngSwitchCase=\"input\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <input\n #field\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n [autocomplete]=\"prop.autocomplete\"\n [type]=\"getType(prop)\"\n [abpDisabled]=\"disabled\"\n [readonly]=\"readonly\"\n class=\"form-control\"\n />\n </ng-template>\n\n <ng-template ngSwitchCase=\"hidden\">\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\n </ng-template>\n\n <ng-template ngSwitchCase=\"checkbox\">\n <div class=\"custom-checkbox custom-control\" validationTarget>\n <input\n #field\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n [abpDisabled]=\"disabled\"\n type=\"checkbox\"\n class=\"custom-control-input\"\n />\n <ng-template\n [ngTemplateOutlet]=\"label\"\n [ngTemplateOutletContext]=\"{ $implicit: 'custom-control-label' }\"\n ></ng-template>\n </div>\n </ng-template>\n\n <ng-template ngSwitchCase=\"select\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <select\n #field\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n [abpDisabled]=\"disabled\"\n class=\"custom-select form-control\"\n >\n <option\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\n [ngValue]=\"option.value\"\n >\n {{ option.key }}\n </option>\n </select>\n </ng-template>\n\n <ng-template ngSwitchCase=\"multiselect\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <select\n #field\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n [abpDisabled]=\"disabled\"\n multiple=\"multiple\"\n class=\"custom-select form-control\"\n >\n <option\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\n [ngValue]=\"option.value\"\n >\n {{ option.key }}\n </option>\n </select>\n </ng-template>\n\n <ng-template ngSwitchCase=\"typeahead\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\n <input\n #field\n [id]=\"prop.id\"\n [autocomplete]=\"prop.autocomplete\"\n [abpDisabled]=\"disabled\"\n [ngbTypeahead]=\"search\"\n [editable]=\"false\"\n [inputFormatter]=\"typeaheadFormatter\"\n [resultFormatter]=\"typeaheadFormatter\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"typeaheadModel\"\n (selectItem)=\"setTypeaheadValue($event.item)\"\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\n class=\"form-control\"\n />\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\n </div>\n </ng-template>\n\n <ng-template ngSwitchCase=\"date\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <input\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n (click)=\"datepicker.open()\"\n (keyup.space)=\"datepicker.open()\"\n ngbDatepicker\n #datepicker=\"ngbDatepicker\"\n type=\"text\"\n class=\"form-control\"\n />\n </ng-template>\n\n <ng-template ngSwitchCase=\"time\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\n </ng-template>\n\n <ng-template ngSwitchCase=\"dateTime\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\n </ng-template>\n\n <ng-template ngSwitchCase=\"textarea\">\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\n <textarea\n #field\n [id]=\"prop.id\"\n [formControlName]=\"prop.name\"\n [abpDisabled]=\"disabled\"\n [readonly]=\"readonly\"\n class=\"form-control\"\n ></textarea>\n </ng-template>\n</div>\n\n<ng-template #label let-classes>\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes\"\n >{{ prop.displayName | abpLocalization }} {{ asterisk }}</label\n >\n</ng-template>\n"]}
|
|
1
|
+
{"version":3,"file":"extensible-form-prop.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.html"],"names":[],"mappings":"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","sourcesContent":["import { ABP, AbpValidators, ConfigStateService, TrackByService } from '@abp/ng.core';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { NgbDateAdapter, NgbTimeAdapter } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\r\nimport { DateAdapter } from '../../adapters/date.adapter';\r\nimport { TimeAdapter } from '../../adapters/time.adapter';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { ePropType } from '../../enums/props.enum';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { PropData } from '../../models/props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\r\n\r\n@Component({\r\n selector: 'abp-extensible-form-prop',\r\n templateUrl: './extensible-form-prop.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n { provide: NgbDateAdapter, useClass: DateAdapter },\r\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\r\n ],\r\n})\r\nexport class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {\r\n @Input() data: PropData;\r\n\r\n @Input() prop: FormProp;\r\n\r\n @Input() first: boolean;\r\n\r\n @ViewChild('field') private fieldRef: ElementRef<HTMLElement>;\r\n\r\n asterisk = '';\r\n\r\n options$: Observable<ABP.Option<any>[]> = of([]);\r\n\r\n validators: ValidatorFn[] = [];\r\n\r\n readonly: boolean;\r\n\r\n disabled: boolean;\r\n\r\n private readonly form: FormGroup;\r\n\r\n typeaheadModel: any;\r\n\r\n setTypeaheadValue(selectedOption: ABP.Option<string>) {\r\n this.typeaheadModel = selectedOption || { key: null, value: null };\r\n const { key, value } = this.typeaheadModel;\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (valueControl.value && !value) valueControl.markAsDirty();\r\n keyControl.setValue(key);\r\n valueControl.setValue(value);\r\n }\r\n\r\n search = (text$: Observable<string>) =>\r\n text$\r\n ? text$.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n switchMap(text => this.prop.options(this.data, text)),\r\n )\r\n : of([]);\r\n\r\n typeaheadFormatter = (option: ABP.Option<any>) => option.key;\r\n\r\n get meridian() {\r\n return (\r\n this.configState.getDeep('localization.currentCulture.dateTimeFormat.shortTimePattern') || ''\r\n ).includes('tt');\r\n }\r\n\r\n get isInvalid() {\r\n const control = this.form.get(this.prop.name);\r\n return control.touched && control.invalid;\r\n }\r\n\r\n constructor(\r\n public readonly cdRef: ChangeDetectorRef,\r\n public readonly track: TrackByService,\r\n protected configState: ConfigStateService,\r\n groupDirective: FormGroupDirective,\r\n ) {\r\n this.form = groupDirective.form;\r\n }\r\n\r\n private getTypeaheadControls() {\r\n const { name } = this.prop;\r\n const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\r\n const keyControl =\r\n this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\r\n this.form.get(addTypeaheadTextSuffix(name));\r\n const valueControl = this.form.get(extraPropName) || this.form.get(name);\r\n return [keyControl, valueControl];\r\n }\r\n\r\n private setAsterisk() {\r\n this.asterisk = this.validators.some(isRequired) ? '*' : '';\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.first && this.fieldRef) {\r\n this.fieldRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n getComponent(prop: FormProp): string {\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Date:\r\n return 'date';\r\n case ePropType.DateTime:\r\n return 'dateTime';\r\n case ePropType.Hidden:\r\n return 'hidden';\r\n case ePropType.MultiSelect:\r\n return 'multiselect';\r\n case ePropType.Text:\r\n return 'textarea';\r\n case ePropType.Time:\r\n return 'time';\r\n case ePropType.Typeahead:\r\n return 'typeahead';\r\n default:\r\n return prop.options ? 'select' : 'input';\r\n }\r\n }\r\n\r\n getType(prop: FormProp): string {\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n case ePropType.String:\r\n return 'text';\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Number:\r\n return 'number';\r\n case ePropType.Email:\r\n return 'email';\r\n case ePropType.Password:\r\n return 'password';\r\n default:\r\n return 'hidden';\r\n }\r\n }\r\n\r\n ngOnChanges({ prop }: SimpleChanges) {\r\n const currentProp = prop?.currentValue;\r\n const { options, readonly, disabled, validators } = currentProp || {};\r\n\r\n if (options) this.options$ = options(this.data);\r\n if (readonly) this.readonly = readonly(this.data);\r\n if (disabled) this.disabled = disabled(this.data);\r\n if (validators) {\r\n this.validators = validators(this.data);\r\n this.setAsterisk();\r\n }\r\n\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (keyControl && valueControl)\r\n this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\r\n }\r\n}\r\n\r\nfunction isRequired(validator: ValidatorFn) {\r\n return validator === Validators.required || validator === AbpValidators.required;\r\n}\r\n","<div class=\"mb-3 form-group\" *abpPermission=\"prop.permission\" [ngSwitch]=\"getComponent(prop)\">\r\n <ng-template ngSwitchCase=\"input\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"hidden\">\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"checkbox\">\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n ></ng-template>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"select\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"multiselect\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n multiple=\"multiple\"\r\n class=\"form-select form-control\"\r\n >\r\n <option\r\n *ngFor=\"let option of options$ | async; trackBy: track.by('value')\"\r\n [ngValue]=\"option.value\"\r\n >\r\n {{ option.key }}\r\n </option>\r\n </select>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"typeahead\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"date\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"time\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <ngb-timepicker [formControlName]=\"prop.name\"></ngb-timepicker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"dateTime\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-date-time-picker [prop]=\"prop\" [meridian]=\"meridian\"></abp-date-time-picker>\r\n </ng-template>\r\n\r\n <ng-template ngSwitchCase=\"textarea\">\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n </ng-template>\r\n</div>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label'\"\r\n >{{ prop.displayName | abpLocalization }} {{ asterisk }}</label\r\n >\r\n</ng-template>\r\n"]}
|
|
@@ -36,7 +36,7 @@ export class ExtensibleFormComponent {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
ExtensibleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ExtensibleFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TrackByService }, { token: i2.ControlContainer }, { token: i3.ExtensionsService }, { token: EXTENSIONS_IDENTIFIER }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
-
ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ExtensibleFormComponent, selector: "abp-extensible-form", inputs: { selectedRecord: "selectedRecord" }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "<ng-container *ngIf=\"form\">\n <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\n <ng-container *ngFor=\"let prop of propList; let first = first; trackBy: track.by('name')\">\n <ng-container *ngIf=\"prop.visible(data)\">\n <ng-container\n [formGroupName]=\"extraPropertiesKey\"\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\n >\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"></abp-extensible-form-prop>\n </ng-container>\n\n <ng-template #tempDefault>\n <abp-extensible-form-prop\n *ngIf=\"form.get(prop.name)\"\n [prop]=\"prop\"\n [data]=\"data\"\n [first]=\"first\"\n ></abp-extensible-form-prop>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }], viewProviders: [
|
|
39
|
+
ExtensibleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ExtensibleFormComponent, selector: "abp-extensible-form", inputs: { selectedRecord: "selectedRecord" }, viewQueries: [{ propertyName: "formProps", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: ["abpExtensibleForm"], ngImport: i0, template: "<ng-container *ngIf=\"form\">\r\n <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\r\n <ng-container *ngFor=\"let prop of propList; let first = first; trackBy: track.by('name')\">\r\n <ng-container *ngIf=\"prop.visible(data)\">\r\n <ng-container\r\n [formGroupName]=\"extraPropertiesKey\"\r\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\r\n >\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"></abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\r\n *ngIf=\"form.get(prop.name)\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n ></abp-extensible-form-prop>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n", components: [{ type: i4.ExtensibleFormPropComponent, selector: "abp-extensible-form-prop", inputs: ["data", "prop", "first"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.PropDataDirective, selector: "[abpPropData]", inputs: ["abpPropDataFromList", "abpPropDataWithRecord", "abpPropDataAtIndex"], exportAs: ["abpPropData"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", inputs: ["blueprints", "errorTemplate", "invalidClasses", "mapErrorsFn", "skipValidation", "targetSelector", "validateOnSubmit"] }], viewProviders: [
|
|
40
40
|
{
|
|
41
41
|
provide: ControlContainer,
|
|
42
42
|
useFactory: selfFactory,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensible-form.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAa,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;;;;;;;AAe/E,MAAM,OAAO,uBAAuB;IAuBlC,YACkB,KAAwB,EACxB,KAAqB,EAC7B,SAA2B,EAC3B,UAA6B,EACE,UAAkB;QAJzC,UAAK,GAAL,KAAK,CAAmB;QACxB,UAAK,GAAL,KAAK,CAAgB;QAC7B,cAAS,GAAT,SAAS,CAAkB;QAC3B,eAAU,GAAV,UAAU,CAAmB;QACE,eAAU,GAAV,UAAU,CAAQ;QAjB3D,uBAAkB,GAAG,oBAAoB,CAAC;IAkBvC,CAAC;IAzBJ,IACI,cAAc,CAAC,MAAS;QAC1B,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC/E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAMD,IAAI,IAAI;QACN,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAc,CAAC;IACnF,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAc,CAAC;IAC/E,CAAC;;oHArBU,uBAAuB,kJA4BxB,qBAAqB;wGA5BpB,uBAAuB,uIACpB,2BAA2B,iFClC3C,
|
|
1
|
+
{"version":3,"file":"extensible-form.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAa,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;;;;;;;AAe/E,MAAM,OAAO,uBAAuB;IAuBlC,YACkB,KAAwB,EACxB,KAAqB,EAC7B,SAA2B,EAC3B,UAA6B,EACE,UAAkB;QAJzC,UAAK,GAAL,KAAK,CAAmB;QACxB,UAAK,GAAL,KAAK,CAAgB;QAC7B,cAAS,GAAT,SAAS,CAAkB;QAC3B,eAAU,GAAV,UAAU,CAAmB;QACE,eAAU,GAAV,UAAU,CAAQ;QAjB3D,uBAAkB,GAAG,oBAAoB,CAAC;IAkBvC,CAAC;IAzBJ,IACI,cAAc,CAAC,MAAS;QAC1B,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC/E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAMD,IAAI,IAAI;QACN,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAc,CAAC;IACnF,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAc,CAAC;IAC/E,CAAC;;oHArBU,uBAAuB,kJA4BxB,qBAAqB;wGA5BpB,uBAAuB,uIACpB,2BAA2B,iFClC3C,g7BAuBA,g7BDEiB;QACb;YACE,OAAO,EAAE,gBAAgB;YACzB,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;SAC3D;KACF;2FAEU,uBAAuB;kBAbnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,qBAAqB;oBAC/B,WAAW,EAAE,kCAAkC;oBAC/C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE;wBACb;4BACE,OAAO,EAAE,gBAAgB;4BACzB,UAAU,EAAE,WAAW;4BACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;yBAC3D;qBACF;iBACF;;0BA6BI,MAAM;2BAAC,qBAAqB;4CA1B/B,SAAS;sBADR,YAAY;uBAAC,2BAA2B;gBAIrC,cAAc;sBADjB,KAAK","sourcesContent":["import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Inject,\r\n Input,\r\n Optional,\r\n QueryList,\r\n SkipSelf,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ControlContainer, FormGroup } from '@angular/forms';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormPropList } from '../../models/form-props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { ExtensibleFormPropComponent } from './extensible-form-prop.component';\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleForm',\r\n selector: 'abp-extensible-form',\r\n templateUrl: './extensible-form.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n ],\r\n})\r\nexport class ExtensibleFormComponent<R = any> {\r\n @ViewChildren(ExtensibleFormPropComponent)\r\n formProps: QueryList<ExtensibleFormPropComponent>;\r\n\r\n @Input()\r\n set selectedRecord(record: R) {\r\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n this.propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n this.record = record;\r\n }\r\n\r\n extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n propList: FormPropList<R>;\r\n record: R;\r\n\r\n get form(): FormGroup {\r\n return (this.container ? this.container.control : { controls: {} }) as FormGroup;\r\n }\r\n\r\n get extraProperties(): FormGroup {\r\n return (this.form.controls.extraProperties || { controls: {} }) as FormGroup;\r\n }\r\n\r\n constructor(\r\n public readonly cdRef: ChangeDetectorRef,\r\n public readonly track: TrackByService,\r\n private container: ControlContainer,\r\n private extensions: ExtensionsService,\r\n @Inject(EXTENSIONS_IDENTIFIER) private identifier: string,\r\n ) {}\r\n}\r\n","<ng-container *ngIf=\"form\">\r\n <ng-container *abpPropData=\"let data; fromList: propList; withRecord: record\">\r\n <ng-container *ngFor=\"let prop of propList; let first = first; trackBy: track.by('name')\">\r\n <ng-container *ngIf=\"prop.visible(data)\">\r\n <ng-container\r\n [formGroupName]=\"extraPropertiesKey\"\r\n *ngIf=\"extraProperties.controls[prop.name]; else tempDefault\"\r\n >\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\"></abp-extensible-form-prop>\r\n </ng-container>\r\n\r\n <ng-template #tempDefault>\r\n <abp-extensible-form-prop\r\n *ngIf=\"form.get(prop.name)\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n ></abp-extensible-form-prop>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n"]}
|
|
@@ -106,7 +106,7 @@ export class ExtensibleTableComponent {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
ExtensibleTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ExtensibleTableComponent, deps: [{ token: LOCALE_ID }, { token: i1.ConfigStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\n <ngx-datatable-column\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\n [name]=\"actionsText | abpLocalization\"\n [maxWidth]=\"columnWidths[0]\"\n [width]=\"columnWidths[0]\"\n [sortable]=\"false\"\n >\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\n <ng-container\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\n ></ng-container>\n <ng-template #gridActions>\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\n </ng-template>\n </ng-template>\n </ngx-datatable-column>\n\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\n <ngx-datatable-column\n [width]=\"columnWidths[i + 1] || 200\"\n [name]=\"prop.displayName | abpLocalization\"\n [prop]=\"prop.name\"\n [sortable]=\"prop.sortable\"\n >\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\n <ng-container *abpPermission=\"prop.permission\">\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\n <div\n *ngIf=\"!row['_' + prop.name].component; else component\"\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\n (click)=\"\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\n \"\n [class.pointer]=\"prop.action\"\n ></div>\n </ng-container>\n <ng-template #component>\n <ng-container\n *ngComponentOutlet=\"\n row['_' + prop.name].component;\n injector: row['_' + prop.name].injector\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-template>\n </ngx-datatable-column>\n </ng-container>\n</ngx-datatable>\n", components: [{ type: i2.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { type: i3.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }], directives: [{ type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { type: i2.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
109
|
+
ExtensibleTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ExtensibleTableComponent, selector: "abp-extensible-table", inputs: { actionsText: "actionsText", data: "data", list: "list", recordsTotal: "recordsTotal", actionsColumnWidth: "actionsColumnWidth", actionsTemplate: "actionsTemplate" }, exportAs: ["abpExtensibleTable"], usesOnChanges: true, ngImport: i0, template: "<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\r\n <ngx-datatable-column\r\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\r\n <ngx-datatable-column\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission\">\r\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\r\n <div\r\n *ngIf=\"!row['_' + prop.name].component; else component\"\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #component>\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n</ngx-datatable>\r\n", components: [{ type: i2.DatatableComponent, selector: "ngx-datatable", inputs: ["selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "loadingIndicator", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "groupExpansionDefault", "selectAllRowsOnPage", "virtualization", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity", "rows", "groupedRows", "groupRowsBy", "columns", "limit", "count", "offset", "targetMarkerTemplate", "selectionType", "rowClass", "selectCheck", "displayCheck", "trackByProp", "treeFromRelation", "treeToRelation"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { type: i3.GridActionsComponent, selector: "abp-grid-actions", inputs: ["icon", "index", "text"], exportAs: ["abpGridActions"] }], directives: [{ type: i4.NgxDatatableDefaultDirective, selector: "ngx-datatable[default]", inputs: ["class"], exportAs: ["ngxDatatableDefault"] }, { type: i4.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { type: i2.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
110
110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ExtensibleTableComponent, decorators: [{
|
|
111
111
|
type: Component,
|
|
112
112
|
args: [{
|
package/esm2015/extensions/lib/components/extensible-table/extensible-table.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensible-table.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ABP,\n ConfigStateService,\n getShortDateFormat,\n getShortDateShortTimeFormat,\n getShortTimeFormat,\n ListService,\n PermissionService,\n} from '@abp/ng.core';\nimport { formatDate } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n InjectFlags,\n InjectionToken,\n Injector,\n Input,\n LOCALE_ID,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n TrackByFunction,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ePropType } from '../../enums/props.enum';\nimport { EntityActionList } from '../../models/entity-actions';\nimport { EntityProp, EntityPropList } from '../../models/entity-props';\nimport { PropData } from '../../models/props';\nimport { ExtensionsService } from '../../services/extensions.service';\nimport { EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM } from '../../tokens/extensions.token';\n\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\n\n@Component({\n exportAs: 'abpExtensibleTable',\n selector: 'abp-extensible-table',\n templateUrl: './extensible-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExtensibleTableComponent<R = any> implements OnChanges {\n protected _actionsText: string;\n @Input()\n set actionsText(value: string) {\n this._actionsText = value;\n }\n get actionsText(): string {\n return this._actionsText ?? (this.actionList.length > 1 ? 'AbpUi::Actions' : '');\n }\n\n @Input() data: R[];\n @Input() list: ListService;\n @Input() recordsTotal: number;\n @Input() set actionsColumnWidth(width: number) {\n this.setColumnWidths(width ? Number(width) : undefined);\n }\n @Input() actionsTemplate: TemplateRef<any>;\n\n getInjected: <T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags) => T;\n\n hasAtLeastOnePermittedAction: boolean;\n\n readonly columnWidths: number[];\n\n readonly propList: EntityPropList<R>;\n\n readonly actionList: EntityActionList<R>;\n\n readonly trackByFn: TrackByFunction<EntityProp<R>> = (_, item) => item.name;\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private config: ConfigStateService,\n private injector: Injector,\n ) {\n this.getInjected = injector.get.bind(injector);\n const extensions = injector.get(ExtensionsService);\n const name = injector.get(EXTENSIONS_IDENTIFIER);\n this.propList = extensions.entityProps.get(name).props;\n this.actionList = extensions['entityActions'].get(name)\n .actions as unknown as EntityActionList<R>;\n\n const permissionService = injector.get(PermissionService);\n this.hasAtLeastOnePermittedAction =\n permissionService.filterItemsByPolicy(\n this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })),\n ).length > 0;\n this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);\n }\n\n private setColumnWidths(actionsColumn: number) {\n const widths = [actionsColumn];\n this.propList.forEach(({ value: prop }) => {\n widths.push(prop.columnWidth);\n });\n (this.columnWidths as any) = widths;\n }\n\n private getDate(value: Date, format: string) {\n return value ? formatDate(value, format, this.locale) : '';\n }\n\n private getIcon(value: boolean) {\n return value\n ? '<div class=\"text-center text-success\"><i class=\"fa fa-check\"></i></div>'\n : '<div class=\"text-center text-danger\"><i class=\"fa fa-times\"></i></div>';\n }\n\n private getEnum(rowValue: any, list: Array<ABP.Option<any>>) {\n if (!list) return rowValue;\n const { key } = list.find(({ value }) => value === rowValue);\n return key;\n }\n\n getContent(prop: EntityProp<R>, data: PropData): Observable<string> {\n return prop.valueResolver(data).pipe(\n map(value => {\n switch (prop.type) {\n case ePropType.Boolean:\n return this.getIcon(value);\n case ePropType.Date:\n return this.getDate(value, getShortDateFormat(this.config));\n case ePropType.Time:\n return this.getDate(value, getShortTimeFormat(this.config));\n case ePropType.DateTime:\n return this.getDate(value, getShortDateShortTimeFormat(this.config));\n case ePropType.Enum:\n return this.getEnum(value, prop.enumList);\n default:\n return value;\n // More types can be handled in the future\n }\n }),\n );\n }\n\n ngOnChanges({ data }: SimpleChanges) {\n if (!data?.currentValue) return;\n\n this.data = data.currentValue.map((record, index) => {\n this.propList.forEach(prop => {\n const propData = { getInjected: this.getInjected, record, index } as any;\n const value = this.getContent(prop.value, propData);\n\n const propKey = `_${prop.value.name}`;\n record[propKey] = {\n visible: prop.value.visible(propData),\n value,\n };\n if (prop.value.component) {\n const injector = Injector.create(\n [\n {\n provide: PROP_DATA_STREAM,\n useValue: value,\n },\n ],\n this.injector,\n );\n record[propKey].injector = injector;\n record[propKey].component = prop.value.component;\n }\n });\n\n return record;\n });\n }\n}\n","<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\n <ngx-datatable-column\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\n [name]=\"actionsText | abpLocalization\"\n [maxWidth]=\"columnWidths[0]\"\n [width]=\"columnWidths[0]\"\n [sortable]=\"false\"\n >\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\n <ng-container\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\n ></ng-container>\n <ng-template #gridActions>\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\n </ng-template>\n </ng-template>\n </ngx-datatable-column>\n\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\n <ngx-datatable-column\n [width]=\"columnWidths[i + 1] || 200\"\n [name]=\"prop.displayName | abpLocalization\"\n [prop]=\"prop.name\"\n [sortable]=\"prop.sortable\"\n >\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\n <ng-container *abpPermission=\"prop.permission\">\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\n <div\n *ngIf=\"!row['_' + prop.name].component; else component\"\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\n (click)=\"\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\n \"\n [class.pointer]=\"prop.action\"\n ></div>\n </ng-container>\n <ng-template #component>\n <ng-container\n *ngComponentOutlet=\"\n row['_' + prop.name].component;\n injector: row['_' + prop.name].injector\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-template>\n </ngx-datatable-column>\n </ng-container>\n</ngx-datatable>\n"]}
|
|
1
|
+
{"version":3,"file":"extensible-table.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,MAAM,EAGN,QAAQ,EACR,KAAK,EACL,SAAS,EAGT,WAAW,GAGZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAKrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;;;;;;;AAExF,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAQzC,MAAM,OAAO,wBAAwB;IA8BnC,YAC6B,MAAc,EACjC,MAA0B,EAC1B,QAAkB;QAFC,WAAM,GAAN,MAAM,CAAQ;QACjC,WAAM,GAAN,MAAM,CAAoB;QAC1B,aAAQ,GAAR,QAAQ,CAAU;QALnB,cAAS,GAAmC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QAO1E,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;aACpD,OAAyC,CAAC;QAE7C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,4BAA4B;YAC/B,iBAAiB,CAAC,mBAAmB,CACnC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CACjF,CAAC,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;IACrD,CAAC;IA9CD,IACI,WAAW,CAAC,KAAa;QAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,IAAI,WAAW;;QACb,OAAO,MAAA,IAAI,CAAC,YAAY,mCAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAKD,IAAa,kBAAkB,CAAC,KAAa;QAC3C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAmCO,eAAe,CAAC,aAAqB;QAC3C,MAAM,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACF,IAAI,CAAC,YAAoB,GAAG,MAAM,CAAC;IACtC,CAAC;IAEO,OAAO,CAAC,KAAW,EAAE,MAAc;QACzC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAEO,OAAO,CAAC,KAAc;QAC5B,OAAO,KAAK;YACV,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,wEAAwE,CAAC;IAC/E,CAAC;IAEO,OAAO,CAAC,QAAa,EAAE,IAA4B;QACzD,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;QAC7D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU,CAAC,IAAmB,EAAE,IAAc;QAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAClC,GAAG,CAAC,KAAK,CAAC,EAAE;YACV,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB;oBACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7B;oBACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D;oBACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D;oBACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvE;oBACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5C;oBACE,OAAO,KAAK,CAAC;gBACf,0CAA0C;aAC3C;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,EAAE,IAAI,EAAiB;QACjC,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAA;YAAE,OAAO;QAEhC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3B,MAAM,QAAQ,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAS,CAAC;gBACzE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAEpD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,CAAC,OAAO,CAAC,GAAG;oBAChB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACrC,KAAK;iBACN,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;oBACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC9B;wBACE;4BACE,OAAO,EAAE,gBAAgB;4BACzB,QAAQ,EAAE,KAAK;yBAChB;qBACF,EACD,IAAI,CAAC,QAAQ,CACd,CAAC;oBACF,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACpC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;iBAClD;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;;qHA9HU,wBAAwB,kBA+BzB,SAAS;yGA/BR,wBAAwB,mSC1CrC,umEAkDA;2FDRa,wBAAwB;kBANpC,SAAS;mBAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,sBAAsB;oBAChC,WAAW,EAAE,mCAAmC;oBAChD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAgCI,MAAM;2BAAC,SAAS;oGA5Bf,WAAW;sBADd,KAAK;gBAQG,IAAI;sBAAZ,KAAK;gBACG,IAAI;sBAAZ,KAAK;gBACG,YAAY;sBAApB,KAAK;gBACO,kBAAkB;sBAA9B,KAAK;gBAGG,eAAe;sBAAvB,KAAK","sourcesContent":["import {\r\n ABP,\r\n ConfigStateService,\r\n getShortDateFormat,\r\n getShortDateShortTimeFormat,\r\n getShortTimeFormat,\r\n ListService,\r\n PermissionService,\r\n} from '@abp/ng.core';\r\nimport { formatDate } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Inject,\r\n InjectFlags,\r\n InjectionToken,\r\n Injector,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n Type,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ePropType } from '../../enums/props.enum';\r\nimport { EntityActionList } from '../../models/entity-actions';\r\nimport { EntityProp, EntityPropList } from '../../models/entity-props';\r\nimport { PropData } from '../../models/props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM } from '../../tokens/extensions.token';\r\n\r\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleTable',\r\n selector: 'abp-extensible-table',\r\n templateUrl: './extensible-table.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges {\r\n protected _actionsText: string;\r\n @Input()\r\n set actionsText(value: string) {\r\n this._actionsText = value;\r\n }\r\n get actionsText(): string {\r\n return this._actionsText ?? (this.actionList.length > 1 ? 'AbpUi::Actions' : '');\r\n }\r\n\r\n @Input() data: R[];\r\n @Input() list: ListService;\r\n @Input() recordsTotal: number;\r\n @Input() set actionsColumnWidth(width: number) {\r\n this.setColumnWidths(width ? Number(width) : undefined);\r\n }\r\n @Input() actionsTemplate: TemplateRef<any>;\r\n\r\n getInjected: <T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags) => T;\r\n\r\n hasAtLeastOnePermittedAction: boolean;\r\n\r\n readonly columnWidths: number[];\r\n\r\n readonly propList: EntityPropList<R>;\r\n\r\n readonly actionList: EntityActionList<R>;\r\n\r\n readonly trackByFn: TrackByFunction<EntityProp<R>> = (_, item) => item.name;\r\n\r\n constructor(\r\n @Inject(LOCALE_ID) private locale: string,\r\n private config: ConfigStateService,\r\n private injector: Injector,\r\n ) {\r\n this.getInjected = injector.get.bind(injector);\r\n const extensions = injector.get(ExtensionsService);\r\n const name = injector.get(EXTENSIONS_IDENTIFIER);\r\n this.propList = extensions.entityProps.get(name).props;\r\n this.actionList = extensions['entityActions'].get(name)\r\n .actions as unknown as EntityActionList<R>;\r\n\r\n const permissionService = injector.get(PermissionService);\r\n this.hasAtLeastOnePermittedAction =\r\n permissionService.filterItemsByPolicy(\r\n this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })),\r\n ).length > 0;\r\n this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n }\r\n\r\n private setColumnWidths(actionsColumn: number) {\r\n const widths = [actionsColumn];\r\n this.propList.forEach(({ value: prop }) => {\r\n widths.push(prop.columnWidth);\r\n });\r\n (this.columnWidths as any) = widths;\r\n }\r\n\r\n private getDate(value: Date, format: string) {\r\n return value ? formatDate(value, format, this.locale) : '';\r\n }\r\n\r\n private getIcon(value: boolean) {\r\n return value\r\n ? '<div class=\"text-center text-success\"><i class=\"fa fa-check\"></i></div>'\r\n : '<div class=\"text-center text-danger\"><i class=\"fa fa-times\"></i></div>';\r\n }\r\n\r\n private getEnum(rowValue: any, list: Array<ABP.Option<any>>) {\r\n if (!list) return rowValue;\r\n const { key } = list.find(({ value }) => value === rowValue);\r\n return key;\r\n }\r\n\r\n getContent(prop: EntityProp<R>, data: PropData): Observable<string> {\r\n return prop.valueResolver(data).pipe(\r\n map(value => {\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return this.getIcon(value);\r\n case ePropType.Date:\r\n return this.getDate(value, getShortDateFormat(this.config));\r\n case ePropType.Time:\r\n return this.getDate(value, getShortTimeFormat(this.config));\r\n case ePropType.DateTime:\r\n return this.getDate(value, getShortDateShortTimeFormat(this.config));\r\n case ePropType.Enum:\r\n return this.getEnum(value, prop.enumList);\r\n default:\r\n return value;\r\n // More types can be handled in the future\r\n }\r\n }),\r\n );\r\n }\r\n\r\n ngOnChanges({ data }: SimpleChanges) {\r\n if (!data?.currentValue) return;\r\n\r\n this.data = data.currentValue.map((record, index) => {\r\n this.propList.forEach(prop => {\r\n const propData = { getInjected: this.getInjected, record, index } as any;\r\n const value = this.getContent(prop.value, propData);\r\n\r\n const propKey = `_${prop.value.name}`;\r\n record[propKey] = {\r\n visible: prop.value.visible(propData),\r\n value,\r\n };\r\n if (prop.value.component) {\r\n const injector = Injector.create(\r\n [\r\n {\r\n provide: PROP_DATA_STREAM,\r\n useValue: value,\r\n },\r\n ],\r\n this.injector,\r\n );\r\n record[propKey].injector = injector;\r\n record[propKey].component = prop.value.component;\r\n }\r\n });\r\n\r\n return record;\r\n });\r\n }\r\n}\r\n","<ngx-datatable default [rows]=\"data\" [count]=\"recordsTotal\" [list]=\"list\">\r\n <ngx-datatable-column\r\n *ngIf=\"actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)\"\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"columnWidths[0]\"\r\n [width]=\"columnWidths[0]\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n <ng-container *ngFor=\"let prop of propList; let i = index; trackBy: trackByFn\">\r\n <ngx-datatable-column\r\n [width]=\"columnWidths[i + 1] || 200\"\r\n [name]=\"prop.displayName | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission\">\r\n <ng-container *ngIf=\"row['_' + prop.name]?.visible\">\r\n <div\r\n *ngIf=\"!row['_' + prop.name].component; else component\"\r\n [innerHTML]=\"row['_' + prop.name]?.value | async\"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n </ng-container>\r\n <ng-template #component>\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n </ng-container>\r\n</ngx-datatable>\r\n"]}
|
|
@@ -20,7 +20,7 @@ GridActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
20
20
|
provide: EXTENSIONS_ACTION_TYPE,
|
|
21
21
|
useValue: 'entityActions',
|
|
22
22
|
},
|
|
23
|
-
], exportAs: ["abpGridActions"], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"actionList.length > 1\" ngbDropdown container=\"body\" class=\"d-inline-block\">\n <button\n class=\"btn btn-primary btn-sm dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n ngbDropdownToggle\n >\n <i [ngClass]=\"icon\" [class.
|
|
23
|
+
], exportAs: ["abpGridActions"], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"actionList.length > 1\" ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"icon\" [class.me-1]=\"icon\"></i>{{ text | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <ng-container\r\n *ngFor=\"let action of actionList; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"btnItem\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-container\r\n *ngIf=\"actionList.length === 1\"\r\n [ngTemplateOutlet]=\"btnItem\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n></ng-container>\r\n\r\n<ng-template #btnItem let-action>\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n class=\"{{ actionList.length === 1 ? 'btn btn-primary' : '' }}\"\r\n [class.text-center]=\"actionList.length === 1\"\r\n >\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon\"></i>\r\n <span *ngIf=\"action.icon; else ellipsis\">{{ action.text | abpLocalization }}</span>\r\n <ng-template #ellipsis>\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i2.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i2.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i4.EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }], pipes: { "abpLocalization": i3.LocalizationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: GridActionsComponent, decorators: [{
|
|
25
25
|
type: Component,
|
|
26
26
|
args: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-actions.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,KAAK,GAEN,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;;;;;;AAc1F,MAAM,OAAO,oBAA8B,SAAQ,wBAA6C;IAS9F,YAAY,QAAkB;QAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC;QATT,SAAI,GAAG,WAAW,CAAC;QAInB,SAAI,GAAG,EAAE,CAAC;QAEV,cAAS,GAAqC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAI9E,CAAC;;iHAXU,oBAAoB;qGAApB,oBAAoB,mGARpB;QACT;YACE,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,eAAe;SAC1B;KACF,+ECpBH,
|
|
1
|
+
{"version":3,"file":"grid-actions.component.js","sourceRoot":"","sources":["../../../../../../../../packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.ts","../../../../../../../../packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,KAAK,GAEN,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;;;;;;AAc1F,MAAM,OAAO,oBAA8B,SAAQ,wBAA6C;IAS9F,YAAY,QAAkB;QAC5B,KAAK,CAAC,QAAQ,CAAC,CAAC;QATT,SAAI,GAAG,WAAW,CAAC;QAInB,SAAI,GAAG,EAAE,CAAC;QAEV,cAAS,GAAqC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAI9E,CAAC;;iHAXU,oBAAoB;qGAApB,oBAAoB,mGARpB;QACT;YACE,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,eAAe;SAC1B;KACF,+ECpBH,ihDA2CA;2FDpBa,oBAAoB;kBAZhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,kBAAkB;oBAC5B,WAAW,EAAE,+BAA+B;oBAC5C,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,sBAAsB;4BAC/B,QAAQ,EAAE,eAAe;yBAC1B;qBACF;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;+FAEU,IAAI;sBAAZ,KAAK;gBAEY,KAAK;sBAAtB,KAAK;gBAEG,IAAI;sBAAZ,KAAK","sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Injector,\r\n Input,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { EntityAction, EntityActionList } from '../../models/entity-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\n\r\n@Component({\r\n exportAs: 'abpGridActions',\r\n selector: 'abp-grid-actions',\r\n templateUrl: './grid-actions.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'entityActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class GridActionsComponent<R = any> extends AbstractActionsComponent<EntityActionList<R>> {\r\n @Input() icon = 'fa fa-cog';\r\n\r\n @Input() readonly index: number;\r\n\r\n @Input() text = '';\r\n\r\n readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n }\r\n}\r\n","<div *ngIf=\"actionList.length > 1\" ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"icon\" [class.me-1]=\"icon\"></i>{{ text | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <ng-container\r\n *ngFor=\"let action of actionList; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"btnItem\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-container\r\n *ngIf=\"actionList.length === 1\"\r\n [ngTemplateOutlet]=\"btnItem\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n></ng-container>\r\n\r\n<ng-template #btnItem let-action>\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n class=\"{{ actionList.length === 1 ? 'btn btn-primary' : '' }}\"\r\n [class.text-center]=\"actionList.length === 1\"\r\n >\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon\"></i>\r\n <span *ngIf=\"action.icon; else ellipsis\">{{ action.text | abpLocalization }}</span>\r\n <ng-template #ellipsis>\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n"]}
|
|
@@ -27,7 +27,7 @@ PageToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
27
27
|
provide: EXTENSIONS_ACTION_TYPE,
|
|
28
28
|
useValue: 'toolbarActions',
|
|
29
29
|
},
|
|
30
|
-
], exportAs: ["abpPageToolbar"], usesInheritance: true, ngImport: i0, template: "<div class=\"row justify-content-end mx-
|
|
30
|
+
], exportAs: ["abpPageToolbar"], usesInheritance: true, ngImport: i0, template: "<div class=\"row justify-content-end mx-0\" id=\"AbpContentToolbar\">\r\n <div\r\n class=\"col-auto px-1 pt-0 pt-md-2\"\r\n [class.pe-0]=\"last\"\r\n *ngFor=\"let action of actionList; trackBy: trackByFn; let last = last\"\r\n >\r\n <ng-container *ngIf=\"action.visible(data)\">\r\n <ng-container *abpPermission=\"action.permission\">\r\n <ng-container *ngIf=\"action.component as component; else button\">\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: createInjector(action)\"\r\n ></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #button>\r\n <button (click)=\"action.action(data)\" type=\"button\" class=\"btn btn-primary btn-sm\">\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon\"></i>\r\n {{ action.text | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "abpLocalization": i2.LocalizationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
31
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PageToolbarComponent, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
33
|
args: [{
|