dinocollab-core 2.1.19 → 2.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/Reflect.js +2 -0
- package/dist/_virtual/Reflect.js.map +1 -0
- package/dist/_virtual/Reflect2.js +2 -0
- package/dist/_virtual/Reflect2.js.map +1 -0
- package/dist/_virtual/_commonjsHelpers.js +2 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/api-context/index.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/data-view/index.js +1 -1
- package/dist/form/index.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/http-service/index.js +1 -1
- package/dist/lab/index.js +1 -1
- package/dist/mfe-shared/index.js +1 -1
- package/dist/node_modules/reflect-metadata/Reflect.js +16 -0
- package/dist/node_modules/reflect-metadata/Reflect.js.map +1 -0
- package/dist/redux/index.js +1 -1
- package/dist/src/api-context/alert-global.js +2 -0
- package/dist/src/api-context/alert-global.js.map +1 -0
- package/dist/src/api-context/drawer-global.js +2 -0
- package/dist/src/api-context/drawer-global.js.map +1 -0
- package/dist/src/api-context/global-modal.js +2 -0
- package/dist/src/api-context/global-modal.js.map +1 -0
- package/dist/src/api-context/popover-global.js +2 -0
- package/dist/src/api-context/popover-global.js.map +1 -0
- package/dist/src/api-context/popover.js +2 -0
- package/dist/src/api-context/popover.js.map +1 -0
- package/dist/src/api-context/ui.units.js.map +1 -0
- package/dist/src/components/breadcrumbs.js +2 -0
- package/dist/src/components/breadcrumbs.js.map +1 -0
- package/dist/src/components/buttons.js +2 -0
- package/dist/src/components/buttons.js.map +1 -0
- package/dist/src/components/copy-to-clipboard.js +2 -0
- package/dist/src/components/copy-to-clipboard.js.map +1 -0
- package/dist/src/components/create.multi-select-dropdown.js +2 -0
- package/dist/src/components/create.multi-select-dropdown.js.map +1 -0
- package/dist/src/components/help-tooltip.js +2 -0
- package/dist/src/components/help-tooltip.js.map +1 -0
- package/dist/src/components/image-with-fallback.js +2 -0
- package/dist/src/components/image-with-fallback.js.map +1 -0
- package/dist/src/components/rich-tooltip.js +2 -0
- package/dist/src/components/rich-tooltip.js.map +1 -0
- package/dist/src/components/text-editor.js +2 -0
- package/dist/src/components/text-editor.js.map +1 -0
- package/dist/src/components/text-editor.preview.js.map +1 -0
- package/dist/src/data-view/context.js +2 -0
- package/dist/src/data-view/context.js.map +1 -0
- package/dist/src/data-view/convert-filter-to-graphql.js +2 -0
- package/dist/src/data-view/convert-filter-to-graphql.js.map +1 -0
- package/dist/src/data-view/create.active-filters-panel.js +2 -0
- package/dist/src/data-view/create.active-filters-panel.js.map +1 -0
- package/dist/src/data-view/create.data-view.js +2 -0
- package/dist/src/data-view/create.data-view.js.map +1 -0
- package/dist/src/data-view/create.filter-bar.js +2 -0
- package/dist/src/data-view/create.filter-bar.js.map +1 -0
- package/dist/src/data-view/create.filter-menu.js +2 -0
- package/dist/src/data-view/create.filter-menu.js.map +1 -0
- package/dist/src/data-view/create.pagination-bar.js +2 -0
- package/dist/src/data-view/create.pagination-bar.js.map +1 -0
- package/dist/src/data-view/create.popper-panel.js +2 -0
- package/dist/src/data-view/create.popper-panel.js.map +1 -0
- package/dist/src/data-view/create.search-match.js +2 -0
- package/dist/src/data-view/create.search-match.js.map +1 -0
- package/dist/src/data-view/create.sort-menu.js +2 -0
- package/dist/src/data-view/create.sort-menu.js.map +1 -0
- package/dist/src/data-view/create.view-mode.js +2 -0
- package/dist/src/data-view/create.view-mode.js.map +1 -0
- package/dist/src/data-view/dino.js +2 -0
- package/dist/src/data-view/dino.js.map +1 -0
- package/dist/src/data-view/filter-store.js +2 -0
- package/dist/src/data-view/filter-store.js.map +1 -0
- package/dist/src/data-view/helpers.js +2 -0
- package/dist/src/data-view/helpers.js.map +1 -0
- package/dist/src/data-view/query-param-url.js +2 -0
- package/dist/src/data-view/query-param-url.js.map +1 -0
- package/dist/src/data-view/scroll-tracking.js +2 -0
- package/dist/src/data-view/scroll-tracking.js.map +1 -0
- package/dist/src/data-view/types.js.map +1 -0
- package/dist/src/data-view/ui.units.js +2 -0
- package/dist/src/data-view/ui.units.js.map +1 -0
- package/dist/src/data-view/view-mode.content.js +2 -0
- package/dist/src/data-view/view-mode.content.js.map +1 -0
- package/dist/src/data-view/view-mode.types.js.map +1 -0
- package/dist/src/data-view/view-mode.units.js +2 -0
- package/dist/src/data-view/view-mode.units.js.map +1 -0
- package/dist/src/form/create.autocomplete.chips.js +2 -0
- package/dist/src/form/create.autocomplete.chips.js.map +1 -0
- package/dist/src/form/create.color-picker.js +2 -0
- package/dist/src/form/create.color-picker.js.map +1 -0
- package/dist/src/form/create.date-expired.js +2 -0
- package/dist/src/form/create.date-expired.js.map +1 -0
- package/dist/src/form/create.date-picker.js +2 -0
- package/dist/src/form/create.date-picker.js.map +1 -0
- package/dist/src/form/create.form-base.js +2 -0
- package/dist/src/form/create.form-base.js.map +1 -0
- package/dist/src/form/create.form-comfirm.js +2 -0
- package/dist/src/form/create.form-comfirm.js.map +1 -0
- package/dist/src/form/create.form-grid-layout.js +2 -0
- package/dist/src/form/create.form-grid-layout.js.map +1 -0
- package/dist/src/form/create.form-grid-layout.units.js.map +1 -0
- package/dist/src/form/create.input-file.csv-local-parser.js +2 -0
- package/dist/src/form/create.input-file.csv-local-parser.js.map +1 -0
- package/dist/src/form/create.input.file.js +2 -0
- package/dist/src/form/create.input.file.js.map +1 -0
- package/dist/src/form/create.input.image-file.js +2 -0
- package/dist/src/form/create.input.image-file.js.map +1 -0
- package/dist/src/form/create.input.js +2 -0
- package/dist/src/form/create.input.js.map +1 -0
- package/dist/src/form/create.select-simple.js +2 -0
- package/dist/src/form/create.select-simple.js.map +1 -0
- package/dist/src/form/create.select-with-api.js +2 -0
- package/dist/src/form/create.select-with-api.js.map +1 -0
- package/dist/src/form/create.text-editor.js +2 -0
- package/dist/src/form/create.text-editor.js.map +1 -0
- package/dist/src/form/decorator.form.js +2 -0
- package/dist/src/form/decorator.form.js.map +1 -0
- package/dist/src/form/decorator.js +2 -0
- package/dist/src/form/decorator.js.map +1 -0
- package/dist/src/form/dino-form.js +2 -0
- package/dist/src/form/dino-form.js.map +1 -0
- package/dist/src/form/helpers.js +2 -0
- package/dist/src/form/helpers.js.map +1 -0
- package/dist/src/form/modal-wrapper.js +2 -0
- package/dist/src/form/modal-wrapper.js.map +1 -0
- package/dist/src/form/validator.js +2 -0
- package/dist/src/form/validator.js.map +1 -0
- package/dist/src/hooks/check-scrolled.js +2 -0
- package/dist/src/hooks/check-scrolled.js.map +1 -0
- package/dist/src/hooks/debounce.js +2 -0
- package/dist/src/hooks/debounce.js.map +1 -0
- package/dist/src/hooks/use-fetch-data.js +2 -0
- package/dist/src/hooks/use-fetch-data.js.map +1 -0
- package/dist/src/http-service/base/crud-service-base.js +2 -0
- package/dist/src/http-service/base/crud-service-base.js.map +1 -0
- package/dist/src/http-service/base/gateway.js.map +1 -0
- package/dist/src/http-service/base/helpers.js +2 -0
- package/dist/src/http-service/base/helpers.js.map +1 -0
- package/dist/src/http-service/base/service-base.js +2 -0
- package/dist/src/http-service/base/service-base.js.map +1 -0
- package/dist/src/http-service/graphql/app-profile.js +2 -0
- package/dist/src/http-service/graphql/app-profile.js.map +1 -0
- package/dist/src/http-service/graphql/graphql-request.js +2 -0
- package/dist/src/http-service/graphql/graphql-request.js.map +1 -0
- package/dist/src/http-service/graphql/key-converter.js.map +1 -0
- package/dist/src/http-service/graphql/request-param.js +2 -0
- package/dist/src/http-service/graphql/request-param.js.map +1 -0
- package/dist/src/http-service/graphql/types.js.map +1 -0
- package/dist/src/lab/attach-widget/helpers.js +2 -0
- package/dist/src/lab/attach-widget/helpers.js.map +1 -0
- package/dist/src/lab/attach-widget/modal.js +2 -0
- package/dist/src/lab/attach-widget/modal.js.map +1 -0
- package/dist/src/lab/attach-widget/styled.js +2 -0
- package/dist/src/lab/attach-widget/styled.js.map +1 -0
- package/dist/src/lab/attach-widget/widget.js +2 -0
- package/dist/src/lab/attach-widget/widget.js.map +1 -0
- package/dist/src/lab/input.social-links/configs.js.map +1 -0
- package/dist/src/lab/input.social-links/create.js +2 -0
- package/dist/src/lab/input.social-links/create.js.map +1 -0
- package/dist/src/lab/input.social-links/types.js.map +1 -0
- package/dist/src/lab/input.social-links/unit.icons.js +2 -0
- package/dist/src/lab/input.social-links/unit.icons.js.map +1 -0
- package/dist/src/lab/input.social-links/units.js +2 -0
- package/dist/src/lab/input.social-links/units.js.map +1 -0
- package/dist/src/mfe-shared/navigation.js +2 -0
- package/dist/src/mfe-shared/navigation.js.map +1 -0
- package/dist/src/redux/create.hoc-lazy.js +2 -0
- package/dist/src/redux/create.hoc-lazy.js.map +1 -0
- package/dist/src/redux/dino.js +2 -0
- package/dist/src/redux/dino.js.map +1 -0
- package/dist/src/redux/types.js.map +1 -0
- package/dist/src/redux/ui.error-page.js +2 -0
- package/dist/src/redux/ui.error-page.js.map +1 -0
- package/dist/src/table/context.js.map +1 -0
- package/dist/src/table/create.action-row.js +2 -0
- package/dist/src/table/create.action-row.js.map +1 -0
- package/dist/src/table/create.table.js +2 -0
- package/dist/src/table/create.table.js.map +1 -0
- package/dist/src/table/custom.filter-operators.js.map +1 -0
- package/dist/src/table/dino.js +2 -0
- package/dist/src/table/dino.js.map +1 -0
- package/dist/src/table/helpers.js +2 -0
- package/dist/src/table/helpers.js.map +1 -0
- package/dist/src/table/model-filter.js.map +1 -0
- package/dist/src/table/toolbar-pannel.js +2 -0
- package/dist/src/table/toolbar-pannel.js.map +1 -0
- package/dist/src/table/ui.buttons.js.map +1 -0
- package/dist/src/table/ui.units.js +2 -0
- package/dist/src/table/ui.units.js.map +1 -0
- package/dist/src/table-grid/create.table-grid.js +2 -0
- package/dist/src/table-grid/create.table-grid.js.map +1 -0
- package/dist/src/table-grid/dino.js +2 -0
- package/dist/src/table-grid/dino.js.map +1 -0
- package/dist/src/table-grid/filter-bar/base.js +2 -0
- package/dist/src/table-grid/filter-bar/base.js.map +1 -0
- package/dist/src/table-grid/filter-bar/create.filter-bar.js +2 -0
- package/dist/src/table-grid/filter-bar/create.filter-bar.js.map +1 -0
- package/dist/src/table-grid/filter-bar/create.filter-menu.js +2 -0
- package/dist/src/table-grid/filter-bar/create.filter-menu.js.map +1 -0
- package/dist/src/table-grid/filter-bar/create.filter-panel.js +2 -0
- package/dist/src/table-grid/filter-bar/create.filter-panel.js.map +1 -0
- package/dist/src/table-grid/filter-bar/create.filtered.js +2 -0
- package/dist/src/table-grid/filter-bar/create.filtered.js.map +1 -0
- package/dist/src/table-grid/filter-bar/types.js.map +1 -0
- package/dist/src/table-grid/filter-bar/ui.units.js.map +1 -0
- package/dist/src/table-grid/helpers.js.map +1 -0
- package/dist/src/table-grid/item-actions.js +2 -0
- package/dist/src/table-grid/item-actions.js.map +1 -0
- package/dist/src/table-grid/toolbar-pannel.js +2 -0
- package/dist/src/table-grid/toolbar-pannel.js.map +1 -0
- package/dist/src/table-grid/url-query-param.js +2 -0
- package/dist/src/table-grid/url-query-param.js.map +1 -0
- package/dist/src/utils/dayjs-config.js.map +1 -0
- package/dist/src/utils/helpers.js +2 -0
- package/dist/src/utils/helpers.js.map +1 -0
- package/dist/src/utils/json-object.js +2 -0
- package/dist/src/utils/json-object.js.map +1 -0
- package/dist/src/utils/query-param.js +2 -0
- package/dist/src/utils/query-param.js.map +1 -0
- package/dist/table/index.js +1 -1
- package/dist/table-grid/index.js +1 -1
- package/dist/types/form/create.form-base.d.ts +3 -2
- package/dist/types/form/create.form-grid-layout.d.ts +2 -1
- package/dist/types/form/create.input.d.ts +2 -2
- package/dist/types/form/decorator.d.ts +30 -0
- package/dist/types/form/decorator.form.d.ts +20 -0
- package/dist/types/form/dino-form.d.ts +3 -1
- package/dist/types/form/index.d.ts +2 -0
- package/dist/utils/index.js +1 -1
- package/package.json +5 -1
- package/dist/api-context/alert-global.js +0 -2
- package/dist/api-context/alert-global.js.map +0 -1
- package/dist/api-context/drawer-global.js +0 -2
- package/dist/api-context/drawer-global.js.map +0 -1
- package/dist/api-context/global-modal.js +0 -2
- package/dist/api-context/global-modal.js.map +0 -1
- package/dist/api-context/popover-global.js +0 -2
- package/dist/api-context/popover-global.js.map +0 -1
- package/dist/api-context/popover.js +0 -2
- package/dist/api-context/popover.js.map +0 -1
- package/dist/api-context/ui.units.js.map +0 -1
- package/dist/components/breadcrumbs.js +0 -2
- package/dist/components/breadcrumbs.js.map +0 -1
- package/dist/components/buttons.js +0 -2
- package/dist/components/buttons.js.map +0 -1
- package/dist/components/copy-to-clipboard.js +0 -2
- package/dist/components/copy-to-clipboard.js.map +0 -1
- package/dist/components/create.multi-select-dropdown.js +0 -2
- package/dist/components/create.multi-select-dropdown.js.map +0 -1
- package/dist/components/help-tooltip.js +0 -2
- package/dist/components/help-tooltip.js.map +0 -1
- package/dist/components/image-with-fallback.js +0 -2
- package/dist/components/image-with-fallback.js.map +0 -1
- package/dist/components/rich-tooltip.js +0 -2
- package/dist/components/rich-tooltip.js.map +0 -1
- package/dist/components/text-editor.js +0 -2
- package/dist/components/text-editor.js.map +0 -1
- package/dist/components/text-editor.preview.js.map +0 -1
- package/dist/data-view/context.js +0 -2
- package/dist/data-view/context.js.map +0 -1
- package/dist/data-view/convert-filter-to-graphql.js +0 -2
- package/dist/data-view/convert-filter-to-graphql.js.map +0 -1
- package/dist/data-view/create.active-filters-panel.js +0 -2
- package/dist/data-view/create.active-filters-panel.js.map +0 -1
- package/dist/data-view/create.data-view.js +0 -2
- package/dist/data-view/create.data-view.js.map +0 -1
- package/dist/data-view/create.filter-bar.js +0 -2
- package/dist/data-view/create.filter-bar.js.map +0 -1
- package/dist/data-view/create.filter-menu.js +0 -2
- package/dist/data-view/create.filter-menu.js.map +0 -1
- package/dist/data-view/create.pagination-bar.js +0 -2
- package/dist/data-view/create.pagination-bar.js.map +0 -1
- package/dist/data-view/create.popper-panel.js +0 -2
- package/dist/data-view/create.popper-panel.js.map +0 -1
- package/dist/data-view/create.search-match.js +0 -2
- package/dist/data-view/create.search-match.js.map +0 -1
- package/dist/data-view/create.sort-menu.js +0 -2
- package/dist/data-view/create.sort-menu.js.map +0 -1
- package/dist/data-view/create.view-mode.js +0 -2
- package/dist/data-view/create.view-mode.js.map +0 -1
- package/dist/data-view/dino.js +0 -2
- package/dist/data-view/dino.js.map +0 -1
- package/dist/data-view/filter-store.js +0 -2
- package/dist/data-view/filter-store.js.map +0 -1
- package/dist/data-view/helpers.js +0 -2
- package/dist/data-view/helpers.js.map +0 -1
- package/dist/data-view/query-param-url.js +0 -2
- package/dist/data-view/query-param-url.js.map +0 -1
- package/dist/data-view/scroll-tracking.js +0 -2
- package/dist/data-view/scroll-tracking.js.map +0 -1
- package/dist/data-view/types.js.map +0 -1
- package/dist/data-view/ui.units.js +0 -2
- package/dist/data-view/ui.units.js.map +0 -1
- package/dist/data-view/view-mode.content.js +0 -2
- package/dist/data-view/view-mode.content.js.map +0 -1
- package/dist/data-view/view-mode.types.js.map +0 -1
- package/dist/data-view/view-mode.units.js +0 -2
- package/dist/data-view/view-mode.units.js.map +0 -1
- package/dist/form/create.autocomplete.chips.js +0 -2
- package/dist/form/create.autocomplete.chips.js.map +0 -1
- package/dist/form/create.color-picker.js +0 -2
- package/dist/form/create.color-picker.js.map +0 -1
- package/dist/form/create.date-expired.js +0 -2
- package/dist/form/create.date-expired.js.map +0 -1
- package/dist/form/create.date-picker.js +0 -2
- package/dist/form/create.date-picker.js.map +0 -1
- package/dist/form/create.form-base.js +0 -2
- package/dist/form/create.form-base.js.map +0 -1
- package/dist/form/create.form-comfirm.js +0 -2
- package/dist/form/create.form-comfirm.js.map +0 -1
- package/dist/form/create.form-grid-layout.js +0 -2
- package/dist/form/create.form-grid-layout.js.map +0 -1
- package/dist/form/create.form-grid-layout.units.js.map +0 -1
- package/dist/form/create.input-file.csv-local-parser.js +0 -2
- package/dist/form/create.input-file.csv-local-parser.js.map +0 -1
- package/dist/form/create.input.file.js +0 -2
- package/dist/form/create.input.file.js.map +0 -1
- package/dist/form/create.input.image-file.js +0 -2
- package/dist/form/create.input.image-file.js.map +0 -1
- package/dist/form/create.input.js +0 -2
- package/dist/form/create.input.js.map +0 -1
- package/dist/form/create.select-simple.js +0 -2
- package/dist/form/create.select-simple.js.map +0 -1
- package/dist/form/create.select-with-api.js +0 -2
- package/dist/form/create.select-with-api.js.map +0 -1
- package/dist/form/create.text-editor.js +0 -2
- package/dist/form/create.text-editor.js.map +0 -1
- package/dist/form/dino-form.js +0 -2
- package/dist/form/dino-form.js.map +0 -1
- package/dist/form/helpers.js +0 -2
- package/dist/form/helpers.js.map +0 -1
- package/dist/form/modal-wrapper.js +0 -2
- package/dist/form/modal-wrapper.js.map +0 -1
- package/dist/form/validator.js +0 -2
- package/dist/form/validator.js.map +0 -1
- package/dist/hooks/check-scrolled.js +0 -2
- package/dist/hooks/check-scrolled.js.map +0 -1
- package/dist/hooks/debounce.js +0 -2
- package/dist/hooks/debounce.js.map +0 -1
- package/dist/hooks/use-fetch-data.js +0 -2
- package/dist/hooks/use-fetch-data.js.map +0 -1
- package/dist/http-service/base/crud-service-base.js +0 -2
- package/dist/http-service/base/crud-service-base.js.map +0 -1
- package/dist/http-service/base/gateway.js.map +0 -1
- package/dist/http-service/base/helpers.js +0 -2
- package/dist/http-service/base/helpers.js.map +0 -1
- package/dist/http-service/base/service-base.js +0 -2
- package/dist/http-service/base/service-base.js.map +0 -1
- package/dist/http-service/graphql/app-profile.js +0 -2
- package/dist/http-service/graphql/app-profile.js.map +0 -1
- package/dist/http-service/graphql/graphql-request.js +0 -2
- package/dist/http-service/graphql/graphql-request.js.map +0 -1
- package/dist/http-service/graphql/key-converter.js.map +0 -1
- package/dist/http-service/graphql/request-param.js +0 -2
- package/dist/http-service/graphql/request-param.js.map +0 -1
- package/dist/http-service/graphql/types.js.map +0 -1
- package/dist/lab/attach-widget/helpers.js +0 -2
- package/dist/lab/attach-widget/helpers.js.map +0 -1
- package/dist/lab/attach-widget/modal.js +0 -2
- package/dist/lab/attach-widget/modal.js.map +0 -1
- package/dist/lab/attach-widget/styled.js +0 -2
- package/dist/lab/attach-widget/styled.js.map +0 -1
- package/dist/lab/attach-widget/widget.js +0 -2
- package/dist/lab/attach-widget/widget.js.map +0 -1
- package/dist/lab/input.social-links/configs.js.map +0 -1
- package/dist/lab/input.social-links/create.js +0 -2
- package/dist/lab/input.social-links/create.js.map +0 -1
- package/dist/lab/input.social-links/types.js.map +0 -1
- package/dist/lab/input.social-links/unit.icons.js +0 -2
- package/dist/lab/input.social-links/unit.icons.js.map +0 -1
- package/dist/lab/input.social-links/units.js +0 -2
- package/dist/lab/input.social-links/units.js.map +0 -1
- package/dist/mfe-shared/navigation.js +0 -2
- package/dist/mfe-shared/navigation.js.map +0 -1
- package/dist/redux/create.hoc-lazy.js +0 -2
- package/dist/redux/create.hoc-lazy.js.map +0 -1
- package/dist/redux/dino.js +0 -2
- package/dist/redux/dino.js.map +0 -1
- package/dist/redux/types.js.map +0 -1
- package/dist/redux/ui.error-page.js +0 -2
- package/dist/redux/ui.error-page.js.map +0 -1
- package/dist/table/context.js.map +0 -1
- package/dist/table/create.action-row.js +0 -2
- package/dist/table/create.action-row.js.map +0 -1
- package/dist/table/create.table.js +0 -2
- package/dist/table/create.table.js.map +0 -1
- package/dist/table/custom.filter-operators.js.map +0 -1
- package/dist/table/dino.js +0 -2
- package/dist/table/dino.js.map +0 -1
- package/dist/table/helpers.js +0 -2
- package/dist/table/helpers.js.map +0 -1
- package/dist/table/model-filter.js.map +0 -1
- package/dist/table/toolbar-pannel.js +0 -2
- package/dist/table/toolbar-pannel.js.map +0 -1
- package/dist/table/ui.buttons.js.map +0 -1
- package/dist/table/ui.units.js +0 -2
- package/dist/table/ui.units.js.map +0 -1
- package/dist/table-grid/create.table-grid.js +0 -2
- package/dist/table-grid/create.table-grid.js.map +0 -1
- package/dist/table-grid/dino.js +0 -2
- package/dist/table-grid/dino.js.map +0 -1
- package/dist/table-grid/filter-bar/base.js +0 -2
- package/dist/table-grid/filter-bar/base.js.map +0 -1
- package/dist/table-grid/filter-bar/create.filter-bar.js +0 -2
- package/dist/table-grid/filter-bar/create.filter-bar.js.map +0 -1
- package/dist/table-grid/filter-bar/create.filter-menu.js +0 -2
- package/dist/table-grid/filter-bar/create.filter-menu.js.map +0 -1
- package/dist/table-grid/filter-bar/create.filter-panel.js +0 -2
- package/dist/table-grid/filter-bar/create.filter-panel.js.map +0 -1
- package/dist/table-grid/filter-bar/create.filtered.js +0 -2
- package/dist/table-grid/filter-bar/create.filtered.js.map +0 -1
- package/dist/table-grid/filter-bar/types.js.map +0 -1
- package/dist/table-grid/filter-bar/ui.units.js.map +0 -1
- package/dist/table-grid/helpers.js.map +0 -1
- package/dist/table-grid/item-actions.js +0 -2
- package/dist/table-grid/item-actions.js.map +0 -1
- package/dist/table-grid/toolbar-pannel.js +0 -2
- package/dist/table-grid/toolbar-pannel.js.map +0 -1
- package/dist/table-grid/url-query-param.js +0 -2
- package/dist/table-grid/url-query-param.js.map +0 -1
- package/dist/utils/dayjs-config.js.map +0 -1
- package/dist/utils/helpers.js +0 -2
- package/dist/utils/helpers.js.map +0 -1
- package/dist/utils/json-object.js +0 -2
- package/dist/utils/json-object.js.map +0 -1
- package/dist/utils/query-param.js +0 -2
- package/dist/utils/query-param.js.map +0 -1
- /package/dist/{api-context → src/api-context}/ui.units.js +0 -0
- /package/dist/{components → src/components}/text-editor.preview.js +0 -0
- /package/dist/{data-view → src/data-view}/types.js +0 -0
- /package/dist/{data-view → src/data-view}/view-mode.types.js +0 -0
- /package/dist/{form → src/form}/create.form-grid-layout.units.js +0 -0
- /package/dist/{http-service → src/http-service}/base/gateway.js +0 -0
- /package/dist/{http-service → src/http-service}/graphql/key-converter.js +0 -0
- /package/dist/{http-service → src/http-service}/graphql/types.js +0 -0
- /package/dist/{lab → src/lab}/input.social-links/configs.js +0 -0
- /package/dist/{lab → src/lab}/input.social-links/types.js +0 -0
- /package/dist/{redux → src/redux}/types.js +0 -0
- /package/dist/{table → src/table}/context.js +0 -0
- /package/dist/{table → src/table}/custom.filter-operators.js +0 -0
- /package/dist/{table → src/table}/model-filter.js +0 -0
- /package/dist/{table → src/table}/ui.buttons.js +0 -0
- /package/dist/{table-grid → src/table-grid}/filter-bar/types.js +0 -0
- /package/dist/{table-grid → src/table-grid}/filter-bar/ui.units.js +0 -0
- /package/dist/{table-grid → src/table-grid}/helpers.js +0 -0
- /package/dist/{utils → src/utils}/dayjs-config.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-mode.units.js","sources":["../../../src/data-view/view-mode.units.tsx"],"sourcesContent":["import { FC, useCallback } from 'react'\r\nimport { Box, BoxProps, colors, styled, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@mui/material'\r\nimport ViewListIcon from '@mui/icons-material/ViewList'\r\nimport ViewModuleIcon from '@mui/icons-material/ViewModule'\r\nimport { EViewMode, IResponsiveSize, IViewModeElementProps } from './view-mode.types'\r\n\r\nexport const defaultSize: IResponsiveSize = { xs: 12, sm: 6, md: 4, lg: 3 }\r\n\r\nexport const defaultViewMode = EViewMode.List\r\n\r\nconst viewModes = [\r\n { value: EViewMode.Module, icon: <ViewModuleIcon />, label: 'Card Grid' },\r\n { value: EViewMode.List, icon: <ViewListIcon />, label: 'Detailed List' }\r\n]\r\n\r\nexport interface IViewModeProps {\r\n value?: EViewMode\r\n onChange?: (value: EViewMode) => void\r\n}\r\n\r\nexport const ViewModeButtons: FC<IViewModeProps> = (props) => {\r\n const { value, onChange = () => {} } = props\r\n const normalizedValue = value && Object.values(EViewMode).includes(value as EViewMode) ? value : defaultViewMode\r\n\r\n const handleChange = useCallback(\r\n (newValue: EViewMode | null) => {\r\n if (newValue !== null && newValue !== normalizedValue) {\r\n onChange(newValue)\r\n }\r\n },\r\n [normalizedValue, onChange]\r\n )\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={normalizedValue} exclusive onChange={(_, v) => handleChange(v)}>\r\n {viewModes.map((mode) => (\r\n <Tooltip key={mode.value} title={mode.label} arrow>\r\n <ToggleButton size='small' value={mode.value} aria-label={mode.label} sx={{ p: '5px' }}>\r\n {mode.icon}\r\n </ToggleButton>\r\n </Tooltip>\r\n ))}\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport const createViewModeButtons = () => ViewModeButtons\r\n\r\nconst ToggleButtonGroupCustom = styled(ToggleButtonGroup)(({ theme }) => ({\r\n flex: '0 0 auto',\r\n '.MuiToggleButtonGroup-grouped': {\r\n '&.Mui-selected': {\r\n color: colors.common.white,\r\n backgroundColor: `var(--color-orange, ${colors.blue[600]})`,\r\n borderColor: `var(--color-orange, ${colors.blue[600]})`,\r\n '&.MuiToggleButtonGroup-lastButton': {\r\n borderColor: `var(--color-orange, ${colors.blue[600]})`\r\n },\r\n '&:hover': {\r\n backgroundColor: `var(--color-orange, ${colors.blue[600]})`\r\n }\r\n }\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n display: 'none'\r\n }\r\n}))\r\n\r\nexport const LoadingOverlay: FC<BoxProps> = (props) => (\r\n <LoadingOverlayWrap {...props}>\r\n <Box className='loading-overlay__content'>\r\n <Box className='loading-overlay__spinner' />\r\n <Typography variant='body2' color='primary'>\r\n Loading...\r\n </Typography>\r\n </Box>\r\n </LoadingOverlayWrap>\r\n)\r\n\r\nconst LoadingOverlayWrap = styled(Box)({\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n bgcolor: 'rgba(255, 255, 255, 0.7)',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n zIndex: 1000,\r\n paddingTop: '20vh',\r\n backdropFilter: 'blur(2px)',\r\n '.loading-overlay__content': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px'\r\n },\r\n '.loading-overlay__spinner': {\r\n width: 24,\r\n height: 24,\r\n border: '3px solid',\r\n borderColor: colors.grey[300],\r\n borderTopColor: `var(--color-orange, ${colors.blue[600]})`,\r\n borderRadius: '50%',\r\n '@keyframes spin': {\r\n '0%': { transform: 'rotate(0deg)' },\r\n '100%': { transform: 'rotate(360deg)' }\r\n },\r\n animation: 'spin 1s linear infinite'\r\n },\r\n '.MuiTypography-root': {\r\n color: `var(--color-orange, ${colors.blue[600]})`\r\n }\r\n})\r\n\r\nexport const LoadingError: FC<{ error: string }> = ({ error }) => (\r\n <LoadingErrorWrap>\r\n <Typography variant='h6' gutterBottom>\r\n An error occurred\r\n </Typography>\r\n <Typography variant='body2'>{error}</Typography>\r\n </LoadingErrorWrap>\r\n)\r\n\r\nconst LoadingErrorWrap = styled(Box)({\r\n marginTop: 3,\r\n padding: 3,\r\n border: '1px solid',\r\n borderColor: 'error.main',\r\n borderRadius: 1,\r\n bgcolor: 'error.light',\r\n color: 'error.contrastText'\r\n})\r\n\r\nconst StyledGridOverlay = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n '& .no-rows-primary': {\r\n fill: '#3D4751',\r\n ...theme.applyStyles('light', {\r\n fill: '#AEB8C2'\r\n })\r\n },\r\n '& .no-rows-secondary': {\r\n fill: '#1D2126',\r\n ...theme.applyStyles('light', {\r\n fill: '#E8EAED'\r\n })\r\n }\r\n}))\r\n\r\nexport const LoadingNoData: FC<IViewModeElementProps> = () => (\r\n <LoadingNoDataWrap>\r\n <StyledGridOverlay>\r\n <svg xmlns='http://www.w3.org/2000/svg' fill='none' width={96} viewBox='0 0 452 257' aria-hidden focusable='false'>\r\n <path\r\n className='no-rows-primary'\r\n d='M348 69c-46.392 0-84 37.608-84 84s37.608 84 84 84 84-37.608 84-84-37.608-84-84-84Zm-104 84c0-57.438 46.562-104 104-104s104 46.562 104 104-46.562 104-104 104-104-46.562-104-104Z'\r\n />\r\n <path\r\n className='no-rows-primary'\r\n d='M308.929 113.929c3.905-3.905 10.237-3.905 14.142 0l63.64 63.64c3.905 3.905 3.905 10.236 0 14.142-3.906 3.905-10.237 3.905-14.142 0l-63.64-63.64c-3.905-3.905-3.905-10.237 0-14.142Z'\r\n />\r\n <path\r\n className='no-rows-primary'\r\n d='M308.929 191.711c-3.905-3.906-3.905-10.237 0-14.142l63.64-63.64c3.905-3.905 10.236-3.905 14.142 0 3.905 3.905 3.905 10.237 0 14.142l-63.64 63.64c-3.905 3.905-10.237 3.905-14.142 0Z'\r\n />\r\n <path\r\n className='no-rows-secondary'\r\n d='M0 10C0 4.477 4.477 0 10 0h380c5.523 0 10 4.477 10 10s-4.477 10-10 10H10C4.477 20 0 15.523 0 10ZM0 59c0-5.523 4.477-10 10-10h231c5.523 0 10 4.477 10 10s-4.477 10-10 10H10C4.477 69 0 64.523 0 59ZM0 106c0-5.523 4.477-10 10-10h203c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10ZM0 153c0-5.523 4.477-10 10-10h195.5c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10ZM0 200c0-5.523 4.477-10 10-10h203c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10ZM0 247c0-5.523 4.477-10 10-10h231c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10Z'\r\n />\r\n </svg>\r\n <Typography variant='h6' color='text.secondary' gutterBottom>\r\n No data available\r\n </Typography>\r\n </StyledGridOverlay>\r\n <Typography variant='body2' color='text.secondary'>\r\n Try changing the filter or search keyword\r\n </Typography>\r\n </LoadingNoDataWrap>\r\n)\r\n\r\nconst LoadingNoDataWrap = styled(Box)({\r\n marginTop: '8px',\r\n padding: '24px 12px',\r\n textAlign: 'center',\r\n border: '1px dashed',\r\n borderColor: colors.grey[400],\r\n borderRadius: '6px'\r\n})\r\n\r\nexport const LoadingWaiting: FC = () => (\r\n <LoadingWaitingWrap>\r\n <Typography variant='h6' color='text.primary' sx={{ fontWeight: 'bold' }}>\r\n Waiting for data...\r\n </Typography>\r\n <Typography variant='body2' color='text.secondary'>\r\n Please wait while we fetch the data.\r\n </Typography>\r\n </LoadingWaitingWrap>\r\n)\r\n\r\nconst LoadingWaitingWrap = styled(Box)({\r\n marginTop: '8px',\r\n padding: '24px 12px',\r\n textAlign: 'center',\r\n border: '1px dashed',\r\n borderColor: colors.grey[400],\r\n borderRadius: '6px'\r\n})\r\n\r\nexport const LoadingMissingConfig: React.FC = () => (\r\n <LoadingMissingConfigWrap>\r\n <Typography variant='h6' color='text.primary' sx={{ fontWeight: 'bold' }}>\r\n Missing Configuration\r\n </Typography>\r\n <Typography variant='body2' color='text.secondary'>\r\n We're sorry, but it looks like there's a missing configuration required for this feature to work correctly.\r\n </Typography>\r\n <Typography variant='body2' color='text.secondary'>\r\n Please contact support for assistance.\r\n </Typography>\r\n </LoadingMissingConfigWrap>\r\n)\r\n\r\nconst LoadingMissingConfigWrap = styled(Box)({\r\n marginTop: 3,\r\n padding: 4,\r\n textAlign: 'center',\r\n border: '1px dashed',\r\n borderColor: colors.red[700],\r\n borderRadius: 1\r\n})\r\n"],"names":["defaultViewMode","EViewMode","List","viewModes","value","Module","icon","_jsx","ViewModuleIcon","label","ViewListIcon","ViewModeButtons","props","_props$onChange","onChange","normalizedValue","Object","values","includes","handleChange","useCallback","newValue","ToggleButtonGroupCustom","size","exclusive","_","v","children","map","mode","Tooltip","title","arrow","ToggleButton","sx","p","createViewModeButtons","styled","ToggleButtonGroup","_ref","theme","_defineProperty","flex","color","colors","common","white","backgroundColor","concat","blue","borderColor","breakpoints","down","display","LoadingOverlay","LoadingOverlayWrap","_objectSpread","_jsxs","Box","className","Typography","variant","position","top","left","right","bottom","bgcolor","alignItems","justifyContent","zIndex","paddingTop","backdropFilter","gap","width","height","border","grey","borderTopColor","borderRadius","transform","animation","LoadingError","_ref3","error","LoadingErrorWrap","gutterBottom","marginTop","padding","StyledGridOverlay","_ref4","flexDirection","fill","applyStyles","LoadingNoData","LoadingNoDataWrap","xmlns","viewBox","focusable","d","textAlign","LoadingWaiting","LoadingWaitingWrap","fontWeight","red"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineProperty as t,createClass as e,classCallCheck as n,toConsumableArray as o,inherits as r,objectSpread2 as i,callSuper as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,Fragment as s,jsx as u}from"react/jsx-runtime";import{createElement as p,Component as d}from"react";import{styled as c,Autocomplete as v,TextField as f,Chip as m,Typography as h,Tooltip as g,IconButton as y}from"@mui/material";import S from"@mui/icons-material/Remove";import{getErrorMessage as I}from"./helpers.js";var R;function C(o){var c=(null==o?void 0:o.separator)||"|",R=(null==o?void 0:o.limitTags)||2,C=null!=o&&o.saveLocalStorageByKey?B.initial(o.saveLocalStorageByKey):void 0,K=function(){function B(e){var r;return n(this,B),r=l(this,B,[e]),t(r,"refInput",null),t(r,"handleRemoveItem",(function(t,e){var n;t.preventDefault(),t.stopPropagation(),console.log(e);var o=null!==(n=null==C?void 0:C.delete(e))&&void 0!==n?n:[];r.setState({options:o})})),t(r,"handleAddOption",(function(t,e){if(null!=o&&o.saveLocalStorageByKey){var n,i=null!==(n=null==C?void 0:C.setItems(r.state.options,e))&&void 0!==n?n:r.state.options;r.setState({value:e,options:i})}else r.setState({value:e});r.refInput&&(r.refInput.value=e.join(c)),r.props.name&&r.props.onBlur&&r.props.onBlur(r.props.name)})),t(r,"isBtnRemoveOption",(function(t){var e,n,i,l=r.state.value.findIndex((function(e){return e===t}))<0;return(null!==(e=null!==(n=null==o?void 0:o.optionItems)&&void 0!==n?n:null===(i=r.props.slots)||void 0===i?void 0:i.optionItems)&&void 0!==e?e:[]).findIndex((function(e){return e===t}))<0&&l})),t(r,"getSelectOptions",(function(){var t,e,n=null!==(t=null==o?void 0:o.optionItems)&&void 0!==t?t:[];null!=o&&o.saveLocalStorageByKey&&(n=null!==(e=null==C?void 0:C.getItemsAndMerge(n))&&void 0!==e?e:[]);return n})),t(r,"getTextFieldProps",(function(){var t=r.props,e=t.name,n=t.label,o=t.placeholder,i=t.onBlur,l=t.messageErrors,a=I(l,e);return{label:n,placeholder:o||"Add new",onBlur:function(){e&&i&&i(e)},error:a.error,helperText:a.message}})),t(r,"getDefaultValue",(function(){var t,e,n=r.props,o=n.name,i=n.data,l=o?null==i||null===(t=i[o])||void 0===t?void 0:t.toString():"";return null!==(e=null==l?void 0:l.split(c).filter((function(t){return!!t})))&&void 0!==e?e:[]})),r.state={value:r.getDefaultValue(),options:r.getSelectOptions()},r}return r(B,d),e(B,[{key:"render",value:function(){var t=this,e=this.props.name;return a(s,{children:[u(v,{multiple:!0,freeSolo:!0,limitTags:R,value:this.state.value,onChange:this.handleAddOption,options:this.state.options,renderOption:function(e,n){return p(x,i(i({},e),{},{key:n}),u(h,{variant:"subtitle1",sx:{flex:1},children:n}),t.isBtnRemoveOption(n)&&u(g,{title:"Remove option",arrow:!0,placement:"left",children:u(y,{size:"small",onClick:function(e){return t.handleRemoveItem(e,n)},children:u(S,{fontSize:"small"})})}))},renderTags:function(t,e){return t.map((function(t,n){return p(m,i(i({label:t},e({index:n})),{},{key:t.toString()}))}))},renderInput:function(e){return u(f,i(i({},e),{},{variant:"outlined"},t.getTextFieldProps()))}}),u("input",{ref:function(e){t.refInput=e},hidden:!0,type:"text",name:null==e?void 0:e.toString(),defaultValue:this.state.value.join(c)})]})}}])}();return K}var x=c("li")({display:"flex",alignItems:"center"}),B=e((function e(r,i){var l=this;n(this,e),t(this,"storeKeyRoot","autocomplete_chip_store"),t(this,"getRoot",(function(){try{var t=window.localStorage.getItem(l.storeKeyRoot);return JSON.parse(null!=t?t:"{}")}catch(t){return{}}})),t(this,"getChild",(function(){return l.getRoot()[l.storeKey]})),t(this,"setRoot",(function(t){window.localStorage.setItem(l.storeKeyRoot,JSON.stringify(t))})),t(this,"setChild",(function(t){var e=l.getRoot();e[l.storeKey]=t,l.setRoot(e)})),t(this,"getItemsAndMerge",(function(t){try{return Array.from(new Set([].concat(o(l.getChild()),o(t)))).sort()}catch(e){return t}})),t(this,"setItems",(function(t,e){var n=Array.from(new Set([].concat(o(t),o(e)))).sort();return l.setChild(n),n})),t(this,"delete",(function(t){var e=l.getChild().filter((function(e){return e!==t}));return l.setChild(e),e})),this.storeKey=r,i&&this.setChild(i)}));R=B,t(B,"initial",(function(t,e){return new R(t,e)}));export{C as default};
|
|
2
|
+
//# sourceMappingURL=create.autocomplete.chips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.autocomplete.chips.js","sources":["../../../src/form/create.autocomplete.chips.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, Chip, IconButton, styled, TextField, TextFieldProps, Tooltip, Typography } from '@mui/material'\r\nimport RemoveIcon from '@mui/icons-material/Remove'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\n\r\nexport interface IAutocompleteChipSlots {\r\n optionItems?: string[]\r\n limitTags?: number\r\n separator?: string\r\n saveLocalStorageByKey?: string\r\n}\r\n\r\nexport interface IAutocompleteChipProps<T> extends IFormInputBase<T, IAutocompleteChipSlots> {}\r\n\r\nexport interface IAutocompleteChipState {\r\n value: string[]\r\n options: string[]\r\n}\r\n\r\nfunction CreateAutocompleteChip<T>(params?: IAutocompleteChipSlots): ComponentType<IAutocompleteChipProps<T>> {\r\n const separator = params?.separator || '|'\r\n const limitTags = params?.limitTags || 2\r\n const storeItems = params?.saveLocalStorageByKey ? AutocompleteChipStore.initial(params.saveLocalStorageByKey) : undefined\r\n\r\n class AutocompleteChip extends Component<IAutocompleteChipProps<T>, IAutocompleteChipState> {\r\n constructor(props: IAutocompleteChipProps<T>) {\r\n super(props)\r\n this.state = {\r\n value: this.getDefaultValue(),\r\n options: this.getSelectOptions()\r\n }\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n const { name } = this.props\r\n return (\r\n <>\r\n <Autocomplete\r\n multiple\r\n freeSolo\r\n limitTags={limitTags}\r\n value={this.state.value}\r\n onChange={this.handleAddOption}\r\n options={this.state.options}\r\n renderOption={(props, option) => (\r\n <ItemOption {...props} key={option}>\r\n <Typography variant='subtitle1' sx={{ flex: 1 }}>\r\n {option}\r\n </Typography>\r\n {this.isBtnRemoveOption(option) && (\r\n <Tooltip title='Remove option' arrow placement='left'>\r\n <IconButton size='small' onClick={(e) => this.handleRemoveItem(e, option)}>\r\n <RemoveIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </ItemOption>\r\n )}\r\n renderTags={(tagValue, getTagProps) => {\r\n return tagValue.map((option, index) => <Chip label={option} {...getTagProps({ index })} key={option.toString()} />)\r\n }}\r\n renderInput={(params) => <TextField {...params} variant='outlined' {...this.getTextFieldProps()} />}\r\n />\r\n <input\r\n ref={(ref) => {\r\n this.refInput = ref\r\n }}\r\n hidden\r\n type='text'\r\n name={name?.toString()}\r\n defaultValue={this.state.value.join(separator)}\r\n />\r\n </>\r\n )\r\n }\r\n\r\n handleRemoveItem = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>, value: string) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n console.log(value)\r\n const list = storeItems?.delete(value) ?? []\r\n this.setState({ options: list })\r\n }\r\n\r\n handleAddOption = (_: React.SyntheticEvent, newValue: string[]) => {\r\n if (params?.saveLocalStorageByKey) {\r\n const options = storeItems?.setItems(this.state.options, newValue) ?? this.state.options\r\n this.setState({ value: newValue, options })\r\n } else {\r\n this.setState({ value: newValue })\r\n }\r\n if (this.refInput) {\r\n this.refInput.value = newValue.join(separator)\r\n }\r\n this.props.name && this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n isBtnRemoveOption = (value: string) => {\r\n const isSelectedOption = this.state.value.findIndex((x) => x === value) < 0\r\n const selectOptions = params?.optionItems ?? this.props.slots?.optionItems ?? []\r\n const isDefault = selectOptions.findIndex((x) => x === value) < 0\r\n return isDefault && isSelectedOption\r\n }\r\n\r\n getSelectOptions = () => {\r\n let items = params?.optionItems ?? []\r\n if (params?.saveLocalStorageByKey) {\r\n items = storeItems?.getItemsAndMerge(items) ?? []\r\n }\r\n return items\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { name, label, placeholder, onBlur, messageErrors } = this.props\r\n const eMessage = getErrorMessage(messageErrors, name)\r\n return {\r\n label,\r\n placeholder: placeholder || 'Add new',\r\n onBlur: () => {\r\n if (!name) return\r\n onBlur && onBlur(name)\r\n },\r\n error: eMessage.error,\r\n helperText: eMessage.message\r\n }\r\n }\r\n\r\n getDefaultValue = (): string[] => {\r\n const { name, data } = this.props\r\n const value = name ? data?.[name]?.toString() : ''\r\n return value?.split(separator).filter((x) => !!x) ?? []\r\n }\r\n }\r\n\r\n return AutocompleteChip\r\n}\r\n\r\nexport default CreateAutocompleteChip\r\n\r\nconst ItemOption = styled('li')({\r\n display: 'flex',\r\n alignItems: 'center'\r\n})\r\n\r\ntype TChipStoreRoot = { [key: string]: string[] }\r\n\r\nclass AutocompleteChipStore {\r\n private storeKeyRoot = 'autocomplete_chip_store'\r\n private storeKey: string\r\n constructor(key: string, defaultValue?: string[]) {\r\n this.storeKey = key\r\n if (defaultValue) {\r\n this.setChild(defaultValue)\r\n }\r\n }\r\n\r\n static initial = (key: string, defaultValue?: string[]) => new AutocompleteChipStore(key, defaultValue)\r\n\r\n private getRoot = (): TChipStoreRoot => {\r\n try {\r\n const res = window.localStorage.getItem(this.storeKeyRoot)\r\n return JSON.parse(res ?? '{}')\r\n } catch (error) {\r\n return {}\r\n }\r\n }\r\n\r\n private getChild = (): string[] => {\r\n return this.getRoot()[this.storeKey]\r\n }\r\n\r\n private setRoot = (value: TChipStoreRoot) => {\r\n window.localStorage.setItem(this.storeKeyRoot, JSON.stringify(value))\r\n }\r\n\r\n private setChild = (value: string[]) => {\r\n const obj = this.getRoot()\r\n obj[this.storeKey] = value\r\n this.setRoot(obj)\r\n }\r\n\r\n getItemsAndMerge = (value: string[]): string[] => {\r\n try {\r\n return Array.from(new Set([...this.getChild(), ...value])).sort()\r\n } catch (error) {\r\n return value\r\n }\r\n }\r\n\r\n setItems = (options: string[], value: string[]): string[] => {\r\n const list = Array.from(new Set([...options, ...value])).sort()\r\n this.setChild(list)\r\n return list\r\n }\r\n\r\n delete = (value: string) => {\r\n const list = this.getChild().filter((x) => x !== value)\r\n this.setChild(list)\r\n return list\r\n }\r\n}\r\n"],"names":["CreateAutocompleteChip","params","separator","limitTags","storeItems","saveLocalStorageByKey","AutocompleteChipStore","initial","undefined","AutocompleteChip","props","_this","_classCallCheck","_callSuper","_defineProperty","e","value","_storeItems$delete","preventDefault","stopPropagation","console","log","list","setState","options","_","newValue","_storeItems$setItems","setItems","state","refInput","join","name","onBlur","_ref","_params$optionItems","_this$props$slots","isSelectedOption","findIndex","x","optionItems","slots","_params$optionItems2","_storeItems$getItemsA","items","getItemsAndMerge","_this$props","label","placeholder","messageErrors","eMessage","getErrorMessage","error","helperText","message","_data$name","_value$split$filter","_this$props2","data","toString","split","filter","getDefaultValue","getSelectOptions","_inherits","Component","_createClass","key","_this2","this","_jsxs","_Fragment","children","_jsx","Autocomplete","multiple","freeSolo","onChange","handleAddOption","renderOption","option","_createElement","ItemOption","_objectSpread","Typography","variant","sx","flex","isBtnRemoveOption","Tooltip","title","arrow","placement","IconButton","size","onClick","handleRemoveItem","RemoveIcon","fontSize","renderTags","tagValue","getTagProps","map","index","Chip","renderInput","TextField","getTextFieldProps","ref","hidden","type","defaultValue","styled","display","alignItems","_this3","res","window","localStorage","getItem","storeKeyRoot","JSON","parse","getRoot","storeKey","setItem","stringify","obj","setRoot","Array","from","Set","concat","_toConsumableArray","getChild","sort","setChild","_AutocompleteChipStore"],"mappings":"4gBAoBA,SAASA,EAA0BC,GACjC,IAAMC,GAAYD,aAAM,EAANA,EAAQC,YAAa,IACjCC,GAAYF,aAAM,EAANA,EAAQE,YAAa,EACjCC,EAAaH,SAAAA,EAAQI,sBAAwBC,EAAsBC,QAAQN,EAAOI,4BAAyBG,EAE3GC,aACJ,SAAAA,EAAYC,GAAgC,IAAAC,EAKzC,OALyCC,OAAAH,GAC1CE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAAA,WAOsB,MAAIG,EAAAH,EAAA,oBA4CrB,SAACI,EAAoDC,GAAiB,IAAAC,EACvFF,EAAEG,iBACFH,EAAEI,kBACFC,QAAQC,IAAIL,GACZ,IAAMM,EAAgC,QAA5BL,EAAGb,aAAAA,EAAAA,EAAkB,OAACY,UAAMC,IAAAA,EAAAA,EAAI,GAC1CN,EAAKY,SAAS,CAAEC,QAASF,OAC1BR,EAAAH,EAAA,mBAEiB,SAACc,EAAyBC,GAC1C,GAAIzB,SAAAA,EAAQI,sBAAuB,CAAA,IAAAsB,EAC3BH,EAA4DG,QAArDA,EAAGvB,aAAU,EAAVA,EAAYwB,SAASjB,EAAKkB,MAAML,QAASE,UAASC,IAAAA,EAAAA,EAAIhB,EAAKkB,MAAML,QACjFb,EAAKY,SAAS,CAAEP,MAAOU,EAAUF,QAAAA,GAClC,MACCb,EAAKY,SAAS,CAAEP,MAAOU,IAErBf,EAAKmB,WACPnB,EAAKmB,SAASd,MAAQU,EAASK,KAAK7B,IAEtCS,EAAKD,MAAMsB,MAAQrB,EAAKD,MAAMuB,QAAUtB,EAAKD,MAAMuB,OAAOtB,EAAKD,MAAMsB,SACtElB,EAAAH,EAEmB,qBAAA,SAACK,GAAiB,IAAAkB,EAAAC,EAAAC,EAC9BC,EAAmB1B,EAAKkB,MAAMb,MAAMsB,WAAU,SAACC,GAAC,OAAKA,IAAMvB,CAAK,IAAI,EAG1E,OAF0EkB,QAAvDA,EAAsBC,QAAtBA,EAAGlC,aAAM,EAANA,EAAQuC,uBAAWL,EAAAA,UAAAC,EAAIzB,EAAKD,MAAM+B,aAAK,IAAAL,OAAA,EAAhBA,EAAkBI,mBAAWN,IAAAA,EAAAA,EAAI,IAC9CI,WAAU,SAACC,GAAC,OAAKA,IAAMvB,CAAK,IAAI,GAC5CqB,KACrBvB,EAAAH,EAAA,oBAEkB,WAAK,IAAA+B,EAEaC,EAD/BC,EAA2BF,QAAtBA,EAAGzC,aAAM,EAANA,EAAQuC,mBAAWE,IAAAA,EAAAA,EAAI,GAC/BzC,SAAAA,EAAQI,wBACVuC,EAA2C,QAAtCD,EAAGvC,eAAAA,EAAYyC,iBAAiBD,UAAMD,IAAAA,EAAAA,EAAI,IAEjD,OAAOC,KACR9B,EAAAH,EAAA,qBAEmB,WAClB,IAAAmC,EAA4DnC,EAAKD,MAAzDsB,EAAIc,EAAJd,KAAMe,EAAKD,EAALC,MAAOC,EAAWF,EAAXE,YAAaf,EAAMa,EAANb,OAAQgB,EAAaH,EAAbG,cACpCC,EAAWC,EAAgBF,EAAejB,GAChD,MAAO,CACLe,MAAAA,EACAC,YAAaA,GAAe,UAC5Bf,OAAQ,WACDD,GACLC,GAAUA,EAAOD,EAClB,EACDoB,MAAOF,EAASE,MAChBC,WAAYH,EAASI,YAExBxC,EAAAH,EAAA,mBAEiB,WAAe,IAAA4C,EAAAC,EAC/BC,EAAuB9C,EAAKD,MAApBsB,EAAIyB,EAAJzB,KAAM0B,EAAID,EAAJC,KACR1C,EAAQgB,EAAO0B,SAAYH,QAARA,EAAJG,EAAO1B,UAAPuB,IAAYA,OAAZA,EAAAA,EAAcI,WAAa,GAChD,OAAiDH,QAAjDA,EAAOxC,eAAAA,EAAO4C,MAAM1D,GAAW2D,QAAO,SAACtB,GAAC,QAAOA,CAAC,WAACiB,IAAAA,EAAAA,EAAI,MAxGrD7C,EAAKkB,MAAQ,CACXb,MAAOL,EAAKmD,kBACZtC,QAASb,EAAKoD,oBACfpD,CACH,CAAC,OAAAqD,EAAAvD,EAP4BwD,GAO5BC,EAAAzD,EAAA,CAAA,CAAA0D,IAAA,SAAAnD,MAGD,WAAM,IAAAoD,EAAAC,KACIrC,EAASqC,KAAK3D,MAAdsB,KACR,OACEsC,EACEC,EAAA,CAAAC,SAAA,CAAAC,EAACC,EAAY,CACXC,UACA,EAAAC,UACA,EAAAzE,UAAWA,EACXa,MAAOqD,KAAKxC,MAAMb,MAClB6D,SAAUR,KAAKS,gBACftD,QAAS6C,KAAKxC,MAAML,QACpBuD,aAAc,SAACrE,EAAOsE,GAAM,OAC1BC,EAACC,EAAUC,EAAAA,KAAKzE,GAAK,GAAA,CAAEyD,IAAKa,IAC1BP,EAACW,EAAU,CAACC,QAAQ,YAAYC,GAAI,CAAEC,KAAM,GAAGf,SAC5CQ,IAEFZ,EAAKoB,kBAAkBR,IACtBP,EAACgB,EAAO,CAACC,MAAM,gBAAgBC,OAAK,EAACC,UAAU,OAAMpB,SACnDC,EAACoB,EAAW,CAAAC,KAAK,QAAQC,QAAS,SAAChF,GAAC,OAAKqD,EAAK4B,iBAAiBjF,EAAGiE,EAAO,EAAAR,SACvEC,EAACwB,GAAWC,SAAS,cAK9B,EACDC,WAAY,SAACC,EAAUC,GACrB,OAAOD,EAASE,KAAI,SAACtB,EAAQuB,GAAK,OAAKtB,EAACuB,EAAIrB,EAAAA,EAAA,CAACpC,MAAOiC,GAAYqB,EAAY,CAAEE,MAAAA,KAAQ,CAAA,EAAA,CAAEpC,IAAKa,EAAOrB,gBACrG,EACD8C,YAAa,SAACxG,GAAM,OAAKwE,EAACiC,EAASvB,EAAAA,KAAKlF,GAAM,GAAA,CAAEoF,QAAQ,YAAejB,EAAKuC,qBAAuB,IAErGlC,EAAA,QAAA,CACEmC,IAAK,SAACA,GACJxC,EAAKtC,SAAW8E,CACjB,EACDC,QACA,EAAAC,KAAK,OACL9E,KAAMA,eAAAA,EAAM2B,WACZoD,aAAc1C,KAAKxC,MAAMb,MAAMe,KAAK7B,OAI5C,IAAC,IA4DH,OAAOO,CACT,CAIA,IAAMyE,EAAa8B,EAAO,KAAPA,CAAa,CAC9BC,QAAS,OACTC,WAAY,WAKR5G,EAAqB4D,GAGzB,SAAA5D,EAAY6D,EAAa4C,GAAuB,IAAAI,EAAA9C,KAAAzD,OAAAN,GAAAQ,sBAFzB,2BAAyBA,kBAW9B,WAChB,IACE,IAAMsG,EAAMC,OAAOC,aAAaC,QAAQJ,EAAKK,cAC7C,OAAOC,KAAKC,MAAMN,QAAAA,EAAO,KAC1B,CAAC,MAAOhE,GACP,MAAO,CAAE,CACV,KACFtC,mBAEkB,WACjB,OAAOqG,EAAKQ,UAAUR,EAAKS,aAC5B9G,EAAAuD,KAAA,WAEiB,SAACrD,GACjBqG,OAAOC,aAAaO,QAAQV,EAAKK,aAAcC,KAAKK,UAAU9G,OAC/DF,EAAAuD,KAAA,YAEkB,SAACrD,GAClB,IAAM+G,EAAMZ,EAAKQ,UACjBI,EAAIZ,EAAKS,UAAY5G,EACrBmG,EAAKa,QAAQD,MACdjH,EAAAuD,KAAA,oBAEkB,SAACrD,GAClB,IACE,OAAOiH,MAAMC,KAAK,IAAIC,IAAG,GAAAC,OAAAC,EAAKlB,EAAKmB,YAAUD,EAAKrH,MAASuH,MAC5D,CAAC,MAAOnF,GACP,OAAOpC,CACR,KACFF,EAEUuD,KAAA,YAAA,SAAC7C,EAAmBR,GAC7B,IAAMM,EAAO2G,MAAMC,KAAK,IAAIC,IAAGC,GAAAA,OAAAC,EAAK7G,GAAO6G,EAAKrH,MAASuH,OAEzD,OADApB,EAAKqB,SAASlH,GACPA,KACRR,EAAAuD,KAAA,UAEQ,SAACrD,GACR,IAAMM,EAAO6F,EAAKmB,WAAWzE,QAAO,SAACtB,GAAC,OAAKA,IAAMvB,KAEjD,OADAmG,EAAKqB,SAASlH,GACPA,KAhDP+C,KAAKuD,SAAWzD,EACZ4C,GACF1C,KAAKmE,SAASzB,EAElB,IAAC0B,EARGnI,EAAqBQ,EAArBR,EAAqB,WAUR,SAAC6D,EAAa4C,GAAuB,OAAK,IAAIzG,EAAsB6D,EAAK4C,EAAa"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineProperty as t,inherits as e,createClass as a,classCallCheck as n,callSuper as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o}from"react/jsx-runtime";import{Component as l}from"react";import{styled as i,TextField as u,InputAdornment as s}from"@mui/material";function c(){return function(){function i(e){var a;return n(this,i),a=r(this,i,[e]),t(a,"handleColorChange",(function(t){var e=t.target.value;a.setState({value:e})})),t(a,"handleInputChange",(function(t){var e=t.target.value;e.startsWith("#")||(e="#"+e.replace(/[^a-fA-F0-9]/g,"")),a.setState({value:e})})),t(a,"handleBlur",(function(){var t=a.state.value.trim();/^#[0-9A-Fa-f]{6}$/.test(t)||a.setState({value:a.getDefaultValue(a.props)})})),a.state={value:a.getDefaultValue(e)},a}return e(i,l),a(i,[{key:"shouldComponentUpdate",value:function(t){var e=this.getDefaultValue(this.props),a=this.getDefaultValue(t);return e===a||(this.setState({value:a}),!1)}},{key:"render",value:function(){var t,e=null===(t=this.props.name)||void 0===t?void 0:t.toString();return o(p,{name:e,label:this.props.label,value:this.state.value,onChange:this.handleInputChange,onBlur:this.handleBlur,variant:"outlined",fullWidth:!0,className:h.root,inputProps:{maxLength:7,style:{paddingLeft:0}},InputProps:{startAdornment:o(s,{position:"start",children:o("div",{className:h.icon,children:o("input",{type:"color",value:this.state.value,onChange:this.handleColorChange,style:{}})})})}})}},{key:"getDefaultValue",value:function(t){var e,a=t.name,n=t.data;return a&&(null==n||null===(e=n[a])||void 0===e?void 0:e.toString())||"#000000"}}])}()}var h={root:"DinoColorPicker-root",icon:"DinoColorPicker-icon"},p=i(u)((function(e){var a,n=e.theme,r=e.value,o="var(--color-picker-icon-size, ".concat(n.spacing(3.5),")"),l=r||"#000000";return t({},(a="icon","".concat("",".").concat(h[a]).concat("")),{width:o,height:o,backgroundColor:l,borderRadius:"50%",boxShadow:"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px",'input[type="color"]':{width:"100%",height:"100%",border:"none",outline:"none",padding:0,background:"none",opacity:0,cursor:"pointer"}})}));export{c as createColorPicker,c as default};
|
|
2
|
+
//# sourceMappingURL=create.color-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.color-picker.js","sources":["../../../src/form/create.color-picker.tsx"],"sourcesContent":["import { ChangeEventHandler, Component } from 'react'\r\nimport { TextField, InputAdornment, styled } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\n\r\nexport interface IColorPickerProps<T> extends IFormInputBase<T> {}\r\n\r\nexport interface IColorPickerState {\r\n value: string\r\n}\r\n\r\nexport function createColorPicker<T>() {\r\n class ColorPicker extends Component<IColorPickerProps<T>, IColorPickerState> {\r\n constructor(props: IColorPickerProps<T>) {\r\n super(props)\r\n this.state = { value: this.getDefaultValue(props) }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IColorPickerProps<T>>): boolean {\r\n const value = this.getDefaultValue(this.props)\r\n const nextValue = this.getDefaultValue(nextProps)\r\n if (value !== nextValue) {\r\n this.setState({ value: nextValue })\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n render() {\r\n const name = this.props.name?.toString()\r\n return (\r\n <TextFieldStyled\r\n name={name}\r\n label={this.props.label}\r\n value={this.state.value}\r\n onChange={this.handleInputChange}\r\n onBlur={this.handleBlur}\r\n variant='outlined'\r\n fullWidth\r\n className={colorPickerClasses.root}\r\n inputProps={{ maxLength: 7, style: { paddingLeft: 0 } }}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position='start'>\r\n <div className={colorPickerClasses.icon}>\r\n <input type='color' value={this.state.value} onChange={this.handleColorChange} style={{}} />\r\n </div>\r\n </InputAdornment>\r\n )\r\n }}\r\n />\r\n )\r\n }\r\n\r\n getDefaultValue(currentProps: IColorPickerProps<T>) {\r\n const { name, data } = currentProps\r\n return name ? data?.[name]?.toString() || '#000000' : '#000000'\r\n }\r\n\r\n handleColorChange: ChangeEventHandler<HTMLInputElement> = (event) => {\r\n const { value } = event.target\r\n this.setState({ value })\r\n }\r\n\r\n handleInputChange: ChangeEventHandler<HTMLInputElement> = (event) => {\r\n let value = event.target.value\r\n if (!value.startsWith('#')) value = '#' + value.replace(/[^a-fA-F0-9]/g, '')\r\n this.setState({ value })\r\n }\r\n\r\n handleBlur = () => {\r\n const v = this.state.value.trim()\r\n if (!/^#[0-9A-Fa-f]{6}$/.test(v)) {\r\n this.setState({ value: this.getDefaultValue(this.props) })\r\n }\r\n }\r\n }\r\n return ColorPicker\r\n}\r\nexport default createColorPicker\r\n\r\nconst colorPickerClasses = {\r\n root: 'DinoColorPicker-root',\r\n icon: 'DinoColorPicker-icon'\r\n}\r\n\r\nconst getColorPickerClasses = (key: keyof typeof colorPickerClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${colorPickerClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nconst TextFieldStyled = styled(TextField)(({ theme, value }) => {\r\n const size = `var(--color-picker-icon-size, ${theme.spacing(3.5)})`\r\n const color = value || '#000000'\r\n return {\r\n [getColorPickerClasses('icon')]: {\r\n width: size,\r\n height: size,\r\n backgroundColor: color,\r\n borderRadius: '50%',\r\n boxShadow: 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px',\r\n 'input[type=\"color\"]': {\r\n width: '100%',\r\n height: '100%',\r\n border: 'none',\r\n outline: 'none',\r\n padding: 0,\r\n background: 'none',\r\n opacity: 0,\r\n cursor: 'pointer'\r\n }\r\n }\r\n }\r\n})\r\n"],"names":["createColorPicker","ColorPicker","props","_this","_classCallCheck","_callSuper","_defineProperty","event","value","target","setState","startsWith","replace","v","state","trim","test","getDefaultValue","_inherits","Component","_createClass","key","nextProps","this","nextValue","_this$props$name","name","toString","_jsx","TextFieldStyled","label","onChange","handleInputChange","onBlur","handleBlur","variant","fullWidth","className","colorPickerClasses","root","inputProps","maxLength","style","paddingLeft","InputProps","startAdornment","InputAdornment","position","children","icon","type","handleColorChange","currentProps","_data$name","data","styled","TextField","_ref","theme","size","concat","spacing","color","getColorPickerClasses","width","height","backgroundColor","borderRadius","boxShadow","border","outline","padding","background","opacity","cursor"],"mappings":"4SAUgBA,IAkEd,kBAhEE,SAAAC,EAAYC,GAA2B,IAAAC,EAEc,OAFdC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA6C4C,qBAAA,SAACI,GACzD,IAAQC,EAAUD,EAAME,OAAhBD,MACRL,EAAKO,SAAS,CAAEF,MAAAA,OACjBF,EAAAH,EAEyD,qBAAA,SAACI,GACzD,IAAIC,EAAQD,EAAME,OAAOD,MACpBA,EAAMG,WAAW,OAAMH,EAAQ,IAAMA,EAAMI,QAAQ,gBAAiB,KACzET,EAAKO,SAAS,CAAEF,MAAAA,OACjBF,EAAAH,EAAA,cAEY,WACX,IAAMU,EAAIV,EAAKW,MAAMN,MAAMO,OACtB,oBAAoBC,KAAKH,IAC5BV,EAAKO,SAAS,CAAEF,MAAOL,EAAKc,gBAAgBd,EAAKD,YA1DnDC,EAAKW,MAAQ,CAAEN,MAAOL,EAAKc,gBAAgBf,IAAQC,CACrD,CAAC,OAAAe,EAAAjB,EAJuBkB,GAIvBC,EAAAnB,EAAA,CAAA,CAAAoB,IAAA,wBAAAb,MAED,SAAsBc,GACpB,IAAMd,EAAQe,KAAKN,gBAAgBM,KAAKrB,OAClCsB,EAAYD,KAAKN,gBAAgBK,GACvC,OAAId,IAAUgB,IACZD,KAAKb,SAAS,CAAEF,MAAOgB,KAChB,EAGX,GAAC,CAAAH,IAAA,SAAAb,MAED,WAAM,IAAAiB,EACEC,EAAsB,QAAlBD,EAAGF,KAAKrB,MAAMwB,YAAXD,IAAeA,OAAfA,EAAAA,EAAiBE,WAC9B,OACEC,EAACC,EAAe,CACdH,KAAMA,EACNI,MAAOP,KAAKrB,MAAM4B,MAClBtB,MAAOe,KAAKT,MAAMN,MAClBuB,SAAUR,KAAKS,kBACfC,OAAQV,KAAKW,WACbC,QAAQ,WACRC,WAAS,EACTC,UAAWC,EAAmBC,KAC9BC,WAAY,CAAEC,UAAW,EAAGC,MAAO,CAAEC,YAAa,IAClDC,WAAY,CACVC,eACEjB,EAACkB,EAAe,CAAAC,SAAS,QAAOC,SAC9BpB,EAAK,MAAA,CAAAS,UAAWC,EAAmBW,KACjCD,SAAApB,EAAA,QAAA,CAAOsB,KAAK,QAAQ1C,MAAOe,KAAKT,MAAMN,MAAOuB,SAAUR,KAAK4B,kBAAmBT,MAAO,CAAA,UAOpG,GAAC,CAAArB,IAAA,kBAAAb,MAED,SAAgB4C,GAAkC,IAAAC,EACxC3B,EAAe0B,EAAf1B,KAAM4B,EAASF,EAATE,KACd,OAAO5B,IAAO4B,SAAYD,QAARA,EAAJC,EAAO5B,UAAP2B,IAAYA,OAAZA,EAAAA,EAAc1B,aAA0B,SACxD,IAAC,GAqBL,CAGA,IAAMW,EAAqB,CACzBC,KAAM,uBACNU,KAAM,wBAOFpB,EAAkB0B,EAAOC,EAAPD,EAAkB,SAAAE,GAAqB,IAJhCpC,EAIcqC,EAAKD,EAALC,MAAOlD,EAAKiD,EAALjD,MAC5CmD,EAAIC,iCAAAA,OAAoCF,EAAMG,QAAQ,KAAO,KAC7DC,EAAQtD,GAAS,UACvB,OAAAF,EACGyD,CAAAA,GAR0B1C,EAQJ,OAPzB,GAAAuC,OAA6B,QAAEA,OAAItB,EAAmBjB,IAAIuC,OAAsB,KAO7C,CAC/BI,MAAOL,EACPM,OAAQN,EACRO,gBAAiBJ,EACjBK,aAAc,MACdC,UAAW,wCACX,sBAAuB,CACrBJ,MAAO,OACPC,OAAQ,OACRI,OAAQ,OACRC,QAAS,OACTC,QAAS,EACTC,WAAY,OACZC,QAAS,EACTC,OAAQ,YAIhB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineProperty as e,inherits as t,createClass as r,objectSpread2 as a,classCallCheck as i,callSuper as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as o}from"react/jsx-runtime";import{Component as l}from"react";import{LocalizationProvider as u}from"@mui/x-date-pickers";import{AdapterDayjs as c}from"@mui/x-date-pickers/AdapterDayjs";import{styled as d,Box as p,colors as h,TextField as f,Typography as m,Switch as g}from"@mui/material";import{getErrorMessage as C}from"./helpers.js";import{mergeObjects as v,tryParseIntRequired as y}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import D from"dayjs";var b="DateExpired-root",x="DateExpired-control",k="DateExpired-label",w="DateExpired-expired",O="DateExpired-labelSwitch",j="DateExpired-input",E="DateExpired-switch";function M(d){var p=function(){function p(t){var r,a;return i(this,p),a=s(this,p,[t]),e(a,"defaultNumberOfDays",30),e(a,"mapTextFieldProps",(function(){var e=a.props,t=e.messageErrors,r=e.name,i=e.onBlur,s=a.props.disabled||!a.state.switchChecked,l={fullWidth:!0,className:j,label:o("span",{className:k,children:["Expiry date",a.state.switchChecked&&n("b",{children:a.getOffsetDate(a.state.numberOfDays)})]}),variant:"outlined",type:"number",disabled:s,value:a.state.switchChecked?a.state.numberOfDays:0,onChange:a.handleChange};if(r){l.onBlur=function(){return i&&i(r)};var u,c=C(t,r);if(c.error)l.error=Boolean(c.error),l.helperText=null!==(u=c.message)&&void 0!==u?u:""}return v({},l,a.mergeConfig.textFieldProps)})),e(a,"handleChange",(function(e){var t=""!=e.target.value?parseInt(e.target.value):0;a.setState({numberOfDays:t},(function(){var e=C(a.props.messageErrors,a.props.name);t>0&&e.error&&a.mergeConfig.handleBlur()}))})),e(a,"getRootClasses",(function(){var e=[b];return a.state.numberOfDays<1&&e.push(w),e.join(" ")})),e(a,"getNumberOfDays",(function(){return"number"===a.mergeConfig.type?y(a.mergeConfig.defaulValue,a.defaultNumberOfDays):a.getDaysUntilDate(a.mergeConfig.defaulValue,a.defaultNumberOfDays)})),e(a,"getOffsetDate",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"MMMM D, YYYY";return D().add(e,"day").format(t)})),e(a,"getDaysUntilDate",(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;try{if(!e)return t;var r=D(e),a=D(),i=r.diff(a,"day",!0);return Math.round(i)}catch(e){return t}})),a.mergeConfigCached=null!==(r=a.updateMergeConfig(t.slots))&&void 0!==r?r:{},a.state={numberOfDays:a.getNumberOfDays(),switchChecked:a.mergeConfig.switchChecked},a.id=(new Date).getTime().toString(),a}return t(p,l),r(p,[{key:"mergeConfig",get:function(){return this.mergeConfigCached}},{key:"defaultValueInput",get:function(){return"number"===this.mergeConfig.type?this.state.numberOfDays:this.getOffsetDate(this.state.numberOfDays,"YYYY-MM-DDTHH:mm:ss.sssZ")}},{key:"componentDidUpdate",value:function(e){e.slots===this.props.slots&&e.data===this.props.data||(this.mergeConfigCached=this.updateMergeConfig(this.props.slots))}},{key:"render",value:function(){var e,t=this;return n(u,{dateAdapter:c,children:o(N,{className:this.getRootClasses(),children:[n("input",{type:"text",hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaultValueInput},this.defaultValueInput),n(f,a({},this.mapTextFieldProps())),o("div",{className:x,children:[n(m,a(a({variant:"caption",className:O},{component:"label",htmlFor:this.id}),{},{sx:{color:this.state.switchChecked?"success.main":"#767676"},children:this.state.switchChecked?"Use Expiration Date":"No Expiration"})),n(g,a({id:this.id,size:"small",color:"success",checked:this.state.switchChecked,onChange:function(e,r){return t.setState({switchChecked:r})}},this.mergeConfig.switchProps))]})]})})}},{key:"updateMergeConfig",value:function(e){var t,r=null!=e?e:{},i=r.switchChecked,s=r.switchCheckedGetter,n=v(d,e),o=this.props,l=o.data,u=o.name,c=o.onBlur,p=o.defaultValue,h=null!=p?p:l&&u?null===(t=l[u])||void 0===t?void 0:t.toString():void 0,f=!!l&&(!!h||!!i);return s&&(f=s(h,l)),a(a({},n),{},{switchChecked:f,defaulValue:h,handleBlur:function(){u&&c&&c(u)}})}}])}();return p}var N=d(p)(e(e(e(e(e(e({display:"flex",alignItems:"center",gap:"10px",position:"relative"},".".concat(E),{margin:0,flex:"0 0 auto"}),".".concat(k),{b:{color:h.blue[600],marginLeft:"8px"}}),".".concat(O),{fontWeight:600,cursor:"pointer"}),".".concat(x),{position:"absolute",top:0,right:0,height:"100%",display:"flex",alignItems:"center"}),".".concat(j),{".MuiInputBase-input":{paddingRight:"160px"}}),"&.".concat(w),e({},".".concat(k),{b:{color:h.red[600]}})));export{M as default};
|
|
2
|
+
//# sourceMappingURL=create.date-expired.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.date-expired.js","sources":["../../../src/form/create.date-expired.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { Switch, Typography, TextField, styled, Box, TextFieldProps, SwitchProps, colors } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { dayjsCustom, mergeObjects, tryParseIntRequired } from '../utils'\r\n\r\nconst defaultFormatString = 'MMMM D, YYYY'\r\n\r\nconst dateExpiredClasses = {\r\n root: 'DateExpired-root',\r\n control: 'DateExpired-control',\r\n label: 'DateExpired-label',\r\n expired: 'DateExpired-expired',\r\n labelSwitch: 'DateExpired-labelSwitch',\r\n input: 'DateExpired-input',\r\n switch: 'DateExpired-switch'\r\n}\r\n\r\ninterface ISlots<T> {\r\n /** @default string */\r\n type?: 'number' | 'string'\r\n textFieldProps?: Partial<TextFieldProps>\r\n switchProps?: SwitchProps\r\n switchChecked?: boolean\r\n switchCheckedGetter?: (value: any, model?: Partial<T>) => boolean\r\n}\r\n\r\ninterface MergeConfig<T> extends ISlots<T> {\r\n switchChecked: boolean\r\n defaulValue?: string\r\n handleBlur: () => void\r\n}\r\n\r\ninterface IProps<T> extends IFormInputBase<T> {\r\n slots?: ISlots<T>\r\n}\r\n\r\ninterface IState {\r\n numberOfDays: number\r\n switchChecked: boolean\r\n}\r\n\r\nfunction CreateDateExpired<T>(params?: ISlots<T>): React.ComponentType<IProps<T>> {\r\n class DateExpired extends Component<IProps<T>, IState> {\r\n defaultNumberOfDays: number = 30\r\n private id\r\n private mergeConfigCached: MergeConfig<T>\r\n constructor(props: IProps<T>) {\r\n super(props)\r\n this.mergeConfigCached = this.updateMergeConfig(props.slots) ?? {}\r\n this.state = {\r\n numberOfDays: this.getNumberOfDays(),\r\n switchChecked: this.mergeConfig.switchChecked\r\n }\r\n this.id = new Date().getTime().toString()\r\n }\r\n\r\n get mergeConfig(): MergeConfig<T> {\r\n return this.mergeConfigCached\r\n }\r\n\r\n get defaultValueInput(): string | number {\r\n if (this.mergeConfig.type === 'number') {\r\n return this.state.numberOfDays\r\n } else {\r\n return this.getOffsetDate(this.state.numberOfDays, 'YYYY-MM-DDTHH:mm:ss.sssZ')\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: IProps<T>) {\r\n if (prevProps.slots !== this.props.slots || prevProps.data !== this.props.data) {\r\n this.mergeConfigCached = this.updateMergeConfig(this.props.slots)\r\n }\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <Wrap className={this.getRootClasses()}>\r\n <input key={this.defaultValueInput} type='text' hidden name={this.props.name?.toString()} defaultValue={this.defaultValueInput} />\r\n <TextField {...this.mapTextFieldProps()} />\r\n <div className={dateExpiredClasses.control}>\r\n <Typography\r\n variant='caption'\r\n className={dateExpiredClasses.labelSwitch}\r\n {...{ component: 'label', htmlFor: this.id }}\r\n sx={{ color: this.state.switchChecked ? 'success.main' : '#767676' }}\r\n >\r\n {this.state.switchChecked ? 'Use Expiration Date' : 'No Expiration'}\r\n </Typography>\r\n <Switch\r\n id={this.id}\r\n size='small'\r\n color='success'\r\n checked={this.state.switchChecked}\r\n onChange={(_, checked) => this.setState({ switchChecked: checked })}\r\n {...this.mergeConfig.switchProps}\r\n />\r\n </div>\r\n </Wrap>\r\n </LocalizationProvider>\r\n )\r\n }\r\n //#endregion\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const { messageErrors, name, onBlur } = this.props\r\n const disabled = this.props.disabled || !this.state.switchChecked\r\n const obj: TextFieldProps = {\r\n fullWidth: true,\r\n className: dateExpiredClasses.input,\r\n label: (\r\n <span className={dateExpiredClasses.label}>\r\n Expiry date\r\n {this.state.switchChecked && <b>{this.getOffsetDate(this.state.numberOfDays)}</b>}\r\n </span>\r\n ),\r\n variant: 'outlined',\r\n type: 'number',\r\n disabled: disabled,\r\n value: this.state.switchChecked ? this.state.numberOfDays : 0,\r\n onChange: this.handleChange\r\n }\r\n if (!!name) {\r\n obj.onBlur = () => onBlur && onBlur(name)\r\n const temp = getErrorMessage(messageErrors, name)\r\n if (temp.error) {\r\n obj.error = Boolean(temp.error)\r\n obj.helperText = temp.message ?? ''\r\n }\r\n }\r\n return mergeObjects<TextFieldProps>({}, obj, this.mergeConfig.textFieldProps)\r\n }\r\n\r\n updateMergeConfig(currentSlots?: ISlots<T>): MergeConfig<T> {\r\n const { switchChecked, switchCheckedGetter } = currentSlots ?? {}\r\n const obj = mergeObjects(params, currentSlots)\r\n const { data, name, onBlur, defaultValue } = this.props\r\n const dValue = defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n let check = !data ? false : !!dValue || !!switchChecked\r\n if (switchCheckedGetter) check = switchCheckedGetter(dValue, data)\r\n return {\r\n ...obj,\r\n switchChecked: check,\r\n defaulValue: dValue,\r\n handleBlur: () => {\r\n if (!name || !onBlur) return\r\n onBlur(name)\r\n }\r\n }\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const numberOfDays: number = e.target.value != '' ? parseInt(e.target.value) : 0\r\n this.setState({ numberOfDays }, () => {\r\n const err = getErrorMessage(this.props.messageErrors, this.props.name)\r\n if (numberOfDays > 0 && err.error) this.mergeConfig.handleBlur()\r\n })\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [dateExpiredClasses.root]\r\n if (this.state.numberOfDays < 1) classes.push(dateExpiredClasses.expired)\r\n return classes.join(' ')\r\n }\r\n\r\n getNumberOfDays = (): number => {\r\n if (this.mergeConfig.type === 'number') {\r\n return tryParseIntRequired(this.mergeConfig.defaulValue, this.defaultNumberOfDays)\r\n } else {\r\n return this.getDaysUntilDate(this.mergeConfig.defaulValue, this.defaultNumberOfDays)\r\n }\r\n }\r\n\r\n getOffsetDate = (num: number, formatString = defaultFormatString): string => {\r\n return dayjsCustom().add(num, 'day').format(formatString)\r\n }\r\n\r\n getDaysUntilDate = (value?: string, defaultValue = 0): number => {\r\n try {\r\n if (!value) return defaultValue\r\n const target = dayjsCustom(value)\r\n const today = dayjsCustom()\r\n const diff = target.diff(today, 'day', true)\r\n return Math.round(diff)\r\n } catch {\r\n return defaultValue\r\n }\r\n }\r\n }\r\n return DateExpired\r\n}\r\nexport default CreateDateExpired\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n position: 'relative',\r\n [`.${dateExpiredClasses.switch}`]: {\r\n margin: 0,\r\n flex: '0 0 auto'\r\n },\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: colors.blue[600],\r\n marginLeft: '8px'\r\n }\r\n },\r\n [`.${dateExpiredClasses.labelSwitch}`]: {\r\n fontWeight: 600,\r\n cursor: 'pointer'\r\n },\r\n [`.${dateExpiredClasses.control}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n [`.${dateExpiredClasses.input}`]: {\r\n '.MuiInputBase-input': {\r\n paddingRight: '160px'\r\n }\r\n },\r\n [`&.${dateExpiredClasses.expired}`]: {\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: colors.red[600]\r\n }\r\n }\r\n }\r\n})\r\n"],"names":["dateExpiredClasses","CreateDateExpired","params","DateExpired","props","_this$updateMergeConf","_this","_classCallCheck","_callSuper","_defineProperty","_this$props","messageErrors","name","onBlur","disabled","state","switchChecked","obj","fullWidth","className","label","_jsxs","children","_jsx","getOffsetDate","numberOfDays","variant","type","value","onChange","handleChange","_temp$message","temp","getErrorMessage","error","Boolean","helperText","message","mergeObjects","mergeConfig","textFieldProps","e","target","parseInt","setState","err","handleBlur","classes","push","join","tryParseIntRequired","defaulValue","defaultNumberOfDays","getDaysUntilDate","num","formatString","arguments","length","undefined","dayjsCustom","add","format","defaultValue","today","diff","Math","round","_unused","mergeConfigCached","updateMergeConfig","slots","getNumberOfDays","id","Date","getTime","toString","_inherits","Component","_createClass","key","get","this","prevProps","data","_this$props$name","_this2","LocalizationProvider","dateAdapter","AdapterDayjs","Wrap","getRootClasses","hidden","defaultValueInput","TextField","_objectSpread","mapTextFieldProps","Typography","component","htmlFor","sx","color","Switch","size","checked","_","switchProps","currentSlots","_data$name","_ref","switchCheckedGetter","_this$props2","dValue","check","styled","Box","display","alignItems","gap","position","concat","margin","flex","b","colors","blue","marginLeft","fontWeight","cursor","top","right","height","paddingRight","red"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as t,createClass as e,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as n}from"react/jsx-runtime";import{Component as i}from"react";import{styled as u}from"@mui/material";import{AdapterDayjs as p}from"@mui/x-date-pickers/AdapterDayjs";import{DatePicker as d,LocalizationProvider as m}from"@mui/x-date-pickers";import{getErrorMessage as f}from"./helpers.js";import{mergeObjects as c}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import v from"dayjs";var h=function(u){return function(){function d(t){var e,r;return o(this,d),r=a(this,d,[t]),l(r,"_cachedSlots",{}),l(r,"getDatePickerProps",(function(){var t,e,o,a,l,s=null!==(t=null==u?void 0:u.minDateOffset)&&void 0!==t?t:0,n=s>0?v().add(s,"day").startOf("day"):null==u?void 0:u.minDate,i=null!==(e=r.props.label)&&void 0!==e?e:null===(o=r.props.name)||void 0===o?void 0:o.toString(),p=null!==(a=r.props.format)&&void 0!==a?a:"MM/DD/YYYY",d=f(r.props.messageErrors,r.props.name),m={label:i,format:p,views:["day","month","year"],value:r.state.value,onChange:r.handleChange,disabled:r.props.disabled,minDate:n,slotProps:{textField:{onBlur:r.handleBlur,fullWidth:!0,error:d.error,helperText:d.message,variant:"outlined"}}};return c(m,null==u?void 0:u.datePickerProps,null===(l=r.slots)||void 0===l?void 0:l.datePickerProps)})),l(r,"refInput",null),l(r,"mergeSlots",(function(t){return c({},u,t)})),l(r,"handleBlur",(function(){r.props.name&&r.props.onBlur&&r.props.onBlur(r.props.name)})),l(r,"handleChange",(function(t){r.setState({value:t}),r.refInput&&(r.refInput.value=t&&!isNaN(t.toDate().getTime())?t.toDate().toISOString():""),setTimeout(r.handleBlur,50)})),l(r,"getDefaultValue",(function(){try{var t,e;if(!r.props.defaultValue&&!r.slots.defaultValue&&r.slots.minDateOffset)return v().add(1,"day").startOf("day");if(!r.props.defaultValue&&r.slots.minDate)return r.slots.minDate;var o=r.props,a=o.data,l=o.name,s=null!==(t=null!==(e=r.props.defaultValue)&&void 0!==e?e:r.slots.defaultValue)&&void 0!==t?t:l?null==a?void 0:a[l]:"";return s?v(s.toString()):v()}catch(t){return v()}})),r._cachedSlots=null!==(e=r.mergeSlots(t.slots))&&void 0!==e?e:{},r.state={value:r.getDefaultValue()},r}return t(d,i),e(d,[{key:"slots",get:function(){return this._cachedSlots}},{key:"componentDidUpdate",value:function(t){t.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"render",value:function(){var t,e,o=this;return s(m,{dateAdapter:p,children:[n(g,r({},this.getDatePickerProps())),n("input",{hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:null===(e=this.getDefaultValue())||void 0===e?void 0:e.toDate().toISOString(),ref:function(t){return o.refInput=t}})]})}}])}()},g=u(d)({"& .MuiInputBase-root::before, & .MuiInputBase-root::after":{borderBottom:"none !important"}});export{h as default};
|
|
2
|
+
//# sourceMappingURL=create.date-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.date-picker.js","sources":["../../../src/form/create.date-picker.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Dayjs } from 'dayjs'\r\nimport { styled } from '@mui/material'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { DatePicker as MUIDatePicker, LocalizationProvider, DatePickerProps } from '@mui/x-date-pickers'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { dayjsCustom, mergeObjects } from '../utils'\r\n\r\nconst formatDefault = 'MM/DD/YYYY'\r\n\r\nexport interface IDatePickerSlots {\r\n defaultValue?: string\r\n minDate?: Dayjs\r\n minDateOffset?: number\r\n datePickerProps?: DatePickerProps<Dayjs>\r\n}\r\n\r\nexport interface IDatePickerProps<T> extends IFormInputBase<T> {\r\n format?: string\r\n slots?: Omit<IDatePickerSlots, 'defaultValue'>\r\n}\r\n\r\nexport interface IDatePickerState {\r\n value: Dayjs | null\r\n}\r\n\r\nconst CreateDatePicker = function <T extends Object>(params?: IDatePickerSlots): ComponentType<IDatePickerProps<T>> {\r\n class DatePicker extends Component<IDatePickerProps<T>, IDatePickerState> {\r\n private _cachedSlots: IDatePickerSlots = {}\r\n constructor(props: IDatePickerProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.getDefaultValue() }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n componentDidUpdate(prevProps: IDatePickerProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n getDatePickerProps = (): DatePickerProps<Dayjs> => {\r\n const delayInDays = params?.minDateOffset ?? 0\r\n const minDate = delayInDays > 0 ? dayjsCustom().add(delayInDays, 'day').startOf('day') : params?.minDate\r\n const label = this.props.label ?? this.props.name?.toString()\r\n const format = this.props.format ?? formatDefault\r\n const eMessage = getErrorMessage<T>(this.props.messageErrors, this.props.name)\r\n const obj: DatePickerProps<Dayjs> = {\r\n label,\r\n format,\r\n views: ['day', 'month', 'year'],\r\n value: this.state.value,\r\n onChange: this.handleChange,\r\n disabled: this.props.disabled,\r\n minDate,\r\n slotProps: {\r\n textField: { onBlur: this.handleBlur, fullWidth: true, error: eMessage.error, helperText: eMessage.message, variant: 'outlined' }\r\n }\r\n }\r\n return mergeObjects(obj, params?.datePickerProps, this.slots?.datePickerProps)\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <CustomDatePicker {...this.getDatePickerProps()} />\r\n <input\r\n hidden\r\n name={this.props.name?.toString()}\r\n defaultValue={this.getDefaultValue()?.toDate().toISOString()}\r\n ref={(ref) => (this.refInput = ref)}\r\n />\r\n </LocalizationProvider>\r\n )\r\n }\r\n\r\n private mergeSlots = (currentSlots?: IDatePickerSlots): IDatePickerSlots => {\r\n return mergeObjects<IDatePickerSlots>({}, params, currentSlots)\r\n }\r\n\r\n handleBlur = () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n handleChange = (newValue: Dayjs | null) => {\r\n this.setState({ value: newValue })\r\n if (this.refInput) {\r\n this.refInput.value = newValue && !isNaN(newValue.toDate().getTime()) ? newValue.toDate().toISOString() : ''\r\n }\r\n setTimeout(this.handleBlur, 50)\r\n }\r\n\r\n getDefaultValue = (): Dayjs => {\r\n try {\r\n if (!this.props.defaultValue && !this.slots.defaultValue && this.slots.minDateOffset) return dayjsCustom().add(1, 'day').startOf('day')\r\n if (!this.props.defaultValue && this.slots.minDate) return this.slots.minDate\r\n\r\n const { data, name } = this.props\r\n const dValue = this.props.defaultValue ?? this.slots.defaultValue ?? (name ? data?.[name] : '')\r\n return dValue ? dayjsCustom(dValue.toString()) : dayjsCustom()\r\n } catch {\r\n return dayjsCustom()\r\n }\r\n }\r\n }\r\n return DatePicker\r\n}\r\n\r\nexport default CreateDatePicker\r\n\r\nconst CustomDatePicker = styled(MUIDatePicker<Dayjs>)({\r\n '& .MuiInputBase-root::before, & .MuiInputBase-root::after': {\r\n borderBottom: 'none !important'\r\n }\r\n})\r\n"],"names":["CreateDatePicker","params","DatePicker","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_params$minDateOffset","_this$props$label","_this$props$name","_this$props$format","_this$slots","delayInDays","minDateOffset","minDate","dayjsCustom","add","startOf","label","name","toString","format","eMessage","getErrorMessage","messageErrors","obj","views","value","state","onChange","handleChange","disabled","slotProps","textField","onBlur","handleBlur","fullWidth","error","helperText","message","variant","mergeObjects","datePickerProps","slots","currentSlots","newValue","setState","refInput","isNaN","toDate","getTime","toISOString","setTimeout","_ref","_this$props$defaultVa","defaultValue","_this$props","data","dValue","_unused","_cachedSlots","mergeSlots","getDefaultValue","_inherits","Component","_createClass","key","get","this","prevProps","_this$props$name2","_this$getDefaultValue","_this2","_jsxs","LocalizationProvider","dateAdapter","AdapterDayjs","children","_jsx","CustomDatePicker","_objectSpread","getDatePickerProps","hidden","ref","styled","MUIDatePicker","borderBottom"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as a,callSuper as o,defineProperty as s,asyncToGenerator as n,regenerator as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l}from"react/jsx-runtime";import u,{Component as m}from"react";import{Box as c}from"@mui/material";import{validateMerge as f,convertFormDataToJson as d,trimAllStrings as v,singleValidate as p,getErrorFromResponse as E}from"./helpers.js";import S,{SingleRuleValidate as g}from"./validator.js";var h=function(h){var b=u.createContext({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},removeError:function(){},clearErrorAll:function(){}}),C=function(){function u(r){var e;return a(this,u),e=o(this,u,[r]),s(e,"refForm",null),s(e,"mapContext",(function(){var r=e,t=r.setError,a=r.removeError,o=r.setModelState,s=r.clearErrorAll,n=r.onBlur,i=e.state;return{modelState:i.modelState,messageErrors:i.messageErrors,setError:t,onBlur:n,clearErrorAll:s,setModelState:o,removeError:a}})),s(e,"setModelState",(function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})})),s(e,"getValidate",(function(){var r=new S({});return f(r,null==h?void 0:h.validate,e.props.validate)})),s(e,"setError",(function(r,t){var a=s({},r,[{rule:g.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,a)})})),s(e,"removeError",(function(r){var a=t({},e.state.messageErrors);Array.isArray(r)?r.forEach((function(r){a[r]&&delete a[r]})):a[r]&&delete a[r],e.setState({messageErrors:a})})),s(e,"clearErrorAll",(function(){e.setState({messageErrors:{}})})),s(e,"onSubmit",function(){var r=n(i().m((function r(a){var o,s,n,l;return i().w((function(r){for(;;)switch(r.n){case 0:if(a.preventDefault(),o=new FormData(a.currentTarget),s=d(o),n=v(s),e.setState({modelState:n}),l=e.validate.run(n),e.props.onError&&Object.keys(l).length>0&&e.props.onError(l),!l){r.n=1;break}if(e.setState({messageErrors:l}),!(Object.keys(l).length>0)){r.n=1;break}return r.a(2);case 1:return r.n=2,e.props.onSubmit(n,a).catch((function(r){var a=E(r,n);e.setState({messageErrors:t(t({},e.state.messageErrors),a||{})})}));case 2:return r.a(2)}}),r)})));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",(function(r){if(e.refForm){var t=e.state.messageErrors,a=new FormData(e.refForm),o=d(a),s=v(o);e.setState({modelState:s});var n=p(r,s,t,e.validate)||{};e.setState({messageErrors:n})}})),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(u,m),e(u,[{key:"render",value:function(){var r,e=this;return l(c,t(t({component:"form",ref:function(r){return e.refForm=r},onSubmit:this.onSubmit},null===(r=this.props.slots)||void 0===r?void 0:r.formProps),{},{children:l(b.Provider,{value:this.mapContext(),children:this.props.children})}))}}])}();return{Form:C,Validator:null==h?void 0:h.validate,Context:b,mapContext:function(r){return l(b.Consumer,{children:r})}}};export{h as default};
|
|
2
|
+
//# sourceMappingURL=create.form-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.form-base.js","sources":["../../../src/form/create.form-base.tsx"],"sourcesContent":["import React, { Component, ComponentType, PropsWithChildren, ReactNode } from 'react'\r\nimport { Box, BoxProps } from '@mui/material'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorFromResponse, singleValidate, trimAllStrings, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseSlots {\r\n formProps?: Omit<BoxProps, 'ref' | 'onSubmit' | 'component'> & { [key: string]: any }\r\n}\r\n\r\nexport interface IFormBaseConfigs<T> {\r\n validate?: FormValidator<Partial<T>>\r\n dataTrimed?: boolean\r\n dataGetter?: (data: Partial<T>) => Partial<T>\r\n}\r\n\r\nexport interface IFormBaseParams<T> extends IFormBaseConfigs<T> {}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren, IFormBaseConfigs<T> {\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n onError?: (error: IPartialError<T>) => void\r\n slots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst createFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = React.createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n removeError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n return (\r\n <Box component='form' ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit} {...(this.props.slots?.formProps as any)}>\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, removeError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState, removeError }\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n removeError = (keyNames: keyof T | (keyof T)[]) => {\r\n const newErrors = { ...this.state.messageErrors }\r\n if (Array.isArray(keyNames)) {\r\n keyNames.forEach((key) => {\r\n if (newErrors[key]) delete newErrors[key]\r\n })\r\n } else {\r\n if (newErrors[keyNames]) delete newErrors[keyNames]\r\n }\r\n this.setState({ messageErrors: newErrors })\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const raw = convertFormDataToJson<T>(formData)\r\n // TODO: validate raw data\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const messageErrors = this.validate.run(trimmed) as IPartialError<T>\r\n\r\n if (this.props.onError && Object.keys(messageErrors).length > 0) {\r\n this.props.onError(messageErrors)\r\n }\r\n\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n await this.props.onSubmit(trimmed, e).catch((error) => {\r\n const messageError = getErrorFromResponse(error, trimmed)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n })\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const raw = convertFormDataToJson(formData)\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const error = singleValidate<T, Partial<T>>(keyName, trimmed, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default createFormBase\r\n"],"names":["createFormBase","params","FormBaseContext","React","createContext","setModelState","messageErrors","onBlur","setError","removeError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","obj","Object","assign","setState","defaultValidate","FormValidator","validateMerge","validate","keyName","message","error","rule","SingleRuleValidate","Custom","keyNames","newErrors","_objectSpread","Array","isArray","forEach","key","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","raw","trimmed","w","_context","n","preventDefault","FormData","currentTarget","convertFormDataToJson","trimAllStrings","run","onError","keys","length","a","onSubmit","messageError","getErrorFromResponse","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","value","_this$props$slots","_this3","_jsx","Box","component","ref","slots","formProps","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as r,createClass as n,classCallCheck as t,callSuper as e,defineProperty as o,asyncToGenerator as i,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as d,Box as p,Card as f,DialogTitle as h,DialogContent as m,DialogActions as v}from"@mui/material";import{fetchDelay as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{mapGlobalModalContext as C}from"../api-context/global-modal.js";var k=function(u){var d=function(){function d(r){var n;return t(this,d),n=e(this,d,[r]),o(n,"handleClickNo",(function(r){r.close(),n.props.onCancel&&n.props.onCancel()})),o(n,"handleClickYes",function(){var r=i(l().m((function r(t){var e;return l().w((function(r){for(;;)switch(r.n){case 0:if(n.props.onSubmit){r.n=1;break}return r.a(2);case 1:return r.p=1,n.setState({loading:!0}),r.n=2,g((function(){return n.props.onSubmit(n.props.data)}),700);case 2:t.close(),r.n=4;break;case 3:r.p=3,e=r.v,console.log(e);case 4:return r.p=4,n.setState({loading:!1}),r.f(4);case 5:return r.a(2)}}),r,null,[[1,3,4,5]])})));return function(n){return r.apply(this,arguments)}}()),n.state={loading:!1},n}return r(d,c),n(d,[{key:"render",value:function(){var r,n,t=this,e=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(n=this.props.title)&&void 0!==n?n:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(p,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:C((function(r){var n,i;return s(f,{children:[a(h,{id:"alert-dialog-title",children:o}),a(m,{sx:{minWidth:"300px"},children:e}),s(v,{children:[a(y,{disabled:t.state.loading,color:(null==u||null===(n=u.colors)||void 0===n?void 0:n.no)||"inherit",onClick:function(){return t.handleClickNo(r)},children:"No"}),a(y,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:t.state.loading,onClick:function(){return t.handleClickYes(r)},children:"Yes"})]})]})}))})}}])}();return d},y=u(d)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{k as default};
|
|
2
|
+
//# sourceMappingURL=create.form-comfirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.form-comfirm.js","sources":["../../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext, mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormComfirmParam<T> {\r\n title?: string\r\n content: (value?: T) => JSX.Element\r\n colors?: {\r\n yes?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n no?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n }\r\n}\r\n\r\nexport interface IFormComfirmProps<T> {\r\n data?: T\r\n title?: string\r\n onSubmit: (value?: T) => Promise<void>\r\n onCancel?: () => void\r\n}\r\n\r\nexport interface IFormComfirmState {\r\n loading?: boolean\r\n}\r\n\r\nconst CreateFormComfirm = function <T = any>(param?: IFormComfirmParam<T>): ComponentType<React.PropsWithChildren<IFormComfirmProps<T>>> {\r\n class FormConfirm extends Component<React.PropsWithChildren<IFormComfirmProps<T>>, IFormComfirmState> {\r\n constructor(props: IFormComfirmProps<T>) {\r\n super(props)\r\n this.state = { loading: false }\r\n }\r\n\r\n render() {\r\n const content = this.props.children || (param?.content ? param?.content(this.props.data) : undefined)\r\n const title = this.props.title ?? param?.title ?? 'Are you sure?'\r\n return (\r\n <Box sx={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {mapGlobalModalContext((context) => (\r\n <Card>\r\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\r\n <DialogContent sx={{ minWidth: '300px' }}>{content}</DialogContent>\r\n <DialogActions>\r\n <CustomButton disabled={this.state.loading} color={param?.colors?.no || 'inherit'} onClick={() => this.handleClickNo(context)}>\r\n No\r\n </CustomButton>\r\n <CustomButton color={param?.colors?.yes || 'error'} disabled={this.state.loading} onClick={() => this.handleClickYes(context)}>\r\n Yes\r\n </CustomButton>\r\n </DialogActions>\r\n </Card>\r\n ))}\r\n </Box>\r\n )\r\n }\r\n\r\n handleClickNo = (context: IGlobalModalContext) => {\r\n context.close()\r\n this.props.onCancel && this.props.onCancel()\r\n }\r\n\r\n handleClickYes = async (context: IGlobalModalContext) => {\r\n if (!this.props.onSubmit) return\r\n try {\r\n this.setState({ loading: true })\r\n await fetchDelay(() => this.props.onSubmit(this.props.data), 700)\r\n context.close()\r\n } catch (error) {\r\n console.log(error)\r\n } finally {\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n return FormConfirm\r\n}\r\nexport default CreateFormComfirm\r\n\r\nconst CustomButton = styled(Button)({\r\n textTransform: 'capitalize',\r\n fontWeight: 600,\r\n '&.MuiButton-colorInherit': {\r\n color: '#606060!important'\r\n }\r\n})\r\n"],"names":["CreateFormComfirm","param","FormConfirm","props","_this","_classCallCheck","_callSuper","_defineProperty","context","close","onCancel","_ref","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","n","onSubmit","a","p","setState","loading","fetchDelay","data","v","console","log","f","_x","apply","this","arguments","state","_inherits","Component","_createClass","key","value","_ref2","_this$props$title","_this2","content","children","undefined","title","_jsx","Box","sx","flex","display","alignItems","justifyContent","mapGlobalModalContext","_param$colors","_param$colors2","_jsxs","Card","DialogTitle","id","DialogContent","minWidth","DialogActions","CustomButton","disabled","color","colors","no","onClick","handleClickNo","yes","handleClickYes","styled","Button","textTransform","fontWeight"],"mappings":"gkBAyBA,IAAMA,EAAoB,SAAmBC,GAA4B,IACjEC,aACJ,SAAAA,EAAYC,GAA2B,IAAAC,EAEN,OAFMC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA2BE,iBAAA,SAACI,GACfA,EAAQC,QACRL,EAAKD,MAAMO,UAAYN,EAAKD,MAAMO,cACnCH,EAAAH,EAAA,iBAAA,WAAA,IAAAO,EAAAC,EAAAC,IAAAC,GAEgB,SAAAC,EAAOP,GAA4B,IAAAQ,EAAA,OAAAH,IAAAI,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,GAC7Cf,EAAKD,MAAMiB,SAAQ,CAAAF,EAAAC,EAAA,EAAA,KAAA,CAAA,OAAAD,EAAAG,EAAA,GAAA,KAAA,EAEU,OAFVH,EAAAI,EAAA,EAEtBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAON,EAAAC,EAAA,EAC1BM,GAAW,WAAA,OAAMrB,EAAKD,MAAMiB,SAAShB,EAAKD,MAAMuB,KAAK,GAAE,KAAI,KAAA,EACjElB,EAAQC,QAAOS,EAAAC,EAAA,EAAA,MAAA,KAAA,EAAAD,EAAAI,EAAA,EAAAN,EAAAE,EAAAS,EAEfC,QAAQC,IAAGb,GAAO,KAAA,EAEe,OAFfE,EAAAI,EAAA,EAElBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAQN,EAAAY,EAAA,GAAA,KAAA,EAAA,OAAAZ,EAAAG,EAAA,GAAA,GAAAN,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,SAEpC,OAAA,SAAAgB,GAAA,OAAApB,EAAAqB,MAAAC,KAAAC,UAAA,CAAA,CAbA,IA7BC9B,EAAK+B,MAAQ,CAAEX,SAAS,GAAOpB,CACjC,CAAC,OAAAgC,EAAAlC,EAJuBmC,GAIvBC,EAAApC,EAAA,CAAA,CAAAqC,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EAAAC,EAAAV,KACEW,EAAUX,KAAK9B,MAAM0C,WAAa5C,SAAAA,EAAO2C,QAAU3C,aAAK,EAALA,EAAO2C,QAAQX,KAAK9B,MAAMuB,WAAQoB,GACrFC,EAAwC,QAAnCN,EAAmB,QAAnBC,EAAGT,KAAK9B,MAAM4C,aAAK,IAAAL,EAAAA,EAAIzC,aAAK,EAALA,EAAO8C,aAAK,IAAAN,EAAAA,EAAI,gBAClD,OACEO,EAACC,EAAG,CAACC,GAAI,CAAEC,KAAM,EAAGC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,UACxET,SAAAU,GAAsB,SAAC/C,GAAO,IAAAgD,EAAAC,EAAA,OAC7BC,EAACC,EACC,CAAAd,SAAA,CAAAG,EAACY,EAAW,CAACC,GAAG,qBAAoBhB,SAAEE,IACtCC,EAACc,EAAc,CAAAZ,GAAI,CAAEa,SAAU,kBAAYnB,IAC3Cc,EAACM,EAAa,CAAAnB,SAAA,CACZG,EAACiB,GAAaC,SAAUvB,EAAKR,MAAMX,QAAS2C,OAAOlE,iBAAKuD,EAALvD,EAAOmE,cAAM,IAAAZ,OAAA,EAAbA,EAAea,KAAM,UAAWC,QAAS,WAAF,OAAQ3B,EAAK4B,cAAc/D,EAAQ,EAAAqC,SAAA,OAG7HG,EAACiB,EAAY,CAACE,OAAOlE,iBAAKwD,EAALxD,EAAOmE,cAAM,IAAAX,OAAA,EAAbA,EAAee,MAAO,QAASN,SAAUvB,EAAKR,MAAMX,QAAS8C,QAAS,WAAF,OAAQ3B,EAAK8B,eAAejE,EAAQ,EAE9GqC,SAAA,aAGpB,KAGP,IAAC,IAoBH,OAAO3C,CACT,EAGM+D,EAAeS,EAAOC,EAAPD,CAAe,CAClCE,cAAe,aACfC,WAAY,IACZ,2BAA4B,CAC1BV,MAAO"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as o,createClass as r,objectSpread2 as e,classCallCheck as n,callSuper as t,defineProperty as l,asyncToGenerator as i,regenerator as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as d}from"react/jsx-runtime";import{Fragment as u,Component as p}from"react";import{Grid as c}from"@mui/material";import{cleanObject as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{ContentWrap as m,CreateFormBottomBar as f}from"./create.form-grid-layout.units.js";import g from"./create.input.js";import b from"./create.form-base.js";import{mapGlobalModalContext as h}from"../api-context/global-modal.js";var S=function(S){var F=b(),y=f(),C=g({maxLength:250}),E=function(){function f(o){var r;return n(this,f),r=t(this,f,[o]),l(r,"renderFormFieldElement",(function(o,n){var t,l,i,s=r.props.data,a=null!==(t=n.inputElement)&&void 0!==t?t:C,u={data:s,onBlur:o.onBlur,messageErrors:o.messageErrors,name:n.key,label:n.label,placeholder:n.placeholder,disabled:!(null===(l=r.configMerged.disabledFields)||void 0===l||!l[n.key])||void 0,defaultValue:null!==(i=null==s?void 0:s[n.key])&&void 0!==i?i:null==n?void 0:n.defaultValue,formContext:o};return d(a,e({},v(u)))})),l(r,"loading",(function(){return r.setState({loadding:!0})})),l(r,"unloading",(function(){return r.setState({loadding:!1})})),l(r,"onSubmit",function(){var o=i(s().m((function o(e,n){var t,l,i,a,d,u,p,c,v;return s().w((function(o){for(;;)switch(o.n){case 0:return a=r.props.slots,d=null!==(t=null!==(l=null===(i=r.props.slots)||void 0===i?void 0:i.preSubmit)&&void 0!==l?l:S.preSubmit)&&void 0!==t?t:r.preSubmit,u=d(e,r.props.data),o.p=1,r.loading(),null===(p=r.abortController)||void 0===p||p.abort(),r.abortController=new AbortController,o.n=2,r.props.onSubmit(u,null===(c=r.abortController)||void 0===c?void 0:c.signal);case 2:null!=a&&a.closeState&&!1===a.closeState.Success||(n&&n(),r.props.onClose&&r.props.onClose()),o.n=4;break;case 3:o.p=3,v=o.v,null!=a&&a.closeState&&!0===a.closeState.Fail&&(n&&n(),r.props.onClose&&r.props.onClose()),r.props.onError&&r.props.onError(v);case 4:return o.p=4,r.unloading(),o.f(4);case 5:return o.a(2)}}),o,null,[[1,3,4,5]])})));return function(r,e){return o.apply(this,arguments)}}()),l(r,"preSubmit",(function(o){return o})),l(r,"getFormSlots",(function(){var o,n=r.state.loadding,t=((null===(o=r.props.slots)||void 0===o?void 0:o.formSlots)||{}).formProps;return{formProps:e(e({},t),{},{sx:e(e({},r.props.sx),{},{opacity:n?.7:1,pointerEvents:n?"none":"auto"})})}})),r.state={loadding:!1},r}return o(f,p),r(f,[{key:"configMerged",get:function(){var o,r,e,n,t,l,i,s,a;return{getHiddenFields:null!==(o=null!==(r=null===(e=this.props.slots)||void 0===e?void 0:e.getHiddenFields)&&void 0!==r?r:S.getHiddenFields)&&void 0!==o?o:function(){return{}},hiddenFields:null!==(n=null!==(t=null===(l=this.props.slots)||void 0===l?void 0:l.hiddenFields)&&void 0!==t?t:S.hiddenFields)&&void 0!==n?n:{},disabledFields:null!==(i=null!==(s=null===(a=this.props.slots)||void 0===a?void 0:a.disabledFields)&&void 0!==s?s:S.disabledFields)&&void 0!==i?i:{}}}},{key:"render",value:function(){var o,r,n,t=this,l=this.props,i=l.slots,s=l.data,p=null!==(o=null!==(r=null==S?void 0:S.action)&&void 0!==r?r:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:y;return h((function(o){var r,n=o.close;return a(F.Form,{validate:S.validate,onSubmit:function(o){return t.onSubmit(o,n)},slots:t.getFormSlots(),onError:t.props.onSubmitError,children:[a(m,e(e({},null===(r=t.props)||void 0===r||null===(r=r.slots)||void 0===r?void 0:r.contentProps),{},{children:[(null==i?void 0:i.contentBefore)&&(null==i?void 0:i.contentBefore),null==S?void 0:S.contentBefore,F.mapContext((function(o){var r=t.configMerged,n=r.getHiddenFields,l=r.hiddenFields,i=e(e({},l),n(o.modelState||{},s));return d(c,{container:!0,spacing:2,children:S.configs.map((function(r,n){var l=!!i[r.key]||void 0;return d(u,l?{}:{children:d(c,e(e({item:!0,xs:12},r.sizes),{},{children:t.renderFormFieldElement(o,r)}))},r.key.toString()+n)}))})})),null==S?void 0:S.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter)]})),F.mapContext((function(o){var r;return d(p,{data:t.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(r=t.props.slots)||void 0===r?void 0:r.actionBefore})}))]})}))}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return E};export{S as default};
|
|
2
|
+
//# sourceMappingURL=create.form-grid-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.form-grid-layout.js","sources":["../../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { cleanObject } from '../utils'\r\nimport { IFormBase, IFormBaseContext, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator, { IPartialError } from './validator'\r\nimport createInput from './create.input'\r\nimport createFormBase, { IFormBaseSlots } from './create.form-base'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n sizes?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type IPreSubmitEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutMergedConfigs<T> {\r\n hiddenFields?: Partial<Record<keyof T, boolean>>\r\n getHiddenFields?: (state: Partial<T>, model?: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n disabledFields?: Partial<Record<keyof T, boolean>>\r\n}\r\n\r\nexport interface IFormGridLayoutSlots<T> extends IFormGridLayoutMergedConfigs<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n // getDisabledFields?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n preSubmit?: IPreSubmitEvent<T>\r\n formSlots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onSubmitError?: (error: IPartialError<T>) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = createFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = createInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged(): Required<IFormGridLayoutMergedConfigs<T>> {\r\n return {\r\n getHiddenFields: this.props.slots?.getHiddenFields ?? params.getHiddenFields ?? (() => ({})),\r\n hiddenFields: this.props.slots?.hiddenFields ?? params.hiddenFields ?? {},\r\n disabledFields: this.props.slots?.disabledFields ?? params.disabledFields ?? {}\r\n }\r\n }\r\n\r\n render() {\r\n const { slots, data } = this.props\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form\r\n validate={params.validate}\r\n onSubmit={(v) => this.onSubmit(v, close)}\r\n slots={this.getFormSlots()}\r\n onError={this.props.onSubmitError}\r\n >\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n {FormBaseInstance.mapContext((context) => {\r\n const { getHiddenFields, hiddenFields } = this.configMerged\r\n const finalHiddenFields: Partial<Record<keyof T, boolean>> = { ...hiddenFields, ...getHiddenFields(context.modelState || {}, data) }\r\n return (\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const isHidden: boolean | undefined = finalHiddenFields[config.key] ? true : undefined\r\n if (isHidden) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.sizes}>\r\n {this.renderFormFieldElement(context, config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n )\r\n })}\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n </ContentWrap>\r\n {FormBaseInstance.mapContext((context) => (\r\n <BottomBar data={this.props.data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={this.props.slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n ))\r\n }\r\n\r\n renderFormFieldElement = (context: IFormBaseContext<T>, config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n const obj: IFormInputBase<T, any> = {\r\n data,\r\n onBlur: context.onBlur,\r\n messageErrors: context.messageErrors,\r\n name: config.key,\r\n label: config.label,\r\n placeholder: config.placeholder,\r\n disabled: this.configMerged.disabledFields?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n formContext: context\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.preSubmit ?? params.preSubmit ?? this.preSubmit\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n preSubmit: IPreSubmitEvent<T> = (value) => value\r\n\r\n getFormSlots = (): IFormBaseSlots => {\r\n const isLoading = this.state.loadding\r\n const { formProps } = this.props.slots?.formSlots || {}\r\n return {\r\n formProps: {\r\n ...formProps,\r\n sx: {\r\n ...this.props.sx,\r\n opacity: isLoading ? 0.7 : 1,\r\n pointerEvents: isLoading ? 'none' : 'auto'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","createFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","createInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","context","config","_config$inputElement","_this$configMerged$di","_data$config$key","data","ElementComponent","inputElement","obj","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","disabledFields","undefined","defaultValue","formContext","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","value","close","_ref2","_this$props$slots$pre","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","n","preSubmit","p","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","_this$props$slots2","isLoading","state","formProps","formSlots","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_ref4","_this$props$slots$get","_this$props$slots3","_ref5","_this$props$slots$hid","_this$props$slots4","_ref6","_this$props$slots$dis","_this$props$slots5","getHiddenFields","hiddenFields","_ref7","_params$action","_this$props$slots6","_this2","_this$props","BottomBar","action","mapGlobalModalContext","_ref8","_this2$props","_jsxs","Form","validate","getFormSlots","onSubmitError","children","ContentWrap","contentProps","contentBefore","mapContext","_this2$configMerged","finalHiddenFields","modelState","Grid","container","spacing","configs","map","index","isHidden","Fragment","item","xs","sizes","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.form-grid-layout.units.js","sources":["../../../src/form/create.form-grid-layout.units.tsx"],"sourcesContent":["import React, { FC, ReactNode } from 'react'\r\nimport { Box, Button, colors, styled } from '@mui/material'\r\nimport { IFormBase } from './types'\r\n\r\nexport const ContentWrap = styled(Box)({\r\n padding: '16px 12px 3px',\r\n maxHeight: `calc(100vh - ${48 * 2 + 12 * 2}px)`,\r\n overflowY: 'auto',\r\n overflowX: 'hidden'\r\n})\r\n\r\nexport interface IFormBottomBarProps<T> extends IFormBase<T> {\r\n before?: ReactNode\r\n}\r\n\r\nexport function CreateFormBottomBar<T>() {\r\n const FormBottomBar: FC<IFormBottomBarProps<T>> = (props) => (\r\n <FormBottomBarWrap className='bottom-bar'>\r\n <Box sx={{ flex: 1 }}>{props.before}</Box>\r\n <Button variant='contained' type='submit' size='small'>\r\n Submit\r\n </Button>\r\n </FormBottomBarWrap>\r\n )\r\n return FormBottomBar\r\n}\r\n\r\nexport const FormBottomBarWrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 12px',\r\n boxShadow: 'rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px',\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: colors.common.white,\r\n zIndex: 1,\r\n height: '48px'\r\n})\r\n"],"names":["ContentWrap","styled","Box","padding","maxHeight","concat","overflowY","overflowX","CreateFormBottomBar","props","_jsxs","FormBottomBarWrap","className","_jsx","sx","flex","children","before","Button","variant","type","size","display","alignItems","boxShadow","position","bottom","backgroundColor","colors","common","white","zIndex","height"],"mappings":"8HAIaA,EAAcC,EAAOC,EAAPD,CAAY,CACrCE,QAAS,gBACTC,UAAS,gBAAAC,OAAkB,IAAoB,OAC/CC,UAAW,OACXC,UAAW,oBAOGC,IASd,OARkD,SAACC,GAAK,OACtDC,EAACC,EAAiB,CAACC,UAAU,uBAC3BC,EAACX,GAAIY,GAAI,CAAEC,KAAM,GAAMC,SAAAP,EAAMQ,SAC7BJ,EAACK,EAAO,CAAAC,QAAQ,YAAYC,KAAK,SAASC,KAAK,QAAOL,SAAA,aAIzD,CAEH,KAEaL,EAAoBV,EAAOC,EAAPD,CAAY,CAC3CqB,QAAS,OACTC,WAAY,SACZpB,QAAS,SACTqB,UAAW,wFACXC,SAAU,SACVC,OAAQ,EACRC,gBAAiBC,EAAOC,OAAOC,MAC/BC,OAAQ,EACRC,OAAQ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{objectSpread2 as e,inherits as r,createClass as n,classCallCheck as t,callSuper as o,defineProperty as i,asyncToGenerator as a,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as u}from"react/jsx-runtime";import{Component as p}from"react";import{styled as d,Typography as g,Box as f,TextField as m}from"@mui/material";import c from"@mui/icons-material/Download";import{getErrorMessage as h}from"./helpers.js";import{tryParseCsvFileToArray as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";function C(d){var C=function(){function C(r){var n;return t(this,C),n=o(this,C,[r]),i(n,"mergeConfigsCache",{name:"",onBlur:function(){},messageErrors:{}}),i(n,"refInput",null),i(n,"refTextFiled",null),i(n,"getTextFieldProps",(function(){var r=n.props.label,t=h(n.mergeConfigs.messageErrors,n.mergeConfigs.name);return e({label:r,error:t.error,helperText:t.message,type:"file",variant:"outlined",fullWidth:!0,onChange:n.handleChange,inputProps:{accept:"text/csv"},InputLabelProps:{shrink:n.mergeConfigs.labelShrink}},n.mergeConfigs.textFieldProps)})),i(n,"upgradeMergeConfigs",(function(e){var r,n,t,o,i,a,l,s,u=e.name,p=e.label,g=e.onBlur,f=e.messageErrors;return{textFieldProps:Object.assign({},null==d?void 0:d.textFieldProps,null===(r=e.slots)||void 0===r?void 0:r.textFieldProps),wrapProps:Object.assign({},null==d?void 0:d.wrapProps,null===(n=e.slots)||void 0===n?void 0:n.wrapProps),name:u,onBlur:g||function(){},messageErrors:f||{},downloadSampleUrl:null!==(t=null===(o=e.slots)||void 0===o?void 0:o.downloadSampleUrl)&&void 0!==t?t:null==d?void 0:d.downloadSampleUrl,instructionalText:null!==(i=null===(a=e.slots)||void 0===a?void 0:a.instructionalText)&&void 0!==i?i:null==d?void 0:d.instructionalText,labelShrink:!1!==(null!==(l=null===(s=e.slots)||void 0===s?void 0:s.labelShrink)&&void 0!==l?l:null==d?void 0:d.labelShrink)&&!!p}})),i(n,"handleChange",function(){var e=a(l().m((function e(r){var t,o,i,a;return l().w((function(e){for(;;)switch(e.n){case 0:if(o=null===(t=r.target.files)||void 0===t?void 0:t[0]){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v(o);case 2:i=e.v,n.refInput&&(n.refInput.value=JSON.stringify(i)),n.setState({parsedData:i},(function(){n.props.onChange&&n.props.onChange(i),n.mergeConfigs.onBlur(n.mergeConfigs.name)})),e.n=4;break;case 3:e.p=3,a=e.v,console.error("Error parsing CSV:",a),n.mergeConfigs.onBlur(n.mergeConfigs.name);case 4:return e.a(2)}}),e,null,[[1,3]])})));return function(r){return e.apply(this,arguments)}}()),n.mergeConfigsCache=n.upgradeMergeConfigs(r),n.state={parsedData:[]},n}return r(C,p),n(C,[{key:"mergeConfigs",get:function(){return this.mergeConfigsCache}},{key:"inputValue",get:function(){return this.state.parsedData.length>0?JSON.stringify(this.state.parsedData):""}},{key:"shouldComponentUpdate",value:function(e){return e!==this.props&&(this.mergeConfigsCache=this.upgradeMergeConfigs(e)),!0}},{key:"render",value:function(){var r,n,t=this;return u(f,e(e({},this.mergeConfigs.wrapProps),{},{children:[this.mergeConfigs.downloadSampleUrl&&u(f,{sx:{display:"flex",alignItems:"center",mb:"10px"},children:[s(g,{variant:"subtitle2",component:"span",children:null!==(r=this.mergeConfigs.instructionalText)&&void 0!==r?r:"Metadata file, please fill out the form we provide."}),u(x,{href:this.mergeConfigs.downloadSampleUrl,children:[s("span",{children:" Download sample"}),s(c,{fontSize:"small"})]})]}),s("input",{hidden:!0,name:null===(n=this.props.name)||void 0===n?void 0:n.toString(),type:"text",ref:function(e){return t.refInput=e},defaultValue:""}),s(m,e(e({},this.getTextFieldProps()),{},{inputRef:function(e){return t.refTextFiled=e}}))]}))}}])}();return C}var x=d((function(r){return s(g,e({variant:"subtitle2",component:"a",target:"_blank",download:!0},r))}))((function(e){var r=e.theme;return{display:"flex",alignItems:"center",color:r.palette.primary.light,cursor:"pointer",fontWeight:600,marginLeft:"6px",gap:"4px",transition:"all 0.3s ease","&:hover":{textDecoration:"underline",color:r.palette.primary.dark}}}));export{C as createInputFileCsvLocalParser};
|
|
2
|
+
//# sourceMappingURL=create.input-file.csv-local-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.input-file.csv-local-parser.js","sources":["../../../src/form/create.input-file.csv-local-parser.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled, TextField, TextFieldProps, Typography, TypographyProps } from '@mui/material'\r\nimport DownloadIcon from '@mui/icons-material/Download'\r\nimport { getErrorMessage } from './helpers'\r\nimport { tryParseCsvFileToArray } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\n\r\nexport interface IInputFileCsvLocalParserSlots {\r\n /**\r\n * The URL of the sample CSV file that users can download.\r\n * If provided, a \"Download sample\" link will be displayed.\r\n * Example: '/sample.csv' or 'https://example.com/sample.csv'\r\n */\r\n downloadSampleUrl?: string\r\n /**\r\n * Instructional text displayed alongside the download link or file input.\r\n * Useful for guiding users on how to use or fill out the CSV file.\r\n */\r\n instructionalText?: string\r\n /**\r\n * Props to customize the TextField used for uploading the CSV file.\r\n * Allows customization of appearance and behavior (e.g., placeholder, onChange, disabled).\r\n */\r\n textFieldProps?: TextFieldProps\r\n /**\r\n * Props passed to the wrapper element (typically a Box).\r\n * Useful for customizing layout styles such as margin, padding, or display.\r\n */\r\n wrapProps?: BoxProps\r\n /**\r\n * Whether the label should shrink when displayed.\r\n * Defaults to `true` if a label is present to prevent overlap.\r\n * @default true\r\n */\r\n labelShrink?: boolean\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserParams extends IInputFileCsvLocalParserSlots {}\r\n\r\nexport interface IInputFileCsvLocalParserProps<T, C> extends IFormInputBase<T, IInputFileCsvLocalParserSlots> {\r\n onChange?: (value: C[]) => void\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserState<C> {\r\n parsedData: C[]\r\n}\r\n\r\ntype IPickConfigs<T> = Required<Pick<IFormBase<T>, 'onBlur' | 'messageErrors'>>\r\n\r\ninterface IMergeConfigs<T> extends IPickConfigs<T>, IInputFileCsvLocalParserSlots {\r\n name: keyof T\r\n}\r\n\r\n/**\r\n * Creates a React component that renders a file input specifically for CSV files,\r\n * parses the selected file locally into a structured array, and integrates with a form system.\r\n *\r\n * @template T - The main data model used in the form. Represents the shape of the overall form data.\r\n * @template C - The type of each individual item parsed from the CSV file.\r\n *\r\n * @param params - Optional slot parameters to customize the appearance or behavior of the text field.\r\n * @returns A React component configured for uploading and parsing local CSV files.\r\n */\r\nexport function createInputFileCsvLocalParser<T, C>(params?: IInputFileCsvLocalParserParams): ComponentType<IInputFileCsvLocalParserProps<T, C>> {\r\n class InputFileCsvLocalParser extends Component<IInputFileCsvLocalParserProps<T, C>, IInputFileCsvLocalParserState<C>> {\r\n private mergeConfigsCache: IMergeConfigs<T> = { name: '' as keyof T, onBlur: () => {}, messageErrors: {} }\r\n constructor(props: IInputFileCsvLocalParserProps<T, C>) {\r\n super(props)\r\n this.mergeConfigsCache = this.upgradeMergeConfigs(props)\r\n this.state = { parsedData: [] }\r\n }\r\n\r\n get mergeConfigs(): IMergeConfigs<T> {\r\n return this.mergeConfigsCache\r\n }\r\n\r\n get inputValue() {\r\n return this.state.parsedData.length > 0 ? JSON.stringify(this.state.parsedData) : ''\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputFileCsvLocalParserProps<T, C>>): boolean {\r\n if (nextProps !== this.props) this.mergeConfigsCache = this.upgradeMergeConfigs(nextProps)\r\n return true\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refTextFiled: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <Box {...this.mergeConfigs.wrapProps}>\r\n {this.mergeConfigs.downloadSampleUrl && (\r\n <Box sx={{ display: 'flex', alignItems: 'center', mb: '10px' }}>\r\n <Typography variant='subtitle2' component='span'>\r\n {this.mergeConfigs.instructionalText ?? 'Metadata file, please fill out the form we provide.'}\r\n </Typography>\r\n <DownloadButton href={this.mergeConfigs.downloadSampleUrl}>\r\n <span> Download sample</span>\r\n <DownloadIcon fontSize='small' />\r\n </DownloadButton>\r\n </Box>\r\n )}\r\n <input hidden name={this.props.name?.toString()} type='text' ref={(ref) => (this.refInput = ref)} defaultValue='' />\r\n <TextField {...this.getTextFieldProps()} inputRef={(ref) => (this.refTextFiled = ref)} />\r\n </Box>\r\n )\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { label } = this.props\r\n const eMessage = getErrorMessage(this.mergeConfigs.messageErrors, this.mergeConfigs.name)\r\n const mergedProps: TextFieldProps = {\r\n label,\r\n error: eMessage.error,\r\n helperText: eMessage.message,\r\n type: 'file',\r\n variant: 'outlined',\r\n fullWidth: true,\r\n onChange: this.handleChange,\r\n inputProps: { accept: 'text/csv' },\r\n InputLabelProps: { shrink: this.mergeConfigs.labelShrink },\r\n ...this.mergeConfigs.textFieldProps\r\n }\r\n return mergedProps\r\n }\r\n\r\n upgradeMergeConfigs = (currentProps: IInputFileCsvLocalParserProps<T, C>): IMergeConfigs<T> => {\r\n const { name, label, onBlur, messageErrors } = currentProps\r\n return {\r\n textFieldProps: Object.assign({}, params?.textFieldProps, currentProps.slots?.textFieldProps),\r\n wrapProps: Object.assign({}, params?.wrapProps, currentProps.slots?.wrapProps),\r\n name: name as keyof T,\r\n onBlur: onBlur || (() => {}),\r\n messageErrors: messageErrors || {},\r\n downloadSampleUrl: currentProps.slots?.downloadSampleUrl ?? params?.downloadSampleUrl,\r\n instructionalText: currentProps.slots?.instructionalText ?? params?.instructionalText,\r\n labelShrink: (currentProps.slots?.labelShrink ?? params?.labelShrink) !== false && !!label\r\n }\r\n }\r\n\r\n handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0]\r\n if (!file) return\r\n try {\r\n const result = await tryParseCsvFileToArray(file)\r\n if (this.refInput) this.refInput.value = JSON.stringify(result)\r\n this.setState({ parsedData: result as C[] }, () => {\r\n this.props.onChange && this.props.onChange(result as C[])\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n })\r\n } catch (err) {\r\n console.error('Error parsing CSV:', err)\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n }\r\n }\r\n }\r\n return InputFileCsvLocalParser\r\n}\r\n\r\nconst DownloadButton = styled((p: TypographyProps & { href: string }) => (\r\n <Typography variant='subtitle2' component='a' target='_blank' download {...p} />\r\n))(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: theme.palette.primary.light,\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n marginLeft: '6px',\r\n gap: '4px',\r\n transition: 'all 0.3s ease',\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.dark\r\n }\r\n}))\r\n"],"names":["createInputFileCsvLocalParser","params","InputFileCsvLocalParser","props","_this","_classCallCheck","_callSuper","_defineProperty","name","onBlur","messageErrors","label","eMessage","getErrorMessage","mergeConfigs","_objectSpread","error","helperText","message","type","variant","fullWidth","onChange","handleChange","inputProps","accept","InputLabelProps","shrink","labelShrink","textFieldProps","currentProps","_currentProps$slots","_currentProps$slots2","_currentProps$slots$d","_currentProps$slots3","_currentProps$slots$i","_currentProps$slots4","_currentProps$slots$l","_currentProps$slots5","Object","assign","slots","wrapProps","downloadSampleUrl","instructionalText","_ref","_asyncToGenerator","_regenerator","m","_callee","e","_e$target$files","file","result","_t","w","_context","n","target","files","a","p","tryParseCsvFileToArray","v","refInput","value","JSON","stringify","setState","parsedData","console","_x","apply","this","arguments","mergeConfigsCache","upgradeMergeConfigs","state","_inherits","Component","_createClass","key","get","length","nextProps","_this$mergeConfigs$in","_this$props$name","_this2","_jsxs","Box","children","sx","display","alignItems","mb","_jsx","Typography","component","DownloadButton","href","DownloadIcon","fontSize","hidden","toString","ref","defaultValue","TextField","getTextFieldProps","inputRef","refTextFiled","styled","download","_ref3","theme","color","palette","primary","light","cursor","fontWeight","marginLeft","gap","transition","textDecoration","dark"],"mappings":"qkBA+DM,SAAUA,EAAoCC,GAAuC,IACnFC,aAEJ,SAAAA,EAAYC,GAA0C,IAAAC,EAGrB,OAHqBC,OAAAH,GACpDE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAFgC,oBAAA,CAAEI,KAAM,GAAeC,OAAQ,WAAQ,EAAEC,cAAe,CAAA,IAAIH,EAAAH,EAAA,WAoBtE,MAAIG,EAAAH,EAAA,eACA,MAAIG,EAAAH,EAAA,qBAqBxB,WAClB,IAAQO,EAAUP,EAAKD,MAAfQ,MACFC,EAAWC,EAAgBT,EAAKU,aAAaJ,cAAeN,EAAKU,aAAaN,MAapF,OAZiBO,EAAA,CACfJ,MAAAA,EACAK,MAAOJ,EAASI,MAChBC,WAAYL,EAASM,QACrBC,KAAM,OACNC,QAAS,WACTC,WAAW,EACXC,SAAUlB,EAAKmB,aACfC,WAAY,CAAEC,OAAQ,YACtBC,gBAAiB,CAAEC,OAAQvB,EAAKU,aAAac,cAC1CxB,EAAKU,aAAae,mBAGxBtB,EAAAH,EAEqB,uBAAA,SAAC0B,GAAuE,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpF9B,EAAuCsB,EAAvCtB,KAAMG,EAAiCmB,EAAjCnB,MAAOF,EAA0BqB,EAA1BrB,OAAQC,EAAkBoB,EAAlBpB,cAC7B,MAAO,CACLmB,eAAgBU,OAAOC,OAAO,GAAIvC,aAAAA,EAAAA,EAAQ4B,eAAkCE,QAApBA,EAAED,EAAaW,aAAbV,IAAkBA,OAAlBA,EAAAA,EAAoBF,gBAC9Ea,UAAWH,OAAOC,OAAO,GAAIvC,aAAAA,EAAAA,EAAQyC,UAA6BV,QAApBA,EAAEF,EAAaW,aAAbT,IAAkBA,OAAlBA,EAAAA,EAAoBU,WACpElC,KAAMA,EACNC,OAAQA,GAAW,WAAS,EAC5BC,cAAeA,GAAiB,CAAE,EAClCiC,kBAAwD,QAAvCV,EAAoBC,QAApBA,EAAEJ,EAAaW,aAAbP,IAAkBA,OAAlBA,EAAAA,EAAoBS,yBAAiB,IAAAV,EAAAA,EAAIhC,aAAM,EAANA,EAAQ0C,kBACpEC,kBAAwD,QAAvCT,EAAoBC,QAApBA,EAAEN,EAAaW,aAAbL,IAAkBA,OAAlBA,EAAAA,EAAoBQ,yBAAiB,IAAAT,EAAAA,EAAIlC,aAAM,EAANA,EAAQ2C,kBACpEhB,aAA0E,KAA7BS,QAAhCA,EAAmB,QAAnBC,EAACR,EAAaW,aAAK,IAAAH,OAAA,EAAlBA,EAAoBV,mBAAWS,IAAAA,EAAAA,EAAIpC,aAAM,EAANA,EAAQ2B,gBAA4BjB,MAExFJ,EAAAH,EAAA,eAAA,WAAA,IAAAyC,EAAAC,EAAAC,IAAAC,GAEc,SAAAC,EAAOC,GAAsC,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAP,IAAAQ,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAC1B,GAA1BL,EAAqB,QAAjBD,EAAGD,EAAEQ,OAAOC,aAAK,IAAAR,OAAA,EAAdA,EAAiB,GACrB,CAAAK,EAAAC,EAAA,EAAA,KAAA,CAAA,OAAAD,EAAAI,EAAA,GAAA,KAAA,EAAA,OAAAJ,EAAAK,EAAA,EAAAL,EAAAC,EAAA,EAEcK,EAAuBV,GAAK,KAAA,EAA3CC,EAAMG,EAAAO,EACR3D,EAAK4D,WAAU5D,EAAK4D,SAASC,MAAQC,KAAKC,UAAUd,IACxDjD,EAAKgE,SAAS,CAAEC,WAAYhB,IAAiB,WAC3CjD,EAAKD,MAAMmB,UAAYlB,EAAKD,MAAMmB,SAAS+B,GAC3CjD,EAAKU,aAAaL,OAAOL,EAAKU,aAAaN,KAC7C,IAAEgD,EAAAC,EAAA,EAAA,MAAA,KAAA,EAAAD,EAAAK,EAAA,EAAAP,EAAAE,EAAAO,EAEFO,QAAQtD,MAAM,qBAAoBsC,GAClClD,EAAKU,aAAaL,OAAOL,EAAKU,aAAaN,MAAK,KAAA,EAAA,OAAAgD,EAAAI,EAAA,GAAA,GAAAX,EAAA,KAAA,CAAA,CAAA,EAAA,SAEnD,OAAA,SAAAsB,GAAA,OAAA1B,EAAA2B,MAAAC,KAAAC,UAAA,CAAA,CAhBA,IArECtE,EAAKuE,kBAAoBvE,EAAKwE,oBAAoBzE,GAClDC,EAAKyE,MAAQ,CAAER,WAAY,IAAIjE,CACjC,CAAC,OAAA0E,EAAA5E,EANmC6E,GAMnCC,EAAA9E,EAAA,CAAA,CAAA+E,IAAA,eAAAC,IAED,WACE,OAAOT,KAAKE,iBACd,GAAC,CAAAM,IAAA,aAAAC,IAED,WACE,OAAOT,KAAKI,MAAMR,WAAWc,OAAS,EAAIjB,KAAKC,UAAUM,KAAKI,MAAMR,YAAc,EACpF,GAAC,CAAAY,IAAA,wBAAAhB,MAED,SAAsBmB,GAEpB,OADIA,IAAcX,KAAKtE,QAAOsE,KAAKE,kBAAoBF,KAAKG,oBAAoBQ,KACzE,CACT,GAAC,CAAAH,IAAA,SAAAhB,MAID,WAAM,IAAAoB,EAAAC,EAAAC,EAAAd,KACJ,OACEe,EAACC,EAAG1E,EAAAA,EAAA,GAAK0D,KAAK3D,aAAa4B,WAAS,GAAA,CACjCgD,SAAA,CAAAjB,KAAK3D,aAAa6B,mBACjB6C,EAACC,EAAG,CAACE,GAAI,CAAEC,QAAS,OAAQC,WAAY,SAAUC,GAAI,QAAQJ,SAAA,CAC5DK,EAACC,EAAW,CAAA5E,QAAQ,YAAY6E,UAAU,OAAMP,SACVL,QADUA,EAC7CZ,KAAK3D,aAAa8B,yBAAiByC,IAAAA,EAAAA,EAAI,wDAE1CG,EAACU,GAAeC,KAAM1B,KAAK3D,aAAa6B,kBACtC+C,SAAA,CAAAK,EAAA,OAAA,CAAAL,SAAA,qBACAK,EAACK,EAAa,CAAAC,SAAS,gBAI7BN,EAAO,QAAA,CAAAO,QAAO,EAAA9F,KAAqB,QAAjB8E,EAAEb,KAAKtE,MAAMK,YAAX8E,IAAeA,OAAfA,EAAAA,EAAiBiB,WAAYpF,KAAK,OAAOqF,IAAK,SAACA,GAAG,OAAMjB,EAAKvB,SAAWwC,CAAI,EAAEC,aAAa,KAC/GV,EAACW,EAAS3F,EAAAA,EAAK,CAAA,EAAA0D,KAAKkC,qBAAmB,GAAA,CAAEC,SAAU,SAACJ,GAAG,OAAMjB,EAAKsB,aAAeL,CAAG,QAG1F,IAAC,IAkDH,OAAOtG,CACT,CAEA,IAAMgG,EAAiBY,GAAO,SAACjD,GAAqC,OAClEkC,EAACC,EAAUjF,EAAA,CAACK,QAAQ,YAAY6E,UAAU,IAAIvC,OAAO,SAASqD,UAAQ,GAAKlD,GAAK,GAD3DiD,EAEpB,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACjBrB,QAAS,OACTC,WAAY,SACZqB,MAAOD,EAAME,QAAQC,QAAQC,MAC7BC,OAAQ,UACRC,WAAY,IACZC,WAAY,MACZC,IAAK,MACLC,WAAY,gBACZ,UAAW,CACTC,eAAgB,YAChBT,MAAOD,EAAME,QAAQC,QAAQQ,MAEhC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as e,createClass as r,objectSpread2 as n,classCallCheck as t,callSuper as o,defineProperty as p}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Component as l}from"react";import{TextField as s}from"@mui/material";import{getErrorMessage as u}from"./helpers.js";function a(a){var c=function(){function c(){var e;t(this,c);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return e=o(this,c,[].concat(n)),p(e,"refInput",null),p(e,"getMergeConfig",(function(){var r,n,t;return{accept:null!==(r=null==a?void 0:a.accept)&&void 0!==r?r:e.props.accept,multiple:null!==(n=null!==(t=null==a?void 0:a.multiple)&&void 0!==t?t:e.props.multiple)&&void 0!==n&&n}})),p(e,"handleChange",(function(r){e.props.name&&e.props.onBlur&&e.props.onBlur(e.props.name)})),p(e,"isExploreOpen",!1),p(e,"handleClick",(function(r){e.isExploreOpen=!0})),p(e,"handleFocus",(function(r){if(!0===e.isExploreOpen){if(e.isExploreOpen=!1,!e.props.name)return;e.props.onBlur&&e.props.onBlur(e.props.name),setTimeout((function(){e.refInput&&e.refInput.blur()}),50)}})),e}return e(c,l),r(c,[{key:"render",value:function(){var e,r,t=this,o=u(this.props.messageErrors,this.props.name),p=this.getMergeConfig();return i(s,n(n({inputRef:function(e){return t.refInput=e},name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),error:o.error,helperText:o.message,variant:"outlined",type:"file",fullWidth:!0,onChange:this.handleChange,onClick:this.handleClick,onFocus:this.handleFocus},this.props.textFieldProps),{},{inputProps:n({accept:p.accept,multiple:p.multiple},null===(r=this.props.textFieldProps)||void 0===r?void 0:r.inputProps)}))}}])}();return c}export{a as default};
|
|
2
|
+
//# sourceMappingURL=create.input.file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.input.file.js","sources":["../../../src/form/create.input.file.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\n\r\nexport interface IInputFileProps<T> extends IFormInputBase<T> {\r\n accept?: string\r\n multiple?: boolean\r\n textFieldProps?: TextFieldProps\r\n}\r\n\r\nexport interface IInputFileState {}\r\n\r\nexport interface IInputFileParams {\r\n accept?: string\r\n multiple?: boolean\r\n}\r\n\r\nfunction CreateInputFile<T>(params?: IInputFileParams): ComponentType<IFormInputBase<T>> {\r\n class FormInputFile extends Component<IInputFileProps<T>, IInputFileState> {\r\n refInput: HTMLInputElement | null = null\r\n\r\n render() {\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const configs = this.getMergeConfig()\r\n return (\r\n <TextField\r\n inputRef={(ref) => (this.refInput = ref)}\r\n name={this.props.name?.toString()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n variant='outlined'\r\n type='file'\r\n fullWidth\r\n onChange={this.handleChange}\r\n onClick={this.handleClick}\r\n onFocus={this.handleFocus}\r\n {...this.props.textFieldProps}\r\n inputProps={{\r\n accept: configs.accept,\r\n multiple: configs.multiple,\r\n ...this.props.textFieldProps?.inputProps\r\n }}\r\n />\r\n )\r\n }\r\n\r\n getMergeConfig = () => ({\r\n accept: params?.accept ?? this.props.accept,\r\n multiple: params?.multiple ?? this.props.multiple ?? false\r\n })\r\n\r\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n isExploreOpen = false\r\n\r\n handleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\r\n this.isExploreOpen = true\r\n }\r\n\r\n handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {\r\n if (this.isExploreOpen === true) {\r\n this.isExploreOpen = false\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n setTimeout(() => {\r\n this.refInput && this.refInput.blur()\r\n }, 50)\r\n }\r\n }\r\n }\r\n return FormInputFile\r\n}\r\n\r\nexport default CreateInputFile\r\n"],"names":["CreateInputFile","params","FormInputFile","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_params$accept","_ref","_params$multiple","accept","props","multiple","e","name","onBlur","isExploreOpen","setTimeout","refInput","blur","_inherits","Component","_createClass","key","value","_this$props$name","_this$props$textField","_this2","eMessage","getErrorMessage","messageErrors","configs","getMergeConfig","_jsx","TextField","_objectSpread","inputRef","ref","toString","error","helperText","message","variant","type","fullWidth","onChange","handleChange","onClick","handleClick","onFocus","handleFocus","textFieldProps","inputProps"],"mappings":"qUAkBA,SAASA,EAAmBC,GAAyB,IAC7CC,aAAc,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAqDjB,OArDiBP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,WACkB,MAAIW,EAAAX,EA2BvB,kBAAA,WAAA,IAAAY,EAAAC,EAAAC,EAAA,MAAO,CACtBC,OAAsBH,QAAhBA,EAAEd,eAAAA,EAAQiB,kBAAMH,EAAAA,EAAIZ,EAAKgB,MAAMD,OACrCE,SAAiDJ,QAAzCA,EAAkB,QAAlBC,EAAEhB,aAAM,EAANA,EAAQmB,gBAAQH,IAAAA,EAAAA,EAAId,EAAKgB,MAAMC,gBAAQJ,IAAAA,GAAAA,MACjDF,EAAAX,EAEyD,gBAAA,SAACkB,GACrDlB,EAAKgB,MAAMG,MAChBnB,EAAKgB,MAAMI,QAAUpB,EAAKgB,MAAMI,OAAOpB,EAAKgB,MAAMG,SACnDR,EAAAX,EAAA,iBAEe,GAAKW,EAAAX,EAEkC,eAAA,SAACkB,GACtDlB,EAAKqB,eAAgB,KACtBV,EAAAX,EAEwD,eAAA,SAACkB,GACxD,IAA2B,IAAvBlB,EAAKqB,cAAwB,CAE/B,GADArB,EAAKqB,eAAgB,GAChBrB,EAAKgB,MAAMG,KAAM,OACtBnB,EAAKgB,MAAMI,QAAUpB,EAAKgB,MAAMI,OAAOpB,EAAKgB,MAAMG,MAClDG,YAAW,WACTtB,EAAKuB,UAAYvB,EAAKuB,SAASC,MAChC,GAAE,GACJ,KACFxB,CAAA,CAAA,OAAAyB,EAAA1B,EArDyB2B,GAqDzBC,EAAA5B,EAAA,CAAA,CAAA6B,IAAA,SAAAC,MAlDD,WAAM,IAAAC,EAAAC,EAAAC,EAAAvB,KACEwB,EAAWC,EAAgBzB,KAAKO,MAAMmB,cAAe1B,KAAKO,MAAMG,MAChEiB,EAAU3B,KAAK4B,iBACrB,OACEC,EAACC,EAASC,EAAAA,EAAA,CACRC,SAAU,SAACC,GAAG,OAAMV,EAAKT,SAAWmB,CAAI,EACxCvB,KAAqB,QAAjBW,EAAErB,KAAKO,MAAMG,YAAXW,IAAeA,OAAfA,EAAAA,EAAiBa,WACvBC,MAAOX,EAASW,MAChBC,WAAYZ,EAASa,QACrBC,QAAQ,WACRC,KAAK,OACLC,WACA,EAAAC,SAAUzC,KAAK0C,aACfC,QAAS3C,KAAK4C,YACdC,QAAS7C,KAAK8C,aACV9C,KAAKO,MAAMwC,gBAAc,CAAA,EAAA,CAC7BC,WAAUjB,EAAA,CACRzB,OAAQqB,EAAQrB,OAChBE,SAAUmB,EAAQnB,UACU,QADFc,EACvBtB,KAAKO,MAAMwC,sBAAc,IAAAzB,OAAA,EAAzBA,EAA2B0B,cAItC,IAAC,IA6BH,OAAO1D,CACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as t,createClass as e,objectSpread2 as r,classCallCheck as o,callSuper as i,defineProperty as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,jsx as s}from"react/jsx-runtime";import{Component as a}from"react";import{styled as p,Box as u,TextField as m,Collapse as d,InputAdornment as c}from"@mui/material";import{getErrorMessage as h}from"./helpers.js";import{RichTooltip as g,HelpOutlinePulseIcon as f}from"../components/rich-tooltip.js";function v(p){return function(){function v(t){var e;return o(this,v),e=i(this,v,[t]),n(e,"getTextFieldProps",(function(){var t=e.props,o=t.name,i=t.messageErrors,n=t.slots,l=t.onBlur,a=h(i,o),p=r(r({name:null==o?void 0:o.toString(),error:a.error,helperText:a.message},null==n?void 0:n.inputProps),{},{onBlur:function(){o&&l&&l(o)},onChange:e.handleChange});return p.InputProps||(p.InputProps={}),e.slots.tooltip&&(p.InputProps.endAdornment=s(c,{position:"end",children:e.slots.tooltip&&s(g,{panel:e.slots.tooltip,children:s(f,{fontSize:"small"})})})),p})),n(e,"handleChange",(function(t){var r,o=null===(r=t.target.files)||void 0===r?void 0:r[0];if(o){var i=URL.createObjectURL(o);e.setState({imageUrl:i},(function(){e.props.name&&e.props.onBlur&&e.props.onBlur(e.props.name)}))}})),n(e,"getImageUrl",(function(){var t=e.props.data,r=null!=p&&p.imageGetter?p.imageGetter(t):void 0;return e.state.imageUrl||r||""})),e.state={},e}return t(v,a),e(v,[{key:"slots",get:function(){return{tooltip:this.props.tooltip||(null==p?void 0:p.tooltip)}}},{key:"render",value:function(){var t,e=this.getImageUrl();return l(x,r(r({},null===(t=this.props.slots)||void 0===t?void 0:t.wrapProps),{},{children:[s(u,{sx:{flex:1},children:s(m,r({variant:"outlined",type:"file",fullWidth:!0,inputProps:{accept:"image/*",multiple:!1}},this.getTextFieldProps()))}),s(d,{in:!!e,orientation:"horizontal",unmountOnExit:!0,children:s(P,{children:s("img",{src:e,alt:"berlintomek-image"})})})]}))}}])}()}var x=p(u)({display:"flex",gap:"9px",alignItems:"start"}),P=p(u)({height:"56px",width:"56px",marginRight:"6px",borderRadius:"4px",overflow:"hidden",border:"1px solid rgba(145, 158, 171, .16)","& > img":{width:"100%",height:"100%",objectFit:"cover"}});export{v as default};
|
|
2
|
+
//# sourceMappingURL=create.input.image-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.input.image-file.js","sources":["../../../src/form/create.input.image-file.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, Collapse, InputAdornment, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { IRichTooltipPanelConfig, RichTooltip, HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\n\r\nexport interface IInputImageFileSlots {\r\n wrapProps?: BoxProps\r\n inputProps?: TextFieldProps\r\n}\r\n\r\nexport interface IInputImageFileProps<T> extends IFormInputBase<T, IInputImageFileSlots> {\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nexport interface IInputImageFileState {\r\n imageUrl?: string\r\n}\r\n\r\nexport interface IInputImageFileParams<T> {\r\n imageGetter?: (data?: Partial<T>) => string | undefined\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nfunction createInputImageFile<T>(params?: IInputImageFileParams<T>): ComponentType<IInputImageFileProps<T>> {\r\n class InputImageFile extends Component<IInputImageFileProps<T>, IInputImageFileState> {\r\n constructor(props: IInputImageFileProps<T>) {\r\n super(props)\r\n this.state = {}\r\n }\r\n\r\n private get slots() {\r\n return {\r\n tooltip: this.props.tooltip || params?.tooltip\r\n }\r\n }\r\n\r\n render() {\r\n const url = this.getImageUrl()\r\n return (\r\n <Wrap {...this.props.slots?.wrapProps}>\r\n <Box sx={{ flex: 1 }}>\r\n <TextField variant='outlined' type='file' fullWidth inputProps={{ accept: 'image/*', multiple: false }} {...this.getTextFieldProps()} />\r\n </Box>\r\n <Collapse in={!!url} orientation='horizontal' unmountOnExit>\r\n <ImageWrap>\r\n <img src={url} alt='berlintomek-image' />\r\n </ImageWrap>\r\n </Collapse>\r\n </Wrap>\r\n )\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { name, messageErrors, slots, onBlur } = this.props\r\n const errorMessage = getErrorMessage(messageErrors, name)\r\n const tfp: TextFieldProps = {\r\n name: name?.toString(),\r\n error: errorMessage.error,\r\n helperText: errorMessage.message,\r\n ...slots?.inputProps,\r\n onBlur: () => {\r\n if (!name || !onBlur) return\r\n onBlur(name)\r\n },\r\n onChange: this.handleChange\r\n }\r\n if (!tfp.InputProps) tfp.InputProps = {}\r\n if (this.slots.tooltip) {\r\n tfp.InputProps.endAdornment = (\r\n <InputAdornment position='end'>\r\n {this.slots.tooltip && (\r\n <RichTooltip panel={this.slots.tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n )}\r\n </InputAdornment>\r\n )\r\n }\r\n return tfp\r\n }\r\n\r\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\r\n const file = event.target.files?.[0]\r\n if (file) {\r\n const imageUrl = URL.createObjectURL(file)\r\n this.setState({ imageUrl }, () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n })\r\n }\r\n }\r\n\r\n getImageUrl = () => {\r\n const { data } = this.props\r\n const value = params?.imageGetter ? params.imageGetter(data) : undefined\r\n return this.state.imageUrl || value || ''\r\n }\r\n }\r\n return InputImageFile\r\n}\r\nexport default createInputImageFile\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n gap: '9px',\r\n alignItems: 'start'\r\n})\r\n\r\nconst ImageWrap = styled(Box)({\r\n height: '56px',\r\n width: '56px',\r\n marginRight: '6px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n border: '1px solid rgba(145, 158, 171, .16)',\r\n '& > img': {\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover'\r\n }\r\n})\r\n"],"names":["createInputImageFile","params","InputImageFile","props","_this","_classCallCheck","_callSuper","_defineProperty","_this$props","name","messageErrors","slots","onBlur","errorMessage","getErrorMessage","tfp","_objectSpread","toString","error","helperText","message","inputProps","onChange","handleChange","InputProps","tooltip","endAdornment","_jsx","InputAdornment","position","RichTooltip","panel","children","HelpOutlinePulseIcon","fontSize","event","_event$target$files","file","target","files","imageUrl","URL","createObjectURL","setState","data","value","imageGetter","undefined","state","_inherits","Component","_createClass","key","get","this","_this$props$slots","url","getImageUrl","_jsxs","Wrap","wrapProps","Box","sx","flex","TextField","variant","type","fullWidth","accept","multiple","getTextFieldProps","Collapse","in","orientation","unmountOnExit","ImageWrap","src","alt","styled","display","gap","alignItems","height","width","marginRight","borderRadius","overflow","border","objectFit"],"mappings":"4dAwBA,SAASA,EAAwBC,GA2E/B,kBAzEE,SAAAC,EAAYC,GAA8B,IAAAC,EAEzB,OAFyBC,OAAAH,GACxCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAAA,qBA0BM,WAClB,IAAAI,EAA+CJ,EAAKD,MAA5CM,EAAID,EAAJC,KAAMC,EAAaF,EAAbE,cAAeC,EAAKH,EAALG,MAAOC,EAAMJ,EAANI,OAC9BC,EAAeC,EAAgBJ,EAAeD,GAC9CM,EAAGC,EAAAA,EAAA,CACPP,KAAMA,eAAAA,EAAMQ,WACZC,MAAOL,EAAaK,MACpBC,WAAYN,EAAaO,SACtBT,aAAAA,EAAAA,EAAOU,YAAU,GAAA,CACpBT,OAAQ,WACDH,GAASG,GACdA,EAAOH,EACR,EACDa,SAAUlB,EAAKmB,eAcjB,OAZKR,EAAIS,aAAYT,EAAIS,WAAa,CAAE,GACpCpB,EAAKO,MAAMc,UACbV,EAAIS,WAAWE,aACbC,EAACC,EAAc,CAACC,SAAS,eACtBzB,EAAKO,MAAMc,SACVE,EAACG,EAAW,CAACC,MAAO3B,EAAKO,MAAMc,QAC7BO,SAAAL,EAACM,EAAqB,CAAAC,SAAS,eAMlCnB,KACRR,EAAAH,EAE0D,gBAAA,SAAC+B,GAAS,IAAAC,EAC7DC,UAAID,EAAGD,EAAMG,OAAOC,aAAK,IAAAH,OAAA,EAAlBA,EAAqB,GAClC,GAAIC,EAAM,CACR,IAAMG,EAAWC,IAAIC,gBAAgBL,GACrCjC,EAAKuC,SAAS,CAAEH,SAAAA,IAAY,WACrBpC,EAAKD,MAAMM,MAChBL,EAAKD,MAAMS,QAAUR,EAAKD,MAAMS,OAAOR,EAAKD,MAAMM,KACpD,GACD,KACFF,EAAAH,EAAA,eAEa,WACZ,IAAQwC,EAASxC,EAAKD,MAAdyC,KACFC,EAAQ5C,SAAAA,EAAQ6C,YAAc7C,EAAO6C,YAAYF,QAAQG,EAC/D,OAAO3C,EAAK4C,MAAMR,UAAYK,GAAS,MApEvCzC,EAAK4C,MAAQ,CAAE,EAAA5C,CACjB,CAAC,OAAA6C,EAAA/C,EAJ0BgD,GAI1BC,EAAAjD,EAAA,CAAA,CAAAkD,IAAA,QAAAC,IAED,WACE,MAAO,CACL5B,QAAS6B,KAAKnD,MAAMsB,UAAWxB,aAAAA,EAAAA,EAAQwB,SAE3C,GAAC,CAAA2B,IAAA,SAAAP,MAED,WAAM,IAAAU,EACEC,EAAMF,KAAKG,cACjB,OACEC,EAACC,EAAI3C,EAAAA,KAAqB,QAArBuC,EAAKD,KAAKnD,MAAMQ,aAAX4C,IAAgBA,OAAhBA,EAAAA,EAAkBK,WAAS,GAAA,WACnCjC,EAACkC,GAAIC,GAAI,CAAEC,KAAM,YACfpC,EAACqC,EAAShD,EAAA,CAACiD,QAAQ,WAAWC,KAAK,OAAOC,WAAU,EAAA9C,WAAY,CAAE+C,OAAQ,UAAWC,UAAU,IAAaf,KAAKgB,wBAEnH3C,EAAC4C,EAAS,CAAAC,KAAMhB,EAAKiB,YAAY,aAAaC,eAAa,EAAA1C,SACzDL,EAACgD,EAAS,CAAA3C,SACRL,SAAKiD,IAAKpB,EAAKqB,IAAI,6BAK7B,IAAC,GAiDL,CAGA,IAAMlB,EAAOmB,EAAOjB,EAAPiB,CAAY,CACvBC,QAAS,OACTC,IAAK,MACLC,WAAY,UAGRN,EAAYG,EAAOjB,EAAPiB,CAAY,CAC5BI,OAAQ,OACRC,MAAO,OACPC,YAAa,MACbC,aAAc,MACdC,SAAU,SACVC,OAAQ,qCACR,UAAW,CACTJ,MAAO,OACPD,OAAQ,OACRM,UAAW"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as e,createClass as t,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as l,objectWithoutProperties as i,asyncToGenerator as n,regenerator as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as u,jsx as p,Fragment as d}from"react/jsx-runtime";import{Component as c}from"react";import{styled as m,Box as h,TextField as v,InputAdornment as f,IconButton as g,Collapse as b,CircularProgress as x}from"@mui/material";import S from"@mui/icons-material/ContentPaste";import{mergeObjects as k}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{getErrorMessage as y}from"./helpers.js";import{ImageWithFallback as P}from"../components/image-with-fallback.js";import{RichTooltip as j,HelpOutlinePulseIcon as L}from"../components/rich-tooltip.js";var C=["srcGetter","element","alt","fallbackSrc","debounceDelay"],I=function(m){return function(){function x(e){var t,c;return o(this,x),c=a(this,x,[e]),l(c,"_cachedSlots",{}),l(c,"mapTextFieldProps",(function(){var e,t,o,a,l=y(c.props.messageErrors,c.props.name),i={fullWidth:!0,variant:"outlined",name:null===(e=c.props.name)||void 0===e?void 0:e.toString(),error:l.error,helperText:l.message,disabled:c.props.disabled,onBlur:function(){c.props.name&&c.props.onBlur&&c.props.onBlur(c.props.name)},label:c.getLabel(),placeholder:c.props.placeholder,InputLabelProps:c.state.value?{shrink:!0}:{},value:null!==(t=c.state.value)&&void 0!==t?t:"",onChange:c.handleChange};return i.InputProps||(i.InputProps={}),i.InputProps.endAdornment=u(f,{position:"end",children:[c.slots.pastenable&&p(g,{onClick:c.handlePaste,edge:"end",children:p(S,{})}),c.slots.tooltip&&p(j,{panel:c.slots.tooltip,children:p(L,{fontSize:"small"})})]}),null!==(o=c.slots)&&void 0!==o&&o.maxLength&&(i.inputProps=r(r({},i.inputProps),{},{maxLength:c.slots.maxLength})),k({},i,null===(a=c.slots)||void 0===a?void 0:a.textFieldProps)})),l(c,"renderImageSide",(function(e){var t,o="left"===e?c.slots.imageLeft:c.slots.imageRight;if(!o)return p(d,{});var a=o.srcGetter,l=o.element,n=o.alt,s=void 0===n?"input-image":n,u=o.fallbackSrc,m=void 0===u?"":u,h=o.debounceDelay,v=void 0===h?700:h,f=i(o,C);if(l)return p(z,{children:p(l,{value:c.state.value,model:c.props.data})});var g=a?a(c.state.value,c.props.data):null!==(t=f.src)&&void 0!==t?t:c.state.value,x={src:g,alt:s,fallbackSrc:m,debounceDelay:v};return p(b,{sx:{mx:"10px"},in:!!g,unmountOnExit:!0,orientation:"horizontal",children:p(z,{children:p(P,r(r(r({},f),x),{},{loading:p(w,{})}))})})})),l(c,"mergeSlots",(function(e){var t=k({},m,e),o=t.imageLeft,a=t.imageRight;return null!=o&&o.mirror&&!a?(t.imageRight=r({},o),delete t.imageRight.mirror):null!=a&&a.mirror&&!o&&(t.imageLeft=r({},a),delete t.imageLeft.mirror),t})),l(c,"getLabel",(function(){var e,t,r;if(c.props.label)return null!==(e=c.slots)&&void 0!==e&&e.maxLength?"".concat(c.props.label," (").concat(null!==(t=null===(r=c.state.value)||void 0===r?void 0:r.length)&&void 0!==t?t:0,"/").concat(c.slots.maxLength,")"):c.props.label})),l(c,"handleChange",(function(e){c.setState({value:e.target.value})})),l(c,"handlePaste",n(s().m((function e(){var t,r;return s().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,navigator.clipboard.readText();case 1:t=e.v,c.setState({value:t}),e.n=3;break;case 2:e.p=2,r=e.v,console.error("Error clipboard:",r);case 3:return e.a(2)}}),e,null,[[0,2]])})))),c._cachedSlots=null!==(t=c.mergeSlots(e.slots))&&void 0!==t?t:{},c.state={value:c.defaulValue},c}return e(x,c),t(x,[{key:"slots",get:function(){return this._cachedSlots}},{key:"defaulValue",get:function(){var e,t,r=this.props,o=r.data,a=r.name;return null!==(e=this.props.defaultValue)&&void 0!==e?e:o&&a?null===(t=o[a])||void 0===t?void 0:t.toString():void 0}},{key:"componentDidUpdate",value:function(e){e.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,r=t.name;t.slots;if(r){var o,a,l,i,n=null!==(o=null===(a=this.props.data)||void 0===a||null===(a=a[r])||void 0===a?void 0:a.toString())&&void 0!==o?o:"",s=null!==(l=null===(i=e.data)||void 0===i||null===(i=i[r])||void 0===i?void 0:i.toString())&&void 0!==l?l:"";if(n!==s)return this.setState({value:s}),!1}return e.slots,!0}},{key:"render",value:function(){var e;return u(h,{sx:{display:"flex",alignItems:"flex-start"},children:[!!this.props.disabled&&p("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaulValue}),this.renderImageSide("left"),p(v,r({},this.mapTextFieldProps())),this.renderImageSide("right")]})}}])}()},w=function(){return p("div",{children:p(x,{size:24})})},z=m(h)({fontSize:"1rem",height:"var(--input-base-image-size, 54px)",width:"var(--input-base-image-size, 54px)",position:"relative",borderRadius:"8px",boxShadow:"rgba(0, 0, 0, 0.16) 0px 1px 4px",overflow:"hidden","& > img":{position:"absolute",top:0,left:0,backgroundRepeat:"no-repeat",height:"100%",width:"100%",backgroundSize:"contain"},"& > div":{position:"absolute",top:0,left:0,height:"100%",width:"100%",background:"#fafafa",zIndex:1,display:"flex",alignItems:"center",justifyContent:"center"}});export{I as default};
|
|
2
|
+
//# sourceMappingURL=create.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.input.js","sources":["../../../src/form/create.input.tsx"],"sourcesContent":["import React, { Component, ComponentType, FC } from 'react'\r\nimport { Box, CircularProgress, Collapse, IconButton, InputAdornment, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport ContentPasteIcon from '@mui/icons-material/ContentPaste'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ImageWithFallback, IImageWithFallbackPropsOwner } from '../components/image-with-fallback'\r\nimport { IRichTooltipPanelConfig, RichTooltip, HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\n\r\nexport interface InputBaseImage<T> extends Partial<IImageWithFallbackPropsOwner> {\r\n srcGetter?: (value: any, model?: Partial<T>) => string\r\n element?: React.ComponentType<{ value: any; model?: Partial<T> }>\r\n mirror?: boolean\r\n}\r\n\r\nexport interface IInputSlots<T> {\r\n maxLength?: number\r\n textFieldProps?: TextFieldProps\r\n pastenable?: boolean\r\n imageLeft?: InputBaseImage<T>\r\n imageRight?: InputBaseImage<T>\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nexport interface IInputProps<T> extends IFormInputBase<T, IInputSlots<T>> {}\r\n\r\nexport interface IInputState {\r\n value?: string\r\n}\r\n\r\nexport interface IInputParams<T> extends IInputSlots<T> {}\r\n\r\nconst createInput = function <T>(params?: IInputParams<T>): ComponentType<IInputProps<T>> {\r\n class InputBase extends Component<IInputProps<T>, IInputState> {\r\n private _cachedSlots: IInputSlots<T> = {}\r\n constructor(props: IInputProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.defaulValue }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n componentDidUpdate(prevProps: IInputProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputProps<T>>): boolean {\r\n const { name, slots } = this.props\r\n if (!!name) {\r\n const currentDataValue = this.props.data?.[name]?.toString() ?? ''\r\n const nextDataValue = nextProps.data?.[name]?.toString() ?? ''\r\n if (currentDataValue !== nextDataValue) {\r\n this.setState({ value: nextDataValue })\r\n return false\r\n }\r\n }\r\n\r\n if (slots !== nextProps.slots) {\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const tfp: TextFieldProps = {\r\n fullWidth: true,\r\n variant: 'outlined',\r\n name: this.props.name?.toString(),\r\n error: errorMessage.error,\r\n helperText: errorMessage.message,\r\n disabled: this.props.disabled,\r\n onBlur: () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n },\r\n label: this.getLabel(),\r\n placeholder: this.props.placeholder,\r\n InputLabelProps: !!this.state.value ? { shrink: true } : {},\r\n value: this.state.value ?? '',\r\n onChange: this.handleChange\r\n }\r\n if (!tfp.InputProps) tfp.InputProps = {}\r\n tfp.InputProps.endAdornment = (\r\n <InputAdornment position='end'>\r\n {this.slots.pastenable && (\r\n <IconButton onClick={this.handlePaste} edge='end'>\r\n <ContentPasteIcon />\r\n </IconButton>\r\n )}\r\n {this.slots.tooltip && (\r\n <RichTooltip panel={this.slots.tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n )}\r\n </InputAdornment>\r\n )\r\n if (this.slots?.maxLength) tfp.inputProps = { ...tfp.inputProps, maxLength: this.slots.maxLength }\r\n return mergeObjects<TextFieldProps>({}, tfp, this.slots?.textFieldProps)\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'flex-start' }}>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.defaulValue} />}\r\n {this.renderImageSide('left')}\r\n <TextField {...this.mapTextFieldProps()} />\r\n {this.renderImageSide('right')}\r\n </Box>\r\n )\r\n }\r\n\r\n renderImageSide = (side: 'left' | 'right') => {\r\n const image = side === 'left' ? this.slots.imageLeft : this.slots.imageRight\r\n if (!image) return <></>\r\n const { srcGetter, element, alt = 'input-image', fallbackSrc = '', debounceDelay = 700, ...imageOther } = image\r\n if (element) {\r\n const Element = element\r\n return (\r\n <WrapImage>\r\n <Element value={this.state.value} model={this.props.data} />\r\n </WrapImage>\r\n )\r\n }\r\n const src = srcGetter ? srcGetter(this.state.value, this.props.data) : imageOther.src ?? this.state.value\r\n const imageProps: IImageWithFallbackPropsOwner = { src, alt, fallbackSrc, debounceDelay }\r\n return (\r\n <Collapse sx={{ mx: '10px' }} in={!!src} unmountOnExit orientation='horizontal'>\r\n <WrapImage>\r\n <ImageWithFallback {...imageOther} {...imageProps} loading={<LoadingCircularProgress />} />\r\n </WrapImage>\r\n </Collapse>\r\n )\r\n }\r\n //#endregion\r\n\r\n private mergeSlots = (currentSlots?: IInputSlots<T>): IInputSlots<T> => {\r\n const base = mergeObjects<IInputSlots<T>>({}, params, currentSlots)\r\n const { imageLeft, imageRight } = base\r\n\r\n // mirror from left to right\r\n if (imageLeft?.mirror && !imageRight) {\r\n base.imageRight = { ...imageLeft }\r\n delete base.imageRight.mirror\r\n }\r\n // mirror from right to left\r\n else if (imageRight?.mirror && !imageLeft) {\r\n base.imageLeft = { ...imageRight }\r\n delete base.imageLeft.mirror\r\n }\r\n\r\n return base\r\n }\r\n\r\n getLabel = () => {\r\n if (!this.props.label) return\r\n if (!this.slots?.maxLength) return this.props.label\r\n return `${this.props.label} (${this.state.value?.length ?? 0}/${this.slots.maxLength})`\r\n }\r\n\r\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ value: event.target.value })\r\n }\r\n\r\n handlePaste = async () => {\r\n try {\r\n const clipboardText = await navigator.clipboard.readText()\r\n this.setState({ value: clipboardText })\r\n } catch (error) {\r\n console.error('Error clipboard:', error)\r\n }\r\n }\r\n }\r\n return InputBase\r\n}\r\n\r\nexport default createInput\r\n\r\n// export type InputTextType<T> = ReturnType<typeof CreateInputBase<T>>\r\n\r\nconst LoadingCircularProgress: FC = () => (\r\n <div>\r\n <CircularProgress size={24} />\r\n </div>\r\n)\r\n\r\nconst WrapImage = styled(Box)({\r\n fontSize: '1rem',\r\n height: 'var(--input-base-image-size, 54px)',\r\n width: 'var(--input-base-image-size, 54px)',\r\n position: 'relative',\r\n borderRadius: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px',\r\n overflow: 'hidden',\r\n '& > img': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n backgroundRepeat: 'no-repeat',\r\n height: '100%',\r\n width: '100%',\r\n backgroundSize: 'contain'\r\n },\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n background: '#fafafa',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n"],"names":["createInput","params","InputBase","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$state$value","_this$slots","_this$slots2","errorMessage","getErrorMessage","messageErrors","name","tfp","fullWidth","variant","toString","error","helperText","message","disabled","onBlur","label","getLabel","placeholder","InputLabelProps","state","value","shrink","onChange","handleChange","InputProps","endAdornment","_jsxs","InputAdornment","position","children","slots","pastenable","_jsx","IconButton","onClick","handlePaste","edge","ContentPasteIcon","tooltip","RichTooltip","panel","HelpOutlinePulseIcon","fontSize","maxLength","inputProps","_objectSpread","mergeObjects","textFieldProps","side","_imageOther$src","image","imageLeft","imageRight","srcGetter","element","_image$alt","alt","_image$fallbackSrc","fallbackSrc","_image$debounceDelay","debounceDelay","imageOther","_objectWithoutProperties","_excluded","WrapImage","model","data","src","imageProps","Collapse","sx","mx","in","unmountOnExit","orientation","ImageWithFallback","loading","LoadingCircularProgress","currentSlots","base","mirror","_this$slots3","_this$state$value$len","_this$state$value2","concat","length","event","setState","target","_asyncToGenerator","_regenerator","m","_callee","clipboardText","_t","w","_context","n","p","navigator","clipboard","readText","v","console","a","_cachedSlots","mergeSlots","defaulValue","_inherits","Component","_createClass","key","get","this","_this$props$defaultVa","_data$name","_this$props","defaultValue","undefined","prevProps","nextProps","_this$props2","_this$props$data$name","_this$props$data","_nextProps$data$name$","_nextProps$data","currentDataValue","nextDataValue","_this$props$name2","Box","display","alignItems","hidden","renderImageSide","TextField","mapTextFieldProps","CircularProgress","size","styled","height","width","borderRadius","boxShadow","overflow","top","left","backgroundRepeat","backgroundSize","background","zIndex","justifyContent"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineProperty as o,inherits as t,createClass as e,objectSpread2 as i,classCallCheck as l,callSuper as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as a}from"react/jsx-runtime";import{Fragment as p,Component as s}from"react";import{styled as u,FormControl as d,InputLabel as v,Select as c,MenuItem as f,Collapse as m,FormHelperText as g}from"@mui/material";import{mergeObjects as h}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{getErrorMessage as S}from"./helpers.js";import{RichTooltip as b,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";function C(u){return function(){function d(t){var e,i;return l(this,d),i=r(this,d,[t]),o(i,"mapProps",(function(){var o,t,e,l,r,n=i.getLabel(),a={id:null===(o=i.props.name)||void 0===o?void 0:o.toString(),labelId:(null===(t=i.props.name)||void 0===t?void 0:t.toString())+n,name:null===(e=i.props.name)||void 0===e?void 0:e.toString(),label:n,defaultValue:i.getDefaultValue(),value:i.state.value,onChange:function(o){var t=o.target.value+"";i.setState({value:t},(function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name);var o=i.getOptions().find((function(o){var e;return(null===(e=o.value)||void 0===e?void 0:e.toString())===t}));o&&i.props.onChange&&i.props.onChange(o)}))},disabled:i.props.disabled,fullWidth:void 0===i.props.fullWidth||i.props.fullWidth},p=null!==(l=null===(r=i.props.slots)||void 0===r?void 0:r.selectProps)&&void 0!==l?l:null==u?void 0:u.selectProps;return h({},a,p)})),o(i,"renderTooltip",(function(){var o=i.props.tooltip||(null==u?void 0:u.tooltip);return o?a("div",{className:W.tooltipWrap,children:a(b,{panel:o,children:a(j,{fontSize:"small"})})}):null})),o(i,"getRootClasses",(function(){var o=[W.root];return(i.props.tooltip||(null==u?void 0:u.tooltip))&&o.push(W.tooltip),o.join(" ")})),o(i,"getLabel",(function(){var o,t;return i.props.label&&"string"==typeof i.props.label?i.props.label:null!==(o=null===(t=i.props.name)||void 0===t?void 0:t.toString())&&void 0!==o?o:""})),o(i,"getDefaultValue",(function(){var o,t,e,l,r=i.props,n=r.data,a=r.name,p=i.getOptions();return null!==(o=null!==(t=null===(e=i.props.defaultValue)||void 0===e?void 0:e.toString())&&void 0!==t?t:n&&a?n[a]:void 0)&&void 0!==o?o:null===(l=p[0])||void 0===l?void 0:l.value})),o(i,"getOptions",(function(){var o,t;return null!==(o=null!==(t=null==u?void 0:u.options)&&void 0!==t?t:i.props.options)&&void 0!==o?o:[]})),i.state={value:null===(e=i.getDefaultValue())||void 0===e?void 0:e.toString()},i}return t(d,s),e(d,[{key:"render",value:function(){var o,t,e=this.getOptions(),l=this.getLabel(),r=S(this.props.messageErrors,this.props.name);return n(p,{children:[!!this.props.disabled&&a("input",{hidden:!0,name:null===(o=this.props.name)||void 0===o?void 0:o.toString(),defaultValue:this.getDefaultValue()}),n(V,{className:this.getRootClasses(),fullWidth:!0,disabled:this.props.disabled,error:r.error,children:[a(v,{id:(null===(t=this.props.name)||void 0===t?void 0:t.toString())+l,children:l}),a(c,i(i({},this.mapProps()),{},{children:e.map((function(o){return a(f,{value:o.value,children:o.name},o.value)}))})),a(m,{in:r.error,children:a(g,{children:r.message})}),this.renderTooltip()]})]})}}])}()}var W={root:"SelectSimple-root",tooltip:"SelectSimple-tooltip",tooltipWrap:"SelectSimple-tooltipWrap"},x=function(o,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(W[o]).concat((null==t?void 0:t.suffix)||"")},V=u(d)((function(t){var e=t.theme;return o(o(o({},x("root",{suffix:"&"}),{position:"relative"}),x("tooltipWrap"),{position:"absolute",top:e.spacing(2.25),right:e.spacing(1.5),display:"flex",alignItems:"center",gap:e.spacing(.5)}),x("tooltip",{suffix:"&"}),{".MuiSelect-icon":{right:e.spacing(4.5)}})}));export{C as default};
|
|
2
|
+
//# sourceMappingURL=create.select-simple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.select-simple.js","sources":["../../../src/form/create.select-simple.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { Collapse, FormControl, FormHelperText, InputLabel, MenuItem, Select, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { SelectProps } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { RichTooltip, HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\nimport type { IRichTooltipPanelConfig } from '../components/rich-tooltip'\r\n\r\nexport interface ISelectSimpleOption<T extends string = string> {\r\n name: string\r\n value: T\r\n}\r\n\r\nexport interface ISelectSimpleSlots {\r\n selectProps?: Omit<SelectProps, 'variant'>\r\n}\r\n\r\nexport interface ISelectSimpleProps<T> extends Partial<IFormInputBase<T>> {\r\n options?: ISelectSimpleOption[]\r\n onChange?: (value: ISelectSimpleOption) => void\r\n slots?: ISelectSimpleSlots\r\n fullWidth?: boolean\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nexport interface ISelectSimpleState {\r\n value?: string\r\n}\r\n\r\nexport interface ISelectSimpleParams extends ISelectSimpleSlots {\r\n options?: ISelectSimpleOption[]\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nfunction CreateSelectSimple<T>(args?: ISelectSimpleParams): ComponentType<ISelectSimpleProps<T>> {\r\n class SelectSimple extends Component<ISelectSimpleProps<T>, ISelectSimpleState> {\r\n constructor(props: ISelectSimpleProps<T>) {\r\n super(props)\r\n this.state = { value: this.getDefaultValue()?.toString() }\r\n }\r\n mapProps = (): SelectProps => {\r\n const label = this.getLabel()\r\n const tfp: SelectProps = {\r\n id: this.props.name?.toString(),\r\n labelId: this.props.name?.toString() + label,\r\n name: this.props.name?.toString(),\r\n label: label,\r\n defaultValue: this.getDefaultValue(),\r\n value: this.state.value,\r\n onChange: (event) => {\r\n const value: string = event.target.value + ''\r\n this.setState({ value }, () => {\r\n if (!!this.props.name) {\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n const options = this.getOptions()\r\n const temp = options.find((x) => x.value?.toString() === value)\r\n if (!temp) return\r\n this.props.onChange && this.props.onChange(temp)\r\n })\r\n },\r\n disabled: this.props.disabled,\r\n fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true\r\n }\r\n const selectProps = this.props.slots?.selectProps ?? args?.selectProps\r\n return mergeObjects({}, tfp, selectProps)\r\n }\r\n render() {\r\n const data = this.getOptions()\r\n const label = this.getLabel()\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <Fragment>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.getDefaultValue()} />}\r\n <SelectSimpleStyled className={this.getRootClasses()} fullWidth disabled={this.props.disabled} error={errorMessage.error}>\r\n <InputLabel id={this.props.name?.toString() + label}>{label}</InputLabel>\r\n <Select {...this.mapProps()}>\r\n {data.map((item) => (\r\n <MenuItem key={item.value} value={item.value}>\r\n {item.name}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <Collapse in={errorMessage.error}>\r\n <FormHelperText>{errorMessage.message}</FormHelperText>\r\n </Collapse>\r\n {this.renderTooltip()}\r\n </SelectSimpleStyled>\r\n </Fragment>\r\n )\r\n }\r\n\r\n renderTooltip = () => {\r\n const tooltip = this.props.tooltip || args?.tooltip\r\n if (!tooltip) return null\r\n return (\r\n <div className={selectSimpleClasses.tooltipWrap}>\r\n <RichTooltip panel={tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </div>\r\n )\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [selectSimpleClasses.root]\r\n const tooltip = this.props.tooltip || args?.tooltip\r\n if (tooltip) classes.push(selectSimpleClasses.tooltip)\r\n return classes.join(' ')\r\n }\r\n\r\n getLabel = () => {\r\n if (!!this.props.label && typeof this.props.label === 'string') return this.props.label\r\n return this.props.name?.toString() ?? ''\r\n }\r\n\r\n getDefaultValue = () => {\r\n const { data, name } = this.props\r\n const options = this.getOptions()\r\n return this.props.defaultValue?.toString() ?? (!!data && !!name ? data[name] : undefined) ?? options[0]?.value\r\n }\r\n\r\n getOptions = (): ISelectSimpleOption[] => {\r\n return args?.options ?? this.props.options ?? []\r\n }\r\n }\r\n return SelectSimple\r\n}\r\nexport default CreateSelectSimple\r\n\r\nconst selectSimpleClasses = {\r\n root: 'SelectSimple-root',\r\n tooltip: 'SelectSimple-tooltip',\r\n tooltipWrap: 'SelectSimple-tooltipWrap'\r\n}\r\n\r\nconst getSelectSimpleClass = (key: keyof typeof selectSimpleClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${selectSimpleClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nconst SelectSimpleStyled = styled(FormControl)(({ theme }) => ({\r\n [getSelectSimpleClass('root', { suffix: '&' })]: {\r\n position: 'relative'\r\n },\r\n [getSelectSimpleClass('tooltipWrap')]: {\r\n position: 'absolute',\r\n top: theme.spacing(2.25),\r\n right: theme.spacing(1.5),\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5)\r\n },\r\n [getSelectSimpleClass('tooltip', { suffix: '&' })]: {\r\n '.MuiSelect-icon': {\r\n right: theme.spacing(4.5)\r\n }\r\n }\r\n}))\r\n"],"names":["CreateSelectSimple","args","SelectSimple","props","_this$getDefaultValue","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$props$name2","_this$props$name3","_this$props$slots$sel","_this$props$slots","label","getLabel","tfp","id","name","toString","labelId","defaultValue","getDefaultValue","value","state","onChange","event","target","setState","onBlur","temp","getOptions","find","x","_x$value","disabled","fullWidth","undefined","selectProps","slots","mergeObjects","tooltip","_jsx","className","selectSimpleClasses","tooltipWrap","children","RichTooltip","panel","HelpOutlinePulseIcon","fontSize","classes","root","push","join","_this$props$name$toSt","_this$props$name4","_ref","_this$props$defaultVa","_this$props$defaultVa2","_options$","_this$props","data","options","_ref2","_args$options","_inherits","Component","_createClass","key","_this$props$name5","_this$props$name6","this","errorMessage","getErrorMessage","messageErrors","_jsxs","Fragment","hidden","SelectSimpleStyled","getRootClasses","error","InputLabel","Select","_objectSpread","mapProps","map","item","MenuItem","Collapse","in","FormHelperText","message","renderTooltip","getSelectSimpleClass","concat","prefix","suffix","styled","FormControl","_ref3","theme","position","top","spacing","right","display","alignItems","gap"],"mappings":"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"}
|