@konomi-app/ui 2.2.4 → 3.0.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.
- package/dist/index.cjs +763 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +128 -0
- package/dist/index.d.ts +128 -3
- package/dist/index.js +731 -3
- package/dist/index.js.map +1 -1
- package/package.json +36 -27
- package/dist/loading-overlay/index.d.ts +0 -21
- package/dist/loading-overlay/index.js +0 -72
- package/dist/loading-overlay/index.js.map +0 -1
- package/dist/loading-overlay/style.d.ts +0 -3
- package/dist/loading-overlay/style.js +0 -77
- package/dist/loading-overlay/style.js.map +0 -1
- package/dist/modal/index.d.ts +0 -34
- package/dist/modal/index.js +0 -177
- package/dist/modal/index.js.map +0 -1
- package/dist/modal/style.d.ts +0 -6
- package/dist/modal/style.js +0 -94
- package/dist/modal/style.js.map +0 -1
- package/dist/overlay/index.d.ts +0 -17
- package/dist/overlay/index.js +0 -47
- package/dist/overlay/index.js.map +0 -1
- package/dist/overlay/style.d.ts +0 -2
- package/dist/overlay/style.js +0 -44
- package/dist/overlay/style.js.map +0 -1
- package/dist/task-list-overlay.d.ts +0 -34
- package/dist/task-list-overlay.js +0 -177
- package/dist/task-list-overlay.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"sources":["../src/overlay/style.ts","../src/overlay/index.ts","../src/loading-overlay/style.ts","../src/loading-overlay/index.ts","../src/task-list-overlay.ts","../src/modal/style.ts","../src/modal/index.ts","../src/utilities.ts"],"sourcesContent":["import { css } from '@emotion/css';\r\nimport { ATTRIBUTE_KEY, ATTRIBUTE_SHOWN } from '.';\r\n\r\nexport const getBodyStyle = () => css`\r\n overflow: visible;\r\n &[${ATTRIBUTE_KEY}] {\r\n overflow: hidden;\r\n }\r\n`;\r\n\r\nexport const getRootStyle = () => css`\r\n font-family: 'Yu Gothic Medium', '游ゴシック', YuGothic, 'メイリオ', 'Hiragino Kaku Gothic ProN',\r\n Meiryo, sans-serif;\r\n color: #356;\r\n font-size: 14px;\r\n\r\n overflow: hidden;\r\n background-color: #fffb;\r\n backdrop-filter: blur(4px);\r\n box-sizing: content-box;\r\n\r\n position: fixed;\r\n inset: 0;\r\n width: 100vw;\r\n height: 100vh;\r\n\r\n display: grid;\r\n transition: all 250ms ease;\r\n z-index: 1000;\r\n opacity: 0;\r\n transition: all 250ms ease;\r\n\r\n place-items: end stretch;\r\n @media (min-width: 640px) {\r\n font-size: 16px;\r\n place-items: center;\r\n }\r\n\r\n opacity: 0;\r\n pointer-events: none;\r\n &[${ATTRIBUTE_SHOWN}] {\r\n opacity: 1;\r\n pointer-events: all;\r\n }\r\n`;\r\n","import { getBodyStyle, getRootStyle } from './style';\r\n\r\nexport const ATTRIBUTE_KEY = 'data-konomi-ui-overlay';\r\nexport const ATTRIBUTE_SHOWN = 'data-shown';\r\n\r\nexport class Overlay {\r\n /**\r\n * オーバーレイをレンダリングするルート要素。\r\n */\r\n readonly #root: HTMLDivElement;\r\n /**\r\n * オーバーレイをレンダリングするルート要素の`dataset`。\r\n */\r\n protected readonly _rootDataset: DOMStringMap;\r\n /**\r\n * オーバーレイが表示されているかどうか。\r\n */\r\n protected _shown: boolean;\r\n /**\r\n * オーバーレイを表示中にページを離れようとした場合にアラートを表示するかどうかを設定します。\r\n */\r\n protected _disableBeforeUnload: boolean;\r\n\r\n public constructor() {\r\n this._shown = false;\r\n this._disableBeforeUnload = false;\r\n this._rootDataset = {};\r\n\r\n const root = document.createElement('div');\r\n this.#root = root;\r\n this.#root.classList.add(getRootStyle());\r\n document.body.classList.add(getBodyStyle());\r\n this.#root.setAttribute(ATTRIBUTE_KEY, '');\r\n document.body.append(root);\r\n }\r\n\r\n public show(): void {\r\n this._shown = true;\r\n this.#root.setAttribute(ATTRIBUTE_SHOWN, '');\r\n document.body.setAttribute(ATTRIBUTE_KEY, '');\r\n window.addEventListener('beforeunload', this.beforeunload);\r\n this.render();\r\n }\r\n\r\n public hide(): void {\r\n this._shown = false;\r\n this.#root.removeAttribute(ATTRIBUTE_SHOWN);\r\n document.body.removeAttribute(ATTRIBUTE_KEY);\r\n window.removeEventListener('beforeunload', this.beforeunload);\r\n this.render();\r\n }\r\n\r\n protected render(): void {}\r\n\r\n /** JavaScript中にページを離れようとした場合にアラートを表示します */\r\n private beforeunload(event: BeforeUnloadEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n protected get root(): HTMLDivElement {\r\n return this.#root;\r\n }\r\n\r\n /** @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。 */\r\n public start(): void {\r\n this.show();\r\n }\r\n /** @deprecated このメソッドは非推奨です。代わりに`hide`メソッドを使用してください。 */\r\n public stop(): void {\r\n this.hide();\r\n }\r\n}\r\n","import { css } from '@emotion/css';\r\nimport { ATTRIBUTE_ANIMATION } from '.';\r\n\r\nexport const containerStyle = css`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 32px;\r\n padding: 24px;\r\n background-color: #fff;\r\n border-radius: 0;\r\n box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\r\n border: 1px solid #f3f4f6;\r\n min-height: 200px;\r\n position: relative;\r\n overflow: hidden;\r\n transition: all 250ms ease;\r\n\r\n @media (min-width: 640px) {\r\n width: 400px;\r\n max-width: 90vw;\r\n border-radius: 4px;\r\n padding: 32px;\r\n }\r\n`;\r\n\r\nexport const getLoaderStyle = () => css`\r\n font-size: 60px;\r\n width: 1em;\r\n height: 1em;\r\n border-radius: 50%;\r\n box-shadow: inset 0 0 0 1px #3b82f633;\r\n position: relative;\r\n\r\n animation: none;\r\n &[${ATTRIBUTE_ANIMATION}] {\r\n animation: rotate 1.2s infinite linear;\r\n }\r\n\r\n > div {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n width: 0.5em;\r\n height: 1em;\r\n margin-left: -0.5em;\r\n margin-top: -0.5em;\r\n overflow: hidden;\r\n transform-origin: 0.5em 0.5em;\r\n mask-image: linear-gradient(top, #000f, #0000);\r\n -webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);\r\n\r\n > div {\r\n width: 1em;\r\n height: 1em;\r\n border-radius: 50%;\r\n box-shadow: inset 0 0 0 1px #3b82f6;\r\n }\r\n }\r\n @keyframes rotate {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n`;\r\n\r\nexport const progressStyle = css`\r\n position: absolute;\r\n bottom: 0px;\r\n left: 0;\r\n width: 0%;\r\n height: 2px;\r\n background-color: #2563eb;\r\n transition: all 350ms ease;\r\n`;\r\n","import { Overlay } from '../overlay';\r\nimport { containerStyle, getLoaderStyle, progressStyle } from './style';\r\n\r\ntype Label = string | string[];\r\ntype ConstructorProps = Readonly<Partial<{ label: Label; progress: number }>>;\r\n\r\nexport const ATTRIBUTE_ANIMATION = 'data-animation';\r\n\r\nexport class LoadingOverlay extends Overlay {\r\n #label: Label;\r\n #html: string;\r\n #progress: number | null;\r\n\r\n protected readonly _loaderElement: HTMLDivElement;\r\n protected readonly _progressElement: HTMLDivElement;\r\n protected readonly _contentElement: HTMLDivElement;\r\n\r\n public constructor(props: ConstructorProps = {}) {\r\n super();\r\n\r\n this.#label = props.label ?? '';\r\n this.#html = '';\r\n this.#progress = props.progress ?? null;\r\n\r\n const container = document.createElement('div');\r\n container.classList.add(containerStyle);\r\n this.root.append(container);\r\n\r\n const loaderElement = document.createElement('div');\r\n loaderElement.innerHTML = '<div><div></div></div>';\r\n loaderElement.classList.add(getLoaderStyle());\r\n this._loaderElement = loaderElement;\r\n container.append(loaderElement);\r\n\r\n const progressElement = document.createElement('div');\r\n progressElement.classList.add(progressStyle);\r\n this._progressElement = progressElement;\r\n container.append(progressElement);\r\n\r\n const contentElement = document.createElement('div');\r\n this._contentElement = contentElement;\r\n container.append(contentElement);\r\n\r\n this.render();\r\n }\r\n\r\n override show(): void {\r\n super.show();\r\n this._loaderElement.setAttribute(ATTRIBUTE_ANIMATION, '');\r\n }\r\n\r\n override hide(): void {\r\n super.hide();\r\n this._loaderElement.removeAttribute(ATTRIBUTE_ANIMATION);\r\n this.#progress = 0;\r\n this.#html = '';\r\n this.#label = '';\r\n }\r\n\r\n public set label(label: Label) {\r\n this.#label = label;\r\n this.render();\r\n }\r\n\r\n public set html(html: string) {\r\n this.#html = html;\r\n this.render();\r\n }\r\n\r\n /**\r\n * 進捗状況を設定します。\r\n * @param percent 進捗のパーセンテージ(0-100)\r\n */\r\n public set progress(percent: number) {\r\n this.#progress = percent;\r\n this.render();\r\n }\r\n\r\n override render(): void {\r\n super.render();\r\n\r\n this._progressElement.style.width = `${this.#progress}%`;\r\n\r\n if (this.#html) {\r\n this._contentElement.innerHTML = this.#html;\r\n } else {\r\n if (this.#label instanceof Array) {\r\n this._contentElement.innerHTML = `<div>${this.#label.join('</div><div>')}</div>`;\r\n } else {\r\n this._contentElement.innerText = this.#label;\r\n }\r\n }\r\n }\r\n}\r\n","import { css } from '@emotion/css';\r\nimport { Overlay } from './overlay';\r\n\r\ntype Label = string | string[];\r\ntype TaskStatus = 'new' | 'in-progress' | 'done' | 'error';\r\ntype Task = {\r\n key: string;\r\n label: Label;\r\n status: TaskStatus;\r\n};\r\n\r\ntype ConstructorProps = Readonly<Partial<{ taskList: Task[] }>>;\r\n\r\nexport class TaskListOverlay extends Overlay {\r\n #taskList: Task[];\r\n\r\n protected readonly _contentElement: HTMLDivElement;\r\n\r\n public constructor(props: ConstructorProps = {}) {\r\n super();\r\n\r\n this.#taskList = props.taskList ?? [];\r\n\r\n const container = document.createElement('div');\r\n container.classList.add(this.containerStyle);\r\n this.root.append(container);\r\n\r\n const contentElement = document.createElement('div');\r\n this._contentElement = contentElement;\r\n contentElement.classList.add(this.contentStyle);\r\n container.append(contentElement);\r\n\r\n this.render();\r\n }\r\n\r\n override hide(): void {\r\n this.#taskList = [];\r\n super.hide();\r\n }\r\n\r\n public done(key: string): void {\r\n const task = this.#taskList.find((t) => t.key === key);\r\n if (task) {\r\n task.status = 'done';\r\n this.render();\r\n }\r\n }\r\n\r\n public error(key: string): void {\r\n const task = this.#taskList.find((t) => t.key === key);\r\n if (task) {\r\n task.status = 'error';\r\n this.render();\r\n }\r\n }\r\n\r\n public inProgress(key: string): void {\r\n const task = this.#taskList.find((t) => t.key === key);\r\n if (task) {\r\n task.status = 'in-progress';\r\n this.render();\r\n }\r\n }\r\n\r\n public addTask(...tasks: { key: string; label: Label }[]): void {\r\n this.#taskList.push(...tasks.map<Task>(({ key, label }) => ({ key, label, status: 'new' })));\r\n this.render();\r\n }\r\n\r\n override render(): void {\r\n super.render();\r\n\r\n this._contentElement.innerHTML = `\r\n <div class=\"${this.taskListContainerStyle}\">\r\n ${this.#taskList.map((task) => this.renderTask(task)).join('')}\r\n </div>\r\n `;\r\n }\r\n\r\n private renderTask(task: Task): string {\r\n const label = Array.isArray(task.label) ? task.label.join(' ') : task.label;\r\n const status = task.status;\r\n\r\n return `\r\n <div class=\"${this.taskContainerStyle}\">\r\n <div class=\"${this.taskStatusStyle} status-${status}\">${this.getTaskStatusElement(\r\n task.status\r\n )}</div>\r\n <div class=\"${this.taskLabelStyle}\">${label}</div>\r\n </div>\r\n `;\r\n }\r\n\r\n private getTaskStatusElement(status: TaskStatus): string {\r\n switch (status) {\r\n case 'new':\r\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#ddd\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-minus-circle\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line></svg>`;\r\n case 'in-progress':\r\n return `<div><div></div></div>`;\r\n case 'done':\r\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#80beaf\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-check-circle\"><path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline></svg>`;\r\n default:\r\n return ``;\r\n }\r\n }\r\n\r\n private containerStyle = css`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 32px;\r\n padding: 32px 64px;\r\n background-color: #fffc;\r\n border-radius: 8px;\r\n box-shadow: 0 5px 24px -6px #0002;\r\n width: 300px;\r\n max-width: 90vw;\r\n min-height: 200px;\r\n position: relative;\r\n overflow: hidden;\r\n transition: all 250ms ease;\r\n\r\n @keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n border-radius: 1em;\r\n }\r\n 20% {\r\n transform: rotate(0deg);\r\n }\r\n 30%,\r\n 60% {\r\n border-radius: 0.25em;\r\n }\r\n 70% {\r\n transform: rotate(180deg);\r\n }\r\n 100% {\r\n transform: rotate(180deg);\r\n border-radius: 1em;\r\n }\r\n }\r\n `;\r\n\r\n private contentStyle = css`\r\n width: 100%;\r\n `;\r\n\r\n private taskListContainerStyle = css`\r\n display: flex;\r\n flex-direction: column;\r\n gap: 1em;\r\n width: 100%;\r\n `;\r\n\r\n private taskContainerStyle = css`\r\n display: flex;\r\n align-items: center;\r\n gap: 1em;\r\n `;\r\n\r\n private taskLabelStyle = css``;\r\n\r\n private taskStatusStyle = css`\r\n font-size: 32px;\r\n width: 1em;\r\n height: 1em;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n &.status-new {\r\n }\r\n\r\n &.status-in-progress {\r\n border-radius: 50%;\r\n box-shadow: inset 0 0 0 1px #3b82f633;\r\n position: relative;\r\n animation: rotate 1.2s infinite linear;\r\n > div {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n width: 0.5em;\r\n height: 1em;\r\n margin-left: -0.5em;\r\n margin-top: -0.5em;\r\n overflow: hidden;\r\n transform-origin: 0.5em 0.5em;\r\n mask-image: linear-gradient(top, #000f, #0000);\r\n -webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);\r\n\r\n > div {\r\n width: 1em;\r\n height: 1em;\r\n border-radius: 50%;\r\n box-shadow: inset 0 0 0 1px #3b82f6;\r\n }\r\n }\r\n @keyframes rotate {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import { css } from '@emotion/css';\r\n\r\nexport const containerStyle = css`\r\n display: grid;\r\n gap: 2px;\r\n padding: 24px;\r\n background-color: #fff;\r\n border-radius: 0;\r\n box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\r\n border: 1px solid #f3f4f6;\r\n min-height: 200px;\r\n position: relative;\r\n overflow: hidden;\r\n transition: all 250ms ease;\r\n\r\n @media (min-width: 640px) {\r\n width: 400px;\r\n max-width: 90vw;\r\n border-radius: 4px;\r\n padding: 32px;\r\n }\r\n`;\r\n\r\nexport const iconStyle = css``;\r\n\r\nexport const titleStyle = css`\r\n font-size: 18px;\r\n font-weight: 600;\r\n color: #1f2937;\r\n text-align: center;\r\n @media (min-width: 640px) {\r\n text-align: left;\r\n }\r\n`;\r\n\r\nexport const loaderStyle = css`\r\n font-size: 60px;\r\n width: 1em;\r\n height: 1em;\r\n border-radius: 50%;\r\n box-shadow: inset 0 0 0 1px #3b82f633;\r\n position: relative;\r\n\r\n animation: none;\r\n &[data-state='loading'] {\r\n animation: rotate 1s linear infinite;\r\n }\r\n\r\n > div {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n width: 0.5em;\r\n height: 1em;\r\n margin-left: -0.5em;\r\n margin-top: -0.5em;\r\n overflow: hidden;\r\n transform-origin: 0.5em 0.5em;\r\n mask-image: linear-gradient(top, #000f, #0000);\r\n -webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);\r\n\r\n > div {\r\n width: 1em;\r\n height: 1em;\r\n border-radius: 50%;\r\n box-shadow: inset 0 0 0 1px #3b82f6;\r\n }\r\n }\r\n @keyframes rotate {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n`;\r\n\r\nexport const progressStyle = css`\r\n position: absolute;\r\n bottom: 0px;\r\n left: 0;\r\n width: 0%;\r\n height: 2px;\r\n background-color: #2563eb;\r\n transition: all 350ms ease;\r\n`;\r\n\r\nexport const actionsStyle = css`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-end;\r\n align-items: flex-end;\r\n gap: 8px;\r\n\r\n @media (min-width: 640px) {\r\n flex-direction: row;\r\n }\r\n`;\r\n","import { Overlay } from '../overlay';\r\nimport {\r\n actionsStyle,\r\n containerStyle,\r\n iconStyle,\r\n loaderStyle,\r\n progressStyle,\r\n titleStyle,\r\n} from './style';\r\n\r\ntype Label = string | string[];\r\ntype ConstructorProps = Readonly<Partial<{ label: Label; progress: number }>>;\r\n\r\nexport class Modal extends Overlay {\r\n #title: string;\r\n #html: string;\r\n #label: Label;\r\n #progress: number | null;\r\n #state: 'loading' | 'alert' | 'hidden';\r\n\r\n protected readonly _containerElement: HTMLDivElement;\r\n protected readonly _iconElement: HTMLDivElement;\r\n protected readonly _titleElement: HTMLDivElement;\r\n protected readonly _loaderElement: HTMLDivElement;\r\n protected readonly _progressElement: HTMLDivElement;\r\n protected readonly _contentElement: HTMLDivElement;\r\n protected readonly _actionsElement: HTMLDivElement;\r\n protected readonly _okButtonElement: HTMLButtonElement;\r\n protected readonly _cancelButtonElement: HTMLButtonElement;\r\n\r\n public constructor(props: ConstructorProps = {}) {\r\n super();\r\n\r\n this.#title = '';\r\n this.#html = '';\r\n this.#label = props.label ?? '';\r\n this.#progress = props.progress ?? null;\r\n this.#state = 'hidden';\r\n\r\n const container = document.createElement('div');\r\n container.classList.add(containerStyle);\r\n this._containerElement = container;\r\n this.root.append(container);\r\n\r\n const iconElement = document.createElement('div');\r\n iconElement.classList.add(iconStyle);\r\n this._iconElement = iconElement;\r\n container.append(iconElement);\r\n\r\n const titleElement = document.createElement('div');\r\n titleElement.classList.add(titleStyle);\r\n this._titleElement = titleElement;\r\n container.append(titleElement);\r\n\r\n const loaderElement = document.createElement('div');\r\n loaderElement.innerHTML = '<div><div></div></div>';\r\n loaderElement.classList.add(loaderStyle);\r\n this._loaderElement = loaderElement;\r\n\r\n const progressElement = document.createElement('div');\r\n progressElement.classList.add(progressStyle);\r\n this._progressElement = progressElement;\r\n container.append(progressElement);\r\n\r\n const contentElement = document.createElement('div');\r\n this._contentElement = contentElement;\r\n container.append(contentElement);\r\n\r\n const actionsElement = document.createElement('div');\r\n actionsElement.classList.add(actionsStyle);\r\n this._actionsElement = actionsElement;\r\n container.append(actionsElement);\r\n\r\n const okButtonElement = document.createElement('button');\r\n okButtonElement.type = 'button';\r\n okButtonElement.textContent = 'OK';\r\n this._okButtonElement = okButtonElement;\r\n actionsElement.append(okButtonElement);\r\n\r\n const cancelButtonElement = document.createElement('button');\r\n cancelButtonElement.type = 'button';\r\n cancelButtonElement.textContent = 'キャンセル';\r\n this._cancelButtonElement = cancelButtonElement;\r\n actionsElement.append(cancelButtonElement);\r\n\r\n this.render();\r\n }\r\n\r\n public alert(params: {\r\n title?: string;\r\n text?: string;\r\n icon?: string;\r\n disableClose?: boolean;\r\n disableEscape?: boolean;\r\n }): Promise<any> {\r\n const {\r\n title = '',\r\n text = '',\r\n icon = '',\r\n disableClose = false,\r\n disableEscape = false,\r\n } = params;\r\n this.#title = title;\r\n this.#label = text;\r\n\r\n this.changeState('alert');\r\n this.show();\r\n\r\n return new Promise((resolve) => {\r\n this._okButtonElement.addEventListener('click', () => {\r\n if (!disableClose) {\r\n this.hide();\r\n }\r\n resolve({\r\n isConfirmed: true,\r\n });\r\n });\r\n\r\n this._cancelButtonElement.addEventListener('click', () => {\r\n if (!disableClose) {\r\n this.hide();\r\n }\r\n resolve({\r\n isConfirmed: false,\r\n });\r\n });\r\n\r\n this.root.addEventListener('click', (event) => {\r\n if (event.currentTarget === event.target) {\r\n if (!disableClose) {\r\n this.hide();\r\n }\r\n resolve({\r\n isConfirmed: false,\r\n });\r\n }\r\n });\r\n\r\n this.root.addEventListener('keydown', (event) => {\r\n if (event.key === 'Escape') {\r\n if (!disableEscape) {\r\n this.hide();\r\n }\r\n resolve({\r\n isConfirmed: false,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n public loading(): void {\r\n this._iconElement.append(this._loaderElement);\r\n this.changeState('loading');\r\n this.show();\r\n }\r\n\r\n override hide(): void {\r\n this.#progress = 0;\r\n this.#html = '';\r\n this.#label = '';\r\n this.changeState('hidden');\r\n super.hide();\r\n }\r\n\r\n public set label(label: Label) {\r\n this.#label = label;\r\n this.render();\r\n }\r\n\r\n public set html(html: string) {\r\n this.#html = html;\r\n this.render();\r\n }\r\n\r\n public set progress(progress: number) {\r\n this.#progress = progress;\r\n this.render();\r\n }\r\n\r\n private changeState(state: 'loading' | 'alert' | 'hidden'): void {\r\n this.#state = state;\r\n const elements = [\r\n this.root,\r\n this._actionsElement,\r\n this._contentElement,\r\n this._iconElement,\r\n this._loaderElement,\r\n this._progressElement,\r\n this._titleElement,\r\n ];\r\n for (const element of elements) {\r\n element.dataset.state = state;\r\n }\r\n\r\n this.render();\r\n }\r\n\r\n override render(): void {\r\n super.render();\r\n\r\n this._progressElement.style.width = `${this.#progress}%`;\r\n\r\n switch (this.#state) {\r\n case 'loading':\r\n break;\r\n case 'alert':\r\n this._iconElement.innerHTML = '';\r\n break;\r\n case 'hidden':\r\n default:\r\n this._iconElement.innerHTML = '';\r\n break;\r\n }\r\n\r\n this._titleElement.textContent = this.#title;\r\n if (this.#html) {\r\n this._contentElement.innerHTML = this.#html;\r\n } else {\r\n if (this.#label instanceof Array) {\r\n this._contentElement.innerHTML = `<div>${this.#label.join('</div><div>')}</div>`;\r\n } else {\r\n this._contentElement.textContent = this.#label;\r\n }\r\n }\r\n }\r\n}\r\n","import { LoadingOverlay } from './loading-overlay';\n\n/**\n * 指定された関数をラップし、実行中にローディングオーバーレイを表示する高階関数。\n *\n * @template T - 任意の引数を取り、任意の値を返す関数の型。\n * @param {T} fn - 実行する関数。\n * @param {string} [label='Loading...'] - ローディングオーバーレイに表示するラベル。デフォルトは 'Loading...'。\n * @returns {(...args: Parameters<T>) => Promise<ReturnType<T>>} - ラップされた関数。実行中にローディングオーバーレイを表示し、完了後に非表示にする。\n */\nexport const withLoading = <T extends (...args: any[]) => any>(\n fn: T,\n label: string = 'Loading...'\n) => {\n return async (...args: Parameters<T>): Promise<ReturnType<T>> => {\n const overlay = new LoadingOverlay({ label });\n overlay.show();\n try {\n return await fn(...args);\n } finally {\n overlay.hide();\n }\n };\n};\n"],"mappings":"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","names":["css","css","css","css","css","containerStyle","progressStyle","containerStyle","progressStyle"]}
|
package/package.json
CHANGED
|
@@ -1,27 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@konomi-app/ui",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"main": "dist/index.
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@konomi-app/ui",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.cts",
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"author": "adachi",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@emotion/css": "^11.0.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@emotion/css": "^11.13.5",
|
|
30
|
+
"tsup": "^8.5.1",
|
|
31
|
+
"typescript": "^5.9.3"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsup"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Overlay } from '../overlay';
|
|
2
|
-
type Label = string | string[];
|
|
3
|
-
type ConstructorProps = Readonly<Partial<{
|
|
4
|
-
label: Label;
|
|
5
|
-
progress: number;
|
|
6
|
-
}>>;
|
|
7
|
-
export declare const ATTRIBUTE_ANIMATION = "data-animation";
|
|
8
|
-
export declare class LoadingOverlay extends Overlay {
|
|
9
|
-
#private;
|
|
10
|
-
protected readonly _loaderElement: HTMLDivElement;
|
|
11
|
-
protected readonly _progressElement: HTMLDivElement;
|
|
12
|
-
protected readonly _contentElement: HTMLDivElement;
|
|
13
|
-
constructor(props?: ConstructorProps);
|
|
14
|
-
show(): void;
|
|
15
|
-
hide(): void;
|
|
16
|
-
set label(label: Label);
|
|
17
|
-
set html(html: string);
|
|
18
|
-
set progress(progress: number);
|
|
19
|
-
render(): void;
|
|
20
|
-
}
|
|
21
|
-
export {};
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Overlay } from '../overlay';
|
|
2
|
-
import { containerStyle, getLoaderStyle, progressStyle } from './style';
|
|
3
|
-
export const ATTRIBUTE_ANIMATION = 'data-animation';
|
|
4
|
-
export class LoadingOverlay extends Overlay {
|
|
5
|
-
#label;
|
|
6
|
-
#html;
|
|
7
|
-
#progress;
|
|
8
|
-
_loaderElement;
|
|
9
|
-
_progressElement;
|
|
10
|
-
_contentElement;
|
|
11
|
-
constructor(props = {}) {
|
|
12
|
-
super();
|
|
13
|
-
this.#label = props.label ?? '';
|
|
14
|
-
this.#html = '';
|
|
15
|
-
this.#progress = props.progress ?? null;
|
|
16
|
-
const container = document.createElement('div');
|
|
17
|
-
container.classList.add(containerStyle);
|
|
18
|
-
this._root.append(container);
|
|
19
|
-
const loaderElement = document.createElement('div');
|
|
20
|
-
loaderElement.innerHTML = '<div><div></div></div>';
|
|
21
|
-
loaderElement.classList.add(getLoaderStyle());
|
|
22
|
-
this._loaderElement = loaderElement;
|
|
23
|
-
container.append(loaderElement);
|
|
24
|
-
const progressElement = document.createElement('div');
|
|
25
|
-
progressElement.classList.add(progressStyle);
|
|
26
|
-
this._progressElement = progressElement;
|
|
27
|
-
container.append(progressElement);
|
|
28
|
-
const contentElement = document.createElement('div');
|
|
29
|
-
this._contentElement = contentElement;
|
|
30
|
-
container.append(contentElement);
|
|
31
|
-
this.render();
|
|
32
|
-
}
|
|
33
|
-
show() {
|
|
34
|
-
super.show();
|
|
35
|
-
this._loaderElement.setAttribute(ATTRIBUTE_ANIMATION, '');
|
|
36
|
-
}
|
|
37
|
-
hide() {
|
|
38
|
-
super.hide();
|
|
39
|
-
this._loaderElement.removeAttribute(ATTRIBUTE_ANIMATION);
|
|
40
|
-
this.#progress = 0;
|
|
41
|
-
this.#html = '';
|
|
42
|
-
this.#label = '';
|
|
43
|
-
}
|
|
44
|
-
set label(label) {
|
|
45
|
-
this.#label = label;
|
|
46
|
-
this.render();
|
|
47
|
-
}
|
|
48
|
-
set html(html) {
|
|
49
|
-
this.#html = html;
|
|
50
|
-
this.render();
|
|
51
|
-
}
|
|
52
|
-
set progress(progress) {
|
|
53
|
-
this.#progress = progress;
|
|
54
|
-
this.render();
|
|
55
|
-
}
|
|
56
|
-
render() {
|
|
57
|
-
super.render();
|
|
58
|
-
this._progressElement.style.width = `${this.#progress}%`;
|
|
59
|
-
if (this.#html) {
|
|
60
|
-
this._contentElement.innerHTML = this.#html;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
if (this.#label instanceof Array) {
|
|
64
|
-
this._contentElement.innerHTML = `<div>${this.#label.join('</div><div>')}</div>`;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this._contentElement.innerText = this.#label;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loading-overlay/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { css } from '@emotion/css';
|
|
2
|
-
import { ATTRIBUTE_ANIMATION } from '.';
|
|
3
|
-
export const containerStyle = css `
|
|
4
|
-
display: flex;
|
|
5
|
-
flex-direction: column;
|
|
6
|
-
align-items: center;
|
|
7
|
-
justify-content: center;
|
|
8
|
-
gap: 32px;
|
|
9
|
-
padding: 24px;
|
|
10
|
-
background-color: #fff;
|
|
11
|
-
border-radius: 0;
|
|
12
|
-
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
13
|
-
border: 1px solid #f3f4f6;
|
|
14
|
-
min-height: 200px;
|
|
15
|
-
position: relative;
|
|
16
|
-
overflow: hidden;
|
|
17
|
-
transition: all 250ms ease;
|
|
18
|
-
|
|
19
|
-
@media (min-width: 640px) {
|
|
20
|
-
width: 400px;
|
|
21
|
-
max-width: 90vw;
|
|
22
|
-
border-radius: 4px;
|
|
23
|
-
padding: 32px;
|
|
24
|
-
}
|
|
25
|
-
`;
|
|
26
|
-
export const getLoaderStyle = () => css `
|
|
27
|
-
font-size: 60px;
|
|
28
|
-
width: 1em;
|
|
29
|
-
height: 1em;
|
|
30
|
-
border-radius: 50%;
|
|
31
|
-
box-shadow: inset 0 0 0 1px #3b82f633;
|
|
32
|
-
position: relative;
|
|
33
|
-
|
|
34
|
-
animation: none;
|
|
35
|
-
&[${ATTRIBUTE_ANIMATION}] {
|
|
36
|
-
animation: rotate 1.2s infinite linear;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
> div {
|
|
40
|
-
position: absolute;
|
|
41
|
-
left: 50%;
|
|
42
|
-
top: 50%;
|
|
43
|
-
width: 0.5em;
|
|
44
|
-
height: 1em;
|
|
45
|
-
margin-left: -0.5em;
|
|
46
|
-
margin-top: -0.5em;
|
|
47
|
-
overflow: hidden;
|
|
48
|
-
transform-origin: 0.5em 0.5em;
|
|
49
|
-
mask-image: linear-gradient(top, #000f, #0000);
|
|
50
|
-
-webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);
|
|
51
|
-
|
|
52
|
-
> div {
|
|
53
|
-
width: 1em;
|
|
54
|
-
height: 1em;
|
|
55
|
-
border-radius: 50%;
|
|
56
|
-
box-shadow: inset 0 0 0 1px #3b82f6;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
@keyframes rotate {
|
|
60
|
-
0% {
|
|
61
|
-
transform: rotate(0deg);
|
|
62
|
-
}
|
|
63
|
-
100% {
|
|
64
|
-
transform: rotate(360deg);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
`;
|
|
68
|
-
export const progressStyle = css `
|
|
69
|
-
position: absolute;
|
|
70
|
-
bottom: 0px;
|
|
71
|
-
left: 0;
|
|
72
|
-
width: 0%;
|
|
73
|
-
height: 2px;
|
|
74
|
-
background-color: #2563eb;
|
|
75
|
-
transition: all 350ms ease;
|
|
76
|
-
`;
|
|
77
|
-
//# sourceMappingURL=style.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/loading-overlay/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;CAsBhC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;;;;;;;;;MASjC,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;CAQ/B,CAAC"}
|
package/dist/modal/index.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Overlay } from '../overlay';
|
|
2
|
-
type Label = string | string[];
|
|
3
|
-
type ConstructorProps = Readonly<Partial<{
|
|
4
|
-
label: Label;
|
|
5
|
-
progress: number;
|
|
6
|
-
}>>;
|
|
7
|
-
export declare class Modal extends Overlay {
|
|
8
|
-
#private;
|
|
9
|
-
protected readonly _containerElement: HTMLDivElement;
|
|
10
|
-
protected readonly _iconElement: HTMLDivElement;
|
|
11
|
-
protected readonly _titleElement: HTMLDivElement;
|
|
12
|
-
protected readonly _loaderElement: HTMLDivElement;
|
|
13
|
-
protected readonly _progressElement: HTMLDivElement;
|
|
14
|
-
protected readonly _contentElement: HTMLDivElement;
|
|
15
|
-
protected readonly _actionsElement: HTMLDivElement;
|
|
16
|
-
protected readonly _okButtonElement: HTMLButtonElement;
|
|
17
|
-
protected readonly _cancelButtonElement: HTMLButtonElement;
|
|
18
|
-
constructor(props?: ConstructorProps);
|
|
19
|
-
alert(params: {
|
|
20
|
-
title?: string;
|
|
21
|
-
text?: string;
|
|
22
|
-
icon?: string;
|
|
23
|
-
disableClose?: boolean;
|
|
24
|
-
disableEscape?: boolean;
|
|
25
|
-
}): Promise<any>;
|
|
26
|
-
loading(): void;
|
|
27
|
-
hide(): void;
|
|
28
|
-
set label(label: Label);
|
|
29
|
-
set html(html: string);
|
|
30
|
-
set progress(progress: number);
|
|
31
|
-
private changeState;
|
|
32
|
-
render(): void;
|
|
33
|
-
}
|
|
34
|
-
export {};
|
package/dist/modal/index.js
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { Overlay } from '../overlay';
|
|
2
|
-
import { actionsStyle, containerStyle, iconStyle, loaderStyle, progressStyle, titleStyle, } from './style';
|
|
3
|
-
export class Modal extends Overlay {
|
|
4
|
-
#title;
|
|
5
|
-
#html;
|
|
6
|
-
#label;
|
|
7
|
-
#progress;
|
|
8
|
-
#state;
|
|
9
|
-
_containerElement;
|
|
10
|
-
_iconElement;
|
|
11
|
-
_titleElement;
|
|
12
|
-
_loaderElement;
|
|
13
|
-
_progressElement;
|
|
14
|
-
_contentElement;
|
|
15
|
-
_actionsElement;
|
|
16
|
-
_okButtonElement;
|
|
17
|
-
_cancelButtonElement;
|
|
18
|
-
constructor(props = {}) {
|
|
19
|
-
super();
|
|
20
|
-
this.#title = '';
|
|
21
|
-
this.#html = '';
|
|
22
|
-
this.#label = props.label ?? '';
|
|
23
|
-
this.#progress = props.progress ?? null;
|
|
24
|
-
this.#state = 'hidden';
|
|
25
|
-
const container = document.createElement('div');
|
|
26
|
-
container.classList.add(containerStyle);
|
|
27
|
-
this._containerElement = container;
|
|
28
|
-
this._root.append(container);
|
|
29
|
-
const iconElement = document.createElement('div');
|
|
30
|
-
iconElement.classList.add(iconStyle);
|
|
31
|
-
this._iconElement = iconElement;
|
|
32
|
-
container.append(iconElement);
|
|
33
|
-
const titleElement = document.createElement('div');
|
|
34
|
-
titleElement.classList.add(titleStyle);
|
|
35
|
-
this._titleElement = titleElement;
|
|
36
|
-
container.append(titleElement);
|
|
37
|
-
const loaderElement = document.createElement('div');
|
|
38
|
-
loaderElement.innerHTML = '<div><div></div></div>';
|
|
39
|
-
loaderElement.classList.add(loaderStyle);
|
|
40
|
-
this._loaderElement = loaderElement;
|
|
41
|
-
const progressElement = document.createElement('div');
|
|
42
|
-
progressElement.classList.add(progressStyle);
|
|
43
|
-
this._progressElement = progressElement;
|
|
44
|
-
container.append(progressElement);
|
|
45
|
-
const contentElement = document.createElement('div');
|
|
46
|
-
this._contentElement = contentElement;
|
|
47
|
-
container.append(contentElement);
|
|
48
|
-
const actionsElement = document.createElement('div');
|
|
49
|
-
actionsElement.classList.add(actionsStyle);
|
|
50
|
-
this._actionsElement = actionsElement;
|
|
51
|
-
container.append(actionsElement);
|
|
52
|
-
const okButtonElement = document.createElement('button');
|
|
53
|
-
okButtonElement.type = 'button';
|
|
54
|
-
okButtonElement.textContent = 'OK';
|
|
55
|
-
this._okButtonElement = okButtonElement;
|
|
56
|
-
actionsElement.append(okButtonElement);
|
|
57
|
-
const cancelButtonElement = document.createElement('button');
|
|
58
|
-
cancelButtonElement.type = 'button';
|
|
59
|
-
cancelButtonElement.textContent = 'キャンセル';
|
|
60
|
-
this._cancelButtonElement = cancelButtonElement;
|
|
61
|
-
actionsElement.append(cancelButtonElement);
|
|
62
|
-
this.render();
|
|
63
|
-
}
|
|
64
|
-
alert(params) {
|
|
65
|
-
const { title = '', text = '', icon = '', disableClose = false, disableEscape = false, } = params;
|
|
66
|
-
this.#title = title;
|
|
67
|
-
this.#label = text;
|
|
68
|
-
this.changeState('alert');
|
|
69
|
-
this.show();
|
|
70
|
-
return new Promise((resolve) => {
|
|
71
|
-
this._okButtonElement.addEventListener('click', () => {
|
|
72
|
-
if (!disableClose) {
|
|
73
|
-
this.hide();
|
|
74
|
-
}
|
|
75
|
-
resolve({
|
|
76
|
-
isConfirmed: true,
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
this._cancelButtonElement.addEventListener('click', () => {
|
|
80
|
-
if (!disableClose) {
|
|
81
|
-
this.hide();
|
|
82
|
-
}
|
|
83
|
-
resolve({
|
|
84
|
-
isConfirmed: false,
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
this._root.addEventListener('click', (event) => {
|
|
88
|
-
if (event.currentTarget === event.target) {
|
|
89
|
-
if (!disableClose) {
|
|
90
|
-
this.hide();
|
|
91
|
-
}
|
|
92
|
-
resolve({
|
|
93
|
-
isConfirmed: false,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
this._root.addEventListener('keydown', (event) => {
|
|
98
|
-
if (event.key === 'Escape') {
|
|
99
|
-
if (!disableEscape) {
|
|
100
|
-
this.hide();
|
|
101
|
-
}
|
|
102
|
-
resolve({
|
|
103
|
-
isConfirmed: false,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
loading() {
|
|
110
|
-
this._iconElement.append(this._loaderElement);
|
|
111
|
-
this.changeState('loading');
|
|
112
|
-
this.show();
|
|
113
|
-
}
|
|
114
|
-
hide() {
|
|
115
|
-
this.#progress = 0;
|
|
116
|
-
this.#html = '';
|
|
117
|
-
this.#label = '';
|
|
118
|
-
this.changeState('hidden');
|
|
119
|
-
super.hide();
|
|
120
|
-
}
|
|
121
|
-
set label(label) {
|
|
122
|
-
this.#label = label;
|
|
123
|
-
this.render();
|
|
124
|
-
}
|
|
125
|
-
set html(html) {
|
|
126
|
-
this.#html = html;
|
|
127
|
-
this.render();
|
|
128
|
-
}
|
|
129
|
-
set progress(progress) {
|
|
130
|
-
this.#progress = progress;
|
|
131
|
-
this.render();
|
|
132
|
-
}
|
|
133
|
-
changeState(state) {
|
|
134
|
-
this.#state = state;
|
|
135
|
-
const elements = [
|
|
136
|
-
this._root,
|
|
137
|
-
this._actionsElement,
|
|
138
|
-
this._contentElement,
|
|
139
|
-
this._iconElement,
|
|
140
|
-
this._loaderElement,
|
|
141
|
-
this._progressElement,
|
|
142
|
-
this._titleElement,
|
|
143
|
-
];
|
|
144
|
-
for (const element of elements) {
|
|
145
|
-
element.dataset.state = state;
|
|
146
|
-
}
|
|
147
|
-
this.render();
|
|
148
|
-
}
|
|
149
|
-
render() {
|
|
150
|
-
super.render();
|
|
151
|
-
this._progressElement.style.width = `${this.#progress}%`;
|
|
152
|
-
switch (this.#state) {
|
|
153
|
-
case 'loading':
|
|
154
|
-
break;
|
|
155
|
-
case 'alert':
|
|
156
|
-
this._iconElement.innerHTML = '';
|
|
157
|
-
break;
|
|
158
|
-
case 'hidden':
|
|
159
|
-
default:
|
|
160
|
-
this._iconElement.innerHTML = '';
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
this._titleElement.textContent = this.#title;
|
|
164
|
-
if (this.#html) {
|
|
165
|
-
this._contentElement.innerHTML = this.#html;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
if (this.#label instanceof Array) {
|
|
169
|
-
this._contentElement.innerHTML = `<div>${this.#label.join('</div><div>')}</div>`;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
this._contentElement.textContent = this.#label;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=index.js.map
|
package/dist/modal/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modal/index.ts"],"names":[],"mappings":"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"}
|
package/dist/modal/style.d.ts
DELETED
package/dist/modal/style.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { css } from '@emotion/css';
|
|
2
|
-
export const containerStyle = css `
|
|
3
|
-
display: grid;
|
|
4
|
-
gap: 2px;
|
|
5
|
-
padding: 24px;
|
|
6
|
-
background-color: #fff;
|
|
7
|
-
border-radius: 0;
|
|
8
|
-
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
9
|
-
border: 1px solid #f3f4f6;
|
|
10
|
-
min-height: 200px;
|
|
11
|
-
position: relative;
|
|
12
|
-
overflow: hidden;
|
|
13
|
-
transition: all 250ms ease;
|
|
14
|
-
|
|
15
|
-
@media (min-width: 640px) {
|
|
16
|
-
width: 400px;
|
|
17
|
-
max-width: 90vw;
|
|
18
|
-
border-radius: 4px;
|
|
19
|
-
padding: 32px;
|
|
20
|
-
}
|
|
21
|
-
`;
|
|
22
|
-
export const iconStyle = css ``;
|
|
23
|
-
export const titleStyle = css `
|
|
24
|
-
font-size: 18px;
|
|
25
|
-
font-weight: 600;
|
|
26
|
-
color: #1f2937;
|
|
27
|
-
text-align: center;
|
|
28
|
-
@media (min-width: 640px) {
|
|
29
|
-
text-align: left;
|
|
30
|
-
}
|
|
31
|
-
`;
|
|
32
|
-
export const loaderStyle = css `
|
|
33
|
-
font-size: 60px;
|
|
34
|
-
width: 1em;
|
|
35
|
-
height: 1em;
|
|
36
|
-
border-radius: 50%;
|
|
37
|
-
box-shadow: inset 0 0 0 1px #3b82f633;
|
|
38
|
-
position: relative;
|
|
39
|
-
|
|
40
|
-
animation: none;
|
|
41
|
-
&[data-state='loading'] {
|
|
42
|
-
animation: rotate 1s linear infinite;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
> div {
|
|
46
|
-
position: absolute;
|
|
47
|
-
left: 50%;
|
|
48
|
-
top: 50%;
|
|
49
|
-
width: 0.5em;
|
|
50
|
-
height: 1em;
|
|
51
|
-
margin-left: -0.5em;
|
|
52
|
-
margin-top: -0.5em;
|
|
53
|
-
overflow: hidden;
|
|
54
|
-
transform-origin: 0.5em 0.5em;
|
|
55
|
-
mask-image: linear-gradient(top, #000f, #0000);
|
|
56
|
-
-webkit-mask-image: -webkit-linear-gradient(top, #000f, #0000);
|
|
57
|
-
|
|
58
|
-
> div {
|
|
59
|
-
width: 1em;
|
|
60
|
-
height: 1em;
|
|
61
|
-
border-radius: 50%;
|
|
62
|
-
box-shadow: inset 0 0 0 1px #3b82f6;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
@keyframes rotate {
|
|
66
|
-
0% {
|
|
67
|
-
transform: rotate(0deg);
|
|
68
|
-
}
|
|
69
|
-
100% {
|
|
70
|
-
transform: rotate(360deg);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
`;
|
|
74
|
-
export const progressStyle = css `
|
|
75
|
-
position: absolute;
|
|
76
|
-
bottom: 0px;
|
|
77
|
-
left: 0;
|
|
78
|
-
width: 0%;
|
|
79
|
-
height: 2px;
|
|
80
|
-
background-color: #2563eb;
|
|
81
|
-
transition: all 350ms ease;
|
|
82
|
-
`;
|
|
83
|
-
export const actionsStyle = css `
|
|
84
|
-
display: flex;
|
|
85
|
-
flex-direction: column;
|
|
86
|
-
justify-content: flex-end;
|
|
87
|
-
align-items: flex-end;
|
|
88
|
-
gap: 8px;
|
|
89
|
-
|
|
90
|
-
@media (min-width: 640px) {
|
|
91
|
-
flex-direction: row;
|
|
92
|
-
}
|
|
93
|
-
`;
|
|
94
|
-
//# sourceMappingURL=style.js.map
|
package/dist/modal/style.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/modal/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;CAmBhC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA,EAAE,CAAC;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;CAQ5B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC7B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;CAQ/B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;CAU9B,CAAC"}
|