@elliemae/ds-imagelibrarymodal 3.32.2-next.1 → 3.33.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DSImageLibraryModal_exports = {};
30
+ __export(DSImageLibraryModal_exports, {
31
+ DSImageLibraryModal: () => DSImageLibraryModal,
32
+ default: () => DSImageLibraryModal_default
33
+ });
34
+ module.exports = __toCommonJS(DSImageLibraryModal_exports);
35
+ var React = __toESM(require("react"));
36
+ var import_jsx_runtime = require("react/jsx-runtime");
37
+ var import_prop_types = __toESM(require("prop-types"));
38
+ var import_ds_modal = require("@elliemae/ds-modal");
39
+ var import_ds_shared = require("@elliemae/ds-shared");
40
+ var import_ImageLibraryModalImpl = __toESM(require("./components/ImageLibraryModalImpl.js"));
41
+ const modalTypes = Object.values(import_ds_modal.MODAL_TYPE);
42
+ const DSImageLibraryModal = ({
43
+ containerProps = {},
44
+ confirmLabel = "Add",
45
+ disableDoubleClick = false,
46
+ isOpen = true,
47
+ modalTitle = "Add Image",
48
+ modalType = modalTypes[2],
49
+ rejectLabel = "Cancel",
50
+ shouldCloseOnOverlayClick = true,
51
+ size = import_ds_shared.sizeOptions[3],
52
+ imagesData = [
53
+ {
54
+ url: "https://www.freeiconspng.com/minicovers/no-image-icon-6.png",
55
+ name: "no image",
56
+ createdBy: "user:John Doe",
57
+ createdDate: "0000-01-01 00:00 AM UTC"
58
+ }
59
+ ],
60
+ onSelect = () => null,
61
+ ...rest
62
+ }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
+ import_ImageLibraryModalImpl.default,
64
+ {
65
+ confirmLabel,
66
+ containerProps,
67
+ disableDoubleClick,
68
+ imagesData,
69
+ isOpen,
70
+ modalTitle,
71
+ modalType,
72
+ onSelect,
73
+ rejectLabel,
74
+ shouldCloseOnOverlayClick,
75
+ size,
76
+ ...rest
77
+ }
78
+ );
79
+ DSImageLibraryModal.propTypes = {
80
+ containerProps: import_prop_types.default.shape({}),
81
+ /** List of images src */
82
+ imagesData: import_prop_types.default.arrayOf(
83
+ import_prop_types.default.shape({
84
+ url: import_prop_types.default.string,
85
+ name: import_prop_types.default.string
86
+ })
87
+ ),
88
+ /** Handler when user selects an image */
89
+ onSelect: import_prop_types.default.func
90
+ };
91
+ var DSImageLibraryModal_default = DSImageLibraryModal;
92
+ //# sourceMappingURL=DSImageLibraryModal.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/DSImageLibraryModal.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { MODAL_TYPE } from '@elliemae/ds-modal';\nimport { sizeOptions } from '@elliemae/ds-shared';\nimport ImageLibraryModalImpl from './components/ImageLibraryModalImpl.js';\n\nconst modalTypes = Object.values(MODAL_TYPE);\n\nconst DSImageLibraryModal = ({\n containerProps = {},\n confirmLabel = 'Add',\n disableDoubleClick = false,\n isOpen = true,\n modalTitle = 'Add Image',\n modalType = modalTypes[2],\n rejectLabel = 'Cancel',\n shouldCloseOnOverlayClick = true,\n size = sizeOptions[3],\n imagesData = [\n {\n url: 'https://www.freeiconspng.com/minicovers/no-image-icon-6.png',\n name: 'no image',\n createdBy: 'user:John Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n ],\n onSelect = () => null,\n ...rest\n}) => (\n <ImageLibraryModalImpl\n confirmLabel={confirmLabel}\n containerProps={containerProps}\n disableDoubleClick={disableDoubleClick}\n imagesData={imagesData}\n isOpen={isOpen}\n modalTitle={modalTitle}\n modalType={modalType}\n onSelect={onSelect}\n rejectLabel={rejectLabel}\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n size={size}\n {...rest}\n />\n);\n\n/** Inherits DSModal props */\nDSImageLibraryModal.propTypes = {\n containerProps: PropTypes.shape({}),\n /** List of images src */\n imagesData: PropTypes.arrayOf(\n PropTypes.shape({\n url: PropTypes.string,\n name: PropTypes.string,\n }),\n ),\n /** Handler when user selects an image */\n onSelect: PropTypes.func,\n};\n\nexport { DSImageLibraryModal };\nexport default DSImageLibraryModal;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD6BrB;AA5BF,wBAAsB;AACtB,sBAA2B;AAC3B,uBAA4B;AAC5B,mCAAkC;AAElC,MAAM,aAAa,OAAO,OAAO,0BAAU;AAE3C,MAAM,sBAAsB,CAAC;AAAA,EAC3B,iBAAiB,CAAC;AAAA,EAClB,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY,WAAW,CAAC;AAAA,EACxB,cAAc;AAAA,EACd,4BAA4B;AAAA,EAC5B,OAAO,6BAAY,CAAC;AAAA,EACpB,aAAa;AAAA,IACX;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,WAAW,MAAM;AAAA,EACjB,GAAG;AACL,MACE;AAAA,EAAC,6BAAAA;AAAA,EAAA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACC,GAAG;AAAA;AACN;AAIF,oBAAoB,YAAY;AAAA,EAC9B,gBAAgB,kBAAAC,QAAU,MAAM,CAAC,CAAC;AAAA;AAAA,EAElC,YAAY,kBAAAA,QAAU;AAAA,IACpB,kBAAAA,QAAU,MAAM;AAAA,MACd,KAAK,kBAAAA,QAAU;AAAA,MACf,MAAM,kBAAAA,QAAU;AAAA,IAClB,CAAC;AAAA,EACH;AAAA;AAAA,EAEA,UAAU,kBAAAA,QAAU;AACtB;AAGA,IAAO,8BAAQ;",
6
+ "names": ["ImageLibraryModalImpl", "PropTypes"]
7
+ }
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ImageLibraryModalImpl_exports = {};
30
+ __export(ImageLibraryModalImpl_exports, {
31
+ default: () => ImageLibraryModalImpl
32
+ });
33
+ module.exports = __toCommonJS(ImageLibraryModalImpl_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_ds_modal = require("@elliemae/ds-modal");
38
+ var import_ds_spinner = require("@elliemae/ds-spinner");
39
+ var import_ds_icon = require("@elliemae/ds-icon");
40
+ var import_lodash = require("lodash");
41
+ var import_react_loading_image = __toESM(require("react-loading-image"));
42
+ var import_ds_icons = require("@elliemae/ds-icons");
43
+ const elementClassName = "imglibmodal-element";
44
+ class ImageLibraryModalImpl extends import_react.default.PureComponent {
45
+ constructor(props) {
46
+ super(props);
47
+ this.onReject = () => {
48
+ const { onReject, onClose } = this.props;
49
+ if (onReject) {
50
+ onReject();
51
+ } else {
52
+ onClose();
53
+ }
54
+ };
55
+ this.handleElementClick = (e, image) => {
56
+ if (e.key && e.key !== " ") {
57
+ return;
58
+ }
59
+ const { selected } = this.state;
60
+ const { disableDoubleClick, onConfirm, onSelect } = this.props;
61
+ if (image === selected && onConfirm && !disableDoubleClick) {
62
+ onConfirm();
63
+ return;
64
+ }
65
+ this.setState({
66
+ selected: image,
67
+ user: this.getUser(image)
68
+ });
69
+ if (onSelect) {
70
+ onSelect(image);
71
+ }
72
+ };
73
+ this.renderElements = () => {
74
+ const { imagesData } = this.props;
75
+ if (!imagesData) {
76
+ return "Empty";
77
+ }
78
+ const { selected } = this.state;
79
+ return imagesData.map((image, idx) => {
80
+ const extras = {};
81
+ const { name, id } = image;
82
+ if (this.focusFirst && idx === 0) {
83
+ extras.ref = (element) => element && element.focus();
84
+ this.focusFirst = void 0;
85
+ } else if (selected && name === selected.name) {
86
+ extras.ref = (element) => element && element.focus();
87
+ }
88
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
89
+ "div",
90
+ {
91
+ className: elementClassName,
92
+ onClick: (e) => this.handleElementClick(e, image),
93
+ onKeyUp: (e) => this.handleElementClick(e, image),
94
+ role: "button",
95
+ tabIndex: 0,
96
+ ...extras,
97
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "content", children: name })
98
+ },
99
+ id || `${name}_${idx}`
100
+ );
101
+ });
102
+ };
103
+ this.renderSpinner = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_spinner.DSSpinner, { message: "Loading...", size: "m" });
104
+ this.renderError = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ImageMissing, { color: import_ds_icon.DSIconColors.NEUTRAL, size: import_ds_icon.DSIconSizes.M });
105
+ this.state = {
106
+ selected: void 0,
107
+ user: void 0
108
+ };
109
+ this.preventSpacebarScroll();
110
+ }
111
+ componentDidMount() {
112
+ const { imagesData } = this.props;
113
+ if (imagesData) {
114
+ this.handleElementClick({}, imagesData[0]);
115
+ this.focusFirst = true;
116
+ }
117
+ }
118
+ getDerivedStateFromProps(nextProps) {
119
+ const { imagesData } = this.props;
120
+ if (!imagesData && nextProps.imagesData) {
121
+ this.setState({ selected: imagesData[0] });
122
+ }
123
+ }
124
+ getUser(selected) {
125
+ if (!selected) {
126
+ return "";
127
+ }
128
+ const index = selected.createdBy.lastIndexOf("user:");
129
+ if (index === -1) {
130
+ return selected.createdBy;
131
+ }
132
+ return selected.createdBy.substring(index + 5);
133
+ }
134
+ preventSpacebarScroll() {
135
+ document.onkeypress = function(e) {
136
+ if (!(0, import_lodash.includes)(e.target.className, elementClassName)) {
137
+ return true;
138
+ }
139
+ e = e || window.event;
140
+ const charCode = e.keyCode || e.which;
141
+ if (charCode === 32) {
142
+ e.preventDefault();
143
+ return false;
144
+ }
145
+ return true;
146
+ };
147
+ }
148
+ drawDiv(className, content) {
149
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className, children: content });
150
+ }
151
+ drawLabel(className, label, value) {
152
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className, children: [
153
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "label", children: label }),
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "value", children: value })
155
+ ] });
156
+ }
157
+ render() {
158
+ const { selected, user } = this.state;
159
+ const { containerProps, imagesData, onSelect, disableDoubleClick, ...modalProps } = this.props;
160
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
161
+ import_ds_modal.DSModal,
162
+ {
163
+ containerProps,
164
+ ...modalProps,
165
+ className: "em-ds-modal-image-library",
166
+ onReject: this.onReject,
167
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "wrapper", children: [
168
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col-1", children: [
169
+ this.drawDiv("title", "Company Images"),
170
+ this.renderElements()
171
+ ] }),
172
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col-2", children: [
173
+ this.drawDiv("title", selected ? selected.name : ""),
174
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
175
+ import_react_loading_image.default,
176
+ {
177
+ className: "image-loader",
178
+ error: this.renderError,
179
+ loading: this.renderSpinner,
180
+ src: selected ? selected.url : ""
181
+ }
182
+ ),
183
+ selected && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "info", children: [
184
+ this.drawLabel("info-element", "Created Date:", selected.createdDate),
185
+ this.drawLabel("info-element", "Created By:", user)
186
+ ] })
187
+ ] })
188
+ ] })
189
+ }
190
+ );
191
+ }
192
+ }
193
+ //# sourceMappingURL=ImageLibraryModalImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ImageLibraryModalImpl.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-lines */\nimport React from 'react';\nimport { DSModal } from '@elliemae/ds-modal';\nimport { DSSpinner } from '@elliemae/ds-spinner';\nimport { DSIconSizes as ICONS_SIZES, DSIconColors as ICONS_COLORS } from '@elliemae/ds-icon';\nimport { includes } from 'lodash';\nimport ImageLoader from 'react-loading-image';\nimport { ImageMissing } from '@elliemae/ds-icons';\n\nconst elementClassName = 'imglibmodal-element';\n\nexport default class ImageLibraryModalImpl extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n selected: undefined,\n user: undefined,\n };\n this.preventSpacebarScroll();\n }\n\n componentDidMount() {\n const { imagesData } = this.props;\n if (imagesData) {\n this.handleElementClick({}, imagesData[0]);\n this.focusFirst = true;\n }\n }\n\n getDerivedStateFromProps(nextProps) {\n const { imagesData } = this.props;\n if (!imagesData && nextProps.imagesData) {\n this.setState({ selected: imagesData[0] });\n }\n }\n\n onReject = () => {\n const { onReject, onClose } = this.props;\n if (onReject) {\n onReject();\n } else {\n onClose();\n }\n };\n\n getUser(selected) {\n if (!selected) {\n return '';\n }\n const index = selected.createdBy.lastIndexOf('user:');\n if (index === -1) {\n return selected.createdBy;\n }\n return selected.createdBy.substring(index + 5);\n }\n\n handleElementClick = (e, image) => {\n if (e.key && e.key !== ' ') {\n return;\n }\n const { selected } = this.state;\n const { disableDoubleClick, onConfirm, onSelect } = this.props;\n if (image === selected && onConfirm && !disableDoubleClick) {\n onConfirm();\n return;\n }\n this.setState({\n selected: image,\n user: this.getUser(image),\n });\n if (onSelect) {\n onSelect(image);\n }\n };\n\n preventSpacebarScroll() {\n document.onkeypress = function (e) {\n if (!includes(e.target.className, elementClassName)) {\n return true;\n }\n e = e || window.event;\n const charCode = e.keyCode || e.which;\n if (charCode === 32) {\n e.preventDefault();\n return false;\n }\n return true;\n };\n }\n\n drawDiv(className, content) {\n return <div className={className}>{content}</div>;\n }\n\n drawLabel(className, label, value) {\n return (\n <div className={className}>\n <span className=\"label\">{label}</span>\n <span className=\"value\">{value}</span>\n </div>\n );\n }\n\n renderElements = () => {\n const { imagesData } = this.props;\n if (!imagesData) {\n return 'Empty';\n }\n const { selected } = this.state;\n return imagesData.map((image, idx) => {\n const extras = {};\n const { name, id } = image;\n if (this.focusFirst && idx === 0) {\n extras.ref = (element) => element && element.focus();\n this.focusFirst = undefined;\n } else if (selected && name === selected.name) {\n extras.ref = (element) => element && element.focus();\n }\n return (\n <div\n key={id || `${name}_${idx}`}\n className={elementClassName}\n onClick={(e) => this.handleElementClick(e, image)}\n onKeyUp={(e) => this.handleElementClick(e, image)}\n role=\"button\"\n tabIndex={0}\n {...extras}\n >\n <div className=\"content\">{name}</div>\n </div>\n );\n });\n };\n\n renderSpinner = () => <DSSpinner message=\"Loading...\" size=\"m\" />;\n\n renderError = () => <ImageMissing color={ICONS_COLORS.NEUTRAL} size={ICONS_SIZES.M} />;\n\n render() {\n const { selected, user } = this.state;\n const { containerProps, imagesData, onSelect, disableDoubleClick, ...modalProps } = this.props;\n return (\n <DSModal\n containerProps={containerProps}\n {...modalProps}\n className=\"em-ds-modal-image-library\"\n onReject={this.onReject}\n >\n <div className=\"wrapper\">\n <div className=\"col-1\">\n {this.drawDiv('title', 'Company Images')}\n {this.renderElements()}\n </div>\n <div className=\"col-2\">\n {this.drawDiv('title', selected ? selected.name : '')}\n <ImageLoader\n className=\"image-loader\"\n error={this.renderError}\n loading={this.renderSpinner}\n src={selected ? selected.url : ''}\n />\n {selected && (\n <div className=\"info\">\n {this.drawLabel('info-element', 'Created Date:', selected.createdDate)}\n {this.drawLabel('info-element', 'Created By:', user)}\n </div>\n )}\n </div>\n </div>\n </DSModal>\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "ICONS_COLORS", "ICONS_SIZES", "ImageLoader"]
7
+ }
package/dist/cjs/index.js CHANGED
@@ -17,7 +17,6 @@ var __copyProps = (to, from, except, desc) => {
17
17
  }
18
18
  return to;
19
19
  };
20
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
21
  // If the importer is in node compatibility mode or this is not an ESM
23
22
  // file that has been converted to a CommonJS file using a Babel-
@@ -29,10 +28,10 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
29
  var src_exports = {};
31
30
  __export(src_exports, {
32
- default: () => import_ds_legacy_imagelibrarymodal.default
31
+ DSImageLibraryModal: () => import_DSImageLibraryModal.DSImageLibraryModal,
32
+ default: () => import_DSImageLibraryModal.default
33
33
  });
34
34
  module.exports = __toCommonJS(src_exports);
35
35
  var React = __toESM(require("react"));
36
- __reExport(src_exports, require("@elliemae/ds-legacy-imagelibrarymodal"), module.exports);
37
- var import_ds_legacy_imagelibrarymodal = __toESM(require("@elliemae/ds-legacy-imagelibrarymodal"));
36
+ var import_DSImageLibraryModal = __toESM(require("./DSImageLibraryModal.js"));
38
37
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export * from '@elliemae/ds-legacy-imagelibrarymodal';\nexport { default } from '@elliemae/ds-legacy-imagelibrarymodal';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,wBAAc,kDAAd;AACA,yCAAwB;",
4
+ "sourcesContent": ["export { default, DSImageLibraryModal } from './DSImageLibraryModal.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,iCAA6C;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,62 @@
1
+ import * as React from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import PropTypes from "prop-types";
4
+ import { MODAL_TYPE } from "@elliemae/ds-modal";
5
+ import { sizeOptions } from "@elliemae/ds-shared";
6
+ import ImageLibraryModalImpl from "./components/ImageLibraryModalImpl.js";
7
+ const modalTypes = Object.values(MODAL_TYPE);
8
+ const DSImageLibraryModal = ({
9
+ containerProps = {},
10
+ confirmLabel = "Add",
11
+ disableDoubleClick = false,
12
+ isOpen = true,
13
+ modalTitle = "Add Image",
14
+ modalType = modalTypes[2],
15
+ rejectLabel = "Cancel",
16
+ shouldCloseOnOverlayClick = true,
17
+ size = sizeOptions[3],
18
+ imagesData = [
19
+ {
20
+ url: "https://www.freeiconspng.com/minicovers/no-image-icon-6.png",
21
+ name: "no image",
22
+ createdBy: "user:John Doe",
23
+ createdDate: "0000-01-01 00:00 AM UTC"
24
+ }
25
+ ],
26
+ onSelect = () => null,
27
+ ...rest
28
+ }) => /* @__PURE__ */ jsx(
29
+ ImageLibraryModalImpl,
30
+ {
31
+ confirmLabel,
32
+ containerProps,
33
+ disableDoubleClick,
34
+ imagesData,
35
+ isOpen,
36
+ modalTitle,
37
+ modalType,
38
+ onSelect,
39
+ rejectLabel,
40
+ shouldCloseOnOverlayClick,
41
+ size,
42
+ ...rest
43
+ }
44
+ );
45
+ DSImageLibraryModal.propTypes = {
46
+ containerProps: PropTypes.shape({}),
47
+ /** List of images src */
48
+ imagesData: PropTypes.arrayOf(
49
+ PropTypes.shape({
50
+ url: PropTypes.string,
51
+ name: PropTypes.string
52
+ })
53
+ ),
54
+ /** Handler when user selects an image */
55
+ onSelect: PropTypes.func
56
+ };
57
+ var DSImageLibraryModal_default = DSImageLibraryModal;
58
+ export {
59
+ DSImageLibraryModal,
60
+ DSImageLibraryModal_default as default
61
+ };
62
+ //# sourceMappingURL=DSImageLibraryModal.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/DSImageLibraryModal.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport PropTypes from 'prop-types';\nimport { MODAL_TYPE } from '@elliemae/ds-modal';\nimport { sizeOptions } from '@elliemae/ds-shared';\nimport ImageLibraryModalImpl from './components/ImageLibraryModalImpl.js';\n\nconst modalTypes = Object.values(MODAL_TYPE);\n\nconst DSImageLibraryModal = ({\n containerProps = {},\n confirmLabel = 'Add',\n disableDoubleClick = false,\n isOpen = true,\n modalTitle = 'Add Image',\n modalType = modalTypes[2],\n rejectLabel = 'Cancel',\n shouldCloseOnOverlayClick = true,\n size = sizeOptions[3],\n imagesData = [\n {\n url: 'https://www.freeiconspng.com/minicovers/no-image-icon-6.png',\n name: 'no image',\n createdBy: 'user:John Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n ],\n onSelect = () => null,\n ...rest\n}) => (\n <ImageLibraryModalImpl\n confirmLabel={confirmLabel}\n containerProps={containerProps}\n disableDoubleClick={disableDoubleClick}\n imagesData={imagesData}\n isOpen={isOpen}\n modalTitle={modalTitle}\n modalType={modalType}\n onSelect={onSelect}\n rejectLabel={rejectLabel}\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n size={size}\n {...rest}\n />\n);\n\n/** Inherits DSModal props */\nDSImageLibraryModal.propTypes = {\n containerProps: PropTypes.shape({}),\n /** List of images src */\n imagesData: PropTypes.arrayOf(\n PropTypes.shape({\n url: PropTypes.string,\n name: PropTypes.string,\n }),\n ),\n /** Handler when user selects an image */\n onSelect: PropTypes.func,\n};\n\nexport { DSImageLibraryModal };\nexport default DSImageLibraryModal;\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;AC6BrB;AA5BF,OAAO,eAAe;AACtB,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,OAAO,2BAA2B;AAElC,MAAM,aAAa,OAAO,OAAO,UAAU;AAE3C,MAAM,sBAAsB,CAAC;AAAA,EAC3B,iBAAiB,CAAC;AAAA,EAClB,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY,WAAW,CAAC;AAAA,EACxB,cAAc;AAAA,EACd,4BAA4B;AAAA,EAC5B,OAAO,YAAY,CAAC;AAAA,EACpB,aAAa;AAAA,IACX;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,WAAW,MAAM;AAAA,EACjB,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACC,GAAG;AAAA;AACN;AAIF,oBAAoB,YAAY;AAAA,EAC9B,gBAAgB,UAAU,MAAM,CAAC,CAAC;AAAA;AAAA,EAElC,YAAY,UAAU;AAAA,IACpB,UAAU,MAAM;AAAA,MACd,KAAK,UAAU;AAAA,MACf,MAAM,UAAU;AAAA,IAClB,CAAC;AAAA,EACH;AAAA;AAAA,EAEA,UAAU,UAAU;AACtB;AAGA,IAAO,8BAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,163 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React2 from "react";
4
+ import { DSModal } from "@elliemae/ds-modal";
5
+ import { DSSpinner } from "@elliemae/ds-spinner";
6
+ import { DSIconSizes as ICONS_SIZES, DSIconColors as ICONS_COLORS } from "@elliemae/ds-icon";
7
+ import { includes } from "lodash";
8
+ import ImageLoader from "react-loading-image";
9
+ import { ImageMissing } from "@elliemae/ds-icons";
10
+ const elementClassName = "imglibmodal-element";
11
+ class ImageLibraryModalImpl extends React2.PureComponent {
12
+ constructor(props) {
13
+ super(props);
14
+ this.onReject = () => {
15
+ const { onReject, onClose } = this.props;
16
+ if (onReject) {
17
+ onReject();
18
+ } else {
19
+ onClose();
20
+ }
21
+ };
22
+ this.handleElementClick = (e, image) => {
23
+ if (e.key && e.key !== " ") {
24
+ return;
25
+ }
26
+ const { selected } = this.state;
27
+ const { disableDoubleClick, onConfirm, onSelect } = this.props;
28
+ if (image === selected && onConfirm && !disableDoubleClick) {
29
+ onConfirm();
30
+ return;
31
+ }
32
+ this.setState({
33
+ selected: image,
34
+ user: this.getUser(image)
35
+ });
36
+ if (onSelect) {
37
+ onSelect(image);
38
+ }
39
+ };
40
+ this.renderElements = () => {
41
+ const { imagesData } = this.props;
42
+ if (!imagesData) {
43
+ return "Empty";
44
+ }
45
+ const { selected } = this.state;
46
+ return imagesData.map((image, idx) => {
47
+ const extras = {};
48
+ const { name, id } = image;
49
+ if (this.focusFirst && idx === 0) {
50
+ extras.ref = (element) => element && element.focus();
51
+ this.focusFirst = void 0;
52
+ } else if (selected && name === selected.name) {
53
+ extras.ref = (element) => element && element.focus();
54
+ }
55
+ return /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ className: elementClassName,
59
+ onClick: (e) => this.handleElementClick(e, image),
60
+ onKeyUp: (e) => this.handleElementClick(e, image),
61
+ role: "button",
62
+ tabIndex: 0,
63
+ ...extras,
64
+ children: /* @__PURE__ */ jsx("div", { className: "content", children: name })
65
+ },
66
+ id || `${name}_${idx}`
67
+ );
68
+ });
69
+ };
70
+ this.renderSpinner = () => /* @__PURE__ */ jsx(DSSpinner, { message: "Loading...", size: "m" });
71
+ this.renderError = () => /* @__PURE__ */ jsx(ImageMissing, { color: ICONS_COLORS.NEUTRAL, size: ICONS_SIZES.M });
72
+ this.state = {
73
+ selected: void 0,
74
+ user: void 0
75
+ };
76
+ this.preventSpacebarScroll();
77
+ }
78
+ componentDidMount() {
79
+ const { imagesData } = this.props;
80
+ if (imagesData) {
81
+ this.handleElementClick({}, imagesData[0]);
82
+ this.focusFirst = true;
83
+ }
84
+ }
85
+ getDerivedStateFromProps(nextProps) {
86
+ const { imagesData } = this.props;
87
+ if (!imagesData && nextProps.imagesData) {
88
+ this.setState({ selected: imagesData[0] });
89
+ }
90
+ }
91
+ getUser(selected) {
92
+ if (!selected) {
93
+ return "";
94
+ }
95
+ const index = selected.createdBy.lastIndexOf("user:");
96
+ if (index === -1) {
97
+ return selected.createdBy;
98
+ }
99
+ return selected.createdBy.substring(index + 5);
100
+ }
101
+ preventSpacebarScroll() {
102
+ document.onkeypress = function(e) {
103
+ if (!includes(e.target.className, elementClassName)) {
104
+ return true;
105
+ }
106
+ e = e || window.event;
107
+ const charCode = e.keyCode || e.which;
108
+ if (charCode === 32) {
109
+ e.preventDefault();
110
+ return false;
111
+ }
112
+ return true;
113
+ };
114
+ }
115
+ drawDiv(className, content) {
116
+ return /* @__PURE__ */ jsx("div", { className, children: content });
117
+ }
118
+ drawLabel(className, label, value) {
119
+ return /* @__PURE__ */ jsxs("div", { className, children: [
120
+ /* @__PURE__ */ jsx("span", { className: "label", children: label }),
121
+ /* @__PURE__ */ jsx("span", { className: "value", children: value })
122
+ ] });
123
+ }
124
+ render() {
125
+ const { selected, user } = this.state;
126
+ const { containerProps, imagesData, onSelect, disableDoubleClick, ...modalProps } = this.props;
127
+ return /* @__PURE__ */ jsx(
128
+ DSModal,
129
+ {
130
+ containerProps,
131
+ ...modalProps,
132
+ className: "em-ds-modal-image-library",
133
+ onReject: this.onReject,
134
+ children: /* @__PURE__ */ jsxs("div", { className: "wrapper", children: [
135
+ /* @__PURE__ */ jsxs("div", { className: "col-1", children: [
136
+ this.drawDiv("title", "Company Images"),
137
+ this.renderElements()
138
+ ] }),
139
+ /* @__PURE__ */ jsxs("div", { className: "col-2", children: [
140
+ this.drawDiv("title", selected ? selected.name : ""),
141
+ /* @__PURE__ */ jsx(
142
+ ImageLoader,
143
+ {
144
+ className: "image-loader",
145
+ error: this.renderError,
146
+ loading: this.renderSpinner,
147
+ src: selected ? selected.url : ""
148
+ }
149
+ ),
150
+ selected && /* @__PURE__ */ jsxs("div", { className: "info", children: [
151
+ this.drawLabel("info-element", "Created Date:", selected.createdDate),
152
+ this.drawLabel("info-element", "Created By:", user)
153
+ ] })
154
+ ] })
155
+ ] })
156
+ }
157
+ );
158
+ }
159
+ }
160
+ export {
161
+ ImageLibraryModalImpl as default
162
+ };
163
+ //# sourceMappingURL=ImageLibraryModalImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/components/ImageLibraryModalImpl.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React from 'react';\nimport { DSModal } from '@elliemae/ds-modal';\nimport { DSSpinner } from '@elliemae/ds-spinner';\nimport { DSIconSizes as ICONS_SIZES, DSIconColors as ICONS_COLORS } from '@elliemae/ds-icon';\nimport { includes } from 'lodash';\nimport ImageLoader from 'react-loading-image';\nimport { ImageMissing } from '@elliemae/ds-icons';\n\nconst elementClassName = 'imglibmodal-element';\n\nexport default class ImageLibraryModalImpl extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n selected: undefined,\n user: undefined,\n };\n this.preventSpacebarScroll();\n }\n\n componentDidMount() {\n const { imagesData } = this.props;\n if (imagesData) {\n this.handleElementClick({}, imagesData[0]);\n this.focusFirst = true;\n }\n }\n\n getDerivedStateFromProps(nextProps) {\n const { imagesData } = this.props;\n if (!imagesData && nextProps.imagesData) {\n this.setState({ selected: imagesData[0] });\n }\n }\n\n onReject = () => {\n const { onReject, onClose } = this.props;\n if (onReject) {\n onReject();\n } else {\n onClose();\n }\n };\n\n getUser(selected) {\n if (!selected) {\n return '';\n }\n const index = selected.createdBy.lastIndexOf('user:');\n if (index === -1) {\n return selected.createdBy;\n }\n return selected.createdBy.substring(index + 5);\n }\n\n handleElementClick = (e, image) => {\n if (e.key && e.key !== ' ') {\n return;\n }\n const { selected } = this.state;\n const { disableDoubleClick, onConfirm, onSelect } = this.props;\n if (image === selected && onConfirm && !disableDoubleClick) {\n onConfirm();\n return;\n }\n this.setState({\n selected: image,\n user: this.getUser(image),\n });\n if (onSelect) {\n onSelect(image);\n }\n };\n\n preventSpacebarScroll() {\n document.onkeypress = function (e) {\n if (!includes(e.target.className, elementClassName)) {\n return true;\n }\n e = e || window.event;\n const charCode = e.keyCode || e.which;\n if (charCode === 32) {\n e.preventDefault();\n return false;\n }\n return true;\n };\n }\n\n drawDiv(className, content) {\n return <div className={className}>{content}</div>;\n }\n\n drawLabel(className, label, value) {\n return (\n <div className={className}>\n <span className=\"label\">{label}</span>\n <span className=\"value\">{value}</span>\n </div>\n );\n }\n\n renderElements = () => {\n const { imagesData } = this.props;\n if (!imagesData) {\n return 'Empty';\n }\n const { selected } = this.state;\n return imagesData.map((image, idx) => {\n const extras = {};\n const { name, id } = image;\n if (this.focusFirst && idx === 0) {\n extras.ref = (element) => element && element.focus();\n this.focusFirst = undefined;\n } else if (selected && name === selected.name) {\n extras.ref = (element) => element && element.focus();\n }\n return (\n <div\n key={id || `${name}_${idx}`}\n className={elementClassName}\n onClick={(e) => this.handleElementClick(e, image)}\n onKeyUp={(e) => this.handleElementClick(e, image)}\n role=\"button\"\n tabIndex={0}\n {...extras}\n >\n <div className=\"content\">{name}</div>\n </div>\n );\n });\n };\n\n renderSpinner = () => <DSSpinner message=\"Loading...\" size=\"m\" />;\n\n renderError = () => <ImageMissing color={ICONS_COLORS.NEUTRAL} size={ICONS_SIZES.M} />;\n\n render() {\n const { selected, user } = this.state;\n const { containerProps, imagesData, onSelect, disableDoubleClick, ...modalProps } = this.props;\n return (\n <DSModal\n containerProps={containerProps}\n {...modalProps}\n className=\"em-ds-modal-image-library\"\n onReject={this.onReject}\n >\n <div className=\"wrapper\">\n <div className=\"col-1\">\n {this.drawDiv('title', 'Company Images')}\n {this.renderElements()}\n </div>\n <div className=\"col-2\">\n {this.drawDiv('title', selected ? selected.name : '')}\n <ImageLoader\n className=\"image-loader\"\n error={this.renderError}\n loading={this.renderSpinner}\n src={selected ? selected.url : ''}\n />\n {selected && (\n <div className=\"info\">\n {this.drawLabel('info-element', 'Created Date:', selected.createdDate)}\n {this.drawLabel('info-element', 'Created By:', user)}\n </div>\n )}\n </div>\n </div>\n </DSModal>\n );\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["React"]
7
+ }
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
- export * from "@elliemae/ds-legacy-imagelibrarymodal";
3
- import { default as default2 } from "@elliemae/ds-legacy-imagelibrarymodal";
2
+ import { default as default2, DSImageLibraryModal } from "./DSImageLibraryModal.js";
4
3
  export {
4
+ DSImageLibraryModal,
5
5
  default2 as default
6
6
  };
7
7
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from '@elliemae/ds-legacy-imagelibrarymodal';\nexport { default } from '@elliemae/ds-legacy-imagelibrarymodal';\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,SAAS,WAAAA,gBAAe;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { default, DSImageLibraryModal } from './DSImageLibraryModal.js';\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,WAAAA,UAAS,2BAA2B;",
6
6
  "names": ["default"]
7
7
  }
@@ -0,0 +1,35 @@
1
+ import PropTypes from 'prop-types';
2
+ declare const DSImageLibraryModal: {
3
+ ({ containerProps, confirmLabel, disableDoubleClick, isOpen, modalTitle, modalType, rejectLabel, shouldCloseOnOverlayClick, size, imagesData, onSelect, ...rest }: {
4
+ [x: string]: any;
5
+ containerProps?: {} | undefined;
6
+ confirmLabel?: string | undefined;
7
+ disableDoubleClick?: boolean | undefined;
8
+ isOpen?: boolean | undefined;
9
+ modalTitle?: string | undefined;
10
+ modalType?: string | undefined;
11
+ rejectLabel?: string | undefined;
12
+ shouldCloseOnOverlayClick?: boolean | undefined;
13
+ size?: string | undefined;
14
+ imagesData?: {
15
+ url: string;
16
+ name: string;
17
+ createdBy: string;
18
+ createdDate: string;
19
+ }[] | undefined;
20
+ onSelect?: (() => null) | undefined;
21
+ }): import("react/jsx-runtime.js").JSX.Element;
22
+ /** Inherits DSModal props */
23
+ propTypes: {
24
+ containerProps: PropTypes.Requireable<PropTypes.InferProps<{}>>;
25
+ /** List of images src */
26
+ imagesData: PropTypes.Requireable<(PropTypes.InferProps<{
27
+ url: PropTypes.Requireable<string>;
28
+ name: PropTypes.Requireable<string>;
29
+ }> | null | undefined)[]>;
30
+ /** Handler when user selects an image */
31
+ onSelect: PropTypes.Requireable<(...args: any[]) => any>;
32
+ };
33
+ };
34
+ export { DSImageLibraryModal };
35
+ export default DSImageLibraryModal;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export default class ImageLibraryModalImpl extends React.PureComponent {
3
+ constructor(props: any);
4
+ componentDidMount(): void;
5
+ getDerivedStateFromProps(nextProps: any): void;
6
+ onReject: () => void;
7
+ getUser(selected: any): any;
8
+ handleElementClick: (e: any, image: any) => void;
9
+ preventSpacebarScroll(): void;
10
+ drawDiv(className: any, content: any): import("react/jsx-runtime").JSX.Element;
11
+ drawLabel(className: any, label: any, value: any): import("react/jsx-runtime").JSX.Element;
12
+ renderElements: () => any;
13
+ renderSpinner: () => import("react/jsx-runtime").JSX.Element;
14
+ renderError: () => import("react/jsx-runtime").JSX.Element;
15
+ render(): import("react/jsx-runtime").JSX.Element;
16
+ }
@@ -1,2 +1 @@
1
- export * from '@elliemae/ds-legacy-imagelibrarymodal';
2
- export { default } from '@elliemae/ds-legacy-imagelibrarymodal';
1
+ export { default, DSImageLibraryModal } from './DSImageLibraryModal.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-imagelibrarymodal",
3
- "version": "3.32.2-next.1",
3
+ "version": "3.33.0-next.0",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Image Library Modal",
6
6
  "files": [
@@ -35,12 +35,18 @@
35
35
  "indent": 4
36
36
  },
37
37
  "dependencies": {
38
- "@elliemae/ds-legacy-imagelibrarymodal": "^1.0.5"
38
+ "prop-types": "~15.8.1",
39
+ "react-loading-image": "~0.5.0",
40
+ "@elliemae/ds-icon": "3.33.0-next.0",
41
+ "@elliemae/ds-icons": "3.33.0-next.0",
42
+ "@elliemae/ds-modal": "3.33.0-next.0",
43
+ "@elliemae/ds-shared": "3.33.0-next.0",
44
+ "@elliemae/ds-spinner": "3.33.0-next.0"
39
45
  },
40
46
  "devDependencies": {
41
47
  "@elliemae/pui-cli": "~9.0.0-next.31",
42
48
  "styled-components": "~5.3.9",
43
- "@elliemae/ds-monorepo-devops": "3.32.2-next.1"
49
+ "@elliemae/ds-monorepo-devops": "3.33.0-next.0"
44
50
  },
45
51
  "peerDependencies": {
46
52
  "lodash": "^4.17.21",