diff --git a/CHANGELOG.md b/CHANGELOG.md index cff347d..09d46ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,40 @@ # Changelog +## 2.2.0 + fix: the dialog no longer blinks out and back in before its exit animation; the closing state is now set before the native close, which fires its event asynchronously + feat: optional custom-elements bundle so Safari/WebKit can use + feat: enter and exit animations for drawers, toasts and popovers, skipped under prefers-reduced-motion + feat: an anchored popover is dismissed by any click outside it; clicking its anchor toggles it shut + feat: Dialogify.TOAST_TOP_LEFT and the five other toast position constants + fix: the blurry-render ResizeObserver pinned drawers off screen by writing the mid-animation transform back as an inline style + fix: a click on the dialog's own empty area no longer closes it; only clicks outside its box count as backdrop clicks + fix: toasts and popovers no longer inherit the 40px content floor and scroll bars + fix: a closing toast collapses its slot so the stack below it does not jump on removal + feat(a11y): aria-labelledby from title(), focusable and labelled close button + feat(a11y): role=status on loading and toasts, aria-busy on loading buttons, reduced-motion support + feat: show()/showModal() return a promise resolving with the dialog returnValue + feat: cancelable beforeclose event covering every close path (button, ESC, backdrop, form submit, close()) + feat: setContent()/getContent()/load() to update a dialog after it is created + feat: setLoading()/isLoading() overlay and per-button loading state via updateButton() + feat: validate()/formData()/formValues() on top of the existing
+ feat: addButton()/updateButton()/removeButton()/getButton(); declarative buttons join the button list + feat: drawer mode via the position option and attribute (left/right/top/bottom) + feat: Dialogify.toast() auto-dismissing notifications with stacking and types + feat: showAt() anchored popover positioning with viewport flipping and follow-on-scroll + feat: off() to unbind instance events, and onbeforeclose on the custom element + feat: anchor/placement/align/offset and loading-text attributes on the custom element + +## 2.1.0 + feat: declarative `` customized built-in element + feat: dialogify API (show/showModal/isOpen/setTitle/buttons/on) on the element itself + feat: options as attributes (dialog-title, size, closable, src, options='{...}', ...) + feat: declarative buttons via ` + + +``` + +```javascript +const dialog = document.querySelector('dialog[is="bahamut-dialogify"]'); +dialog.showModal(); +``` + +The element name is prefixed because the custom elements spec requires a hyphen +in the name — `is="dialogify"` is not a valid custom element name. + +Unlike `new Dialogify()`, a declarative dialog is **not** removed from the DOM when +it closes, so it can be shown again. + +### Methods + +`document.querySelector(...)` returns the element itself, and the dialogify API is +available on it: + +| Method | Description | +| ---------------------------- | ------------------------------------------------- | +| `show()` | Show the dialog (non-modal); resolves on close | +| `showModal()` | Show the dialog as a modal; resolves on close | +| `showAt(anchor?, options?)` | Show anchored to another element | +| `reposition()` | Recompute the anchored position | +| `close(returnValue?)` | Close the dialog (fires `beforeclose`) | +| `isOpen()` | Whether the dialog is open | +| `setTitle(text)` | Set the dialog title | +| `setContent(html)` | Replace the body, keeping title and buttons | +| `getContent()` | The current body HTML | +| `load(url, data?)` | Load body content over ajax, with a loading state | +| `setLoading(bool)` | Toggle the loading overlay | +| `isLoading()` | Whether the loading overlay is shown | +| `validate()` | Run native form validation | +| `formData()` | The dialog form as `FormData` | +| `formValues()` | The dialog form as a plain object | +| `buttons(buttons, options?)` | Set the buttons programmatically | +| `addButton(button, opts?)` | Append (or prepend) one button | +| `updateButton(id, changes)` | Update a button in place | +| `removeButton(id)` | Remove a button | +| `getButton(id)` | A button's jQuery object | +| `on/off(event, handler)` | Bind/unbind a dialogify instance event | +| `.dialogify` | The backing `Dialogify` instance | + +> `setTitle()` is used instead of `title()` because `HTMLElement.title` is the +> native tooltip property and must keep its standard behaviour. + +### Options as attributes + +| Attribute | Option | Notes | +| ------------------- | ------------------ | ------------------------------------------------------------- | +| `dialog-title` | — | Dialog title (`title` is the native tooltip) | +| `size="large"` | `size` | Maps to `Dialogify.SIZE_LARGE`; any other value is used as-is | +| `position` | `position` | Drawer edge: `left` / `right` / `top` / `bottom` | +| `closable` | `closable` | Show the close button | +| `fixed` | `fixed` | Use `position: fixed` | +| `background-scroll` | `backgroundScroll` | Allow scrolling behind the dialog | +| `use-dialog-form` | `useDialogForm` | Wrap content in `` | +| `src` | — | Load content from this URL instead of the inline markup | +| `ajax-prefix` | `ajaxPrefix` | Ajax prefix used to resolve `src` | +| `options='{...}'` | — | Any option as a JSON object | +| `buttons-position` | — | `left` / `center` / `right` (default `right`) | +| `anchor` | — | Selector for the anchor element used by `showAt()` | +| `placement` | — | `top` / `bottom` / `left` / `right` for `showAt()` | +| `align` | — | `start` / `center` / `end` for `showAt()` | +| `offset` | — | Gap in pixels for `showAt()` | + +> ⚠️ Because attributes are strings, these booleans are **value-based**, not +> presence-based: use `closable="false"` to disable. A bare attribute, `"true"`, +> or any other value means `true`. This differs from standard HTML boolean +> attributes. + +Options that cannot be expressed as attributes (callbacks, style objects) can be +assigned before the dialog is first shown: + +```javascript +dialog.options = { + ajaxComplete() { + /* ... */ + } +}; +``` + +### Buttons + +Add a ` + +
+``` + +> Write ``, not ` + +``` + +```javascript +dialog.updateButton('save', { loading: true }); +``` + +### Events + +`close` and `cancel` are native `` events; `show` and `beforeclose` are +dispatched by dialogify. They can all be bound in the usual ways: + +```javascript +dialog.addEventListener('show', () => {}); +dialog.onshow = () => {}; +dialog.onclose = () => {}; + +dialog.addEventListener('beforeclose', (e) => e.preventDefault()); // keeps it open +dialog.onbeforeclose = () => false; // same thing +``` + +They can also be bound in markup. `onclose` and `oncancel` are native inline +handlers and behave exactly as the browser defines. In addition, dialogify +resolves a **function name** on `onshow`, `onclose`, `oncancel` and +`onbeforeclose`: + +```html + +``` + +The name is looked up in `Dialogify.handlers` first, then on `window` (dotted +paths are supported), and it is resolved when the event fires — so handlers may be +defined after the markup. Values that are not plain identifiers are ignored by +dialogify and left to the browser's native inline handler support, so no code is +ever evaluated by dialogify itself. + +```javascript +Dialogify.handlers.myHandler = function () { + // `this` is the dialog element +}; +``` + +### Browser support + +Customized built-in elements are not supported in Safari/WebKit, so +`` is never upgraded there. An optional bundle of +[`@ungap/custom-elements`](https://github.com/ungap/custom-elements) ships with +dialogify; load it **before** dialogify to enable the declarative syntax: + +```html + + +``` + +```javascript +import '@oneup_network/dialogify/custom-elements'; +import Dialogify from '@oneup_network/dialogify'; +``` + +It is a no-op in browsers that already support the feature, and the programmatic +API works everywhere without it. + ## Optional legacy polyfill Modern browsers support `` natively, so no polyfill is bundled by default. diff --git a/build.mjs b/build.mjs index 53cd7c3..fce2a51 100644 --- a/build.mjs +++ b/build.mjs @@ -99,6 +99,18 @@ async function buildPolyfill() { outfile: 'dist/dialog-polyfill.min.js', target: ['es2018'] }); + + // Customized built-in elements polyfill for Safari/WebKit, needed only for + // the declarative `` syntax. + await esbuild.build({ + entryPoints: ['src/js/custom-elements.browser.js'], + bundle: true, + minify: true, + sourcemap: true, + format: 'iife', + outfile: 'dist/custom-elements.min.js', + target: ['es2018'] + }); } async function main() { @@ -119,6 +131,7 @@ async function main() { fs.mkdirSync('docs/css', { recursive: true }); fs.copyFileSync('dist/dialogify.min.js', 'docs/js/dialogify.min.js'); fs.copyFileSync('dist/dialog-polyfill.min.js', 'docs/js/dialog-polyfill.min.js'); + fs.copyFileSync('dist/custom-elements.min.js', 'docs/js/custom-elements.min.js'); fs.copyFileSync('dist/dialogify.css', 'docs/css/dialogify.css'); } diff --git a/dist/custom-elements.min.js b/dist/custom-elements.min.js new file mode 100644 index 0000000..f8460d1 --- /dev/null +++ b/dist/custom-elements.min.js @@ -0,0 +1,9 @@ +(()=>{(function(){"use strict";var z=(function(r,t){var e=function(i){for(var o=0,f=i.length;or.length)&&(t=r.length);for(var e=0,n=new Array(t);e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(c){throw c},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,o=!1,f;return{s:function(){e=e.call(r)},n:function(){var c=e.next();return i=c.done,c},e:function(c){o=!0,f=c},f:function(){try{!i&&e.return!=null&&e.return()}finally{if(o)throw f}}}}var T=!0,D=!1,K="querySelectorAll",Et=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:MutationObserver,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:["*"],i=function c(w,S,h,u,l,v){var p=J(w),O;try{for(p.s();!(O=p.n()).done;){var s=O.value;(v||K in s)&&(l?h.has(s)||(h.add(s),u.delete(s),t(s,l)):u.has(s)||(u.add(s),h.delete(s),t(s,l)),v||c(s[K](S),S,h,u,l,T))}}catch(B){p.e(B)}finally{p.f()}},o=new n(function(c){if(a.length){var w=a.join(","),S=new Set,h=new Set,u=J(c),l;try{for(u.s();!(l=u.n()).done;){var v=l.value,p=v.addedNodes,O=v.removedNodes;i(O,w,S,h,D,D),i(p,w,S,h,T,D)}}catch(s){u.e(s)}finally{u.f()}}}),f=o.observe;return(o.observe=function(c){return f.call(o,c,{subtree:T,childList:T})})(e),o},X="querySelectorAll",E=self,Mt=E.document,Y=E.Element,mt=E.MutationObserver,At=E.Set,Tt=E.WeakMap,Z=function(t){return X in t},_=[].filter,j=(function(r){var t=new Tt,e=function(u){for(var l=0,v=u.length;l1&&arguments[1]!==void 0?arguments[1]:!0,v=0,p=u.length;v arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function () {};\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n }\n\n /*! (c) Andrea Giammarchi - ISC */\n var TRUE = true,\n FALSE = false,\n QSA$1 = 'querySelectorAll';\n\n /**\n * Start observing a generic document or root element.\n * @param {(node:Element, connected:boolean) => void} callback triggered per each dis/connected element\n * @param {Document|Element} [root=document] by default, the global document to observe\n * @param {Function} [MO=MutationObserver] by default, the global MutationObserver\n * @param {string[]} [query=['*']] the selectors to use within nodes\n * @returns {MutationObserver}\n */\n var notify = function notify(callback) {\n var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;\n var MO = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : MutationObserver;\n var query = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ['*'];\n var loop = function loop(nodes, selectors, added, removed, connected, pass) {\n var _iterator = _createForOfIteratorHelper(nodes),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (pass || QSA$1 in node) {\n if (connected) {\n if (!added.has(node)) {\n added.add(node);\n removed[\"delete\"](node);\n callback(node, connected);\n }\n } else if (!removed.has(node)) {\n removed.add(node);\n added[\"delete\"](node);\n callback(node, connected);\n }\n if (!pass) loop(node[QSA$1](selectors), selectors, added, removed, connected, TRUE);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n };\n var mo = new MO(function (records) {\n if (query.length) {\n var selectors = query.join(',');\n var added = new Set(),\n removed = new Set();\n var _iterator2 = _createForOfIteratorHelper(records),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _step2.value,\n addedNodes = _step2$value.addedNodes,\n removedNodes = _step2$value.removedNodes;\n loop(removedNodes, selectors, added, removed, FALSE, FALSE);\n loop(addedNodes, selectors, added, removed, TRUE, FALSE);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n });\n var observe = mo.observe;\n (mo.observe = function (node) {\n return observe.call(mo, node, {\n subtree: TRUE,\n childList: TRUE\n });\n })(root);\n return mo;\n };\n\n var QSA = 'querySelectorAll';\n var _self$1 = self,\n document$2 = _self$1.document,\n Element$1 = _self$1.Element,\n MutationObserver$2 = _self$1.MutationObserver,\n Set$2 = _self$1.Set,\n WeakMap$1 = _self$1.WeakMap;\n var elements = function elements(element) {\n return QSA in element;\n };\n var filter = [].filter;\n var qsaObserver = (function (options) {\n var live = new WeakMap$1();\n var drop = function drop(elements) {\n for (var i = 0, length = elements.length; i < length; i++) live[\"delete\"](elements[i]);\n };\n var flush = function flush() {\n var records = observer.takeRecords();\n for (var i = 0, length = records.length; i < length; i++) {\n parse(filter.call(records[i].removedNodes, elements), false);\n parse(filter.call(records[i].addedNodes, elements), true);\n }\n };\n var matches = function matches(element) {\n return element.matches || element.webkitMatchesSelector || element.msMatchesSelector;\n };\n var notifier = function notifier(element, connected) {\n var selectors;\n if (connected) {\n for (var q, m = matches(element), i = 0, length = query.length; i < length; i++) {\n if (m.call(element, q = query[i])) {\n if (!live.has(element)) live.set(element, new Set$2());\n selectors = live.get(element);\n if (!selectors.has(q)) {\n selectors.add(q);\n options.handle(element, connected, q);\n }\n }\n }\n } else if (live.has(element)) {\n selectors = live.get(element);\n live[\"delete\"](element);\n selectors.forEach(function (q) {\n options.handle(element, connected, q);\n });\n }\n };\n var parse = function parse(elements) {\n var connected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n for (var i = 0, length = elements.length; i < length; i++) notifier(elements[i], connected);\n };\n var query = options.query;\n var root = options.root || document$2;\n var observer = notify(notifier, root, MutationObserver$2, query);\n var attachShadow = Element$1.prototype.attachShadow;\n if (attachShadow) Element$1.prototype.attachShadow = function (init) {\n var shadowRoot = attachShadow.call(this, init);\n observer.observe(shadowRoot);\n return shadowRoot;\n };\n if (query.length) parse(root[QSA](query));\n return {\n drop: drop,\n flush: flush,\n observer: observer,\n parse: parse\n };\n });\n\n var _self = self,\n document$1 = _self.document,\n Map = _self.Map,\n MutationObserver$1 = _self.MutationObserver,\n Object$1 = _self.Object,\n Set$1 = _self.Set,\n WeakMap = _self.WeakMap,\n Element = _self.Element,\n HTMLElement = _self.HTMLElement,\n Node = _self.Node,\n Error = _self.Error,\n TypeError$1 = _self.TypeError,\n Reflect = _self.Reflect;\n var defineProperty = Object$1.defineProperty,\n keys = Object$1.keys,\n getOwnPropertyNames = Object$1.getOwnPropertyNames,\n setPrototypeOf = Object$1.setPrototypeOf;\n var legacy = !self.customElements;\n var expando = function expando(element) {\n var key = keys(element);\n var value = [];\n var ignore = new Set$1();\n var length = key.length;\n for (var i = 0; i < length; i++) {\n value[i] = element[key[i]];\n try {\n delete element[key[i]];\n } catch (SafariTP) {\n ignore.add(i);\n }\n }\n return function () {\n for (var _i = 0; _i < length; _i++) ignore.has(_i) || (element[key[_i]] = value[_i]);\n };\n };\n if (legacy) {\n var HTMLBuiltIn = function HTMLBuiltIn() {\n var constructor = this.constructor;\n if (!classes.has(constructor)) throw new TypeError$1('Illegal constructor');\n var is = classes.get(constructor);\n if (override) return augment(override, is);\n var element = createElement.call(document$1, is);\n return augment(setPrototypeOf(element, constructor.prototype), is);\n };\n var createElement = document$1.createElement;\n var classes = new Map();\n var defined = new Map();\n var prototypes = new Map();\n var registry = new Map();\n var query = [];\n var handle = function handle(element, connected, selector) {\n var proto = prototypes.get(selector);\n if (connected && !proto.isPrototypeOf(element)) {\n var redefine = expando(element);\n override = setPrototypeOf(element, proto);\n try {\n new proto.constructor();\n } finally {\n override = null;\n redefine();\n }\n }\n var method = \"\".concat(connected ? '' : 'dis', \"connectedCallback\");\n if (method in proto) element[method]();\n };\n var _qsaObserver = qsaObserver({\n query: query,\n handle: handle\n }),\n parse = _qsaObserver.parse;\n var override = null;\n var whenDefined = function whenDefined(name) {\n if (!defined.has(name)) {\n var _,\n $ = new Promise(function ($) {\n _ = $;\n });\n defined.set(name, {\n $: $,\n _: _\n });\n }\n return defined.get(name).$;\n };\n var augment = attributesObserver(whenDefined, MutationObserver$1);\n self.customElements = {\n define: function define(is, Class) {\n if (registry.has(is)) throw new Error(\"the name \\\"\".concat(is, \"\\\" has already been used with this registry\"));\n classes.set(Class, is);\n prototypes.set(is, Class.prototype);\n registry.set(is, Class);\n query.push(is);\n whenDefined(is).then(function () {\n parse(document$1.querySelectorAll(is));\n });\n defined.get(is)._(Class);\n },\n get: function get(is) {\n return registry.get(is);\n },\n whenDefined: whenDefined\n };\n defineProperty(HTMLBuiltIn.prototype = HTMLElement.prototype, 'constructor', {\n value: HTMLBuiltIn\n });\n self.HTMLElement = HTMLBuiltIn;\n document$1.createElement = function (name, options) {\n var is = options && options.is;\n var Class = is ? registry.get(is) : registry.get(name);\n return Class ? new Class() : createElement.call(document$1, name);\n };\n // in case ShadowDOM is used through a polyfill, to avoid issues\n // with builtin extends within shadow roots\n if (!('isConnected' in Node.prototype)) defineProperty(Node.prototype, 'isConnected', {\n configurable: true,\n get: function get() {\n return !(this.ownerDocument.compareDocumentPosition(this) & this.DOCUMENT_POSITION_DISCONNECTED);\n }\n });\n } else {\n legacy = !self.customElements.get('extends-br');\n if (legacy) {\n try {\n var BR = function BR() {\n return self.Reflect.construct(HTMLBRElement, [], BR);\n };\n BR.prototype = HTMLLIElement.prototype;\n var is = 'extends-br';\n self.customElements.define('extends-br', BR, {\n 'extends': 'br'\n });\n legacy = document$1.createElement('br', {\n is: is\n }).outerHTML.indexOf(is) < 0;\n var _self$customElements = self.customElements,\n get = _self$customElements.get,\n _whenDefined = _self$customElements.whenDefined;\n self.customElements.whenDefined = function (is) {\n var _this = this;\n return _whenDefined.call(this, is).then(function (Class) {\n return Class || get.call(_this, is);\n });\n };\n } catch (o_O) {}\n }\n }\n if (legacy) {\n var _parseShadow = function _parseShadow(element) {\n var root = shadowRoots.get(element);\n _parse(root.querySelectorAll(this), element.isConnected);\n };\n var customElements = self.customElements;\n var _createElement = document$1.createElement;\n var define = customElements.define,\n _get = customElements.get,\n upgrade = customElements.upgrade;\n var _ref = Reflect || {\n construct: function construct(HTMLElement) {\n return HTMLElement.call(this);\n }\n },\n construct = _ref.construct;\n var shadowRoots = new WeakMap();\n var shadows = new Set$1();\n var _classes = new Map();\n var _defined = new Map();\n var _prototypes = new Map();\n var _registry = new Map();\n var shadowed = [];\n var _query = [];\n var getCE = function getCE(is) {\n return _registry.get(is) || _get.call(customElements, is);\n };\n var _handle = function _handle(element, connected, selector) {\n var proto = _prototypes.get(selector);\n if (connected && !proto.isPrototypeOf(element)) {\n var redefine = expando(element);\n _override = setPrototypeOf(element, proto);\n try {\n new proto.constructor();\n } finally {\n _override = null;\n redefine();\n }\n }\n var method = \"\".concat(connected ? '' : 'dis', \"connectedCallback\");\n if (method in proto) element[method]();\n };\n var _qsaObserver2 = qsaObserver({\n query: _query,\n handle: _handle\n }),\n _parse = _qsaObserver2.parse;\n var _qsaObserver3 = qsaObserver({\n query: shadowed,\n handle: function handle(element, connected) {\n if (shadowRoots.has(element)) {\n if (connected) shadows.add(element);else shadows[\"delete\"](element);\n if (_query.length) _parseShadow.call(_query, element);\n }\n }\n }),\n parseShadowed = _qsaObserver3.parse;\n // qsaObserver also patches attachShadow\n // be sure this runs *after* that\n var attachShadow = Element.prototype.attachShadow;\n if (attachShadow) Element.prototype.attachShadow = function (init) {\n var root = attachShadow.call(this, init);\n shadowRoots.set(this, root);\n return root;\n };\n var _whenDefined2 = function _whenDefined2(name) {\n if (!_defined.has(name)) {\n var _,\n $ = new Promise(function ($) {\n _ = $;\n });\n _defined.set(name, {\n $: $,\n _: _\n });\n }\n return _defined.get(name).$;\n };\n var _augment = attributesObserver(_whenDefined2, MutationObserver$1);\n var _override = null;\n getOwnPropertyNames(self).filter(function (k) {\n return /^HTML.*Element$/.test(k);\n }).forEach(function (k) {\n var HTMLElement = self[k];\n function HTMLBuiltIn() {\n var constructor = this.constructor;\n if (!_classes.has(constructor)) throw new TypeError$1('Illegal constructor');\n var _classes$get = _classes.get(constructor),\n is = _classes$get.is,\n tag = _classes$get.tag;\n if (is) {\n if (_override) return _augment(_override, is);\n var element = _createElement.call(document$1, tag);\n element.setAttribute('is', is);\n return _augment(setPrototypeOf(element, constructor.prototype), is);\n } else return construct.call(this, HTMLElement, [], constructor);\n }\n\n defineProperty(HTMLBuiltIn.prototype = HTMLElement.prototype, 'constructor', {\n value: HTMLBuiltIn\n });\n defineProperty(self, k, {\n value: HTMLBuiltIn\n });\n });\n document$1.createElement = function (name, options) {\n var is = options && options.is;\n if (is) {\n var Class = _registry.get(is);\n if (Class && _classes.get(Class).tag === name) return new Class();\n }\n var element = _createElement.call(document$1, name);\n if (is) element.setAttribute('is', is);\n return element;\n };\n customElements.get = getCE;\n customElements.whenDefined = _whenDefined2;\n customElements.upgrade = function (element) {\n var is = element.getAttribute('is');\n if (is) {\n var _constructor = _registry.get(is);\n if (_constructor) {\n _augment(setPrototypeOf(element, _constructor.prototype), is);\n // apparently unnecessary because this is handled by qsa observer\n // if (element.isConnected && element.connectedCallback)\n // element.connectedCallback();\n return;\n }\n }\n upgrade.call(customElements, element);\n };\n customElements.define = function (is, Class, options) {\n if (getCE(is)) throw new Error(\"'\".concat(is, \"' has already been defined as a custom element\"));\n var selector;\n var tag = options && options[\"extends\"];\n _classes.set(Class, tag ? {\n is: is,\n tag: tag\n } : {\n is: '',\n tag: is\n });\n if (tag) {\n selector = \"\".concat(tag, \"[is=\\\"\").concat(is, \"\\\"]\");\n _prototypes.set(selector, Class.prototype);\n _registry.set(is, Class);\n _query.push(selector);\n } else {\n define.apply(customElements, arguments);\n shadowed.push(selector = is);\n }\n _whenDefined2(is).then(function () {\n if (tag) {\n _parse(document$1.querySelectorAll(selector));\n shadows.forEach(_parseShadow, [selector]);\n } else parseShadowed(document$1.querySelectorAll(selector));\n });\n _defined.get(is)._(Class);\n };\n }\n\n})();\n"], + "mappings": "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", + "names": ["attributesObserver", "whenDefined", "MutationObserver", "attributeChanged", "records", "i", "length", "dispatch", "_ref", "target", "attributeName", "oldValue", "is", "attributeFilter", "_unsupportedIterableToArray", "o", "minLen", "_arrayLikeToArray", "n", "arr", "len", "arr2", "_createForOfIteratorHelper", "allowArrayLike", "it", "F", "e", "normalCompletion", "didErr", "err", "step", "TRUE", "FALSE", "QSA$1", "notify", "callback", "root", "MO", "query", "loop", "nodes", "selectors", "added", "removed", "connected", "pass", "_iterator", "_step", "node", "mo", "_iterator2", "_step2", "_step2$value", "addedNodes", "removedNodes", "observe", "QSA", "_self$1", "document$2", "Element$1", "MutationObserver$2", "Set$2", "WeakMap$1", "elements", "element", "filter", "qsaObserver", "options", "live", "drop", "flush", "observer", "parse", "matches", "notifier", "q", "m", "attachShadow", "init", "shadowRoot", "_self", "document$1", "Map", "MutationObserver$1", "Object$1", "Set$1", "WeakMap", "Element", "HTMLElement", "Node", "Error", "TypeError$1", "Reflect", "defineProperty", "keys", "getOwnPropertyNames", "setPrototypeOf", "legacy", "expando", "key", "value", "ignore", "SafariTP", "_i", "HTMLBuiltIn", "constructor", "classes", "override", "augment", "createElement", "defined", "prototypes", "registry", "handle", "selector", "proto", "redefine", "method", "_qsaObserver", "name", "_", "$", "Class", "BR", "_self$customElements", "get", "_whenDefined", "_this", "o_O", "_parseShadow", "shadowRoots", "_parse", "customElements", "_createElement", "define", "_get", "upgrade", "construct", "shadows", "_classes", "_defined", "_prototypes", "_registry", "shadowed", "_query", "getCE", "_handle", "_override", "_qsaObserver2", "_qsaObserver3", "parseShadowed", "_whenDefined2", "_augment", "k", "_classes$get", "tag", "_constructor"] +} diff --git a/dist/dialogify.cjs b/dist/dialogify.cjs index b147e67..c5dd9b2 100644 --- a/dist/dialogify.cjs +++ b/dist/dialogify.cjs @@ -1,3 +1,3 @@ -var j=Object.create;var p=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var P=(t,i)=>{for(var e in i)p(t,e,{get:i[e],enumerable:!0})},u=(t,i,e,g)=>{if(i&&typeof i=="object"||typeof i=="function")for(let a of N(i))!Z.call(t,a)&&a!==e&&p(t,a,{get:()=>i[a],enumerable:!(g=J(i,a))||g.enumerable});return t};var C=(t,i,e)=>(e=t!=null?j(D(t)):{},u(i||!t||!t.__esModule?p(e,"default",{value:t,enumerable:!0}):e,t)),H=t=>u(p({},"__esModule",{value:!0}),t);var G={};P(G,{default:()=>W});module.exports=H(G);var l=C(require("jquery"),1);function x(){let t=window.dialogifyConfig;return(t==null||typeof t!="object")&&(t={}),t.locale=t.locale||"zh_TW",t}var o=class t{constructor(i,e){let g=x(),a=window.document.createElement("dialog");window.dialogPolyfill&&typeof window.dialogPolyfill.registerDialog=="function"&&window.dialogPolyfill.registerDialog(a),(e==null||typeof e!="object")&&(e={}),this.options=e;let h=e.ajaxPrefix===void 0?"/ajax/":e.ajaxPrefix,d=this,n,s=!1;i.charAt(0)=="#"?n=(0,l.default)(i).html():i.indexOf(h)==0?(n='
',s=!0):n=i,n=`
${n}
`;let b=e.size||"dialogify__fixedwidth",M="dialogify";e.fixed!==!1&&(M+=" fixed");let m=`
`;if(e.useDialogForm!==!1&&(m=`${m}`),this.id=`dialogify_${++t.counter}`,(0,l.default)(a).attr("id",this.id).addClass(M).append(m).on("close",function(c){(0,l.default)(d).triggerHandler("close"),d._resizeObserver&&d._resizeObserver.disconnect(),(0,l.default)(this).remove(),e.backgroundScroll===!1&&(0,l.default)("body").css({overflow:"","padding-right":""})}).on("cancel",function(c){(0,l.default)(d).triggerHandler("cancel"),e.closable===!1&&c.preventDefault()}).click(function(c){e.closable!==!1&&c.target==a&&((0,l.default)(d).triggerHandler("cancel"),a.close())}).appendTo("body"),e.closable!==!1){let c="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE2IDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzA1NTY2Njt9PC9zdHlsZT48cmVjdCB4PSIzLjEiIHk9IjEiIGNsYXNzPSJzdDAiIHdpZHRoPSIxLjciIGhlaWdodD0iMSIvPjxyZWN0IHg9IjIuMSIgeT0iMi4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMSIgeT0iMy4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxLjciLz48cmVjdCB4PSIxIiB5PSIxMS4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxLjciLz48cmVjdCB4PSIyLjEiIHk9IjEyLjkiIGNsYXNzPSJzdDAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz48cmVjdCB4PSIzLjEiIHk9IjEzLjkiIGNsYXNzPSJzdDAiIHdpZHRoPSIxLjciIGhlaWdodD0iMSIvPjxnPjxyZWN0IHg9IjQuOSIgY2xhc3M9InN0MCIgd2lkdGg9IjYuMyIgaGVpZ2h0PSIxIi8+PC9nPjxyZWN0IHg9IjQuOSIgeT0iMTUiIGNsYXNzPSJzdDAiIHdpZHRoPSI2LjMiIGhlaWdodD0iMSIvPjxyZWN0IHk9IjQuOSIgY2xhc3M9InN0MCIgd2lkdGg9IjEiIGhlaWdodD0iNi4zIi8+PHJlY3QgeD0iMTEuMSIgeT0iMSIgY2xhc3M9InN0MCIgd2lkdGg9IjEuNyIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMTIuOSIgeT0iMi4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMTMuOSIgeT0iMy4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxLjciLz48cmVjdCB4PSIxMy45IiB5PSIxMS4xIiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxLjciLz48cmVjdCB4PSIxMi45IiB5PSIxMi45IiBjbGFzcz0ic3QwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMTEuMSIgeT0iMTMuOSIgY2xhc3M9InN0MCIgd2lkdGg9IjEuNyIgaGVpZ2h0PSIxIi8+PHJlY3QgeD0iMTUiIHk9IjQuOSIgY2xhc3M9InN0MCIgd2lkdGg9IjEiIGhlaWdodD0iNi4zIi8+PHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI5LjcsMy44IDkuNyw0LjkgOC43LDQuOSA4LjcsNS45IDcuMyw1LjkgNy4zLDQuOSA2LjMsNC45IDYuMywzLjggMy44LDMuOCAzLjgsNS4yIDQuOSw1LjIgNC45LDYuMyA1LjksNi4zIDUuOSw3LjMgNyw3LjMgNyw4LjMgNS45LDguMyA1LjksOS40IDQuOSw5LjQgNC45LDEwLjQgMy44LDEwLjQgMy44LDEwLjggMy44LDExLjggNi4zLDExLjggNi4zLDEwLjggNy4zLDEwLjggNy4zLDkuNyA4LjcsOS43IDguNywxMC44IDkuNywxMC44IDkuNywxMS44IDEyLjIsMTEuOCAxMi4yLDEwLjQgMTEuMSwxMC40IDExLjEsOS40IDEwLjEsOS40IDEwLjEsOC4zIDksOC4zIDksNy4zIDEwLjEsNy4zIDEwLjEsNi4zIDExLjEsNi4zIDExLjEsNS4yIDEyLjIsNS4yIDEyLjIsNC45IDEyLjIsMy44ICIvPjwvc3ZnPg==",I="",y={},f=e.closeButton||g.closeButton;f!=null&&typeof f=="object"&&(c=f.image||c,I=f.className||I,y=f.style||y);let w=(0,l.default)("").attr("src",c),z=(0,l.default)("").addClass("dialogify__close").css(y).append(w).click(function(B){(0,l.default)(a).triggerHandler("cancel"),a.close()});I&&z.addClass(I),(0,l.default)(a).append(z)}let r=e.dialog||g.dialog;if(r!=null&&typeof r=="object"){(0,l.default)(a).css(r.style||{}),r.className&&(0,l.default)(a).addClass(r.className);let c=(0,l.default)(a).find(".dialogify__content");c.css(r.contentStyle||{}),r.contentClassName&&c.addClass(r.contentClassName)}if(this.$content=(0,l.default)(a).find(".dialogify__content > div"),this.$content.append(n),s){let c=i,I=e.ajaxData||{};try{let y=new URL(i,window.location.href);Object.keys(I).forEach(function(f){y.searchParams.append(f,I[f])}),c=y.toString()}catch(y){}window.fetch(c,{headers:{"X-Requested-With":"XMLHttpRequest"}}).then(function(y){return y.text()}).then(function(y){e.ajaxComplete&&e.ajaxComplete.call(d),d.$content.find(".dialogify-ajax-content").html(y)})}this.dialog=a,window.ResizeObserver&&(this._resizeObserver=new window.ResizeObserver(function(){k(a)}),this._resizeObserver.observe(a))}showModal(){this.options.backgroundScroll===!1&&S(),this.dialog.showModal(),(0,l.default)(this).triggerHandler("show")}show(){this.options.backgroundScroll===!1&&S(),this.dialog.show(),(0,l.default)(this).triggerHandler("show")}close(){this.dialog.close()}isOpen(){return this.dialog.open}on(i,e){return(0,l.default)(this).on(i,e),this}title(i){let e=(0,l.default)("
").addClass("dialogify_title").append('').append(i);return this.$content.find(".dialogify_title").length?this.$content.find(".dialogify_title").replaceWith(e):this.$content.prepend(e),this}buttons(i,e){let g=x();Array.isArray(i)||(i=[]),(e==null||typeof e!="object")&&(e={}),this.$buttonList={};let a=(0,l.default)("
").addClass("btn-box").addClass(e.position||"text-right"),h=this;for(let d=0;d').addClass("btn btn-insert").addClass(i[d].type||"").data("click",i[d].click);i[d].type==t.BUTTON_PRIMARY&&this.options.useDialogForm!==!1&&n.attr("type","submit"),i[d].focused&&n.prop("autofocus",!0),i[d].disabled&&n.disable(),n.text(i[d].text||t.LOCALE[g.locale].close),n.click(function(s){typeof(0,l.default)(this).data("click")=="function"&&(0,l.default)(this).data("click").call(h,s)}),this.$buttonList[i[d].id||d]=n,a.append(n)}return this.$content.find(".btn-box").length?this.$content.find(".btn-box").replaceWith(a):this.$content.append(a),this}};o.counter=0;o.SIZE_LARGE="dialogify__autowidth";o.BUTTON_CENTER="text-center";o.BUTTON_LEFT="text-left";o.BUTTON_PRIMARY="btn-primary";o.BUTTON_DANGER="btn-danger";o.LOCALE={};o.LOCALE.zh_TW={ok:"\u78BA\u5B9A",cancel:"\u53D6\u6D88",close:"\u95DC\u9589"};o.LOCALE.zh_CN={ok:"\u786E\u5B9A",cancel:"\u53D6\u6D88",close:"\u5173\u95ED"};o.LOCALE.en_US={ok:"Ok",cancel:"Cancel",close:"Close"};o.alert=function(t,i){return(i==null||typeof i!="object")&&(i={}),(i.dialogOptions==null||typeof i.dialogOptions!="object")&&(i.dialogOptions={}),new Promise(e=>{new o(`

${t}

`,i.dialogOptions).buttons([{type:o.BUTTON_DANGER,click:function(g){i.close&&i.close.call(this),e(),this.close()}}],{position:o.BUTTON_CENTER}).on("cancel",function(){i.close&&i.close.call(this),e()}).showModal()})};o.confirm=function(t,i){let e=x();return(i==null||typeof i!="object")&&(i={}),(i.dialogOptions==null||typeof i.dialogOptions!="object")&&(i.dialogOptions={}),new Promise(g=>{new o(`

${t}

`,i.dialogOptions).buttons([{text:o.LOCALE[e.locale].cancel,click:function(a){i.cancel&&i.cancel.call(this),g(!1),this.close()}},{text:o.LOCALE[e.locale].ok,type:o.BUTTON_PRIMARY,focused:!0,click:function(a){i.ok&&i.ok.call(this),g(!0),this.close()}}]).on("cancel",function(){i.cancel&&i.cancel.call(this),g(!1)}).showModal()})};o.prompt=function(t,i){let e=x();(i==null||typeof i!="object")&&(i={}),(i.dialogOptions==null||typeof i.dialogOptions!="object")&&(i.dialogOptions={});let g=i.placeholder?i.placeholder:"",a=i.value?i.value:"",h=(0,l.default)("").attr("type","text").addClass("text-field dialogify-prompt-input").attr("placeholder",g).attr("value",a),d=(0,l.default)("
").html(`

${t}

`);return d.append(h),new Promise(n=>{new o(d.html(),i.dialogOptions).buttons([{text:o.LOCALE[e.locale].cancel,click:function(s){i.cancel&&i.cancel.call(this),n(null),this.close()}},{text:o.LOCALE[e.locale].ok,type:o.BUTTON_PRIMARY,click:function(s){let b=this.$content.find(".dialogify-prompt-input").val();i.ok&&i.ok.call(this,b),n(b),this.close()}}]).on("cancel",function(){i.cancel&&i.cancel.call(this),n(null)}).showModal()})};o.closeAll=function(){(0,l.default)("dialog[id^=dialogify_]").each(function(){this.close()})};function S(){(0,l.default)("body").css({overflow:"hidden","padding-right":window.innerWidth-document.documentElement.clientWidth})}function k(t){t.style.transform="";let i=window.getComputedStyle(t,null).getPropertyValue("transform")||!1;if(i){let e=i.replace(/[ ()]|matrix/g,"").split(",");e[4]=Math.ceil(e[4]),e[5]=Math.ceil(e[5]),(0,l.default)(t).css("transform",`matrix(${e.join()})`)}}typeof document!="undefined"&&!(0,l.default)("#dialogifyCss").length&&(0,l.default)("