@fmsim/board 1.0.34 → 1.0.38

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.
Files changed (72) hide show
  1. package/.storybook/main.ts +58 -0
  2. package/.storybook/preview.ts +15 -0
  3. package/custom-elements.json +1499 -421
  4. package/dist/src/component/index.d.ts +3 -1
  5. package/dist/src/component/index.js +3 -1
  6. package/dist/src/component/index.js.map +1 -1
  7. package/dist/src/component/restful-attachment-creation-card.d.ts +18 -0
  8. package/dist/src/component/restful-attachment-creation-card.js +264 -0
  9. package/dist/src/component/restful-attachment-creation-card.js.map +1 -0
  10. package/dist/src/component/restful-attachment-selector.d.ts +36 -0
  11. package/dist/src/component/restful-attachment-selector.js +663 -0
  12. package/dist/src/component/restful-attachment-selector.js.map +1 -0
  13. package/dist/src/component/restful-file-selector.d.ts +14 -0
  14. package/dist/src/component/restful-file-selector.js +181 -0
  15. package/dist/src/component/restful-file-selector.js.map +1 -0
  16. package/dist/src/component/restful-input-attachment-selector.d.ts +16 -0
  17. package/dist/src/component/restful-input-attachment-selector.js +110 -0
  18. package/dist/src/component/restful-input-attachment-selector.js.map +1 -0
  19. package/dist/src/component/restful-input-fill-style.d.ts +45 -0
  20. package/dist/src/component/restful-input-fill-style.js +344 -0
  21. package/dist/src/component/restful-input-fill-style.js.map +1 -0
  22. package/dist/src/component/restrul-input-background-pattern.d.ts +35 -0
  23. package/dist/src/component/restrul-input-background-pattern.js +183 -0
  24. package/dist/src/component/restrul-input-background-pattern.js.map +1 -0
  25. package/dist/src/index.d.ts +1 -0
  26. package/dist/src/index.js +1 -0
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/layers/movement-layer.d.ts +1 -0
  29. package/dist/src/layers/movement-layer.js +3 -0
  30. package/dist/src/layers/movement-layer.js.map +1 -1
  31. package/dist/src/modeller/property-sidebar/styles/styles.d.ts +1 -0
  32. package/dist/src/modeller/property-sidebar/styles/styles.js +5 -1
  33. package/dist/src/modeller/property-sidebar/styles/styles.js.map +1 -1
  34. package/dist/stories/restful-attachment-selector.stories.d.ts +30 -0
  35. package/dist/stories/restful-attachment-selector.stories.js +104 -0
  36. package/dist/stories/restful-attachment-selector.stories.js.map +1 -0
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/icons/attachment/btn-copy-link-hover.svg +4 -0
  39. package/icons/attachment/btn-copy-link.svg +4 -0
  40. package/icons/attachment/btn-delete-hover.svg +4 -0
  41. package/icons/attachment/btn-delete.svg +4 -0
  42. package/icons/attachment/btn-download-hover.svg +4 -0
  43. package/icons/attachment/btn-download.svg +4 -0
  44. package/icons/attachment/btn-zoom-hover.svg +4 -0
  45. package/icons/attachment/btn-zoom.svg +4 -0
  46. package/icons/attachment/file.svg +3 -0
  47. package/icons/board/btn-add-board.svg +5 -0
  48. package/icons/board/btn-add-list.svg +5 -0
  49. package/icons/board/btn-close-dropbox.svg +3 -0
  50. package/icons/board/btn-edit-hover.svg +4 -0
  51. package/icons/board/btn-edit.svg +4 -0
  52. package/icons/board/btn-favorite-hover-on.svg +4 -0
  53. package/icons/board/btn-favorite-hover.svg +4 -0
  54. package/icons/board/btn-favorite-on.svg +4 -0
  55. package/icons/board/btn-favorite.svg +4 -0
  56. package/icons/board/btn-info-hover.svg +3 -0
  57. package/icons/board/btn-info.svg +3 -0
  58. package/icons/board/btn-open-dropbox.svg +3 -0
  59. package/icons/board/btn-users.svg +4 -0
  60. package/icons/board/favorite_black.svg +1 -0
  61. package/icons/group-bar/btn-add-list.png +0 -0
  62. package/icons/group-bar/btn-close-dropbox.png +0 -0
  63. package/icons/group-bar/btn-edit.png +0 -0
  64. package/icons/group-bar/btn-open-dropbox-color.png +0 -0
  65. package/icons/group-bar/btn-search-name.png +0 -0
  66. package/package.json +12 -8
  67. package/stories/restful-attachment-selector.stories.ts +113 -0
  68. package/.storybook/main.js +0 -3
  69. package/dist/stories/index.stories.d.ts +0 -33
  70. package/dist/stories/index.stories.js +0 -33
  71. package/dist/stories/index.stories.js.map +0 -1
  72. package/stories/index.stories.ts +0 -52
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restful-attachment-selector.js","sourceRoot":"","sources":["../../../src/component/restful-attachment-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import './restful-attachment-creation-card.js'\n\nimport { css, html, LitElement, PropertyValues, unsafeCSS } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles, TooltipStyles } from '@operato/styles'\nimport { sleep } from '@operato/utils'\n\nimport {\n fetchAttachmentList,\n getRestServiceFullPath,\n createAttachment,\n deleteAttachment,\n deleteFile,\n getRestServiceSecondaryUrl\n} from '@fmsim/api/restful.js'\n\nimport { RestfulAttachmentCreationCard } from './restful-attachment-creation-card.js'\n\nconst btnOpenDropboxColor = require('../../../icons/group-bar/btn-open-dropbox-color.png')\nconst btnCloseDropbox = require('../../../icons/group-bar/btn-close-dropbox.png')\nconst btnAddList = require('../../../icons/group-bar/btn-add-list.png')\nconst btnZoom = require('../../../icons/attachment/btn-zoom.svg')\nconst btnZoomHover = require('../../../icons/attachment/btn-zoom-hover.svg')\nconst btnCopyLink = require('../../../icons/attachment/btn-copy-link.svg')\nconst btnCopyLinkHover = require('../../../icons/attachment/btn-copy-link-hover.svg')\nconst btnDelete = require('../../../icons/attachment/btn-delete.svg')\nconst btnDeleteHover = require('../../../icons/attachment/btn-delete-hover.svg')\nconst btnDownload = require('../../../icons/attachment/btn-download.svg')\nconst btnDownloadHover = require('../../../icons/attachment/btn-download-hover.svg')\nconst file = require('../../../icons/attachment/file.svg')\n\n@customElement('restful-attachment-selector')\nexport class RestfulAttachmentSelector extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n TooltipStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: #fff;\n /* --card-list-create-color: var(--primary-color); */\n\n position: relative;\n }\n\n :host(.candrop) {\n background: orange;\n cursor: pointer;\n }\n\n #main {\n overflow: auto;\n padding: var(--popup-content-padding);\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));\n grid-auto-rows: var(--card-list-rows-height);\n grid-gap: 20px;\n padding-top: 10px !important;\n }\n\n #main .card {\n display: flex;\n flex-direction: column;\n align-items: center;\n overflow: hidden;\n border-radius: var(--card-list-border-radius);\n border: var(--attachment-selector-border);\n background-color: var(--attachment-selector-background-color);\n\n position: relative;\n }\n\n #main .card.create {\n overflow: visible;\n background-color: initial;\n min-height: 120px;\n }\n\n #main .card:hover {\n cursor: pointer;\n }\n\n .name {\n background-color: var(--primary-color);\n opacity: 0.8;\n position: absolute;\n bottom: 0px;\n width: 100%;\n padding: 2px 5px;\n font: var(--attachment-selector-name-font);\n color: #fff;\n text-indent: 7px;\n }\n\n [show] {\n height: 100%;\n }\n\n .card img,\n .card video {\n max-height: 100%;\n max-width: 100%;\n }\n\n mwc-icon {\n position: absolute;\n right: 0px;\n text-align: center;\n\n background-color: var(--attachment-selector-icon-background-color);\n width: var(--attachment-selector-icon-size);\n height: var(--attachment-selector-icon-size);\n font: var(--attachment-selector-icon-font);\n color: var(--attachment-selector-icon-color);\n }\n\n mwc-icon:hover,\n mwc-icon:active,\n span:hover,\n span:active {\n background-color: var(--primary-color);\n color: #fff;\n }\n\n [open-in-new] {\n top: 0px;\n }\n\n [delete] {\n top: 35px;\n }\n\n [download] {\n top: 70px;\n border-bottom-left-radius: 12px;\n }\n\n #filter {\n padding: 12px 12px 12px 20px;\n background-color: var(--group-bar-background-color);\n height: 28px;\n z-index: 1;\n }\n\n select {\n text-transform: capitalize;\n float: right;\n }\n\n [etc] mwc-icon:hover,\n [etc] mwc-icon:active {\n background-color: initial;\n color: initial;\n }\n\n [etc] {\n margin: auto;\n margin-top: 45px;\n position: relative;\n }\n\n [etc] mwc-icon {\n position: initial;\n opacity: 0.2;\n width: initial;\n height: initial;\n\n font: var(--attachment-selector-etc-icon-font);\n color: var(--attachment-selector-etc-icon-color);\n }\n\n [etc] span {\n position: absolute;\n bottom: 25px;\n right: 8px;\n padding: 1px 2px;\n color: #fff;\n text-transform: uppercase;\n opacity: 0.8;\n\n background-color: var(--attachment-selector-etc-background-color);\n font: var(--attachment-selector-etc-font);\n }\n\n ul {\n display: flex;\n list-style: none;\n margin: 0;\n padding: 0;\n white-space: nowrap;\n clear: both;\n }\n\n li {\n padding: 0px 3px;\n }\n\n li:hover {\n background-color: rgba(255, 180, 180, 1);\n }\n\n li a {\n width: calc(100% - 24px);\n padding: 5px 4px 1px 4px;\n text-decoration: none;\n font-size: 12px;\n font-weight: bold;\n color: rgb(233, 103, 128);\n display: inline-block;\n }\n\n li span {\n height: 16px;\n margin-top: 4px;\n border-radius: 2px;\n float: right;\n display: none;\n }\n\n li:hover span {\n display: inline-block;\n }\n\n li span:hover {\n background-color: #f8c2cc;\n }\n\n mwc-icon {\n vertical-align: middle;\n }\n\n .group-select-box {\n position: absolute;\n width: 200px;\n min-height: 22px;\n font-size: 12px;\n font-weight: bold;\n color: #e96780;\n border: 1px solid #ccc;\n padding: 5px;\n background-color: #fff;\n float: left;\n cursor: pointer;\n display: inline-block;\n }\n\n .group-select-box span {\n background-color: #fff !important;\n color: #e96780 !important;\n }\n\n .group-select-box > span:nth-child(1) {\n padding: 4px 0 0 6px;\n float: left;\n }\n\n .group-select-box > span:nth-child(2) {\n float: right;\n margin-top: 1px;\n }\n\n .select-box {\n display: none;\n }\n\n .select-box.on {\n display: block;\n padding-top: 2px;\n }\n\n .select-box.active {\n background-color: #1344;\n }\n\n .add-group {\n cursor: pointer;\n }\n\n .btn-open-dropbox {\n width: 8px;\n height: 5px;\n display: inline-block;\n background: url(${unsafeCSS(btnOpenDropboxColor)}) no-repeat;\n }\n\n .btn-close-dropbox {\n width: 8px;\n height: 5px;\n display: inline-block;\n background: url(${unsafeCSS(btnCloseDropbox)}) no-repeat;\n }\n\n .btn-add-list-wrap {\n margin: 5px 0 0 172px;\n cursor: pointer;\n display: inline-block;\n }\n\n .btn-add-list {\n width: 9px;\n height: 9px;\n display: inline-block;\n background: url(${unsafeCSS(btnAddList)}) no-repeat;\n }\n\n select {\n position: absolute;\n width: 150px;\n min-height: 22px;\n font-size: 12px;\n font-weight: bold;\n color: #e96780;\n border: 1px solid #ccc;\n padding: 5px;\n background-color: #fff;\n z-index: 1;\n float: left;\n cursor: pointer;\n display: inline-block;\n }\n\n .card > span,\n .card > a > span {\n position: absolute;\n width: 35px;\n height: 35px;\n right: 0px;\n }\n\n .btn-zoom-cover {\n top: 0px;\n }\n .btn-zoom {\n width: 20px;\n height: 20px;\n margin: 7px;\n background: url(${unsafeCSS(btnZoom)}) no-repeat;\n display: inline-block;\n }\n .btn-zoom-cover:hover > .btn-zoom {\n background: url(${unsafeCSS(btnZoomHover)}) no-repeat;\n }\n\n .btn-copy-link {\n width: 20px;\n height: 20px;\n margin: 7px;\n background: url(${unsafeCSS(btnCopyLink)}) no-repeat;\n display: inline-block;\n }\n .card > span:hover > .btn-copy-link {\n background: url(${unsafeCSS(btnCopyLinkHover)}) no-repeat;\n }\n\n .btn-delete {\n width: 20px;\n height: 20px;\n margin: 7px;\n background: url(${unsafeCSS(btnDelete)}) no-repeat;\n display: inline-block;\n }\n .card > span:hover > .btn-delete {\n background: url(${unsafeCSS(btnDeleteHover)}) no-repeat;\n }\n\n .btn-download {\n width: 20px;\n height: 20px;\n margin: 7px;\n background: url(${unsafeCSS(btnDownload)}) no-repeat;\n display: inline-block;\n }\n .btn-download-cover:hover > .btn-download {\n background: url(${unsafeCSS(btnDownloadHover)}) no-repeat;\n }\n\n .file {\n width: 52px;\n height: 65px;\n background: url(${unsafeCSS(file)}) no-repeat;\n display: inline-block;\n }\n `\n ]\n\n @property({ type: Array }) categories: string[] = ['audio', 'video', 'image', 'text', 'application']\n @property({ type: Array }) attachments: any[] = []\n @property({ type: String }) category?: string\n @property({ type: Number }) _page: number = 1\n @property({ type: Number }) _total: number = 0\n @property({ type: Boolean }) creatable?: boolean\n @property({ type: String }) selectBoxToggle?: string | null\n @property({ type: String }) btnDropBoxIcon: string = 'btn-open-dropbox'\n @property({ type: String }) userName?: string = localStorage.getItem('FMB_userNM') || ''\n\n @query('#main') main!: HTMLDivElement\n @query('attachment-creation-card') creationCard!: RestfulAttachmentCreationCard\n\n render() {\n return html`\n <div id=\"filter\">\n <div class=\"group-select-box\" @click=${this.toggleSelectBox}>\n ${this.category\n ? html` <span>${this.category}</span> `\n : html` <span>${i18next.t('text.please choose a category')}</span> `}\n <span><i class=${this.btnDropBoxIcon}></i></span>\n <ul class=${`select-box ${this.selectBoxToggle}`}>\n <li\n value=\"\"\n @click=${(e: Event) => {\n this.category = ''\n this.requestUpdate()\n }}\n >\n <a>${i18next.t('text.please choose a category')}</a>\n </li>\n ${this.categories.map(\n category =>\n html` <li\n value=${category}\n @click=${(e: Event) => {\n this.category = category\n this.requestUpdate()\n }}\n >\n <a>${category}</a>\n </li>`\n )}\n </ul>\n </div>\n </div>\n\n <div id=\"main\">\n ${this.creatable\n ? html`\n <restful-attachment-creation-card\n class=\"card create\"\n .categories=${this.categories}\n .defaultCategory=${this.category}\n @create-attachment=${(e: Event) => this.onCreateAttachment(e)}\n @file-drop=${(e: Event) => this.onAttachmentDropped(e)}\n ></restful-attachment-creation-card>\n `\n : html``}\n ${this.attachments.map(attachment => {\n var url = attachment.fullpath\n return html`\n <div class=\"card\" @click=${(e: Event) => this.onClickSelect(attachment)}>\n <div show>\n ${attachment.category == 'image'\n ? html` <img src=${url} /> `\n : attachment.category == 'video'\n ? html` <video src=${url} controls></video> `\n : html`\n <div etc>\n <i class=\"file\"></i>\n <span>${attachment.path?.substr(attachment.path.lastIndexOf('.'))}</span>\n </div>\n `}\n </div>\n <a target=\"_blank\" href=${url}>\n <span class=\"btn-zoom-cover\"><i class=\"btn-zoom\"></i></span>\n </a>\n <div class=\"name\">${attachment.name}</div>\n <span @click=${(e: Event) => this.onDeleteAttachment(attachment.id)} delete>\n <i class=\"btn-delete\"></i>\n </span>\n <a href=${attachment.download + '/' + encodeURIComponent(attachment.name)} download=${attachment.name}>\n <span class=\"btn-download-cover\" download><i class=\"btn-download\"></i></span>\n </a>\n </div>\n `\n })}\n </div>\n `\n }\n\n toggleSelectBox() {\n if (this.selectBoxToggle === 'on') {\n this.selectBoxToggle = null\n this.btnDropBoxIcon = 'btn-close-dropbox'\n } else {\n this.selectBoxToggle = 'on'\n this.btnDropBoxIcon = 'btn-open-dropbox'\n }\n }\n\n async firstUpdated() {\n this.renderRoot.addEventListener('click', async e => {\n var target = e.target as HTMLElement\n var url = target.getAttribute('data-clipboard-url')\n if (url) {\n var { protocol, hostname, port } = location\n await this.copy(`${protocol}//${hostname}:${port}${url}`)\n\n target.setAttribute('data-tooltip', 'url copied!')\n await sleep(2000)\n target.removeAttribute('data-tooltip')\n }\n })\n\n this.refreshAttachments()\n }\n\n updated(changed: PropertyValues<this>) {\n if (changed.has('category')) {\n this.refreshAttachments()\n }\n }\n\n onClickSelect(attachment: any) {\n this.dispatchEvent(\n new CustomEvent('attachment-selected', {\n composed: true,\n bubbles: true,\n detail: {\n attachment\n }\n })\n )\n }\n\n async onAttachmentDropped(e: Event) {\n var files = (e as CustomEvent).detail\n\n await this.createAttachments('', files)\n this.refreshAttachments()\n }\n\n async onCreateAttachment(e: Event) {\n var { category, files, fileId } = (e as CustomEvent).detail\n\n files = Array.from(files)\n await this.createAttachments(category, files, fileId)\n this.refreshAttachments()\n }\n\n async onDeleteAttachment(id: string) {\n await this.deleteAttachment(id)\n\n this.refreshAttachments()\n }\n\n async refreshAttachments() {\n var attachments = await this.getAttachments()\n this.attachments = [...attachments]\n\n if (this.creationCard) {\n this.creationCard.reset()\n }\n }\n\n async appendAttachments() {\n var attachments = await this.getAttachments({ page: this._page + 1 })\n this.attachments = [...this.attachments, ...attachments]\n }\n\n async getAttachments({ page = 1, limit = 1000 } = {}) {\n var filters = [] as any[]\n var sortings = [] as any[]\n var pagination = {\n limit,\n page\n }\n\n if (this.category)\n filters.push({\n name: 'category',\n operator: 'eq',\n value: this.category\n })\n\n var params = {\n filters,\n sortings,\n pagination\n }\n\n let response = (await fetchAttachmentList(params))?.data\n if (!response || !response.status) {\n throw new Error('Error : fetchAttachmentList')\n }\n\n let attachmentListResponse = response.attachments\n\n if (!attachmentListResponse || !attachmentListResponse.items.length) return []\n attachmentListResponse.items.forEach((attachment: any) => {\n attachment.fullpath = getRestServiceFullPath() + '/images/' + attachment.path\n attachment.download = getRestServiceFullPath() + '/downloadFile/' + attachment.path\n })\n this._total = attachmentListResponse.total\n this._page = page\n\n return attachmentListResponse.items\n }\n\n async createAttachments(category: string, files: any[], fileId?: string) {\n try {\n files[0].category = category\n files[0].fileId = fileId\n const body = {\n category: files[0].category,\n name: files[0].name,\n size: files[0].size,\n type: files[0].type,\n fileId: files[0].fileId,\n userName: this.userName\n }\n let result = (await createAttachment(body))?.data\n if (!result || !result.status) throw new Error('Create Error')\n } catch (ex) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: ex,\n ex: ex\n }\n })\n )\n }\n }\n\n async deleteAttachment(id: string) {\n let server = 'Primary'\n try {\n const result = (await deleteAttachment(id))?.data\n if (!result || !result.status) throw new Error('DB Error')\n\n const deleteFileResult = (await deleteFile(result.attachment.path, 'primary'))?.data\n if (!deleteFileResult || !deleteFileResult.status) {\n throw new Error('Primary Server File Delete Error')\n }\n\n if (getRestServiceSecondaryUrl()) {\n server = 'Secondary'\n const deleteFileResultSecond = (await deleteFile(result.attachment.path, 'secondary'))?.data\n if (!deleteFileResultSecond || !deleteFileResultSecond.status) {\n throw new Error('Secondary Server File Delete Error')\n }\n }\n } catch (ex) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: server + ' Server File Delete Error // ' + ex,\n ex: ex\n }\n })\n )\n }\n }\n\n async copy(copied: any) {\n var textArea = document.createElement('textarea')\n textArea.style.position = 'absolute'\n textArea.style.opacity = '0'\n textArea.value = copied\n document.body.appendChild(textArea)\n\n await sleep(100)\n\n textArea.select()\n\n document.execCommand('copy')\n document.body.removeChild(textArea)\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class RestfulFileSelector extends LitElement {
3
+ static styles: import("lit").CSSResult[];
4
+ label: string;
5
+ accept?: string;
6
+ showFilename?: boolean;
7
+ multiple: boolean;
8
+ _files: any[];
9
+ fileInput: HTMLInputElement;
10
+ render(): import("lit-html").TemplateResult<1>;
11
+ getUUID(): string;
12
+ onFileChange(e: Event): void;
13
+ onImageFileChanged(e: Event): void;
14
+ }
@@ -0,0 +1,181 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement, property, query } from 'lit/decorators.js';
4
+ import { getRestServiceMainUrl, getUploadTempUrl } from '@fmsim/api/restful.js';
5
+ let RestfulFileSelector = class RestfulFileSelector extends LitElement {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.label = 'select file';
9
+ this.multiple = false;
10
+ this._files = [];
11
+ }
12
+ render() {
13
+ return html `
14
+ <div id="input-box">
15
+ ${this.showFilename
16
+ ? html `
17
+ <input class="upload-name" value="${this._files.map(f => f.name).join(', ') || this.label}" disabled />
18
+ `
19
+ : html ``}
20
+ <label for="input-file">${this.label}</label>
21
+ <input
22
+ id="input-file"
23
+ type="file"
24
+ accept=${this.accept || ''}
25
+ class="upload-hidden"
26
+ ?multiple=${this.multiple}
27
+ hidden
28
+ multiple
29
+ onchange=${(e) => {
30
+ this.onFileChange(e);
31
+ }}
32
+ @change=${(e) => {
33
+ this.onFileChange(e);
34
+ }}
35
+ />
36
+ </div>
37
+ `;
38
+ }
39
+ getUUID() {
40
+ // UUID v4 generator in JavaScript (RFC4122 compliant)
41
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
42
+ var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 3) | 8;
43
+ return v.toString(16);
44
+ });
45
+ }
46
+ onFileChange(e) {
47
+ if (!e) {
48
+ return;
49
+ }
50
+ const el = e.currentTarget;
51
+ const files = el.files || e.dataTransfer.files;
52
+ const files2 = el.files || e.dataTransfer.files;
53
+ if (!files.length) {
54
+ return;
55
+ }
56
+ const formData = new FormData();
57
+ formData.append('file', files[0]);
58
+ formData.append('fileId', this.getUUID());
59
+ const xhr = new XMLHttpRequest();
60
+ const vm = this;
61
+ var fileId;
62
+ xhr.onreadystatechange = function () {
63
+ if (xhr.readyState === 4) {
64
+ try {
65
+ let resp = JSON.parse(xhr.response);
66
+ fileId = resp.result.fileId;
67
+ vm.dispatchEvent(new CustomEvent('file-change', {
68
+ bubbles: true,
69
+ composed: true,
70
+ detail: {
71
+ files: el.files,
72
+ fileId: fileId + '.' + resp.result.fileExtension
73
+ }
74
+ }));
75
+ }
76
+ catch (ex) {
77
+ document.dispatchEvent(new CustomEvent('notify', {
78
+ detail: {
79
+ level: 'error',
80
+ message: 'Upload File Temp Error // ' + ex,
81
+ ex: ex
82
+ }
83
+ }));
84
+ throw new Error('Upload File Temp Error');
85
+ }
86
+ }
87
+ };
88
+ xhr.open('POST', getRestServiceMainUrl() + getUploadTempUrl());
89
+ xhr.send(formData);
90
+ }
91
+ onImageFileChanged(e) {
92
+ this._files = [...this._files, ...Array.from(e.currentTarget.files || [])];
93
+ }
94
+ };
95
+ RestfulFileSelector.styles = [
96
+ css `
97
+ :host {
98
+ flex: 1;
99
+ display: flex;
100
+ flex-direction: column;
101
+ position: relative;
102
+ overflow: hidden;
103
+ }
104
+
105
+ #input-box {
106
+ display: flex;
107
+ width: 100%;
108
+ height: 100%;
109
+ }
110
+
111
+ input[type='file'] {
112
+ position: absolute;
113
+ width: 0px;
114
+ height: 0px;
115
+ padding: 0;
116
+ margin: -1px;
117
+ overflow: hidden;
118
+ clip: rect(0, 0, 0, 0);
119
+ border: 0;
120
+ }
121
+
122
+ label {
123
+ padding: unset;
124
+ width: 100%;
125
+ height: 100%;
126
+ box-sizing: border-box;
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+
131
+ color: var(--file-selector-color, #999);
132
+ font-size: inherit;
133
+ line-height: normal;
134
+ vertical-align: middle;
135
+ background-color: var(--file-selector-bg-color, #fdfdfd);
136
+ cursor: pointer;
137
+ border: var(--file-selector-border, 1px solid #ebebeb);
138
+ border-radius: var(--file-selector-border-radius, 0.25em);
139
+ }
140
+
141
+ /* named upload */
142
+ .upload-name {
143
+ flex: 1;
144
+ padding: 0.5em 0.75em; /* label의 패딩값과 일치 */
145
+ font-size: inherit;
146
+ font-family: inherit;
147
+ line-height: normal;
148
+ vertical-align: middle;
149
+ background-color: #f5f5f5;
150
+ border: 1px solid #ebebeb;
151
+ border-bottom-color: #e2e2e2;
152
+ border-radius: 0.25em;
153
+ -webkit-appearance: none; /* 네이티브 외형 감추기 */
154
+ -moz-appearance: none;
155
+ appearance: none;
156
+ }
157
+ `
158
+ ];
159
+ __decorate([
160
+ property({ type: String })
161
+ ], RestfulFileSelector.prototype, "label", void 0);
162
+ __decorate([
163
+ property({ type: String })
164
+ ], RestfulFileSelector.prototype, "accept", void 0);
165
+ __decorate([
166
+ property({ type: Boolean, attribute: 'show-filename' })
167
+ ], RestfulFileSelector.prototype, "showFilename", void 0);
168
+ __decorate([
169
+ property({ type: Boolean, attribute: 'multiple' })
170
+ ], RestfulFileSelector.prototype, "multiple", void 0);
171
+ __decorate([
172
+ property({ type: Array })
173
+ ], RestfulFileSelector.prototype, "_files", void 0);
174
+ __decorate([
175
+ query('#input-file')
176
+ ], RestfulFileSelector.prototype, "fileInput", void 0);
177
+ RestfulFileSelector = __decorate([
178
+ customElement('restful-file-selector')
179
+ ], RestfulFileSelector);
180
+ export { RestfulFileSelector };
181
+ //# sourceMappingURL=restful-file-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restful-file-selector.js","sourceRoot":"","sources":["../../../src/component/restful-file-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { getRestServiceMainUrl, getUploadTempUrl } from '@fmsim/api/restful.js'\n\n@customElement('restful-file-selector')\nexport class RestfulFileSelector extends LitElement {\n static styles = [\n css`\n :host {\n flex: 1;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n }\n\n #input-box {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n input[type='file'] {\n position: absolute;\n width: 0px;\n height: 0px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n }\n\n label {\n padding: unset;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n\n color: var(--file-selector-color, #999);\n font-size: inherit;\n line-height: normal;\n vertical-align: middle;\n background-color: var(--file-selector-bg-color, #fdfdfd);\n cursor: pointer;\n border: var(--file-selector-border, 1px solid #ebebeb);\n border-radius: var(--file-selector-border-radius, 0.25em);\n }\n\n /* named upload */\n .upload-name {\n flex: 1;\n padding: 0.5em 0.75em; /* label의 패딩값과 일치 */\n font-size: inherit;\n font-family: inherit;\n line-height: normal;\n vertical-align: middle;\n background-color: #f5f5f5;\n border: 1px solid #ebebeb;\n border-bottom-color: #e2e2e2;\n border-radius: 0.25em;\n -webkit-appearance: none; /* 네이티브 외형 감추기 */\n -moz-appearance: none;\n appearance: none;\n }\n `\n ]\n\n @property({ type: String }) label: string = 'select file'\n @property({ type: String }) accept?: string\n @property({ type: Boolean, attribute: 'show-filename' }) showFilename?: boolean\n @property({ type: Boolean, attribute: 'multiple' }) multiple: boolean = false\n @property({ type: Array }) _files: any[] = []\n\n @query('#input-file') fileInput!: HTMLInputElement\n\n render() {\n return html`\n <div id=\"input-box\">\n ${this.showFilename\n ? html`\n <input class=\"upload-name\" value=\"${this._files.map(f => f.name).join(', ') || this.label}\" disabled />\n `\n : html``}\n <label for=\"input-file\">${this.label}</label>\n <input\n id=\"input-file\"\n type=\"file\"\n accept=${this.accept || ''}\n class=\"upload-hidden\"\n ?multiple=${this.multiple}\n hidden\n multiple\n onchange=${(e: Event) => {\n this.onFileChange(e)\n }}\n @change=${(e: Event) => {\n this.onFileChange(e)\n }}\n />\n </div>\n `\n }\n\n getUUID() {\n // UUID v4 generator in JavaScript (RFC4122 compliant)\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 3) | 8\n return v.toString(16)\n })\n }\n\n onFileChange(e: Event) {\n if (!e) {\n return\n }\n\n const el = e.currentTarget as HTMLInputElement\n const files = el.files || (e as any).dataTransfer.files\n const files2 = el.files || (e as any).dataTransfer.files\n\n if (!files.length) {\n return\n }\n\n const formData = new FormData()\n formData.append('file', files[0])\n formData.append('fileId', this.getUUID())\n const xhr = new XMLHttpRequest()\n const vm = this\n\n var fileId\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n try {\n let resp = JSON.parse(xhr.response)\n fileId = resp.result.fileId\n vm.dispatchEvent(\n new CustomEvent('file-change', {\n bubbles: true,\n composed: true,\n detail: {\n files: el.files,\n fileId: fileId + '.' + resp.result.fileExtension\n }\n })\n )\n } catch (ex) {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'error',\n message: 'Upload File Temp Error // ' + ex,\n ex: ex\n }\n })\n )\n\n throw new Error('Upload File Temp Error')\n }\n }\n }\n xhr.open('POST', getRestServiceMainUrl() + getUploadTempUrl())\n xhr.send(formData)\n }\n\n onImageFileChanged(e: Event) {\n this._files = [...this._files, ...Array.from((e.currentTarget as HTMLInputElement).files || [])]\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import '@material/mwc-icon';
5
+ import './restful-attachment-selector.js';
6
+ import { LitElement } from 'lit';
7
+ export declare class RestfulInputAttachmentSelector extends LitElement {
8
+ static styles: import("lit").CSSResult[];
9
+ value: string;
10
+ properties: any;
11
+ private popup?;
12
+ render(): import("lit-html").TemplateResult<1>;
13
+ getIconByCategory(): "attachment" | "image" | "library_music" | "video_library";
14
+ _onInputChanged(e: KeyboardEvent): void;
15
+ openSelector(): void;
16
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import { __decorate } from "tslib";
5
+ import '@material/mwc-icon';
6
+ import './restful-attachment-selector.js';
7
+ import { LitElement, css, html } from 'lit';
8
+ import { openPopup } from '@operato/layout';
9
+ import { customElement, property } from 'lit/decorators.js';
10
+ import { getDownloadFileUrl } from '@fmsim/api/restful.js';
11
+ import { i18next } from '@operato/i18n';
12
+ let RestfulInputAttachmentSelector = class RestfulInputAttachmentSelector extends LitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.value = '';
16
+ }
17
+ render() {
18
+ return html `
19
+ <input
20
+ id="text"
21
+ type="text"
22
+ .value=${this.value || ''}
23
+ @change=${(e) => this._onInputChanged(e)}
24
+ />
25
+
26
+ <mwc-icon @click=${() => this.openSelector()}>${this.getIconByCategory()}</mwc-icon>
27
+ `;
28
+ }
29
+ getIconByCategory() {
30
+ var { category } = this.properties || {};
31
+ switch (category) {
32
+ case 'audio':
33
+ return 'library_music';
34
+ case 'video':
35
+ return 'video_library';
36
+ case 'image':
37
+ return 'image';
38
+ case 'text':
39
+ case 'application':
40
+ default:
41
+ return 'attachment';
42
+ }
43
+ }
44
+ _onInputChanged(e) {
45
+ this.value = e.target.value;
46
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
47
+ }
48
+ openSelector() {
49
+ if (this.popup) {
50
+ delete this.popup;
51
+ }
52
+ /*
53
+ * 기존 설정된 이미지가 선택된 상태가 되게 하기 위해서는 selector에 value를 전달해줄 필요가 있음.
54
+ * 주의. value는 object일 수도 있고, string일 수도 있다.
55
+ * string인 경우에는 해당 보드의 id로 해석한다.
56
+ */
57
+ var value = this.value || {};
58
+ var { category = 'application' } = this.properties || {};
59
+ var template = html `
60
+ <restful-attachment-selector
61
+ .creatable=${true}
62
+ .category=${category}
63
+ @attachment-selected=${async (e) => {
64
+ var attachment = e.detail.attachment;
65
+ // this.value = `${getRestServiceMainFullPath()}/downloadFile/${encodeURIComponent(attachment.path)}/${encodeURIComponent(attachment.name)}`
66
+ this.value = `${getDownloadFileUrl()}/${encodeURIComponent(attachment.path)}/${encodeURIComponent(attachment.name)}`;
67
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
68
+ this.popup && this.popup.close();
69
+ }}
70
+ ></restful-attachment-selector>
71
+ `;
72
+ this.popup = openPopup(template, {
73
+ backdrop: true,
74
+ size: 'large',
75
+ title: i18next.t('title.select attachment')
76
+ });
77
+ }
78
+ };
79
+ RestfulInputAttachmentSelector.styles = [
80
+ css `
81
+ :host {
82
+ position: relative;
83
+ display: inline-block;
84
+ }
85
+
86
+ input[type='text'] {
87
+ box-sizing: border-box;
88
+ width: 100%;
89
+ height: 100%;
90
+ border: 1px solid rgba(0, 0, 0, 0.2);
91
+ }
92
+
93
+ mwc-icon {
94
+ position: absolute;
95
+ top: 0;
96
+ right: 3px;
97
+ }
98
+ `
99
+ ];
100
+ __decorate([
101
+ property({ type: String })
102
+ ], RestfulInputAttachmentSelector.prototype, "value", void 0);
103
+ __decorate([
104
+ property({ type: Object })
105
+ ], RestfulInputAttachmentSelector.prototype, "properties", void 0);
106
+ RestfulInputAttachmentSelector = __decorate([
107
+ customElement('restful-input-attachment-selector')
108
+ ], RestfulInputAttachmentSelector);
109
+ export { RestfulInputAttachmentSelector };
110
+ //# sourceMappingURL=restful-input-attachment-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restful-input-attachment-selector.js","sourceRoot":"","sources":["../../../src/component/restful-input-attachment-selector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@material/mwc-icon'\nimport './restful-attachment-selector.js'\n\nimport { LitElement, css, html } from 'lit'\nimport { PopupHandle, openPopup } from '@operato/layout'\nimport { customElement, property } from 'lit/decorators.js'\nimport { getRestServiceMainFullPath, getDownloadFileUrl } from '@fmsim/api/restful.js'\n\nimport { i18next } from '@operato/i18n'\n\n@customElement('restful-input-attachment-selector')\nexport class RestfulInputAttachmentSelector extends LitElement {\n static styles = [\n css`\n :host {\n position: relative;\n display: inline-block;\n }\n\n input[type='text'] {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border: 1px solid rgba(0, 0, 0, 0.2);\n }\n\n mwc-icon {\n position: absolute;\n top: 0;\n right: 3px;\n }\n `\n ]\n\n @property({ type: String }) value: string = ''\n @property({ type: Object }) properties: any\n\n private popup?: PopupHandle\n\n render() {\n return html`\n <input\n id=\"text\"\n type=\"text\"\n .value=${this.value || ''}\n @change=${(e: KeyboardEvent) => this._onInputChanged(e)}\n />\n\n <mwc-icon @click=${() => this.openSelector()}>${this.getIconByCategory()}</mwc-icon>\n `\n }\n\n getIconByCategory() {\n var { category } = this.properties || {}\n switch (category) {\n case 'audio':\n return 'library_music'\n case 'video':\n return 'video_library'\n case 'image':\n return 'image'\n case 'text':\n case 'application':\n default:\n return 'attachment'\n }\n }\n\n _onInputChanged(e: KeyboardEvent) {\n this.value = (e.target as HTMLInputElement).value\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n /*\n * 기존 설정된 이미지가 선택된 상태가 되게 하기 위해서는 selector에 value를 전달해줄 필요가 있음.\n * 주의. value는 object일 수도 있고, string일 수도 있다.\n * string인 경우에는 해당 보드의 id로 해석한다.\n */\n var value = this.value || {}\n var { category = 'application' } = this.properties || {}\n\n var template = html`\n <restful-attachment-selector\n .creatable=${true}\n .category=${category}\n @attachment-selected=${async (e: CustomEvent) => {\n var attachment = e.detail.attachment\n // this.value = `${getRestServiceMainFullPath()}/downloadFile/${encodeURIComponent(attachment.path)}/${encodeURIComponent(attachment.name)}`\n this.value = `${getDownloadFileUrl()}/${encodeURIComponent(attachment.path)}/${encodeURIComponent(attachment.name)}`\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n\n this.popup && this.popup.close()\n }}\n ></restful-attachment-selector>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.select attachment')\n })\n }\n}\n"]}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import '@operato/i18n/ox-i18n.js';
5
+ import '@operato/input/ox-input-color.js';
6
+ import '@operato/input/ox-input-color-stops.js';
7
+ import '@operato/input/ox-input-color-gradient.js';
8
+ import './restrul-input-background-pattern.js';
9
+ import { PropertyValues } from 'lit';
10
+ import { ColorStop, GradientOption, OxFormField } from '@operato/input';
11
+ import { BackgroundPatternOption } from './restrul-input-background-pattern.js';
12
+ export type FillStyle = {
13
+ type?: 'no' | 'solid' | 'gradient' | 'pattern';
14
+ gradientType?: 'linear' | 'radial';
15
+ colorStops?: ColorStop[];
16
+ rotation?: number;
17
+ center?: 'center' | 'left-top' | 'right-top' | 'right-bottom' | 'left-bottom';
18
+ image?: HTMLImageElement | string;
19
+ offsetX?: number;
20
+ offsetY?: number;
21
+ width?: number;
22
+ height?: number;
23
+ align?: 'left-top' | 'top' | 'right-top' | 'left' | 'center' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom';
24
+ fitPattern?: boolean;
25
+ noRepeat?: boolean;
26
+ guideOnly?: boolean;
27
+ color?: string;
28
+ } | 'no' | string;
29
+ export declare class RestfulInputColorStyle extends OxFormField {
30
+ static styles: import("lit").CSSResult;
31
+ value?: FillStyle;
32
+ fillType?: string;
33
+ solid?: string;
34
+ gradient?: GradientOption;
35
+ pattern?: BackgroundPatternOption;
36
+ colorOnly: boolean;
37
+ private _block_reset;
38
+ updated(changes: PropertyValues<this>): void;
39
+ render(): import("lit-html").TemplateResult<1>;
40
+ _onChangedValue(value: FillStyle): Promise<void>;
41
+ _onChangedFillType(e: Event): void;
42
+ _onChangedSolid(e: Event): void;
43
+ _onChandedGradient(e: Event): void;
44
+ _onChangedPattern(e: Event): void;
45
+ }