@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.
- package/.storybook/main.ts +58 -0
- package/.storybook/preview.ts +15 -0
- package/custom-elements.json +1499 -421
- package/dist/src/component/index.d.ts +3 -1
- package/dist/src/component/index.js +3 -1
- package/dist/src/component/index.js.map +1 -1
- package/dist/src/component/restful-attachment-creation-card.d.ts +18 -0
- package/dist/src/component/restful-attachment-creation-card.js +264 -0
- package/dist/src/component/restful-attachment-creation-card.js.map +1 -0
- package/dist/src/component/restful-attachment-selector.d.ts +36 -0
- package/dist/src/component/restful-attachment-selector.js +663 -0
- package/dist/src/component/restful-attachment-selector.js.map +1 -0
- package/dist/src/component/restful-file-selector.d.ts +14 -0
- package/dist/src/component/restful-file-selector.js +181 -0
- package/dist/src/component/restful-file-selector.js.map +1 -0
- package/dist/src/component/restful-input-attachment-selector.d.ts +16 -0
- package/dist/src/component/restful-input-attachment-selector.js +110 -0
- package/dist/src/component/restful-input-attachment-selector.js.map +1 -0
- package/dist/src/component/restful-input-fill-style.d.ts +45 -0
- package/dist/src/component/restful-input-fill-style.js +344 -0
- package/dist/src/component/restful-input-fill-style.js.map +1 -0
- package/dist/src/component/restrul-input-background-pattern.d.ts +35 -0
- package/dist/src/component/restrul-input-background-pattern.js +183 -0
- package/dist/src/component/restrul-input-background-pattern.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/layers/movement-layer.d.ts +1 -0
- package/dist/src/layers/movement-layer.js +3 -0
- package/dist/src/layers/movement-layer.js.map +1 -1
- package/dist/src/modeller/property-sidebar/styles/styles.d.ts +1 -0
- package/dist/src/modeller/property-sidebar/styles/styles.js +5 -1
- package/dist/src/modeller/property-sidebar/styles/styles.js.map +1 -1
- package/dist/stories/restful-attachment-selector.stories.d.ts +30 -0
- package/dist/stories/restful-attachment-selector.stories.js +104 -0
- package/dist/stories/restful-attachment-selector.stories.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/icons/attachment/btn-copy-link-hover.svg +4 -0
- package/icons/attachment/btn-copy-link.svg +4 -0
- package/icons/attachment/btn-delete-hover.svg +4 -0
- package/icons/attachment/btn-delete.svg +4 -0
- package/icons/attachment/btn-download-hover.svg +4 -0
- package/icons/attachment/btn-download.svg +4 -0
- package/icons/attachment/btn-zoom-hover.svg +4 -0
- package/icons/attachment/btn-zoom.svg +4 -0
- package/icons/attachment/file.svg +3 -0
- package/icons/board/btn-add-board.svg +5 -0
- package/icons/board/btn-add-list.svg +5 -0
- package/icons/board/btn-close-dropbox.svg +3 -0
- package/icons/board/btn-edit-hover.svg +4 -0
- package/icons/board/btn-edit.svg +4 -0
- package/icons/board/btn-favorite-hover-on.svg +4 -0
- package/icons/board/btn-favorite-hover.svg +4 -0
- package/icons/board/btn-favorite-on.svg +4 -0
- package/icons/board/btn-favorite.svg +4 -0
- package/icons/board/btn-info-hover.svg +3 -0
- package/icons/board/btn-info.svg +3 -0
- package/icons/board/btn-open-dropbox.svg +3 -0
- package/icons/board/btn-users.svg +4 -0
- package/icons/board/favorite_black.svg +1 -0
- package/icons/group-bar/btn-add-list.png +0 -0
- package/icons/group-bar/btn-close-dropbox.png +0 -0
- package/icons/group-bar/btn-edit.png +0 -0
- package/icons/group-bar/btn-open-dropbox-color.png +0 -0
- package/icons/group-bar/btn-search-name.png +0 -0
- package/package.json +12 -8
- package/stories/restful-attachment-selector.stories.ts +113 -0
- package/.storybook/main.js +0 -3
- package/dist/stories/index.stories.d.ts +0 -33
- package/dist/stories/index.stories.js +0 -33
- package/dist/stories/index.stories.js.map +0 -1
- 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
|
+
}
|