sbs-editable-bs5 1.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/LICENSE +21 -0
- package/README.md +325 -0
- package/dist/editable.css +1 -0
- package/dist/editable.iife.js +3 -0
- package/dist/editable.iife.js.map +1 -0
- package/dist/editable.js +906 -0
- package/dist/editable.js.map +1 -0
- package/dist/editable.umd.cjs +3 -0
- package/dist/editable.umd.cjs.map +1 -0
- package/dist/src/Interfaces/BaseTypeButtons.d.ts +4 -0
- package/dist/src/Interfaces/Options.d.ts +36 -0
- package/dist/src/Modes/BaseMode.d.ts +14 -0
- package/dist/src/Modes/InlineMode.d.ts +11 -0
- package/dist/src/Modes/PopupMode.d.ts +12 -0
- package/dist/src/Types/BaseType.d.ts +35 -0
- package/dist/src/Types/DateTimeType.d.ts +5 -0
- package/dist/src/Types/DateType.d.ts +7 -0
- package/dist/src/Types/InputType.d.ts +4 -0
- package/dist/src/Types/SelectType.d.ts +7 -0
- package/dist/src/Types/TextAreaType.d.ts +4 -0
- package/dist/src/editable.d.ts +51 -0
- package/dist/tests/accessibility.test.d.ts +1 -0
- package/dist/tests/disabled.test.d.ts +1 -0
- package/dist/tests/errors.test.d.ts +1 -0
- package/dist/tests/events.test.d.ts +1 -0
- package/dist/tests/lifecycle.test.d.ts +1 -0
- package/dist/tests/public-api.test.d.ts +1 -0
- package/dist/tests/render.test.d.ts +1 -0
- package/dist/tests/request.test.d.ts +1 -0
- package/dist/tests/save-flow.test.d.ts +1 -0
- package/dist/tests/theme.test.d.ts +1 -0
- package/dist/tests/types/attributes.test.d.ts +1 -0
- package/dist/tests/types/date.test.d.ts +1 -0
- package/dist/tests/types/select.test.d.ts +1 -0
- package/package.json +57 -0
- package/src/Interfaces/BaseTypeButtons.ts +4 -0
- package/src/Interfaces/Options.ts +30 -0
- package/src/Modes/BaseMode.ts +57 -0
- package/src/Modes/InlineMode.ts +47 -0
- package/src/Modes/PopupMode.ts +107 -0
- package/src/Types/BaseType.ts +301 -0
- package/src/Types/DateTimeType.ts +18 -0
- package/src/Types/DateType.ts +43 -0
- package/src/Types/InputType.ts +12 -0
- package/src/Types/SelectType.ts +70 -0
- package/src/Types/TextAreaType.ts +9 -0
- package/src/editable.css +136 -0
- package/src/editable.ts +244 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editable.js","names":[],"sources":["../src/Modes/BaseMode.ts","../src/Modes/InlineMode.ts","../src/Modes/PopupMode.ts","../src/Types/BaseType.ts","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/customParseFormat.js","../src/Types/DateType.ts","../src/Types/DateTimeType.ts","../src/Types/InputType.ts","../src/Types/SelectType.ts","../src/Types/TextAreaType.ts","../src/editable.ts"],"sourcesContent":["import type Editable from '../editable.ts';\n\nexport default class BaseMode {\n context: Editable;\n\n constructor(context: Editable) {\n if (this.constructor === BaseMode) {\n throw new Error(\n 'BaseMode is abstract and cannot be instantiated directly — create a subclass that implements init()/enable()/disable()/hide()/destroy() (see PopupMode, InlineMode).',\n );\n }\n this.context = context;\n }\n\n event_show() {\n this.context.typeElement.hideError();\n if (!this.context.typeElement.element) {\n throw new Error(\n `${this.context.typeElement.constructor.name}.create() did not call createContainer() — the input element was never set.`,\n );\n }\n this.context.typeElement.element.value = this.context.getValue();\n this.context.element.dispatchEvent(new CustomEvent('show', { detail: { Editable: this.context } }));\n }\n\n event_shown() {\n this.context.element.dispatchEvent(new CustomEvent('shown', { detail: { Editable: this.context } }));\n }\n\n event_hide() {\n this.context.element.dispatchEvent(new CustomEvent('hide', { detail: { Editable: this.context } }));\n }\n\n event_hidden() {\n this.context.element.dispatchEvent(new CustomEvent('hidden', { detail: { Editable: this.context } }));\n }\n\n init() {\n throw new Error(`${this.constructor.name} must implement init().`);\n }\n\n enable() {\n throw new Error(`${this.constructor.name} must implement enable().`);\n }\n\n disable() {\n throw new Error(`${this.constructor.name} must implement disable().`);\n }\n\n hide() {\n throw new Error(`${this.constructor.name} must implement hide().`);\n }\n\n destroy() {\n throw new Error(`${this.constructor.name} must implement destroy().`);\n }\n}\n","import BaseMode from './BaseMode.js';\n\nexport default class InlineMode extends BaseMode {\n private openHandler: (() => void) | null = null;\n private disabled = false;\n\n init() {\n this.openHandler = () => {\n if (!this.disabled) {\n const item = this.context.typeElement.create();\n this.event_show();\n this.removeOpenHandler();\n this.context.element.replaceChildren(item);\n this.event_shown();\n }\n };\n this.context.element.addEventListener('click', this.openHandler);\n }\n\n private removeOpenHandler(): void {\n if (this.openHandler) {\n this.context.element.removeEventListener('click', this.openHandler);\n this.openHandler = null;\n }\n }\n\n enable() {\n this.disabled = false;\n }\n\n disable() {\n this.disabled = true;\n }\n\n hide() {\n this.event_hide();\n this.context.element.textContent = this.context.getValue();\n setTimeout(() => {\n this.init();\n this.event_hidden();\n }, 100);\n }\n\n destroy(): void {\n this.removeOpenHandler();\n }\n}\n","import { Popover } from 'bootstrap';\nimport BaseMode from './BaseMode.js';\n\nexport default class PopupMode extends BaseMode {\n popover: Popover | null = null;\n private abortController: AbortController = new AbortController();\n\n init() {\n const options = {\n container: 'body',\n content: this.context.typeElement.create(),\n html: true,\n customClass: 'editable',\n title: this.context.options.title,\n };\n this.popover = new Popover(this.context.element, Object.assign(options, this.context.options.popoverOptions));\n const { signal } = this.abortController;\n this.context.element.addEventListener(\n 'show.bs.popover',\n () => {\n this.event_show();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'inserted.bs.popover',\n () => {\n this.syncTheme();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'shown.bs.popover',\n () => {\n this.event_shown();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'hide.bs.popover',\n () => {\n this.event_hide();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'hidden.bs.popover',\n () => {\n this.event_hidden();\n },\n { signal },\n );\n\n document.addEventListener(\n 'click',\n (e) => {\n const target = <HTMLElement>e.target;\n // @ts-expect-error — Popover.tip is an undocumented internal property\n const tip = this.popover?.tip;\n if ((this.popover && target === tip) || target === this.context.element) return;\n let current = target.parentNode;\n while (current) {\n if (current === tip) return;\n current = current.parentNode;\n }\n this.hide();\n },\n { signal },\n );\n }\n\n // The tip is appended to <body> by default, outside any scoped data-bs-theme\n // wrapper around the trigger — copy the nearest theme onto it explicitly so\n // Bootstrap's CSS variables still resolve to the trigger's theme, not the page default.\n private syncTheme(): void {\n const themedAncestor = this.context.element.closest('[data-bs-theme]');\n // @ts-expect-error — Popover.tip is an undocumented internal property\n const tip = this.popover?.tip as HTMLElement | undefined;\n if (tip && themedAncestor) {\n tip.setAttribute('data-bs-theme', themedAncestor.getAttribute('data-bs-theme') ?? '');\n }\n }\n\n enable(): void {\n if (this.popover) {\n this.popover.enable();\n }\n }\n\n disable(): void {\n if (this.popover) {\n this.popover.disable();\n }\n }\n\n hide(): void {\n if (this.popover) {\n this.popover.hide();\n }\n }\n\n destroy(): void {\n this.abortController.abort();\n this.popover?.dispose();\n this.popover = null;\n }\n}\n","import type Editable from '../editable.ts';\nimport type BaseTypeButtons from '../Interfaces/BaseTypeButtons.ts';\n\nexport default class BaseType {\n context: Editable;\n element: HTMLInputElement | null = null;\n error: HTMLElement | null = null;\n form: HTMLElement | null = null;\n load: HTMLElement | null = null;\n buttons: BaseTypeButtons = { success: null, cancel: null };\n\n constructor(context: Editable) {\n if (this.constructor === BaseType) {\n throw new Error(\n 'BaseType is abstract and cannot be instantiated directly — create a subclass that implements create() (see InputType, SelectType, etc.).',\n );\n }\n this.context = context;\n }\n\n create(): HTMLElement {\n throw new Error(`${this.constructor.name} must implement create().`);\n }\n\n // Flags options that only make sense for a different type (e.g. `format` on a `text` field) —\n // they're silently ignored otherwise, which is easy to miss. Override per-type as needed.\n checkUnsupportedOptions(): void {\n if (this.context.options.format !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"format\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n if (this.context.options.displayFormat !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"displayFormat\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n if (this.context.options.source !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"source\" option — it only applies to type: 'select'. It will be ignored.`,\n );\n }\n }\n\n createContainer(element: HTMLInputElement): HTMLDivElement {\n const div = document.createElement(`div`);\n this.element = element;\n this.error = this.createContainerError();\n this.form = this.createContainerForm();\n this.load = this.createContainerLoad();\n this.form.append(element, this.load);\n this.buttons.success = null;\n this.buttons.cancel = null;\n if (this.context.options.showButtons) {\n this.buttons.success = this.createButtonSuccess();\n this.buttons.cancel = this.createButtonCancel();\n this.form.append(this.buttons.success, this.buttons.cancel);\n }\n\n div.append(this.error, this.form);\n return div;\n }\n\n createContainerError(): HTMLDivElement {\n const div = document.createElement(`div`);\n div.classList.add('editable-error', 'text-danger', 'fst-italic', 'mb-2', 'fw-bold');\n div.setAttribute('role', 'alert');\n div.hidden = true;\n return div;\n }\n\n // Closes the widget and returns keyboard focus to the trigger — used for every\n // explicit exit (cancel, Escape, successful save), but not for an outside-click\n // dismissal, where focus should stay wherever the user actually clicked.\n private closeAndFocus(): void {\n this.context.modeElement.hide();\n this.context.element.focus();\n }\n\n createContainerForm(): HTMLFormElement {\n const form = document.createElement(`form`);\n form.classList.add('editable-form', 'd-flex', 'align-items-start');\n form.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n this.closeAndFocus();\n }\n });\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n const newValue = this.getValue();\n if (this.context.options.send && this.context.options.url && this.context.getValue() !== newValue) {\n this.showLoad();\n let msg: string | undefined;\n try {\n const response = await this.ajax(newValue);\n if (response.ok) {\n msg = await this.context.success(response, newValue);\n } else {\n msg =\n (await this.context.error(response, newValue)) ||\n `${response.status} ${response.statusText}`;\n }\n } catch (error) {\n console.error(error);\n if (!(error instanceof TypeError)) {\n throw error;\n }\n msg = error.message;\n }\n\n if (msg) {\n this.showError();\n this.setError(msg);\n } else {\n this.setError('');\n this.hideError();\n this.context.setValue(this.getValue());\n this.closeAndFocus();\n this.initText();\n }\n this.hideLoad();\n } else {\n this.context.setValue(this.getValue());\n this.closeAndFocus();\n this.initText();\n }\n this.context.element.dispatchEvent(new CustomEvent('save', { detail: { Editable: this.context } }));\n });\n return form;\n }\n\n createContainerLoad(): HTMLDivElement {\n const div = document.createElement(`div`);\n div.classList.add('editable-load-overlay');\n div.hidden = true;\n const loader = document.createElement(`div`);\n loader.classList.add('editable-loader');\n div.append(loader);\n return div;\n }\n\n createButton(): HTMLButtonElement {\n const button = document.createElement('button');\n button.type = 'button';\n button.classList.add('btn', 'btn-sm');\n return button;\n }\n\n createButtonSuccess(): HTMLButtonElement {\n const btn_success = this.createButton();\n btn_success.type = 'submit';\n btn_success.classList.add('btn-success');\n btn_success.setAttribute('aria-label', 'Save');\n btn_success.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M13.485 1.929a1 1 0 0 1 .057 1.414l-7.5 8a1 1 0 0 1-1.45.036l-3.5-3.5a1 1 0 1 1 1.414-1.415L5.5 9.379l6.571-7.007a1 1 0 0 1 1.414-.043z\"/></svg>`;\n return btn_success;\n }\n\n createButtonCancel(): HTMLButtonElement {\n const btn_cancel = this.createButton();\n btn_cancel.classList.add('btn-danger');\n btn_cancel.setAttribute('aria-label', 'Cancel');\n btn_cancel.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854z\"/></svg>`;\n btn_cancel.addEventListener('click', () => {\n this.closeAndFocus();\n });\n return btn_cancel;\n }\n\n hideLoad(): void {\n if (this.load) {\n this.load.hidden = true;\n }\n }\n\n showLoad(): void {\n if (this.load) {\n this.load.hidden = false;\n }\n }\n\n async ajax(new_value: string): Promise<Response> {\n const urlOption = this.context.options.url;\n if (!urlOption) {\n const err = new Error(\n 'ajax() was called without a `url` option configured. Set `url` (string or function) before calling save.',\n );\n console.error(err);\n throw err;\n }\n const url = typeof urlOption === 'function' ? urlOption(this.context, new_value) : urlOption;\n\n if (this.context.options.requestBuilder) {\n const built = await this.context.options.requestBuilder(this.context, new_value, url);\n return fetch(built.url, built.init);\n }\n\n const form = new FormData();\n form.append(this.context.options.name ?? 'value', new_value);\n\n const ajaxOptions = { ...this.context.options.ajaxOptions };\n ajaxOptions.body = form;\n return fetch(url, ajaxOptions);\n }\n\n async successResponse(_response: Response, _newValue: string): Promise<string | undefined> {\n return undefined;\n }\n\n async errorResponse(_response: Response, _newValue: string): Promise<string | undefined> {\n return undefined;\n }\n\n setError(errorMsg: string): void {\n if (this.error) {\n this.error.textContent = errorMsg;\n }\n }\n\n showError(): void {\n if (this.error) {\n this.error.hidden = false;\n }\n }\n\n hideError(): void {\n if (this.error) {\n this.error.hidden = true;\n }\n }\n\n createElement(name: string): HTMLInputElement {\n const element = <HTMLInputElement>document.createElement(name);\n element.classList.add('form-control');\n if (this.context.options.required) {\n element.required = this.context.options.required;\n }\n this.applyAttributes(element);\n if (!this.context.options.showButtons) {\n element.addEventListener('change', () => {\n if (this.form) {\n this.form.dispatchEvent(new Event('submit'));\n }\n });\n }\n this.add_focus(element);\n return element;\n }\n\n private applyAttributes(element: HTMLInputElement): void {\n const attrs = this.context.options.attributes || {};\n const allowedAttributes = [\n 'step',\n 'min',\n 'max',\n 'minlength',\n 'maxlength',\n 'pattern',\n 'placeholder',\n 'required',\n 'readonly',\n 'disabled',\n 'autocomplete',\n 'autofocus',\n ];\n for (const [key, value] of Object.entries(attrs)) {\n if (allowedAttributes.includes(key) && value !== undefined) {\n element.setAttribute(key, String(value));\n }\n }\n }\n\n add_focus(element: HTMLInputElement): void {\n this.context.element.addEventListener(\n 'shown',\n () => {\n element.focus();\n },\n { once: true },\n );\n }\n\n initText(): boolean {\n if (this.context.getValue() === '') {\n this.context.element.textContent = this.context.options.emptyText || '';\n return true;\n } else {\n const text = this.context.getValue();\n this.context.element.textContent = this.context.options.render\n ? this.context.options.render(text, this.context)\n : text;\n return false;\n }\n }\n\n initOptions(): void {}\n\n getValue(): string {\n return this.element ? this.element.value : '';\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),Y=_.prototype;return O.prototype=Y,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){Y[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport BaseType from './BaseType.js';\n\ndayjs.extend(customParseFormat);\n\nexport default class DateType extends BaseType {\n checkUnsupportedOptions(): void {\n if (this.context.options.source !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"source\" option — it only applies to type: 'select'. It will be ignored.`,\n );\n }\n }\n\n create() {\n const input = this.createElement(`input`);\n input.type = 'date';\n\n return this.createContainer(input);\n }\n\n initText(): boolean {\n const value = this.context.getValue();\n if (value === '') {\n this.context.element.textContent = this.context.options.emptyText || '';\n return true;\n } else {\n const text = dayjs(value, this.context.options.format).format(this.context.options.displayFormat);\n this.context.element.textContent = this.context.options.render\n ? this.context.options.render(text, this.context)\n : text;\n return false;\n }\n }\n\n initOptions(): void {\n const default_format = 'YYYY-MM-DD';\n const format = this.context.get_opt('format', default_format) as string;\n const displayFormat = this.context.get_opt('displayFormat', default_format) as string;\n this.context.setValue(dayjs(this.context.getValue(), displayFormat).format(format));\n }\n}\n","import dayjs from 'dayjs';\nimport DateType from './DateType.js';\n\nexport default class DateTimeType extends DateType {\n create() {\n const input = this.createElement(`input`);\n input.type = 'datetime-local';\n\n return this.createContainer(input);\n }\n\n initOptions(): void {\n const default_format = 'YYYY-MM-DDTHH:mm';\n const format = this.context.get_opt('format', default_format) as string;\n const displayFormat = this.context.get_opt('displayFormat', default_format) as string;\n this.context.setValue(dayjs(this.context.getValue(), displayFormat).format(format));\n }\n}\n","import BaseType from './BaseType.js';\n\nexport default class InputType extends BaseType {\n create() {\n const input = this.createElement(`input`);\n const { options = {} } = this.context;\n\n input.type = typeof options.type === 'string' ? options.type : 'text';\n\n return this.createContainer(input);\n }\n}\n","import BaseType from './BaseType.js';\n\nexport default class SelectType extends BaseType {\n checkUnsupportedOptions(): void {\n if (this.context.options.format !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"format\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n if (this.context.options.displayFormat !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"displayFormat\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n }\n\n create() {\n const select = this.createElement(`select`);\n if (this.context.options.source && Array.isArray(this.context.options.source)) {\n this.context.options.source.forEach((item) => {\n const opt = document.createElement(`option`);\n opt.value = String(item.value);\n opt.textContent = item.text;\n select.append(opt);\n });\n }\n\n return this.createContainer(select);\n }\n\n initText() {\n this.context.element.textContent = this.context.options.emptyText || '';\n if (\n this.context.getValue() !== '' &&\n this.context.options.source &&\n Array.isArray(this.context.options.source) &&\n this.context.options.source.length > 0\n ) {\n for (let i = 0; i < this.context.options.source.length; i++) {\n const item = this.context.options.source[i];\n if (String(item.value) === this.context.getValue()) {\n this.context.element.textContent = this.context.options.render\n ? this.context.options.render(item.text, this.context)\n : item.text;\n return false;\n }\n }\n }\n return true;\n }\n\n initOptions() {\n this.context.get_opt('source', []);\n if (\n this.context.options &&\n typeof this.context.options.source === 'string' &&\n this.context.options.source !== ''\n ) {\n try {\n this.context.options.source = JSON.parse(this.context.options.source);\n } catch (e) {\n const el = this.context.element;\n const identifier = el.id ? `#${el.id}` : `<${el.tagName.toLowerCase()}>`;\n throw new Error(\n `Invalid JSON in \"source\" option/data-source attribute on ${identifier}: ${(e as Error).message}`,\n );\n }\n }\n }\n}\n","import BaseType from './BaseType.js';\n\nexport default class TextAreaType extends BaseType {\n create() {\n const textarea = this.createElement(`textarea`);\n\n return this.createContainer(textarea);\n }\n}\n","import './editable.css';\nimport type Options from './Interfaces/Options.ts';\nimport BaseMode from './Modes/BaseMode.ts';\nimport InlineMode from './Modes/InlineMode.ts';\nimport PopupMode from './Modes/PopupMode.ts';\nimport BaseType from './Types/BaseType.ts';\nimport DateTimeType from './Types/DateTimeType.ts';\nimport DateType from './Types/DateType.ts';\nimport InputType from './Types/InputType.ts';\nimport SelectType from './Types/SelectType.ts';\nimport TextAreaType from './Types/TextAreaType.ts';\n\nexport type { Options };\n\nexport default class Editable {\n static BaseType = BaseType;\n static BaseMode = BaseMode;\n static InputType = InputType;\n static TextAreaType = TextAreaType;\n static SelectType = SelectType;\n static DateType = DateType;\n static DateTimeType = DateTimeType;\n static PopupMode = PopupMode;\n static InlineMode = InlineMode;\n\n static types: Map<string, typeof BaseType> = new Map<string, typeof BaseType>([\n ['text', InputType],\n ['password', InputType],\n ['email', InputType],\n ['url', InputType],\n ['tel', InputType],\n ['number', InputType],\n ['range', InputType],\n ['time', InputType],\n ['textarea', TextAreaType],\n ['select', SelectType],\n ['date', DateType],\n ['datetime', DateTimeType],\n ]);\n\n static modes: Map<string, typeof BaseMode> = new Map<string, typeof BaseMode>([\n ['popup', PopupMode],\n ['inline', InlineMode],\n ]);\n\n static registerType(name: string, type: typeof BaseType): void {\n Editable.types.set(name, type);\n }\n\n static registerMode(name: string, mode: typeof BaseMode): void {\n Editable.modes.set(name, mode);\n }\n\n element: HTMLElement;\n options: Options;\n\n typeElement: BaseType;\n modeElement: BaseMode;\n\n private accessibilityAbortController = new AbortController();\n\n constructor(element: HTMLElement, options: Options = {}) {\n this.element = element;\n this.options = { ...options };\n this.init_options();\n this.typeElement = this.route_type();\n this.typeElement.checkUnsupportedOptions();\n this.typeElement.initOptions();\n this.modeElement = this.route_mode();\n this.modeElement.init();\n this.init_text();\n this.init_style();\n this.init_accessibility();\n this.element.dispatchEvent(new CustomEvent('init', { detail: { Editable: this } }));\n }\n\n // Options has no index signature by design (keeps the public shape autocomplete-friendly),\n // so these two helpers are the only place that reads/writes it dynamically by name.\n private readOption(name: string): unknown {\n // @ts-expect-error\n return this.options[name];\n }\n\n private writeOption(name: string, value: unknown): void {\n // @ts-expect-error\n this.options[name] = value;\n }\n\n get_opt(name: string, default_value: unknown): unknown {\n const value = this.element.dataset?.[name] ?? this.readOption(name) ?? default_value;\n this.writeOption(name, value);\n return value;\n }\n\n get_opt_object(name: string, default_value: unknown): void {\n // Object-valued options are JS-only — dataset is deliberately not read here\n this.writeOption(name, this.readOption(name) ?? default_value);\n }\n\n get_opt_bool(name: string, default_value: boolean): void {\n this.get_opt(name, default_value);\n if (typeof this.readOption(name) !== 'boolean') {\n if (this.readOption(name) === 'true') {\n this.writeOption(name, true);\n return;\n }\n if (this.readOption(name) === 'false') {\n this.writeOption(name, false);\n return;\n }\n this.writeOption(name, default_value);\n }\n }\n\n init_options(): void {\n //priority date elements\n this.get_opt('value', this.element.textContent ?? '');\n this.get_opt('name', this.element.id || 'value');\n this.get_opt('title', '');\n this.get_opt('type', 'text');\n this.get_opt('emptyText', 'Empty');\n this.get_opt('mode', 'popup');\n this.get_opt('url', null);\n this.get_opt_object('ajaxOptions', {});\n this.options.ajaxOptions = Object.assign({ method: 'POST' }, this.options.ajaxOptions);\n this.get_opt_bool('send', true);\n this.get_opt_bool('required', false);\n this.get_opt_bool('showButtons', true);\n if (this.options?.success && typeof this.options?.success === 'function') {\n this.success = this.options.success;\n }\n if (this.options?.error && typeof this.options?.error === 'function') {\n this.error = this.options.error;\n }\n this.get_opt_object('attributes', {});\n this.get_opt_object('popoverOptions', {});\n }\n\n init_text() {\n const empty_class = 'editable-element-empty';\n this.element.classList.remove(empty_class);\n if (this.typeElement.initText()) {\n this.element.classList.add(empty_class);\n }\n }\n\n init_style() {\n this.element.classList.add('editable-element');\n }\n\n // The trigger has no native keyboard semantics unless the host already made it one\n // (a real <button> or <a href>) — give it button-like tabbing and Enter/Space activation\n // otherwise. Guarded to the element itself so keys typed into an open inline-mode input,\n // which lives inside this same element, don't re-trigger it.\n init_accessibility(): void {\n const el = this.element;\n const isNativelyInteractive =\n el.tagName === 'BUTTON' ||\n el.tagName === 'INPUT' ||\n el.tagName === 'SELECT' ||\n el.tagName === 'TEXTAREA' ||\n (el.tagName === 'A' && el.hasAttribute('href'));\n if (isNativelyInteractive) return;\n\n if (!el.hasAttribute('tabindex')) {\n el.tabIndex = 0;\n }\n if (!el.hasAttribute('role')) {\n el.setAttribute('role', 'button');\n }\n el.addEventListener(\n 'keydown',\n (e) => {\n if (e.target !== el) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n el.click();\n }\n },\n { signal: this.accessibilityAbortController.signal },\n );\n }\n\n route_mode(): BaseMode {\n const ModeClass = Editable.modes.get(this.options.mode as string);\n if (!ModeClass) {\n throw new Error(\n `Mode \"${this.options.mode}\" is not registered. Available modes: ${[...Editable.modes.keys()].join(', ')}. Register custom modes via Editable.registerMode(name, ModeClass).`,\n );\n }\n return new ModeClass(this);\n }\n\n route_type(): BaseType {\n if (this.options.type && typeof this.options.type !== 'string') {\n // @ts-expect-error\n return new this.options.type(this);\n }\n const TypeClass = Editable.types.get(this.options.type as string);\n if (!TypeClass) {\n throw new Error(\n `Type \"${this.options.type}\" is not registered. Available types: ${[...Editable.types.keys()].join(', ')}. Register custom types via Editable.registerType(name, TypeClass).`,\n );\n }\n return new TypeClass(this);\n }\n\n async success(response: Response, newValue: string): Promise<string | undefined> {\n return await this.typeElement.successResponse(response, newValue);\n }\n\n async error(response: Response, newValue: string): Promise<string | undefined> {\n return await this.typeElement.errorResponse(response, newValue);\n }\n\n enable(): void {\n this.element.classList.remove('editable-element-disabled');\n this.modeElement.enable();\n }\n\n disable(): void {\n this.element.classList.add('editable-element-disabled');\n this.modeElement.disable();\n }\n\n setValue(value: string): void {\n this.options.value = value;\n this.init_text();\n }\n\n getValue(): string {\n return this.options.value ?? '';\n }\n\n getOption(name: string): unknown {\n return this.readOption(name) ?? null;\n }\n\n destroy(): void {\n this.accessibilityAbortController.abort();\n this.modeElement.destroy();\n this.element.classList.remove('editable-element', 'editable-element-disabled', 'editable-element-empty');\n }\n}\n"],"x_google_ignoreList":[4,5],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("bootstrap")):typeof define==`function`&&define.amd?define([`bootstrap`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.Editable=t(e.bootstrap))})(this,function(e){var t=document.createElement(`style`);t.textContent=`.editable-element{border-bottom:dashed 1px var(--bs-primary,#08c);cursor:pointer;text-decoration:none}.editable-element-disabled{cursor:default;border-bottom:none}.editable-element-empty{color:var(--bs-danger,#d14);font-style:italic}.editable{max-width:none}.editable-form{gap:20px}.editable-load-overlay{background:var(--bs-body-bg,#fff);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.editable-loader{--editable-loader-color:var(--bs-body-color,#000);text-indent:-9999em;border-radius:50%;width:1em;height:1em;font-size:5px;animation:1.1s infinite load5;position:relative;transform:translateZ(0)}@keyframes load5{0%,to{box-shadow:0em -2.6em 0em 0em var(--editable-loader-color), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent)}12.5%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), 1.8em -1.8em 0 0em var(--editable-loader-color), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent)}25%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), 2.5em 0em 0 0em var(--editable-loader-color), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent)}37.5%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), 1.75em 1.75em 0 0em var(--editable-loader-color), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent)}50%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), 0em 2.5em 0 0em var(--editable-loader-color), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent)}62.5%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), -1.8em 1.8em 0 0em var(--editable-loader-color), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent)}75%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), -2.6em 0em 0 0em var(--editable-loader-color), -1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent)}87.5%{box-shadow:0em -2.6em 0em 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.8em -1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 2.5em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 1.75em 1.75em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), 0em 2.5em 0 0em color-mix(in srgb, var(--editable-loader-color) 20%, transparent), -1.8em 1.8em 0 0em color-mix(in srgb, var(--editable-loader-color) 50%, transparent), -2.6em 0em 0 0em color-mix(in srgb, var(--editable-loader-color) 70%, transparent), -1.8em -1.8em 0 0em var(--editable-loader-color)}}
|
|
2
|
+
/*$vite$:1*/`,document.head.appendChild(t);var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule||!s.call(e,`default`)?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=class e{context;constructor(t){if(this.constructor===e)throw Error(`BaseMode is abstract and cannot be instantiated directly — create a subclass that implements init()/enable()/disable()/hide()/destroy() (see PopupMode, InlineMode).`);this.context=t}event_show(){if(this.context.typeElement.hideError(),!this.context.typeElement.element)throw Error(`${this.context.typeElement.constructor.name}.create() did not call createContainer() — the input element was never set.`);this.context.typeElement.element.value=this.context.getValue(),this.context.element.dispatchEvent(new CustomEvent(`show`,{detail:{Editable:this.context}}))}event_shown(){this.context.element.dispatchEvent(new CustomEvent(`shown`,{detail:{Editable:this.context}}))}event_hide(){this.context.element.dispatchEvent(new CustomEvent(`hide`,{detail:{Editable:this.context}}))}event_hidden(){this.context.element.dispatchEvent(new CustomEvent(`hidden`,{detail:{Editable:this.context}}))}init(){throw Error(`${this.constructor.name} must implement init().`)}enable(){throw Error(`${this.constructor.name} must implement enable().`)}disable(){throw Error(`${this.constructor.name} must implement disable().`)}hide(){throw Error(`${this.constructor.name} must implement hide().`)}destroy(){throw Error(`${this.constructor.name} must implement destroy().`)}},f=class extends d{openHandler=null;disabled=!1;init(){this.openHandler=()=>{if(!this.disabled){let e=this.context.typeElement.create();this.event_show(),this.removeOpenHandler(),this.context.element.replaceChildren(e),this.event_shown()}},this.context.element.addEventListener(`click`,this.openHandler)}removeOpenHandler(){this.openHandler&&=(this.context.element.removeEventListener(`click`,this.openHandler),null)}enable(){this.disabled=!1}disable(){this.disabled=!0}hide(){this.event_hide(),this.context.element.textContent=this.context.getValue(),setTimeout(()=>{this.init(),this.event_hidden()},100)}destroy(){this.removeOpenHandler()}},p=class extends d{popover=null;abortController=new AbortController;init(){let t={container:`body`,content:this.context.typeElement.create(),html:!0,customClass:`editable`,title:this.context.options.title};this.popover=new e.Popover(this.context.element,Object.assign(t,this.context.options.popoverOptions));let{signal:n}=this.abortController;this.context.element.addEventListener(`show.bs.popover`,()=>{this.event_show()},{signal:n}),this.context.element.addEventListener(`inserted.bs.popover`,()=>{this.syncTheme()},{signal:n}),this.context.element.addEventListener(`shown.bs.popover`,()=>{this.event_shown()},{signal:n}),this.context.element.addEventListener(`hide.bs.popover`,()=>{this.event_hide()},{signal:n}),this.context.element.addEventListener(`hidden.bs.popover`,()=>{this.event_hidden()},{signal:n}),document.addEventListener(`click`,e=>{let t=e.target,n=this.popover?.tip;if(this.popover&&t===n||t===this.context.element)return;let r=t.parentNode;for(;r;){if(r===n)return;r=r.parentNode}this.hide()},{signal:n})}syncTheme(){let e=this.context.element.closest(`[data-bs-theme]`),t=this.popover?.tip;t&&e&&t.setAttribute(`data-bs-theme`,e.getAttribute(`data-bs-theme`)??``)}enable(){this.popover&&this.popover.enable()}disable(){this.popover&&this.popover.disable()}hide(){this.popover&&this.popover.hide()}destroy(){this.abortController.abort(),this.popover?.dispose(),this.popover=null}},m=class e{context;element=null;error=null;form=null;load=null;buttons={success:null,cancel:null};constructor(t){if(this.constructor===e)throw Error(`BaseType is abstract and cannot be instantiated directly — create a subclass that implements create() (see InputType, SelectType, etc.).`);this.context=t}create(){throw Error(`${this.constructor.name} must implement create().`)}checkUnsupportedOptions(){this.context.options.format!==void 0&&console.error(`${this.constructor.name} does not support the "format" option — it only applies to type: 'date'/'datetime'. It will be ignored.`),this.context.options.displayFormat!==void 0&&console.error(`${this.constructor.name} does not support the "displayFormat" option — it only applies to type: 'date'/'datetime'. It will be ignored.`),this.context.options.source!==void 0&&console.error(`${this.constructor.name} does not support the "source" option — it only applies to type: 'select'. It will be ignored.`)}createContainer(e){let t=document.createElement(`div`);return this.element=e,this.error=this.createContainerError(),this.form=this.createContainerForm(),this.load=this.createContainerLoad(),this.form.append(e,this.load),this.buttons.success=null,this.buttons.cancel=null,this.context.options.showButtons&&(this.buttons.success=this.createButtonSuccess(),this.buttons.cancel=this.createButtonCancel(),this.form.append(this.buttons.success,this.buttons.cancel)),t.append(this.error,this.form),t}createContainerError(){let e=document.createElement(`div`);return e.classList.add(`editable-error`,`text-danger`,`fst-italic`,`mb-2`,`fw-bold`),e.setAttribute(`role`,`alert`),e.hidden=!0,e}closeAndFocus(){this.context.modeElement.hide(),this.context.element.focus()}createContainerForm(){let e=document.createElement(`form`);return e.classList.add(`editable-form`,`d-flex`,`align-items-start`),e.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),this.closeAndFocus())}),e.addEventListener(`submit`,async e=>{e.preventDefault();let t=this.getValue();if(this.context.options.send&&this.context.options.url&&this.context.getValue()!==t){this.showLoad();let e;try{let n=await this.ajax(t);e=n.ok?await this.context.success(n,t):await this.context.error(n,t)||`${n.status} ${n.statusText}`}catch(t){if(console.error(t),!(t instanceof TypeError))throw t;e=t.message}e?(this.showError(),this.setError(e)):(this.setError(``),this.hideError(),this.context.setValue(this.getValue()),this.closeAndFocus(),this.initText()),this.hideLoad()}else this.context.setValue(this.getValue()),this.closeAndFocus(),this.initText();this.context.element.dispatchEvent(new CustomEvent(`save`,{detail:{Editable:this.context}}))}),e}createContainerLoad(){let e=document.createElement(`div`);e.classList.add(`editable-load-overlay`),e.hidden=!0;let t=document.createElement(`div`);return t.classList.add(`editable-loader`),e.append(t),e}createButton(){let e=document.createElement(`button`);return e.type=`button`,e.classList.add(`btn`,`btn-sm`),e}createButtonSuccess(){let e=this.createButton();return e.type=`submit`,e.classList.add(`btn-success`),e.setAttribute(`aria-label`,`Save`),e.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M13.485 1.929a1 1 0 0 1 .057 1.414l-7.5 8a1 1 0 0 1-1.45.036l-3.5-3.5a1 1 0 1 1 1.414-1.415L5.5 9.379l6.571-7.007a1 1 0 0 1 1.414-.043z"/></svg>`,e}createButtonCancel(){let e=this.createButton();return e.classList.add(`btn-danger`),e.setAttribute(`aria-label`,`Cancel`),e.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854z"/></svg>`,e.addEventListener(`click`,()=>{this.closeAndFocus()}),e}hideLoad(){this.load&&(this.load.hidden=!0)}showLoad(){this.load&&(this.load.hidden=!1)}async ajax(e){let t=this.context.options.url;if(!t){let e=Error("ajax() was called without a `url` option configured. Set `url` (string or function) before calling save.");throw console.error(e),e}let n=typeof t==`function`?t(this.context,e):t;if(this.context.options.requestBuilder){let t=await this.context.options.requestBuilder(this.context,e,n);return fetch(t.url,t.init)}let r=new FormData;r.append(this.context.options.name??`value`,e);let i={...this.context.options.ajaxOptions};return i.body=r,fetch(n,i)}async successResponse(e,t){}async errorResponse(e,t){}setError(e){this.error&&(this.error.textContent=e)}showError(){this.error&&(this.error.hidden=!1)}hideError(){this.error&&(this.error.hidden=!0)}createElement(e){let t=document.createElement(e);return t.classList.add(`form-control`),this.context.options.required&&(t.required=this.context.options.required),this.applyAttributes(t),this.context.options.showButtons||t.addEventListener(`change`,()=>{this.form&&this.form.dispatchEvent(new Event(`submit`))}),this.add_focus(t),t}applyAttributes(e){let t=this.context.options.attributes||{},n=[`step`,`min`,`max`,`minlength`,`maxlength`,`pattern`,`placeholder`,`required`,`readonly`,`disabled`,`autocomplete`,`autofocus`];for(let[r,i]of Object.entries(t))n.includes(r)&&i!==void 0&&e.setAttribute(r,String(i))}add_focus(e){this.context.element.addEventListener(`shown`,()=>{e.focus()},{once:!0})}initText(){if(this.context.getValue()===``)return this.context.element.textContent=this.context.options.emptyText||``,!0;{let e=this.context.getValue();return this.context.element.textContent=this.context.options.render?this.context.options.render(e,this.context):e,!1}}initOptions(){}getValue(){return this.element?this.element.value:``}},h=c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){"use strict";var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,l),a=n-i<0,o=t.clone().add(r+(a?-1:1),l);return+(-(r+(n-i)/(a?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:d,w:c,d:s,D:f,h:o,m:a,s:i,ms:r,Q:u}[e]||String(e||``).toLowerCase().replace(/s$/,``)},u:function(e){return e===void 0}},y=`en`,b={};b[y]=g;var x=`$isDayjsObject`,S=function(e){return e instanceof E||!(!e||!e[x])},C=function e(t,n,r){var i;if(!t)return y;if(typeof t==`string`){var a=t.toLowerCase();b[a]&&(i=a),n&&(b[a]=n,i=a);var o=t.split(`-`);if(!i&&o.length>1)return e(o[0])}else{var s=t.name;b[s]=t,i=s}return!r&&i&&(y=i),i||!r&&y},w=function(e,t){if(S(e))return e.clone();var n=typeof t==`object`?t:{};return n.date=e,n.args=arguments,new E(n)},T=v;T.l=C,T.i=S,T.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var E=function(){function g(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var _=g.prototype;return _.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(t===null)return new Date(NaN);if(T.u(t))return new Date;if(t instanceof Date)return new Date(t);if(typeof t==`string`&&!/Z$/i.test(t)){var r=t.match(m);if(r){var i=r[2]-1||0,a=(r[7]||`0`).substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,a)}}return new Date(t)}(e),this.init()},_.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},_.$utils=function(){return T},_.isValid=function(){return this.$d.toString()!==p},_.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},_.isAfter=function(e,t){return w(e)<this.startOf(t)},_.isBefore=function(e,t){return this.endOf(t)<w(e)},_.$g=function(e,t,n){return T.u(e)?this[t]:this.set(n,e)},_.unix=function(){return Math.floor(this.valueOf()/1e3)},_.valueOf=function(){return this.$d.getTime()},_.startOf=function(e,t){var n=this,r=!!T.u(t)||t,u=T.p(e),p=function(e,t){var i=T.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return r?i:i.endOf(s)},m=function(e,t){return T.w(n.toDate()[e].apply(n.toDate(`s`),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},h=this.$W,g=this.$M,_=this.$D,v=`set`+(this.$u?`UTC`:``);switch(u){case d:return r?p(1,0):p(31,11);case l:return r?p(1,g):p(0,g+1);case c:var y=this.$locale().weekStart||0,b=(h<y?h+7:h)-y;return p(r?_-b:_+(6-b),g);case s:case f:return m(v+`Hours`,0);case o:return m(v+`Minutes`,1);case a:return m(v+`Seconds`,2);case i:return m(v+`Milliseconds`,3);default:return this.clone()}},_.endOf=function(e){return this.startOf(e,!1)},_.$set=function(e,t){var n,c=T.p(e),u=`set`+(this.$u?`UTC`:``),p=(n={},n[s]=u+`Date`,n[f]=u+`Date`,n[l]=u+`Month`,n[d]=u+`FullYear`,n[o]=u+`Hours`,n[a]=u+`Minutes`,n[i]=u+`Seconds`,n[r]=u+`Milliseconds`,n)[c],m=c===s?this.$D+(t-this.$W):t;if(c===l||c===d){var h=this.clone().set(f,1);h.$d[p](m),h.init(),this.$d=h.set(f,Math.min(this.$D,h.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},_.set=function(e,t){return this.clone().$set(e,t)},_.get=function(e){return this[T.p(e)]()},_.add=function(r,u){var f,p=this;r=Number(r);var m=T.p(u),h=function(e){var t=w(p);return T.w(t.date(t.date()+Math.round(e*r)),p)};if(m===l)return this.set(l,this.$M+r);if(m===d)return this.set(d,this.$y+r);if(m===s)return h(1);if(m===c)return h(7);var g=(f={},f[a]=t,f[o]=n,f[i]=e,f)[m]||1,_=this.$d.getTime()+r*g;return T.w(_,this)},_.subtract=function(e,t){return this.add(-1*e,t)},_.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var r=e||`YYYY-MM-DDTHH:mm:ssZ`,i=T.z(this),a=this.$H,o=this.$m,s=this.$M,c=n.weekdays,l=n.months,u=n.meridiem,d=function(e,n,i,a){return e&&(e[n]||e(t,r))||i[n].slice(0,a)},f=function(e){return T.s(a%12||12,e,`0`)},m=u||function(e,t,n){var r=e<12?`AM`:`PM`;return n?r.toLowerCase():r};return r.replace(h,(function(e,r){return r||function(e){switch(e){case`YY`:return String(t.$y).slice(-2);case`YYYY`:return T.s(t.$y,4,`0`);case`M`:return s+1;case`MM`:return T.s(s+1,2,`0`);case`MMM`:return d(n.monthsShort,s,l,3);case`MMMM`:return d(l,s);case`D`:return t.$D;case`DD`:return T.s(t.$D,2,`0`);case`d`:return String(t.$W);case`dd`:return d(n.weekdaysMin,t.$W,c,2);case`ddd`:return d(n.weekdaysShort,t.$W,c,3);case`dddd`:return c[t.$W];case`H`:return String(a);case`HH`:return T.s(a,2,`0`);case`h`:return f(1);case`hh`:return f(2);case`a`:return m(a,o,!0);case`A`:return m(a,o,!1);case`m`:return String(o);case`mm`:return T.s(o,2,`0`);case`s`:return String(t.$s);case`ss`:return T.s(t.$s,2,`0`);case`SSS`:return T.s(t.$ms,3,`0`);case`Z`:return i}return null}(e)||i.replace(`:`,``)}))},_.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},_.diff=function(r,f,p){var m,h=this,g=T.p(f),_=w(r),v=(_.utcOffset()-this.utcOffset())*t,y=this-_,b=function(){return T.m(h,_)};switch(g){case d:m=b()/12;break;case l:m=b();break;case u:m=b()/3;break;case c:m=(y-v)/6048e5;break;case s:m=(y-v)/864e5;break;case o:m=y/n;break;case a:m=y/t;break;case i:m=y/e;break;default:m=y}return p?m:T.a(m)},_.daysInMonth=function(){return this.endOf(l).$D},_.$locale=function(){return b[this.$L]},_.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=C(e,t,!0);return r&&(n.$L=r),n},_.clone=function(){return T.w(this.$d,this)},_.toDate=function(){return new Date(this.valueOf())},_.toJSON=function(){return this.isValid()?this.toISOString():null},_.toISOString=function(){return this.$d.toISOString()},_.toString=function(){return this.$d.toUTCString()},g}(),D=E.prototype;return w.prototype=D,[[`$ms`,r],[`$s`,i],[`$m`,a],[`$H`,o],[`$W`,s],[`$M`,l],[`$y`,d],[`$D`,f]].forEach((function(e){D[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),w.extend=function(e,t){return e.$i||=(e(t,E,w),!0),w},w.locale=C,w.isDayjs=S,w.unix=function(e){return w(1e3*e)},w.en=b[y],w.Ls=b,w.p={},w}))})),g=c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_customParseFormat=r()})(e,(function(){"use strict";var e={LTS:`h:mm:ss A`,LT:`h:mm A`,L:`MM/DD/YYYY`,LL:`MMMM D, YYYY`,LLL:`MMMM D, YYYY h:mm A`,LLLL:`dddd, MMMM D, YYYY h:mm A`},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)},c=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||={}).offset=function(e){if(!e||e===`Z`)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return n===0?0:t[0]===`+`?-n:n}(e)}],u=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?`pm`:`PM`);return n},f={A:[a,function(e){this.afternoon=d(e,!1)}],a:[a,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*e}],SS:[r,function(e){this.milliseconds=10*e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,c(`seconds`)],ss:[i,c(`seconds`)],m:[i,c(`minutes`)],mm:[i,c(`minutes`)],H:[i,c(`hours`)],h:[i,c(`hours`)],HH:[i,c(`hours`)],hh:[i,c(`hours`)],D:[i,c(`day`)],DD:[r,c(`day`)],Do:[a,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,``)===e&&(this.day=r)}],w:[i,c(`week`)],ww:[r,c(`week`)],M:[i,c(`month`)],MM:[r,c(`month`)],MMM:[a,function(e){var t=u(`months`),n=(u(`monthsShort`)||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw Error();this.month=n%12||n}],MMMM:[a,function(e){var t=u(`months`).indexOf(e)+1;if(t<1)throw Error();this.month=t%12||t}],Y:[/[+-]?\d+/,c(`year`)],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,c(`year`)],Z:l,ZZ:l};function p(n){for(var r=n,i=o&&o.formats,a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,c=0;c<s;c+=1){var l=a[c],u=f[l],d=u&&u[0],p=u&&u[1];a[c]=p?{regex:d,parser:p}:l.replace(/^\[|\]$/g,``)}return function(e){for(var t={},n=0,r=0;n<s;n+=1){var i=a[n];if(typeof i==`string`)r+=i.length;else{var o=i.regex,c=i.parser,l=e.slice(r),u=o.exec(l)[0];c.call(t,u),e=e.replace(u,``)}}return function(e){var t=e.afternoon;if(t!==void 0){var n=e.hours;t?n<12&&(e.hours+=12):n===12&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,a=e.args;this.$u=r;var s=a[1];if(typeof s==`string`){var c=!0===a[2],l=!0===a[3],u=c||l,d=a[2];l&&(d=a[2]),o=this.$locale(),!c&&d&&(o=n.Ls[d]),this.$d=function(e,t,n,r){try{if([`x`,`X`].indexOf(t)>-1)return new Date((t===`X`?1e3:1)*e);var i=p(t)(e),a=i.year,o=i.month,s=i.day,c=i.hours,l=i.minutes,u=i.seconds,d=i.milliseconds,f=i.zone,m=i.week,h=new Date,g=s||(a||o?1:h.getDate()),_=a||h.getFullYear(),v=0;a&&!o||(v=o>0?o-1:h.getMonth());var y,b=c||0,x=l||0,S=u||0,C=d||0;return f?new Date(Date.UTC(_,v,g,b,x,S,C+60*f.offset*1e3)):n?new Date(Date.UTC(_,v,g,b,x,S,C)):(y=new Date(_,v,g,b,x,S,C),m&&(y=r(y).week(m).toDate()),y)}catch{return new Date(``)}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date(``)),o={}}else if(s instanceof Array)for(var f=s.length,m=1;m<=f;m+=1){a[1]=s[m-1];var h=n.apply(this,a);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}m===f&&(this.$d=new Date(``))}else i.call(this,e)}}}))})),_=u(h(),1),v=u(g(),1);_.default.extend(v.default);var y=class extends m{checkUnsupportedOptions(){this.context.options.source!==void 0&&console.error(`${this.constructor.name} does not support the "source" option — it only applies to type: 'select'. It will be ignored.`)}create(){let e=this.createElement(`input`);return e.type=`date`,this.createContainer(e)}initText(){let e=this.context.getValue();if(e===``)return this.context.element.textContent=this.context.options.emptyText||``,!0;{let t=(0,_.default)(e,this.context.options.format).format(this.context.options.displayFormat);return this.context.element.textContent=this.context.options.render?this.context.options.render(t,this.context):t,!1}}initOptions(){let e=`YYYY-MM-DD`,t=this.context.get_opt(`format`,e),n=this.context.get_opt(`displayFormat`,e);this.context.setValue((0,_.default)(this.context.getValue(),n).format(t))}},b=class extends y{create(){let e=this.createElement(`input`);return e.type=`datetime-local`,this.createContainer(e)}initOptions(){let e=`YYYY-MM-DDTHH:mm`,t=this.context.get_opt(`format`,e),n=this.context.get_opt(`displayFormat`,e);this.context.setValue((0,_.default)(this.context.getValue(),n).format(t))}},x=class extends m{create(){let e=this.createElement(`input`),{options:t={}}=this.context;return e.type=typeof t.type==`string`?t.type:`text`,this.createContainer(e)}},S=class extends m{checkUnsupportedOptions(){this.context.options.format!==void 0&&console.error(`${this.constructor.name} does not support the "format" option — it only applies to type: 'date'/'datetime'. It will be ignored.`),this.context.options.displayFormat!==void 0&&console.error(`${this.constructor.name} does not support the "displayFormat" option — it only applies to type: 'date'/'datetime'. It will be ignored.`)}create(){let e=this.createElement(`select`);return this.context.options.source&&Array.isArray(this.context.options.source)&&this.context.options.source.forEach(t=>{let n=document.createElement(`option`);n.value=String(t.value),n.textContent=t.text,e.append(n)}),this.createContainer(e)}initText(){if(this.context.element.textContent=this.context.options.emptyText||``,this.context.getValue()!==``&&this.context.options.source&&Array.isArray(this.context.options.source)&&this.context.options.source.length>0)for(let e=0;e<this.context.options.source.length;e++){let t=this.context.options.source[e];if(String(t.value)===this.context.getValue())return this.context.element.textContent=this.context.options.render?this.context.options.render(t.text,this.context):t.text,!1}return!0}initOptions(){if(this.context.get_opt(`source`,[]),this.context.options&&typeof this.context.options.source==`string`&&this.context.options.source!==``)try{this.context.options.source=JSON.parse(this.context.options.source)}catch(e){let t=this.context.element,n=t.id?`#${t.id}`:`<${t.tagName.toLowerCase()}>`;throw Error(`Invalid JSON in "source" option/data-source attribute on ${n}: ${e.message}`)}}},C=class extends m{create(){let e=this.createElement(`textarea`);return this.createContainer(e)}};return class e{static BaseType=m;static BaseMode=d;static InputType=x;static TextAreaType=C;static SelectType=S;static DateType=y;static DateTimeType=b;static PopupMode=p;static InlineMode=f;static types=new Map([[`text`,x],[`password`,x],[`email`,x],[`url`,x],[`tel`,x],[`number`,x],[`range`,x],[`time`,x],[`textarea`,C],[`select`,S],[`date`,y],[`datetime`,b]]);static modes=new Map([[`popup`,p],[`inline`,f]]);static registerType(t,n){e.types.set(t,n)}static registerMode(t,n){e.modes.set(t,n)}element;options;typeElement;modeElement;accessibilityAbortController=new AbortController;constructor(e,t={}){this.element=e,this.options={...t},this.init_options(),this.typeElement=this.route_type(),this.typeElement.checkUnsupportedOptions(),this.typeElement.initOptions(),this.modeElement=this.route_mode(),this.modeElement.init(),this.init_text(),this.init_style(),this.init_accessibility(),this.element.dispatchEvent(new CustomEvent(`init`,{detail:{Editable:this}}))}readOption(e){return this.options[e]}writeOption(e,t){this.options[e]=t}get_opt(e,t){let n=this.element.dataset?.[e]??this.readOption(e)??t;return this.writeOption(e,n),n}get_opt_object(e,t){this.writeOption(e,this.readOption(e)??t)}get_opt_bool(e,t){if(this.get_opt(e,t),typeof this.readOption(e)!=`boolean`){if(this.readOption(e)===`true`){this.writeOption(e,!0);return}if(this.readOption(e)===`false`){this.writeOption(e,!1);return}this.writeOption(e,t)}}init_options(){this.get_opt(`value`,this.element.textContent??``),this.get_opt(`name`,this.element.id||`value`),this.get_opt(`title`,``),this.get_opt(`type`,`text`),this.get_opt(`emptyText`,`Empty`),this.get_opt(`mode`,`popup`),this.get_opt(`url`,null),this.get_opt_object(`ajaxOptions`,{}),this.options.ajaxOptions=Object.assign({method:`POST`},this.options.ajaxOptions),this.get_opt_bool(`send`,!0),this.get_opt_bool(`required`,!1),this.get_opt_bool(`showButtons`,!0),this.options?.success&&typeof this.options?.success==`function`&&(this.success=this.options.success),this.options?.error&&typeof this.options?.error==`function`&&(this.error=this.options.error),this.get_opt_object(`attributes`,{}),this.get_opt_object(`popoverOptions`,{})}init_text(){let e=`editable-element-empty`;this.element.classList.remove(e),this.typeElement.initText()&&this.element.classList.add(e)}init_style(){this.element.classList.add(`editable-element`)}init_accessibility(){let e=this.element;e.tagName===`BUTTON`||e.tagName===`INPUT`||e.tagName===`SELECT`||e.tagName===`TEXTAREA`||e.tagName===`A`&&e.hasAttribute(`href`)||(e.hasAttribute(`tabindex`)||(e.tabIndex=0),e.hasAttribute(`role`)||e.setAttribute(`role`,`button`),e.addEventListener(`keydown`,t=>{t.target===e&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e.click())},{signal:this.accessibilityAbortController.signal}))}route_mode(){let t=e.modes.get(this.options.mode);if(!t)throw Error(`Mode "${this.options.mode}" is not registered. Available modes: ${[...e.modes.keys()].join(`, `)}. Register custom modes via Editable.registerMode(name, ModeClass).`);return new t(this)}route_type(){if(this.options.type&&typeof this.options.type!=`string`)return new this.options.type(this);let t=e.types.get(this.options.type);if(!t)throw Error(`Type "${this.options.type}" is not registered. Available types: ${[...e.types.keys()].join(`, `)}. Register custom types via Editable.registerType(name, TypeClass).`);return new t(this)}async success(e,t){return await this.typeElement.successResponse(e,t)}async error(e,t){return await this.typeElement.errorResponse(e,t)}enable(){this.element.classList.remove(`editable-element-disabled`),this.modeElement.enable()}disable(){this.element.classList.add(`editable-element-disabled`),this.modeElement.disable()}setValue(e){this.options.value=e,this.init_text()}getValue(){return this.options.value??``}getOption(e){return this.readOption(e)??null}destroy(){this.accessibilityAbortController.abort(),this.modeElement.destroy(),this.element.classList.remove(`editable-element`,`editable-element-disabled`,`editable-element-empty`)}}});
|
|
3
|
+
//# sourceMappingURL=editable.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editable.umd.cjs","names":[],"sources":["../src/Modes/BaseMode.ts","../src/Modes/InlineMode.ts","../src/Modes/PopupMode.ts","../src/Types/BaseType.ts","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/customParseFormat.js","../src/Types/DateType.ts","../src/Types/DateTimeType.ts","../src/Types/InputType.ts","../src/Types/SelectType.ts","../src/Types/TextAreaType.ts","../src/editable.ts"],"sourcesContent":["import type Editable from '../editable.ts';\n\nexport default class BaseMode {\n context: Editable;\n\n constructor(context: Editable) {\n if (this.constructor === BaseMode) {\n throw new Error(\n 'BaseMode is abstract and cannot be instantiated directly — create a subclass that implements init()/enable()/disable()/hide()/destroy() (see PopupMode, InlineMode).',\n );\n }\n this.context = context;\n }\n\n event_show() {\n this.context.typeElement.hideError();\n if (!this.context.typeElement.element) {\n throw new Error(\n `${this.context.typeElement.constructor.name}.create() did not call createContainer() — the input element was never set.`,\n );\n }\n this.context.typeElement.element.value = this.context.getValue();\n this.context.element.dispatchEvent(new CustomEvent('show', { detail: { Editable: this.context } }));\n }\n\n event_shown() {\n this.context.element.dispatchEvent(new CustomEvent('shown', { detail: { Editable: this.context } }));\n }\n\n event_hide() {\n this.context.element.dispatchEvent(new CustomEvent('hide', { detail: { Editable: this.context } }));\n }\n\n event_hidden() {\n this.context.element.dispatchEvent(new CustomEvent('hidden', { detail: { Editable: this.context } }));\n }\n\n init() {\n throw new Error(`${this.constructor.name} must implement init().`);\n }\n\n enable() {\n throw new Error(`${this.constructor.name} must implement enable().`);\n }\n\n disable() {\n throw new Error(`${this.constructor.name} must implement disable().`);\n }\n\n hide() {\n throw new Error(`${this.constructor.name} must implement hide().`);\n }\n\n destroy() {\n throw new Error(`${this.constructor.name} must implement destroy().`);\n }\n}\n","import BaseMode from './BaseMode.js';\n\nexport default class InlineMode extends BaseMode {\n private openHandler: (() => void) | null = null;\n private disabled = false;\n\n init() {\n this.openHandler = () => {\n if (!this.disabled) {\n const item = this.context.typeElement.create();\n this.event_show();\n this.removeOpenHandler();\n this.context.element.replaceChildren(item);\n this.event_shown();\n }\n };\n this.context.element.addEventListener('click', this.openHandler);\n }\n\n private removeOpenHandler(): void {\n if (this.openHandler) {\n this.context.element.removeEventListener('click', this.openHandler);\n this.openHandler = null;\n }\n }\n\n enable() {\n this.disabled = false;\n }\n\n disable() {\n this.disabled = true;\n }\n\n hide() {\n this.event_hide();\n this.context.element.textContent = this.context.getValue();\n setTimeout(() => {\n this.init();\n this.event_hidden();\n }, 100);\n }\n\n destroy(): void {\n this.removeOpenHandler();\n }\n}\n","import { Popover } from 'bootstrap';\nimport BaseMode from './BaseMode.js';\n\nexport default class PopupMode extends BaseMode {\n popover: Popover | null = null;\n private abortController: AbortController = new AbortController();\n\n init() {\n const options = {\n container: 'body',\n content: this.context.typeElement.create(),\n html: true,\n customClass: 'editable',\n title: this.context.options.title,\n };\n this.popover = new Popover(this.context.element, Object.assign(options, this.context.options.popoverOptions));\n const { signal } = this.abortController;\n this.context.element.addEventListener(\n 'show.bs.popover',\n () => {\n this.event_show();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'inserted.bs.popover',\n () => {\n this.syncTheme();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'shown.bs.popover',\n () => {\n this.event_shown();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'hide.bs.popover',\n () => {\n this.event_hide();\n },\n { signal },\n );\n this.context.element.addEventListener(\n 'hidden.bs.popover',\n () => {\n this.event_hidden();\n },\n { signal },\n );\n\n document.addEventListener(\n 'click',\n (e) => {\n const target = <HTMLElement>e.target;\n // @ts-expect-error — Popover.tip is an undocumented internal property\n const tip = this.popover?.tip;\n if ((this.popover && target === tip) || target === this.context.element) return;\n let current = target.parentNode;\n while (current) {\n if (current === tip) return;\n current = current.parentNode;\n }\n this.hide();\n },\n { signal },\n );\n }\n\n // The tip is appended to <body> by default, outside any scoped data-bs-theme\n // wrapper around the trigger — copy the nearest theme onto it explicitly so\n // Bootstrap's CSS variables still resolve to the trigger's theme, not the page default.\n private syncTheme(): void {\n const themedAncestor = this.context.element.closest('[data-bs-theme]');\n // @ts-expect-error — Popover.tip is an undocumented internal property\n const tip = this.popover?.tip as HTMLElement | undefined;\n if (tip && themedAncestor) {\n tip.setAttribute('data-bs-theme', themedAncestor.getAttribute('data-bs-theme') ?? '');\n }\n }\n\n enable(): void {\n if (this.popover) {\n this.popover.enable();\n }\n }\n\n disable(): void {\n if (this.popover) {\n this.popover.disable();\n }\n }\n\n hide(): void {\n if (this.popover) {\n this.popover.hide();\n }\n }\n\n destroy(): void {\n this.abortController.abort();\n this.popover?.dispose();\n this.popover = null;\n }\n}\n","import type Editable from '../editable.ts';\nimport type BaseTypeButtons from '../Interfaces/BaseTypeButtons.ts';\n\nexport default class BaseType {\n context: Editable;\n element: HTMLInputElement | null = null;\n error: HTMLElement | null = null;\n form: HTMLElement | null = null;\n load: HTMLElement | null = null;\n buttons: BaseTypeButtons = { success: null, cancel: null };\n\n constructor(context: Editable) {\n if (this.constructor === BaseType) {\n throw new Error(\n 'BaseType is abstract and cannot be instantiated directly — create a subclass that implements create() (see InputType, SelectType, etc.).',\n );\n }\n this.context = context;\n }\n\n create(): HTMLElement {\n throw new Error(`${this.constructor.name} must implement create().`);\n }\n\n // Flags options that only make sense for a different type (e.g. `format` on a `text` field) —\n // they're silently ignored otherwise, which is easy to miss. Override per-type as needed.\n checkUnsupportedOptions(): void {\n if (this.context.options.format !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"format\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n if (this.context.options.displayFormat !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"displayFormat\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n if (this.context.options.source !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"source\" option — it only applies to type: 'select'. It will be ignored.`,\n );\n }\n }\n\n createContainer(element: HTMLInputElement): HTMLDivElement {\n const div = document.createElement(`div`);\n this.element = element;\n this.error = this.createContainerError();\n this.form = this.createContainerForm();\n this.load = this.createContainerLoad();\n this.form.append(element, this.load);\n this.buttons.success = null;\n this.buttons.cancel = null;\n if (this.context.options.showButtons) {\n this.buttons.success = this.createButtonSuccess();\n this.buttons.cancel = this.createButtonCancel();\n this.form.append(this.buttons.success, this.buttons.cancel);\n }\n\n div.append(this.error, this.form);\n return div;\n }\n\n createContainerError(): HTMLDivElement {\n const div = document.createElement(`div`);\n div.classList.add('editable-error', 'text-danger', 'fst-italic', 'mb-2', 'fw-bold');\n div.setAttribute('role', 'alert');\n div.hidden = true;\n return div;\n }\n\n // Closes the widget and returns keyboard focus to the trigger — used for every\n // explicit exit (cancel, Escape, successful save), but not for an outside-click\n // dismissal, where focus should stay wherever the user actually clicked.\n private closeAndFocus(): void {\n this.context.modeElement.hide();\n this.context.element.focus();\n }\n\n createContainerForm(): HTMLFormElement {\n const form = document.createElement(`form`);\n form.classList.add('editable-form', 'd-flex', 'align-items-start');\n form.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n this.closeAndFocus();\n }\n });\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n const newValue = this.getValue();\n if (this.context.options.send && this.context.options.url && this.context.getValue() !== newValue) {\n this.showLoad();\n let msg: string | undefined;\n try {\n const response = await this.ajax(newValue);\n if (response.ok) {\n msg = await this.context.success(response, newValue);\n } else {\n msg =\n (await this.context.error(response, newValue)) ||\n `${response.status} ${response.statusText}`;\n }\n } catch (error) {\n console.error(error);\n if (!(error instanceof TypeError)) {\n throw error;\n }\n msg = error.message;\n }\n\n if (msg) {\n this.showError();\n this.setError(msg);\n } else {\n this.setError('');\n this.hideError();\n this.context.setValue(this.getValue());\n this.closeAndFocus();\n this.initText();\n }\n this.hideLoad();\n } else {\n this.context.setValue(this.getValue());\n this.closeAndFocus();\n this.initText();\n }\n this.context.element.dispatchEvent(new CustomEvent('save', { detail: { Editable: this.context } }));\n });\n return form;\n }\n\n createContainerLoad(): HTMLDivElement {\n const div = document.createElement(`div`);\n div.classList.add('editable-load-overlay');\n div.hidden = true;\n const loader = document.createElement(`div`);\n loader.classList.add('editable-loader');\n div.append(loader);\n return div;\n }\n\n createButton(): HTMLButtonElement {\n const button = document.createElement('button');\n button.type = 'button';\n button.classList.add('btn', 'btn-sm');\n return button;\n }\n\n createButtonSuccess(): HTMLButtonElement {\n const btn_success = this.createButton();\n btn_success.type = 'submit';\n btn_success.classList.add('btn-success');\n btn_success.setAttribute('aria-label', 'Save');\n btn_success.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M13.485 1.929a1 1 0 0 1 .057 1.414l-7.5 8a1 1 0 0 1-1.45.036l-3.5-3.5a1 1 0 1 1 1.414-1.415L5.5 9.379l6.571-7.007a1 1 0 0 1 1.414-.043z\"/></svg>`;\n return btn_success;\n }\n\n createButtonCancel(): HTMLButtonElement {\n const btn_cancel = this.createButton();\n btn_cancel.classList.add('btn-danger');\n btn_cancel.setAttribute('aria-label', 'Cancel');\n btn_cancel.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854z\"/></svg>`;\n btn_cancel.addEventListener('click', () => {\n this.closeAndFocus();\n });\n return btn_cancel;\n }\n\n hideLoad(): void {\n if (this.load) {\n this.load.hidden = true;\n }\n }\n\n showLoad(): void {\n if (this.load) {\n this.load.hidden = false;\n }\n }\n\n async ajax(new_value: string): Promise<Response> {\n const urlOption = this.context.options.url;\n if (!urlOption) {\n const err = new Error(\n 'ajax() was called without a `url` option configured. Set `url` (string or function) before calling save.',\n );\n console.error(err);\n throw err;\n }\n const url = typeof urlOption === 'function' ? urlOption(this.context, new_value) : urlOption;\n\n if (this.context.options.requestBuilder) {\n const built = await this.context.options.requestBuilder(this.context, new_value, url);\n return fetch(built.url, built.init);\n }\n\n const form = new FormData();\n form.append(this.context.options.name ?? 'value', new_value);\n\n const ajaxOptions = { ...this.context.options.ajaxOptions };\n ajaxOptions.body = form;\n return fetch(url, ajaxOptions);\n }\n\n async successResponse(_response: Response, _newValue: string): Promise<string | undefined> {\n return undefined;\n }\n\n async errorResponse(_response: Response, _newValue: string): Promise<string | undefined> {\n return undefined;\n }\n\n setError(errorMsg: string): void {\n if (this.error) {\n this.error.textContent = errorMsg;\n }\n }\n\n showError(): void {\n if (this.error) {\n this.error.hidden = false;\n }\n }\n\n hideError(): void {\n if (this.error) {\n this.error.hidden = true;\n }\n }\n\n createElement(name: string): HTMLInputElement {\n const element = <HTMLInputElement>document.createElement(name);\n element.classList.add('form-control');\n if (this.context.options.required) {\n element.required = this.context.options.required;\n }\n this.applyAttributes(element);\n if (!this.context.options.showButtons) {\n element.addEventListener('change', () => {\n if (this.form) {\n this.form.dispatchEvent(new Event('submit'));\n }\n });\n }\n this.add_focus(element);\n return element;\n }\n\n private applyAttributes(element: HTMLInputElement): void {\n const attrs = this.context.options.attributes || {};\n const allowedAttributes = [\n 'step',\n 'min',\n 'max',\n 'minlength',\n 'maxlength',\n 'pattern',\n 'placeholder',\n 'required',\n 'readonly',\n 'disabled',\n 'autocomplete',\n 'autofocus',\n ];\n for (const [key, value] of Object.entries(attrs)) {\n if (allowedAttributes.includes(key) && value !== undefined) {\n element.setAttribute(key, String(value));\n }\n }\n }\n\n add_focus(element: HTMLInputElement): void {\n this.context.element.addEventListener(\n 'shown',\n () => {\n element.focus();\n },\n { once: true },\n );\n }\n\n initText(): boolean {\n if (this.context.getValue() === '') {\n this.context.element.textContent = this.context.options.emptyText || '';\n return true;\n } else {\n const text = this.context.getValue();\n this.context.element.textContent = this.context.options.render\n ? this.context.options.render(text, this.context)\n : text;\n return false;\n }\n }\n\n initOptions(): void {}\n\n getValue(): string {\n return this.element ? this.element.value : '';\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),Y=_.prototype;return O.prototype=Y,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){Y[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport BaseType from './BaseType.js';\n\ndayjs.extend(customParseFormat);\n\nexport default class DateType extends BaseType {\n checkUnsupportedOptions(): void {\n if (this.context.options.source !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"source\" option — it only applies to type: 'select'. It will be ignored.`,\n );\n }\n }\n\n create() {\n const input = this.createElement(`input`);\n input.type = 'date';\n\n return this.createContainer(input);\n }\n\n initText(): boolean {\n const value = this.context.getValue();\n if (value === '') {\n this.context.element.textContent = this.context.options.emptyText || '';\n return true;\n } else {\n const text = dayjs(value, this.context.options.format).format(this.context.options.displayFormat);\n this.context.element.textContent = this.context.options.render\n ? this.context.options.render(text, this.context)\n : text;\n return false;\n }\n }\n\n initOptions(): void {\n const default_format = 'YYYY-MM-DD';\n const format = this.context.get_opt('format', default_format) as string;\n const displayFormat = this.context.get_opt('displayFormat', default_format) as string;\n this.context.setValue(dayjs(this.context.getValue(), displayFormat).format(format));\n }\n}\n","import dayjs from 'dayjs';\nimport DateType from './DateType.js';\n\nexport default class DateTimeType extends DateType {\n create() {\n const input = this.createElement(`input`);\n input.type = 'datetime-local';\n\n return this.createContainer(input);\n }\n\n initOptions(): void {\n const default_format = 'YYYY-MM-DDTHH:mm';\n const format = this.context.get_opt('format', default_format) as string;\n const displayFormat = this.context.get_opt('displayFormat', default_format) as string;\n this.context.setValue(dayjs(this.context.getValue(), displayFormat).format(format));\n }\n}\n","import BaseType from './BaseType.js';\n\nexport default class InputType extends BaseType {\n create() {\n const input = this.createElement(`input`);\n const { options = {} } = this.context;\n\n input.type = typeof options.type === 'string' ? options.type : 'text';\n\n return this.createContainer(input);\n }\n}\n","import BaseType from './BaseType.js';\n\nexport default class SelectType extends BaseType {\n checkUnsupportedOptions(): void {\n if (this.context.options.format !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"format\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n if (this.context.options.displayFormat !== undefined) {\n console.error(\n `${this.constructor.name} does not support the \"displayFormat\" option — it only applies to type: 'date'/'datetime'. It will be ignored.`,\n );\n }\n }\n\n create() {\n const select = this.createElement(`select`);\n if (this.context.options.source && Array.isArray(this.context.options.source)) {\n this.context.options.source.forEach((item) => {\n const opt = document.createElement(`option`);\n opt.value = String(item.value);\n opt.textContent = item.text;\n select.append(opt);\n });\n }\n\n return this.createContainer(select);\n }\n\n initText() {\n this.context.element.textContent = this.context.options.emptyText || '';\n if (\n this.context.getValue() !== '' &&\n this.context.options.source &&\n Array.isArray(this.context.options.source) &&\n this.context.options.source.length > 0\n ) {\n for (let i = 0; i < this.context.options.source.length; i++) {\n const item = this.context.options.source[i];\n if (String(item.value) === this.context.getValue()) {\n this.context.element.textContent = this.context.options.render\n ? this.context.options.render(item.text, this.context)\n : item.text;\n return false;\n }\n }\n }\n return true;\n }\n\n initOptions() {\n this.context.get_opt('source', []);\n if (\n this.context.options &&\n typeof this.context.options.source === 'string' &&\n this.context.options.source !== ''\n ) {\n try {\n this.context.options.source = JSON.parse(this.context.options.source);\n } catch (e) {\n const el = this.context.element;\n const identifier = el.id ? `#${el.id}` : `<${el.tagName.toLowerCase()}>`;\n throw new Error(\n `Invalid JSON in \"source\" option/data-source attribute on ${identifier}: ${(e as Error).message}`,\n );\n }\n }\n }\n}\n","import BaseType from './BaseType.js';\n\nexport default class TextAreaType extends BaseType {\n create() {\n const textarea = this.createElement(`textarea`);\n\n return this.createContainer(textarea);\n }\n}\n","import './editable.css';\nimport type Options from './Interfaces/Options.ts';\nimport BaseMode from './Modes/BaseMode.ts';\nimport InlineMode from './Modes/InlineMode.ts';\nimport PopupMode from './Modes/PopupMode.ts';\nimport BaseType from './Types/BaseType.ts';\nimport DateTimeType from './Types/DateTimeType.ts';\nimport DateType from './Types/DateType.ts';\nimport InputType from './Types/InputType.ts';\nimport SelectType from './Types/SelectType.ts';\nimport TextAreaType from './Types/TextAreaType.ts';\n\nexport type { Options };\n\nexport default class Editable {\n static BaseType = BaseType;\n static BaseMode = BaseMode;\n static InputType = InputType;\n static TextAreaType = TextAreaType;\n static SelectType = SelectType;\n static DateType = DateType;\n static DateTimeType = DateTimeType;\n static PopupMode = PopupMode;\n static InlineMode = InlineMode;\n\n static types: Map<string, typeof BaseType> = new Map<string, typeof BaseType>([\n ['text', InputType],\n ['password', InputType],\n ['email', InputType],\n ['url', InputType],\n ['tel', InputType],\n ['number', InputType],\n ['range', InputType],\n ['time', InputType],\n ['textarea', TextAreaType],\n ['select', SelectType],\n ['date', DateType],\n ['datetime', DateTimeType],\n ]);\n\n static modes: Map<string, typeof BaseMode> = new Map<string, typeof BaseMode>([\n ['popup', PopupMode],\n ['inline', InlineMode],\n ]);\n\n static registerType(name: string, type: typeof BaseType): void {\n Editable.types.set(name, type);\n }\n\n static registerMode(name: string, mode: typeof BaseMode): void {\n Editable.modes.set(name, mode);\n }\n\n element: HTMLElement;\n options: Options;\n\n typeElement: BaseType;\n modeElement: BaseMode;\n\n private accessibilityAbortController = new AbortController();\n\n constructor(element: HTMLElement, options: Options = {}) {\n this.element = element;\n this.options = { ...options };\n this.init_options();\n this.typeElement = this.route_type();\n this.typeElement.checkUnsupportedOptions();\n this.typeElement.initOptions();\n this.modeElement = this.route_mode();\n this.modeElement.init();\n this.init_text();\n this.init_style();\n this.init_accessibility();\n this.element.dispatchEvent(new CustomEvent('init', { detail: { Editable: this } }));\n }\n\n // Options has no index signature by design (keeps the public shape autocomplete-friendly),\n // so these two helpers are the only place that reads/writes it dynamically by name.\n private readOption(name: string): unknown {\n // @ts-expect-error\n return this.options[name];\n }\n\n private writeOption(name: string, value: unknown): void {\n // @ts-expect-error\n this.options[name] = value;\n }\n\n get_opt(name: string, default_value: unknown): unknown {\n const value = this.element.dataset?.[name] ?? this.readOption(name) ?? default_value;\n this.writeOption(name, value);\n return value;\n }\n\n get_opt_object(name: string, default_value: unknown): void {\n // Object-valued options are JS-only — dataset is deliberately not read here\n this.writeOption(name, this.readOption(name) ?? default_value);\n }\n\n get_opt_bool(name: string, default_value: boolean): void {\n this.get_opt(name, default_value);\n if (typeof this.readOption(name) !== 'boolean') {\n if (this.readOption(name) === 'true') {\n this.writeOption(name, true);\n return;\n }\n if (this.readOption(name) === 'false') {\n this.writeOption(name, false);\n return;\n }\n this.writeOption(name, default_value);\n }\n }\n\n init_options(): void {\n //priority date elements\n this.get_opt('value', this.element.textContent ?? '');\n this.get_opt('name', this.element.id || 'value');\n this.get_opt('title', '');\n this.get_opt('type', 'text');\n this.get_opt('emptyText', 'Empty');\n this.get_opt('mode', 'popup');\n this.get_opt('url', null);\n this.get_opt_object('ajaxOptions', {});\n this.options.ajaxOptions = Object.assign({ method: 'POST' }, this.options.ajaxOptions);\n this.get_opt_bool('send', true);\n this.get_opt_bool('required', false);\n this.get_opt_bool('showButtons', true);\n if (this.options?.success && typeof this.options?.success === 'function') {\n this.success = this.options.success;\n }\n if (this.options?.error && typeof this.options?.error === 'function') {\n this.error = this.options.error;\n }\n this.get_opt_object('attributes', {});\n this.get_opt_object('popoverOptions', {});\n }\n\n init_text() {\n const empty_class = 'editable-element-empty';\n this.element.classList.remove(empty_class);\n if (this.typeElement.initText()) {\n this.element.classList.add(empty_class);\n }\n }\n\n init_style() {\n this.element.classList.add('editable-element');\n }\n\n // The trigger has no native keyboard semantics unless the host already made it one\n // (a real <button> or <a href>) — give it button-like tabbing and Enter/Space activation\n // otherwise. Guarded to the element itself so keys typed into an open inline-mode input,\n // which lives inside this same element, don't re-trigger it.\n init_accessibility(): void {\n const el = this.element;\n const isNativelyInteractive =\n el.tagName === 'BUTTON' ||\n el.tagName === 'INPUT' ||\n el.tagName === 'SELECT' ||\n el.tagName === 'TEXTAREA' ||\n (el.tagName === 'A' && el.hasAttribute('href'));\n if (isNativelyInteractive) return;\n\n if (!el.hasAttribute('tabindex')) {\n el.tabIndex = 0;\n }\n if (!el.hasAttribute('role')) {\n el.setAttribute('role', 'button');\n }\n el.addEventListener(\n 'keydown',\n (e) => {\n if (e.target !== el) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n el.click();\n }\n },\n { signal: this.accessibilityAbortController.signal },\n );\n }\n\n route_mode(): BaseMode {\n const ModeClass = Editable.modes.get(this.options.mode as string);\n if (!ModeClass) {\n throw new Error(\n `Mode \"${this.options.mode}\" is not registered. Available modes: ${[...Editable.modes.keys()].join(', ')}. Register custom modes via Editable.registerMode(name, ModeClass).`,\n );\n }\n return new ModeClass(this);\n }\n\n route_type(): BaseType {\n if (this.options.type && typeof this.options.type !== 'string') {\n // @ts-expect-error\n return new this.options.type(this);\n }\n const TypeClass = Editable.types.get(this.options.type as string);\n if (!TypeClass) {\n throw new Error(\n `Type \"${this.options.type}\" is not registered. Available types: ${[...Editable.types.keys()].join(', ')}. Register custom types via Editable.registerType(name, TypeClass).`,\n );\n }\n return new TypeClass(this);\n }\n\n async success(response: Response, newValue: string): Promise<string | undefined> {\n return await this.typeElement.successResponse(response, newValue);\n }\n\n async error(response: Response, newValue: string): Promise<string | undefined> {\n return await this.typeElement.errorResponse(response, newValue);\n }\n\n enable(): void {\n this.element.classList.remove('editable-element-disabled');\n this.modeElement.enable();\n }\n\n disable(): void {\n this.element.classList.add('editable-element-disabled');\n this.modeElement.disable();\n }\n\n setValue(value: string): void {\n this.options.value = value;\n this.init_text();\n }\n\n getValue(): string {\n return this.options.value ?? '';\n }\n\n getOption(name: string): unknown {\n return this.readOption(name) ?? null;\n }\n\n destroy(): void {\n this.accessibilityAbortController.abort();\n this.modeElement.destroy();\n this.element.classList.remove('editable-element', 'editable-element-disabled', 'editable-element-empty');\n }\n}\n"],"x_google_ignoreList":[4,5],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Popover } from 'bootstrap';
|
|
2
|
+
import { default as Editable } from '../editable.ts';
|
|
3
|
+
import { default as BaseType } from '../Types/BaseType.ts';
|
|
4
|
+
export default interface Options {
|
|
5
|
+
value?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
type?: BaseType | string;
|
|
9
|
+
ajaxOptions?: RequestInit;
|
|
10
|
+
send?: boolean;
|
|
11
|
+
mode?: 'popup' | 'inline';
|
|
12
|
+
emptyText?: string;
|
|
13
|
+
url?: string | ((context: Editable, newValue: string) => string) | null;
|
|
14
|
+
requestBuilder?: (context: Editable, newValue: string, resolvedUrl: string) => {
|
|
15
|
+
url: string;
|
|
16
|
+
init: RequestInit;
|
|
17
|
+
} | Promise<{
|
|
18
|
+
url: string;
|
|
19
|
+
init: RequestInit;
|
|
20
|
+
}>;
|
|
21
|
+
required?: boolean;
|
|
22
|
+
showButtons?: boolean;
|
|
23
|
+
success?: (response: Response, newValue: string | number) => Promise<string | undefined>;
|
|
24
|
+
error?: (response: Response, newValue: string | number) => Promise<string | undefined>;
|
|
25
|
+
popoverOptions?: Popover.Options;
|
|
26
|
+
render?: (text: string, context: Editable) => string;
|
|
27
|
+
format?: string;
|
|
28
|
+
displayFormat?: string;
|
|
29
|
+
source?: Array<{
|
|
30
|
+
value: string | number;
|
|
31
|
+
text: string;
|
|
32
|
+
}> | string;
|
|
33
|
+
attributes?: {
|
|
34
|
+
[key: string]: string | number | boolean | undefined;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as Editable } from '../editable.ts';
|
|
2
|
+
export default class BaseMode {
|
|
3
|
+
context: Editable;
|
|
4
|
+
constructor(context: Editable);
|
|
5
|
+
event_show(): void;
|
|
6
|
+
event_shown(): void;
|
|
7
|
+
event_hide(): void;
|
|
8
|
+
event_hidden(): void;
|
|
9
|
+
init(): void;
|
|
10
|
+
enable(): void;
|
|
11
|
+
disable(): void;
|
|
12
|
+
hide(): void;
|
|
13
|
+
destroy(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as BaseMode } from './BaseMode.js';
|
|
2
|
+
export default class InlineMode extends BaseMode {
|
|
3
|
+
private openHandler;
|
|
4
|
+
private disabled;
|
|
5
|
+
init(): void;
|
|
6
|
+
private removeOpenHandler;
|
|
7
|
+
enable(): void;
|
|
8
|
+
disable(): void;
|
|
9
|
+
hide(): void;
|
|
10
|
+
destroy(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Popover } from 'bootstrap';
|
|
2
|
+
import { default as BaseMode } from './BaseMode.js';
|
|
3
|
+
export default class PopupMode extends BaseMode {
|
|
4
|
+
popover: Popover | null;
|
|
5
|
+
private abortController;
|
|
6
|
+
init(): void;
|
|
7
|
+
private syncTheme;
|
|
8
|
+
enable(): void;
|
|
9
|
+
disable(): void;
|
|
10
|
+
hide(): void;
|
|
11
|
+
destroy(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { default as Editable } from '../editable.ts';
|
|
2
|
+
import { default as BaseTypeButtons } from '../Interfaces/BaseTypeButtons.ts';
|
|
3
|
+
export default class BaseType {
|
|
4
|
+
context: Editable;
|
|
5
|
+
element: HTMLInputElement | null;
|
|
6
|
+
error: HTMLElement | null;
|
|
7
|
+
form: HTMLElement | null;
|
|
8
|
+
load: HTMLElement | null;
|
|
9
|
+
buttons: BaseTypeButtons;
|
|
10
|
+
constructor(context: Editable);
|
|
11
|
+
create(): HTMLElement;
|
|
12
|
+
checkUnsupportedOptions(): void;
|
|
13
|
+
createContainer(element: HTMLInputElement): HTMLDivElement;
|
|
14
|
+
createContainerError(): HTMLDivElement;
|
|
15
|
+
private closeAndFocus;
|
|
16
|
+
createContainerForm(): HTMLFormElement;
|
|
17
|
+
createContainerLoad(): HTMLDivElement;
|
|
18
|
+
createButton(): HTMLButtonElement;
|
|
19
|
+
createButtonSuccess(): HTMLButtonElement;
|
|
20
|
+
createButtonCancel(): HTMLButtonElement;
|
|
21
|
+
hideLoad(): void;
|
|
22
|
+
showLoad(): void;
|
|
23
|
+
ajax(new_value: string): Promise<Response>;
|
|
24
|
+
successResponse(_response: Response, _newValue: string): Promise<string | undefined>;
|
|
25
|
+
errorResponse(_response: Response, _newValue: string): Promise<string | undefined>;
|
|
26
|
+
setError(errorMsg: string): void;
|
|
27
|
+
showError(): void;
|
|
28
|
+
hideError(): void;
|
|
29
|
+
createElement(name: string): HTMLInputElement;
|
|
30
|
+
private applyAttributes;
|
|
31
|
+
add_focus(element: HTMLInputElement): void;
|
|
32
|
+
initText(): boolean;
|
|
33
|
+
initOptions(): void;
|
|
34
|
+
getValue(): string;
|
|
35
|
+
}
|