@plusui/library 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/cdn/components/accordion/accordion.js +1 -1
  2. package/cdn/components/accordion/index.js +1 -1
  3. package/cdn/components/accordion-group/accordion-group.js +1 -1
  4. package/cdn/components/accordion-group/index.js +1 -1
  5. package/cdn/components/alert/alert.js +1 -1
  6. package/cdn/components/alert/index.js +1 -1
  7. package/cdn/components/avatar/avatar.js +1 -1
  8. package/cdn/components/avatar/index.js +1 -1
  9. package/cdn/components/badge/badge.js +1 -1
  10. package/cdn/components/badge/index.js +1 -1
  11. package/cdn/components/base/index.js +1 -1
  12. package/cdn/components/base/tailwind-base.js +1 -1
  13. package/cdn/components/breadcrumb/breadcrumb.js +1 -1
  14. package/cdn/components/breadcrumb/index.js +1 -1
  15. package/cdn/components/breadcrumb-item/breadcrumb-item.js +1 -1
  16. package/cdn/components/breadcrumb-item/index.js +1 -1
  17. package/cdn/components/button/button.js +1 -1
  18. package/cdn/components/button/index.js +1 -1
  19. package/cdn/components/button-group/button-group.js +1 -1
  20. package/cdn/components/button-group/index.js +1 -1
  21. package/cdn/components/checkbox/checkbox.js +1 -1
  22. package/cdn/components/checkbox/index.js +1 -1
  23. package/cdn/components/checkbox-group/checkbox-group.js +1 -1
  24. package/cdn/components/checkbox-group/index.js +1 -1
  25. package/cdn/components/chip/chip.js +1 -1
  26. package/cdn/components/chip/index.js +1 -1
  27. package/cdn/components/divider/divider.js +1 -1
  28. package/cdn/components/divider/index.js +1 -1
  29. package/cdn/components/drawer/drawer.js +1 -1
  30. package/cdn/components/drawer/index.js +1 -1
  31. package/cdn/components/dropdown/dropdown.js +1 -1
  32. package/cdn/components/dropdown/index.js +1 -1
  33. package/cdn/components/dropdown-item/dropdown-item.js +1 -1
  34. package/cdn/components/dropdown-item/index.js +1 -1
  35. package/cdn/components/index.js +1 -1
  36. package/cdn/components/input/index.js +1 -1
  37. package/cdn/components/input/input.js +1 -1
  38. package/cdn/components/link/index.js +1 -1
  39. package/cdn/components/link/link.js +1 -1
  40. package/cdn/components/list-box-item/index.js +1 -1
  41. package/cdn/components/list-box-item/list-box-item.js +1 -1
  42. package/cdn/components/modal/index.js +5 -1
  43. package/cdn/components/modal/modal.js +343 -83
  44. package/cdn/components/modal/modal.style.js +70 -41
  45. package/cdn/components/popconfirm/index.js +1 -1
  46. package/cdn/components/popconfirm/popconfirm.js +1 -1
  47. package/cdn/components/popover/index.js +1 -1
  48. package/cdn/components/popover/popover.js +1 -1
  49. package/cdn/components/radio/index.js +1 -1
  50. package/cdn/components/radio/radio.js +1 -1
  51. package/cdn/components/radio-group/index.js +1 -1
  52. package/cdn/components/radio-group/radio-group.js +1 -1
  53. package/cdn/components/rating/index.js +1 -1
  54. package/cdn/components/rating/rating.js +1 -1
  55. package/cdn/components/segmented-picker/index.js +1 -1
  56. package/cdn/components/segmented-picker/segmented-picker.component.js +1 -1
  57. package/cdn/components/segmented-picker-item/index.js +1 -1
  58. package/cdn/components/segmented-picker-item/segmented-picker-item.component.js +1 -1
  59. package/cdn/components/select/index.js +1 -1
  60. package/cdn/components/select/select.js +1 -1
  61. package/cdn/components/select-item/index.js +1 -1
  62. package/cdn/components/select-item/select-item.js +1 -1
  63. package/cdn/components/service/index.js +1 -1
  64. package/cdn/components/service/service.js +1 -1
  65. package/cdn/components/tab/index.js +1 -1
  66. package/cdn/components/tab/tab.js +1 -1
  67. package/cdn/components/tab-group/index.js +1 -1
  68. package/cdn/components/tab-group/tab-group.js +1 -1
  69. package/cdn/components/tab-panel/index.js +1 -1
  70. package/cdn/components/tab-panel/tab-panel.js +1 -1
  71. package/cdn/components/tag/index.js +1 -1
  72. package/cdn/components/tag/tag.js +1 -1
  73. package/cdn/components/text/index.js +1 -1
  74. package/cdn/components/text/text.js +1 -1
  75. package/cdn/components/textarea/index.js +1 -1
  76. package/cdn/components/textarea/textarea.js +1 -1
  77. package/cdn/components/toast/index.js +1 -1
  78. package/cdn/components/toast/toast.js +1 -1
  79. package/cdn/components/toast-container/index.js +1 -1
  80. package/cdn/components/toast-container/toast-container.js +1 -1
  81. package/cdn/components/toggle/index.js +1 -1
  82. package/cdn/components/toggle/toggle.js +1 -1
  83. package/cdn/components/tooltip/index.js +1 -1
  84. package/cdn/components/tooltip/tooltip.js +1 -1
  85. package/cdn/factory/tailwind-factory.js +1 -1
  86. package/cdn/global-BfmuDcaf.js +1 -0
  87. package/cdn/global-m-W73pez.js +31 -0
  88. package/custom-elements.json +226 -25
  89. package/dist/components/modal/index.js +4 -0
  90. package/dist/components/modal/modal.d.ts +95 -22
  91. package/dist/components/modal/modal.d.ts.map +1 -1
  92. package/dist/components/modal/modal.js +342 -82
  93. package/dist/components/modal/modal.js.map +1 -1
  94. package/dist/components/modal/modal.style.d.ts +297 -122
  95. package/dist/components/modal/modal.style.d.ts.map +1 -1
  96. package/dist/components/modal/modal.style.js +70 -41
  97. package/dist/components/modal/modal.style.js.map +1 -1
  98. package/dist/{if-defined-DKbfGhXu.js → if-defined-DBB3AQZw.js} +1 -1
  99. package/dist/index.css +1 -1
  100. package/dist/{live-CtqYa7Iz.js → live-Db5nLVo0.js} +1 -1
  101. package/dist/{property-DhJ1LIGX.js → property-C9Hzx3kj.js} +1 -1
  102. package/dist/{query-CJZ9rve2.js → query-RewOgxYG.js} +1 -1
  103. package/dist/{query-assigned-elements-BTKIEABn.js → query-assigned-elements-DY-CICub.js} +1 -1
  104. package/dist/{state-BJT7gLGV.js → state-B4zcCODl.js} +1 -1
  105. package/dist/{style-map-4vJ38bCf.js → style-map-sUMHadXp.js} +1 -1
  106. package/dist/styles/global.js +2 -2
  107. package/eslint/custom-element-eslint-rules.js +16 -0
  108. package/package.json +1 -1
  109. package/public/html/index.js +409 -124
  110. package/public/react/index.d.ts +145 -33
  111. package/public/react/index.js +433 -125
  112. package/react/PlusModal.d.ts +50 -11
  113. package/react/PlusModal.js +31 -2
  114. package/types/custom-element-jsx.d.ts +42 -11
  115. package/types/custom-element-solidjs.d.ts +42 -11
  116. package/types/custom-element-svelte.d.ts +42 -11
  117. package/types/custom-element-vuejs.d.ts +42 -11
  118. package/vscode.css-custom-data.json +10 -6
  119. package/vscode.html-custom-data.json +26 -1
  120. package/web-types.json +106 -11
  121. package/cdn/global-DGCiKnca.js +0 -1
  122. package/cdn/global-GTfSG3gU.js +0 -31
  123. /package/dist/{base-ByZpKIDU.js → base-CBi-OLn2.js} +0 -0
  124. /package/dist/{directive-rJcjnQEi.js → directive-B_gs7lGG.js} +0 -0
  125. /package/dist/{floating-ui.dom-CnRf1aAR.js → floating-ui.dom-Cv67XeEd.js} +0 -0
  126. /package/dist/{index-DUwBBqWm.js → index-Cobjj9Q1.js} +0 -0
  127. /package/dist/{lit-element-Bu7TYzc7.js → lit-element-naXdLm94.js} +0 -0
@@ -1,44 +1,68 @@
1
1
  import { _ as __decorate, n } from '../../property-DiPQx9S3.js';
2
2
  import { x } from '../../lit-element-ByzbtpGk.js';
3
3
  import { r } from '../../state-D1d5Sfj8.js';
4
+ import { e } from '../../query-CHb9Ft_d.js';
5
+ import { o } from '../../style-map-DC_vNus2.js';
4
6
  import { booleanConverter } from '../../utils/boolean-converter.js';
5
7
  import { modalStyle } from './modal.style.js';
6
8
  import Tailwind from '../base/tailwind-base.js';
9
+ import '../../base-Cl6v8-BZ.js';
10
+ import '../../directive-DZCF8pFJ.js';
7
11
  import '../../index-B9iart53.js';
8
12
  import '../../styles/global.js';
9
13
  import '../../style-inject.es-tgCJW-Cu.js';
10
14
 
11
15
  /**
12
16
  * @tag plus-modal
13
- * @summary Modal dialog component that appears on top of the page content.
17
+ * @summary Modal dialog component built on native HTML Dialog API. Displays content in a layer above the page with full keyboard and focus management.
14
18
  *
19
+ * @slot - Main content area (same as body slot)
15
20
  * @slot header - The header content of the modal
16
- * @slot body - The main content of the modal
21
+ * @slot body - The main content of the modal (alternative to default slot)
17
22
  * @slot footer - The footer content of the modal
18
23
  * @slot close - Custom close button (defaults to an X icon)
19
24
  *
20
- * @csspart container - The main container element
21
- * @csspart overlay - The overlay element
22
- * @csspart modal - The modal element
23
- * @csspart header - The header element
24
- * @csspart body - The body element
25
- * @csspart footer - The footer element
25
+ * @csspart dialog - The native dialog element
26
+ * @csspart container - The container wrapper for centering and scrolling
27
+ * @csspart modal - The main modal box
28
+ * @csspart header - The header section
29
+ * @csspart header-content - The content wrapper inside header
30
+ * @csspart body - The main content area
31
+ * @csspart footer - The footer section
26
32
  * @csspart close-button - The close button element
27
33
  *
34
+ * @event plus-modal-open - Emitted after the modal has opened
35
+ * @event plus-modal-close - Emitted after the modal has closed
36
+ * @event plus-modal-before-open - Emitted before the modal opens (cancelable)
37
+ * @event plus-modal-before-close - Emitted before the modal closes (cancelable)
38
+ *
28
39
  * @example
29
40
  * ```html
30
- * <plus-modal>
41
+ * <!-- Basic usage -->
42
+ * <plus-modal is-open>
31
43
  * <div slot="header">Modal Title</div>
32
44
  * <div slot="body">Modal Content</div>
33
45
  * <div slot="footer">
34
- * <button>Save</button>
46
+ * <button data-dismiss>Close</button>
35
47
  * </div>
36
48
  * </plus-modal>
49
+ *
50
+ * <!-- Full screen modal -->
51
+ * <plus-modal full-screen>
52
+ * <div slot="header">Full Screen</div>
53
+ * <p>Content here</p>
54
+ * </plus-modal>
55
+ *
56
+ * <!-- Static backdrop (shake on outside click) -->
57
+ * <plus-modal backdrop="static">
58
+ * <div slot="header">Can't Close Outside</div>
59
+ * <p>Must use close button</p>
60
+ * </plus-modal>
37
61
  * ```
38
62
  */
39
63
  class PlusModal extends Tailwind {
40
64
  constructor() {
41
- super();
65
+ super(...arguments);
42
66
  /**
43
67
  * The size of the modal
44
68
  * @type {'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'}
@@ -46,6 +70,13 @@ class PlusModal extends Tailwind {
46
70
  * @attr size
47
71
  */
48
72
  this.size = 'md';
73
+ /**
74
+ * The placement of the modal on the screen
75
+ * @type {'center' | 'top'}
76
+ * @default 'center'
77
+ * @attr placement
78
+ */
79
+ this.placement = 'center';
49
80
  /**
50
81
  * Whether the modal is open
51
82
  * @type {boolean}
@@ -60,6 +91,23 @@ class PlusModal extends Tailwind {
60
91
  * @attr full-width
61
92
  */
62
93
  this.fullWidth = false;
94
+ /**
95
+ * Makes the modal take the full screen (100vw x 100vh, no border radius)
96
+ * @type {boolean}
97
+ * @default false
98
+ * @attr full-screen
99
+ */
100
+ this.fullScreen = false;
101
+ /**
102
+ * Controls backdrop behavior
103
+ * - true: Shows backdrop, modal can be closed by clicking outside
104
+ * - false: No backdrop
105
+ * - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
106
+ * @type {boolean | 'static'}
107
+ * @default true
108
+ * @attr backdrop
109
+ */
110
+ this.backdrop = true;
63
111
  /**
64
112
  * Whether the modal should close when clicking the backdrop
65
113
  * @type {boolean}
@@ -74,6 +122,20 @@ class PlusModal extends Tailwind {
74
122
  * @attr close-on-esc
75
123
  */
76
124
  this.closeOnEsc = true;
125
+ /**
126
+ * Hides the header section completely
127
+ * @type {boolean}
128
+ * @default false
129
+ * @attr no-header
130
+ */
131
+ this.noHeader = false;
132
+ /**
133
+ * Hides the footer section completely
134
+ * @type {boolean}
135
+ * @default false
136
+ * @attr no-footer
137
+ */
138
+ this.noFooter = false;
77
139
  /**
78
140
  * The duration of the animation in milliseconds
79
141
  * @type {number}
@@ -82,118 +144,286 @@ class PlusModal extends Tailwind {
82
144
  */
83
145
  this.animationDuration = 300;
84
146
  this.isAnimating = false;
85
- this.keydownHandler = this.handleKeydown.bind(this);
147
+ this.shake = false;
86
148
  }
87
149
  connectedCallback() {
88
150
  super.connectedCallback();
89
- this.addEventListener('plus-modal-before-show', this.handleBeforeShow);
90
- this.addEventListener('plus-modal-before-hide', this.handleBeforeHide);
151
+ this.addEventListener('plus-modal-before-open', this.handleBeforeOpen);
152
+ this.addEventListener('plus-modal-before-close', this.handleBeforeClose);
153
+ }
154
+ disconnectedCallback() {
155
+ super.disconnectedCallback();
156
+ this.removeEventListener('plus-modal-before-open', this.handleBeforeOpen);
157
+ this.removeEventListener('plus-modal-before-close', this.handleBeforeClose);
158
+ if (this.dialogRef && this.isOpen) {
159
+ this.dialogRef.close();
160
+ }
161
+ }
162
+ firstUpdated() {
163
+ if (this.isOpen && this.dialogRef) {
164
+ this.dialogRef.showModal();
165
+ }
166
+ }
167
+ updated(changedProperties) {
168
+ super.updated(changedProperties);
169
+ if (changedProperties.has('isOpen')) {
170
+ if (this.isOpen) {
171
+ this.handleOpenChange();
172
+ }
173
+ else {
174
+ this.handleCloseChange();
175
+ }
176
+ }
91
177
  }
92
178
  /**
93
- * Hides the modal with animation
94
- * @returns {void}
179
+ * Shows the modal with animation
180
+ * @returns {Promise<void>}
95
181
  */
96
- hide() {
97
- if (this.isAnimating)
182
+ async show() {
183
+ if (this.isAnimating || this.isOpen)
98
184
  return;
99
- this.emit('plus-modal-before-hide');
185
+ this.isOpen = true;
100
186
  }
101
- handleBeforeHide() {
102
- this.isAnimating = true;
187
+ /**
188
+ * Hides the modal with animation
189
+ * @returns {Promise<void>}
190
+ */
191
+ async hide() {
192
+ if (this.isAnimating || !this.isOpen)
193
+ return;
103
194
  this.isOpen = false;
104
- setTimeout(() => {
105
- this.isAnimating = false;
106
- this.emit('plus-modal-hide');
107
- }, this.animationDuration);
108
195
  }
109
196
  /**
110
- * Shows the modal with animation
111
- * @returns {void}
197
+ * Toggles the modal open/closed state
198
+ * @returns {Promise<void>}
112
199
  */
113
- show() {
114
- if (this.isAnimating)
200
+ async toggle() {
201
+ if (this.isOpen) {
202
+ await this.hide();
203
+ }
204
+ else {
205
+ await this.show();
206
+ }
207
+ }
208
+ async handleOpenChange() {
209
+ this.isAnimating = true;
210
+ const event = this.emit('plus-modal-before-open', { cancelable: true });
211
+ if (event.defaultPrevented) {
212
+ this.isOpen = false;
213
+ this.isAnimating = false;
115
214
  return;
116
- this.emit('plus-modal-before-show');
215
+ }
216
+ if (this.dialogRef) {
217
+ this.dialogRef.showModal();
218
+ // Small delay for animation
219
+ await new Promise(resolve => setTimeout(resolve, 50));
220
+ this.isAnimating = false;
221
+ this.emit('plus-modal-open');
222
+ }
117
223
  }
118
- handleBeforeShow() {
224
+ async handleCloseChange() {
119
225
  this.isAnimating = true;
120
- this.isOpen = true;
121
- setTimeout(() => {
226
+ const event = this.emit('plus-modal-before-close', { cancelable: true });
227
+ if (event.defaultPrevented) {
228
+ this.isOpen = true;
122
229
  this.isAnimating = false;
123
- this.emit('plus-modal-show');
124
- }, this.animationDuration);
125
- if (this.closeOnEsc) {
126
- document.addEventListener('keydown', this.keydownHandler);
230
+ return;
127
231
  }
232
+ // Wait for animation before closing
233
+ await new Promise(resolve => setTimeout(resolve, this.animationDuration));
234
+ if (this.dialogRef) {
235
+ this.dialogRef.close();
236
+ }
237
+ this.isAnimating = false;
238
+ this.emit('plus-modal-close');
128
239
  }
129
- // override firstUpdated() {
130
- // this.modalElement = this.shadowRoot?.querySelector('.modal') as HTMLElement;
131
- // }
132
- disconnectedCallback() {
133
- super.disconnectedCallback();
134
- this.removeEventListener('plus-modal-before-show', this.handleBeforeShow);
135
- this.removeEventListener('plus-modal-before-hide', this.handleBeforeHide);
136
- document.removeEventListener('keydown', this.keydownHandler);
240
+ handleBeforeOpen() {
241
+ // Hook for internal use if needed
242
+ }
243
+ handleBeforeClose() {
244
+ // Hook for internal use if needed
245
+ }
246
+ handleBackdropClick(e) {
247
+ const target = e.target;
248
+ // Check if click is on the container (backdrop area), not on modal content
249
+ if (target.getAttribute('part') === 'container') {
250
+ if (this.backdrop === 'static') {
251
+ this.shakeModal();
252
+ }
253
+ else if (this.closeOnBackdrop) {
254
+ this.hide();
255
+ }
256
+ }
257
+ }
258
+ handleDialogCancel(e) {
259
+ e.preventDefault();
260
+ if (this.closeOnEsc) {
261
+ if (this.backdrop === 'static') {
262
+ this.shakeModal();
263
+ }
264
+ else {
265
+ this.hide();
266
+ }
267
+ }
268
+ else if (this.backdrop === 'static') {
269
+ this.shakeModal();
270
+ }
137
271
  }
138
272
  handleKeydown(e) {
139
- if (e.key === 'Escape' && this.closeOnEsc && this.isOpen) {
140
- this.hide();
273
+ if (e.key === 'Escape' && this.isOpen) {
274
+ // Only handle ESC if this is the topmost modal
275
+ const openModals = Array.from(document.querySelectorAll('plus-modal[is-open]'));
276
+ const topModal = openModals[openModals.length - 1];
277
+ if (topModal !== this) {
278
+ return;
279
+ }
280
+ e.preventDefault();
281
+ if (this.closeOnEsc) {
282
+ if (this.backdrop === 'static') {
283
+ this.shakeModal();
284
+ }
285
+ else {
286
+ this.hide();
287
+ }
288
+ }
289
+ else if (this.backdrop === 'static') {
290
+ this.shakeModal();
291
+ }
141
292
  }
142
293
  }
143
- handleBackdropClick(e) {
144
- // Check if the click was on the backdrop (overlay) and not on the modal content
145
- if (e.target === e.currentTarget && this.closeOnBackdrop) {
294
+ handleClick(e) {
295
+ // Use composedPath to work with shadow DOM and slots
296
+ const path = e.composedPath();
297
+ const dismissElement = path.find(el => el.hasAttribute?.('data-dismiss'));
298
+ const closeModalElement = path.find(el => el.hasAttribute?.('data-close-modal'));
299
+ if (dismissElement) {
300
+ // Stop propagation only when dismissing the modal
301
+ e.stopPropagation();
302
+ e.preventDefault();
146
303
  this.hide();
147
304
  }
305
+ else if (closeModalElement) {
306
+ const modalId = closeModalElement.getAttribute('data-close-modal');
307
+ // If modalId matches this modal's id, close it
308
+ if (!modalId || modalId === this.id) {
309
+ // Stop propagation only when closing the modal
310
+ e.stopPropagation();
311
+ e.preventDefault();
312
+ this.hide();
313
+ }
314
+ }
315
+ // Don't stop propagation for normal clicks - let them bubble to child elements
316
+ }
317
+ shakeModal() {
318
+ this.shake = true;
319
+ setTimeout(() => {
320
+ this.shake = false;
321
+ }, this.animationDuration);
322
+ }
323
+ getModalStyle() {
324
+ if (this.fullScreen) {
325
+ return {
326
+ width: '100vw',
327
+ height: '100vh',
328
+ maxWidth: 'none',
329
+ maxHeight: 'none',
330
+ };
331
+ }
332
+ if (this.fullWidth) {
333
+ return {
334
+ width: '100%',
335
+ maxWidth: '100%',
336
+ };
337
+ }
338
+ const widths = {
339
+ sm: '400px',
340
+ md: '600px',
341
+ lg: '800px',
342
+ xl: '1024px',
343
+ '2xl': '1200px',
344
+ full: '100%',
345
+ };
346
+ return {
347
+ width: widths[this.size],
348
+ maxWidth: this.fullScreen ? 'none' : '90vw',
349
+ maxHeight: this.fullScreen ? 'none' : '90vh',
350
+ };
148
351
  }
149
352
  render() {
150
- const { size, isOpen, fullWidth } = this;
151
- const { base, modalClass, modalOverlay, modalContainer, modalHeader, modalBody, modalFooter, modalCloseButtonClass, } = modalStyle({ size, isOpen, fullWidth });
353
+ const { dialog, container, modal, header, headerContent, body, footer, closeButton, } = modalStyle({
354
+ open: this.isOpen,
355
+ placement: this.placement,
356
+ size: this.size,
357
+ fullScreen: this.fullScreen,
358
+ shake: this.shake,
359
+ noHeader: this.noHeader,
360
+ noFooter: this.noFooter,
361
+ fullWidth: this.fullWidth,
362
+ });
152
363
  return x `
153
- <div
154
- class=${base()}
155
- part="container"
156
- role="dialog"
364
+ <dialog
365
+ part="dialog"
366
+ class=${dialog()}
367
+ @click=${this.handleBackdropClick}
368
+ @cancel=${this.handleDialogCancel}
369
+ @keydown=${this.handleKeydown}
157
370
  aria-modal="true"
158
- aria-hidden=${!isOpen}
159
- aria-label="Modal"
160
371
  >
161
372
  <div
162
- class=${modalOverlay()}
163
- part="overlay"
164
- @click=${this.handleBackdropClick}
165
- ></div>
166
- <div class=${modalClass()} part="modal">
167
- <div class=${modalContainer()}>
168
- <div class=${modalHeader()} part="header">
169
- <slot name="header"></slot>
170
- <slot name="close">
171
- <button
172
- class=${modalCloseButtonClass()}
173
- part="close-button"
174
- aria-label="Close modal"
175
- @click=${() => this.hide()}
176
- >
177
- <plus-icon icon-name="xmark"></plus-icon>
178
- </button>
179
- </slot>
180
- </div>
181
- <div class=${modalBody()} part="body">
373
+ part="container"
374
+ class=${container()}
375
+ >
376
+ <div
377
+ part="modal"
378
+ class=${modal()}
379
+ style=${o(this.getModalStyle())}
380
+ role="document"
381
+ @click=${this.handleClick}
382
+ >
383
+ ${!this.noHeader ? x `
384
+ <div part="header" class=${header()}>
385
+ <div part="header-content" class=${headerContent()}>
386
+ <slot name="header"></slot>
387
+ </div>
388
+ <slot name="close">
389
+ <button
390
+ part="close-button"
391
+ class=${closeButton()}
392
+ @click=${() => this.hide()}
393
+ aria-label="Close modal"
394
+ type="button"
395
+ >
396
+ <plus-icon icon-name="xmark"></plus-icon>
397
+ </button>
398
+ </slot>
399
+ </div>
400
+ ` : ''}
401
+
402
+ <div part="body" class=${body()}>
182
403
  <slot name="body"></slot>
183
404
  <slot></slot>
184
405
  </div>
185
- <div class=${modalFooter()} part="footer">
186
- <slot name="footer"></slot>
187
- </div>
406
+
407
+ ${!this.noFooter ? x `
408
+ <div part="footer" class=${footer()}>
409
+ <slot name="footer"></slot>
410
+ </div>
411
+ ` : ''}
188
412
  </div>
189
413
  </div>
190
- </div>
414
+ </dialog>
191
415
  `;
192
416
  }
193
417
  }
418
+ __decorate([
419
+ e('dialog')
420
+ ], PlusModal.prototype, "dialogRef", void 0);
194
421
  __decorate([
195
422
  n({ type: String, reflect: true })
196
423
  ], PlusModal.prototype, "size", void 0);
424
+ __decorate([
425
+ n({ type: String, reflect: true })
426
+ ], PlusModal.prototype, "placement", void 0);
197
427
  __decorate([
198
428
  n({
199
429
  type: Boolean,
@@ -210,6 +440,17 @@ __decorate([
210
440
  converter: booleanConverter,
211
441
  })
212
442
  ], PlusModal.prototype, "fullWidth", void 0);
443
+ __decorate([
444
+ n({
445
+ type: Boolean,
446
+ reflect: true,
447
+ attribute: 'full-screen',
448
+ converter: booleanConverter,
449
+ })
450
+ ], PlusModal.prototype, "fullScreen", void 0);
451
+ __decorate([
452
+ n({ type: String, reflect: true })
453
+ ], PlusModal.prototype, "backdrop", void 0);
213
454
  __decorate([
214
455
  n({
215
456
  type: Boolean,
@@ -226,11 +467,30 @@ __decorate([
226
467
  attribute: 'close-on-esc',
227
468
  })
228
469
  ], PlusModal.prototype, "closeOnEsc", void 0);
470
+ __decorate([
471
+ n({
472
+ type: Boolean,
473
+ reflect: true,
474
+ attribute: 'no-header',
475
+ converter: booleanConverter,
476
+ })
477
+ ], PlusModal.prototype, "noHeader", void 0);
478
+ __decorate([
479
+ n({
480
+ type: Boolean,
481
+ reflect: true,
482
+ attribute: 'no-footer',
483
+ converter: booleanConverter,
484
+ })
485
+ ], PlusModal.prototype, "noFooter", void 0);
229
486
  __decorate([
230
487
  n({ type: Number, reflect: true, attribute: 'animation-duration' })
231
488
  ], PlusModal.prototype, "animationDuration", void 0);
232
489
  __decorate([
233
490
  r()
234
491
  ], PlusModal.prototype, "isAnimating", void 0);
492
+ __decorate([
493
+ r()
494
+ ], PlusModal.prototype, "shake", void 0);
235
495
 
236
496
  export { PlusModal, PlusModal as default };
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/components/modal/modal.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,QAAQ;IAiF7C;QACE,KAAK,EAAE,CAAC;QAjFV;;;;;WAKG;QAEH,SAAI,GAA+C,IAAI,CAAC;QAExD;;;;;WAKG;QAOH,WAAM,GAAG,KAAK,CAAC;QAEf;;;;;WAKG;QAOH,cAAS,GAAG,KAAK,CAAC;QAElB;;;;;WAKG;QAOH,oBAAe,GAAG,IAAI,CAAC;QAEvB;;;;;WAKG;QAOH,eAAU,GAAG,IAAI,CAAC;QAElB;;;;;WAKG;QAEH,sBAAiB,GAAG,GAAG,CAAC;QAGhB,gBAAW,GAAG,KAAK,CAAC;QAO1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACtC,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACtC,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,iFAAiF;IACjF,IAAI;IAEK,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IAEO,aAAa,CAAC,CAAgB;QACpC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,CAAa;QACvC,gFAAgF;QAChF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEQ,MAAM;QACb,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACzC,MAAM,EACJ,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,WAAW,EACX,qBAAqB,GACtB,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAA;;gBAEC,IAAI,EAAE;;;;sBAIA,CAAC,MAAM;;;;kBAIX,YAAY,EAAE;;mBAEb,IAAI,CAAC,mBAAmB;;qBAEtB,UAAU,EAAE;uBACV,cAAc,EAAE;yBACd,WAAW,EAAE;;;;0BAIZ,qBAAqB,EAAE;;;2BAGtB,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;;;;;;yBAMnB,SAAS,EAAE;;;;yBAIX,WAAW,EAAE;;;;;;KAMjC,CAAC;IACJ,CAAC;CACF;AA5MC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACc;AAcxD;IANC,QAAQ,CAAC;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,gBAAgB;KAC5B,CAAC;yCACa;AAcf;IANC,QAAQ,CAAC;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,gBAAgB;KAC5B,CAAC;4CACgB;AAclB;IANC,QAAQ,CAAC;QACR,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,mBAAmB;KAC/B,CAAC;kDACqB;AAcvB;IANC,QAAQ,CAAC;QACR,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,cAAc;KAC1B,CAAC;6CACgB;AASlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;oDACnD;AAGhB;IADP,KAAK,EAAE;8CACoB;AA0I9B,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/components/modal/modal.ts"],"names":[],"mappings":"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"}