@plusui/library 0.1.14 → 0.1.16

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 +340 -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 +339 -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-CAh2WTyo.js → if-defined-DzyJw9oN.js} +1 -1
  99. package/dist/index.css +2 -2
  100. package/dist/{live-CSPSCWrs.js → live-Dlj-D15j.js} +1 -1
  101. package/dist/{property-BXP8koCN.js → property-DRwbRRVL.js} +1 -1
  102. package/dist/{query-DixClzz3.js → query-CVSIfDVf.js} +1 -1
  103. package/dist/{query-assigned-elements-tu2Z4Umd.js → query-assigned-elements-CGjtMDM7.js} +1 -1
  104. package/dist/{state-CRctcY5E.js → state-DibUHyPK.js} +1 -1
  105. package/dist/{style-map-BP6cVC6K.js → style-map-DE-r4ozp.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 +406 -124
  110. package/public/react/index.d.ts +145 -33
  111. package/public/react/index.js +430 -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-8uGSRUk7.js +0 -31
  122. package/cdn/global-DklV2dCX.js +0 -1
  123. /package/dist/{base-CesIX8_4.js → base-CJK80TT1.js} +0 -0
  124. /package/dist/{directive-BUtBNK63.js → directive-DJonW9K-.js} +0 -0
  125. /package/dist/{floating-ui.dom-DEPWsfNe.js → floating-ui.dom-Cx1F5m3b.js} +0 -0
  126. /package/dist/{index-CwglOP_H.js → index-B49PNGQM.js} +0 -0
  127. /package/dist/{lit-element-u_ybFE-X.js → lit-element-BS9RbLkf.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,283 @@ 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
+ // Stop propagation to prevent backdrop click
296
+ e.stopPropagation();
297
+ // Use composedPath to work with shadow DOM and slots
298
+ const path = e.composedPath();
299
+ const dismissElement = path.find(el => el.hasAttribute?.('data-dismiss'));
300
+ const closeModalElement = path.find(el => el.hasAttribute?.('data-close-modal'));
301
+ if (dismissElement) {
146
302
  this.hide();
303
+ e.preventDefault();
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
+ this.hide();
310
+ e.preventDefault();
311
+ }
147
312
  }
148
313
  }
314
+ shakeModal() {
315
+ this.shake = true;
316
+ setTimeout(() => {
317
+ this.shake = false;
318
+ }, this.animationDuration);
319
+ }
320
+ getModalStyle() {
321
+ if (this.fullScreen) {
322
+ return {
323
+ width: '100vw',
324
+ height: '100vh',
325
+ maxWidth: 'none',
326
+ maxHeight: 'none',
327
+ };
328
+ }
329
+ if (this.fullWidth) {
330
+ return {
331
+ width: '100%',
332
+ maxWidth: '100%',
333
+ };
334
+ }
335
+ const widths = {
336
+ sm: '400px',
337
+ md: '600px',
338
+ lg: '800px',
339
+ xl: '1024px',
340
+ '2xl': '1200px',
341
+ full: '100%',
342
+ };
343
+ return {
344
+ width: widths[this.size],
345
+ maxWidth: this.fullScreen ? 'none' : '90vw',
346
+ maxHeight: this.fullScreen ? 'none' : '90vh',
347
+ };
348
+ }
149
349
  render() {
150
- const { size, isOpen, fullWidth } = this;
151
- const { base, modalClass, modalOverlay, modalContainer, modalHeader, modalBody, modalFooter, modalCloseButtonClass, } = modalStyle({ size, isOpen, fullWidth });
350
+ const { dialog, container, modal, header, headerContent, body, footer, closeButton, } = modalStyle({
351
+ open: this.isOpen,
352
+ placement: this.placement,
353
+ size: this.size,
354
+ fullScreen: this.fullScreen,
355
+ shake: this.shake,
356
+ noHeader: this.noHeader,
357
+ noFooter: this.noFooter,
358
+ fullWidth: this.fullWidth,
359
+ });
152
360
  return x `
153
- <div
154
- class=${base()}
155
- part="container"
156
- role="dialog"
361
+ <dialog
362
+ part="dialog"
363
+ class=${dialog()}
364
+ @click=${this.handleBackdropClick}
365
+ @cancel=${this.handleDialogCancel}
366
+ @keydown=${this.handleKeydown}
157
367
  aria-modal="true"
158
- aria-hidden=${!isOpen}
159
- aria-label="Modal"
160
368
  >
161
369
  <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">
370
+ part="container"
371
+ class=${container()}
372
+ >
373
+ <div
374
+ part="modal"
375
+ class=${modal()}
376
+ style=${o(this.getModalStyle())}
377
+ role="document"
378
+ @click=${this.handleClick}
379
+ >
380
+ ${!this.noHeader ? x `
381
+ <div part="header" class=${header()}>
382
+ <div part="header-content" class=${headerContent()}>
383
+ <slot name="header"></slot>
384
+ </div>
385
+ <slot name="close">
386
+ <button
387
+ part="close-button"
388
+ class=${closeButton()}
389
+ @click=${() => this.hide()}
390
+ aria-label="Close modal"
391
+ type="button"
392
+ >
393
+ <plus-icon icon-name="xmark"></plus-icon>
394
+ </button>
395
+ </slot>
396
+ </div>
397
+ ` : ''}
398
+
399
+ <div part="body" class=${body()}>
182
400
  <slot name="body"></slot>
183
401
  <slot></slot>
184
402
  </div>
185
- <div class=${modalFooter()} part="footer">
186
- <slot name="footer"></slot>
187
- </div>
403
+
404
+ ${!this.noFooter ? x `
405
+ <div part="footer" class=${footer()}>
406
+ <slot name="footer"></slot>
407
+ </div>
408
+ ` : ''}
188
409
  </div>
189
410
  </div>
190
- </div>
411
+ </dialog>
191
412
  `;
192
413
  }
193
414
  }
415
+ __decorate([
416
+ e('dialog')
417
+ ], PlusModal.prototype, "dialogRef", void 0);
194
418
  __decorate([
195
419
  n({ type: String, reflect: true })
196
420
  ], PlusModal.prototype, "size", void 0);
421
+ __decorate([
422
+ n({ type: String, reflect: true })
423
+ ], PlusModal.prototype, "placement", void 0);
197
424
  __decorate([
198
425
  n({
199
426
  type: Boolean,
@@ -210,6 +437,17 @@ __decorate([
210
437
  converter: booleanConverter,
211
438
  })
212
439
  ], PlusModal.prototype, "fullWidth", void 0);
440
+ __decorate([
441
+ n({
442
+ type: Boolean,
443
+ reflect: true,
444
+ attribute: 'full-screen',
445
+ converter: booleanConverter,
446
+ })
447
+ ], PlusModal.prototype, "fullScreen", void 0);
448
+ __decorate([
449
+ n({ type: String, reflect: true })
450
+ ], PlusModal.prototype, "backdrop", void 0);
213
451
  __decorate([
214
452
  n({
215
453
  type: Boolean,
@@ -226,11 +464,30 @@ __decorate([
226
464
  attribute: 'close-on-esc',
227
465
  })
228
466
  ], PlusModal.prototype, "closeOnEsc", void 0);
467
+ __decorate([
468
+ n({
469
+ type: Boolean,
470
+ reflect: true,
471
+ attribute: 'no-header',
472
+ converter: booleanConverter,
473
+ })
474
+ ], PlusModal.prototype, "noHeader", void 0);
475
+ __decorate([
476
+ n({
477
+ type: Boolean,
478
+ reflect: true,
479
+ attribute: 'no-footer',
480
+ converter: booleanConverter,
481
+ })
482
+ ], PlusModal.prototype, "noFooter", void 0);
229
483
  __decorate([
230
484
  n({ type: Number, reflect: true, attribute: 'animation-duration' })
231
485
  ], PlusModal.prototype, "animationDuration", void 0);
232
486
  __decorate([
233
487
  r()
234
488
  ], PlusModal.prototype, "isAnimating", void 0);
489
+ __decorate([
490
+ r()
491
+ ], PlusModal.prototype, "shake", void 0);
235
492
 
236
493
  export { PlusModal, PlusModal as default };
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/components/modal/modal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/components/modal/modal.ts"],"names":[],"mappings":"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"}