@breadstone/mosaik-elements-foundation 0.0.136 → 0.0.137

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 (75) hide show
  1. package/Controls/Components/Buttons/Abstracts/ButtonBaseElement.d.ts +0 -4
  2. package/Controls/Components/Buttons/Abstracts/ButtonBaseElement.d.ts.map +1 -1
  3. package/Controls/Components/Buttons/Abstracts/ButtonBaseElement.js +0 -6
  4. package/Controls/Components/Buttons/Abstracts/ButtonBaseElement.js.map +1 -1
  5. package/Controls/Components/Forms/FormElement.d.ts.map +1 -1
  6. package/Controls/Components/Forms/FormElement.js +1 -2
  7. package/Controls/Components/Forms/FormElement.js.map +1 -1
  8. package/Controls/Components/Grouping/BannerGroup/BannerGroupElement.d.ts +1 -0
  9. package/Controls/Components/Grouping/BannerGroup/BannerGroupElement.d.ts.map +1 -1
  10. package/Controls/Components/Grouping/BannerGroup/BannerGroupElement.js +14 -2
  11. package/Controls/Components/Grouping/BannerGroup/BannerGroupElement.js.map +1 -1
  12. package/Controls/Components/Grouping/BannerGroup/BannerGroupElementTemplate.js +1 -1
  13. package/Controls/Components/Grouping/BannerGroup/BannerGroupElementTemplate.js.map +1 -1
  14. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Cosmopolitan.d.ts.map +1 -1
  15. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Cosmopolitan.js +13 -4
  16. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Cosmopolitan.js.map +1 -1
  17. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Joy.d.ts.map +1 -1
  18. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Joy.js +13 -4
  19. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Joy.js.map +1 -1
  20. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Retro.d.ts.map +1 -1
  21. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Retro.js +13 -4
  22. package/Controls/Components/Grouping/BannerGroup/Themes/BannerGroupElement.Retro.js.map +1 -1
  23. package/Controls/Components/Inputs/Abstracts/InputBase.d.ts +0 -4
  24. package/Controls/Components/Inputs/Abstracts/InputBase.d.ts.map +1 -1
  25. package/Controls/Components/Inputs/Abstracts/InputBase.js +0 -6
  26. package/Controls/Components/Inputs/Abstracts/InputBase.js.map +1 -1
  27. package/Controls/Components/Inputs/FileUpload/FilePickerElement.d.ts +24 -2
  28. package/Controls/Components/Inputs/FileUpload/FilePickerElement.d.ts.map +1 -1
  29. package/Controls/Components/Inputs/FileUpload/FilePickerElement.js +24 -2
  30. package/Controls/Components/Inputs/FileUpload/FilePickerElement.js.map +1 -1
  31. package/Controls/Components/Inputs/FileUpload/FileUploadElement.d.ts +26 -4
  32. package/Controls/Components/Inputs/FileUpload/FileUploadElement.d.ts.map +1 -1
  33. package/Controls/Components/Inputs/FileUpload/FileUploadElement.js +29 -5
  34. package/Controls/Components/Inputs/FileUpload/FileUploadElement.js.map +1 -1
  35. package/Controls/Components/Inputs/FileUpload/FileUploadElementTemplate.js +2 -2
  36. package/Controls/Components/Inputs/FileUpload/FileUploadElementTemplate.js.map +1 -1
  37. package/Controls/Components/Inputs/FileUpload/FileUploadItemElement.d.ts +23 -1
  38. package/Controls/Components/Inputs/FileUpload/FileUploadItemElement.d.ts.map +1 -1
  39. package/Controls/Components/Inputs/FileUpload/FileUploadItemElement.js +23 -1
  40. package/Controls/Components/Inputs/FileUpload/FileUploadItemElement.js.map +1 -1
  41. package/Controls/Components/Inputs/PinBox/PinBoxElement.d.ts.map +1 -1
  42. package/Controls/Components/Inputs/PinBox/PinBoxElement.js +11 -6
  43. package/Controls/Components/Inputs/PinBox/PinBoxElement.js.map +1 -1
  44. package/Controls/Components/Inputs/SearchBox/SearchBoxElement.d.ts.map +1 -1
  45. package/Controls/Components/Inputs/SearchBox/SearchBoxElement.js +16 -1
  46. package/Controls/Components/Inputs/SearchBox/SearchBoxElement.js.map +1 -1
  47. package/Controls/Components/Layouts/Split/SplitElement.d.ts.map +1 -1
  48. package/Controls/Components/Layouts/Split/SplitElement.js +6 -1
  49. package/Controls/Components/Layouts/Split/SplitElement.js.map +1 -1
  50. package/Controls/Components/Layouts/Split/Themes/SplitElement.Cosmopolitan.js +1 -1
  51. package/Controls/Components/Layouts/Split/Themes/SplitElement.Joy.js +1 -1
  52. package/Controls/Components/Layouts/Split/Themes/SplitElement.Retro.js +1 -1
  53. package/Controls/Components/Primitives/DropZone/DropZoneElement.d.ts +53 -7
  54. package/Controls/Components/Primitives/DropZone/DropZoneElement.d.ts.map +1 -1
  55. package/Controls/Components/Primitives/DropZone/DropZoneElement.js +135 -28
  56. package/Controls/Components/Primitives/DropZone/DropZoneElement.js.map +1 -1
  57. package/Controls/Components/Primitives/DropZone/Events/IDropZoneDataEventDetail.d.ts +1 -1
  58. package/Controls/Components/Primitives/DropZone/Events/IDropZoneDataEventDetail.d.ts.map +1 -1
  59. package/Controls/Components/Primitives/DropZone/IDropZoneElementProps.d.ts.map +1 -1
  60. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.d.ts.map +1 -1
  61. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.js +124 -3
  62. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.js.map +1 -1
  63. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Joy.d.ts.map +1 -1
  64. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Joy.js +160 -9
  65. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Joy.js.map +1 -1
  66. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Retro.d.ts.map +1 -1
  67. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Retro.js +124 -3
  68. package/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Retro.js.map +1 -1
  69. package/Controls/Types/DropZoneState.d.ts +20 -0
  70. package/Controls/Types/DropZoneState.d.ts.map +1 -0
  71. package/Controls/Types/DropZoneState.js +16 -0
  72. package/Controls/Types/DropZoneState.js.map +1 -0
  73. package/Routing/PathToRegexp.d.ts +1 -1
  74. package/custom-elements.json +43 -15
  75. package/package.json +3 -3
@@ -129,7 +129,7 @@ export function splitElementRetroStyle() {
129
129
  }
130
130
 
131
131
  :host([orientation="horizontal"]) [part="divider"] {
132
- cursor: row-resize;
132
+ cursor: col-resize;
133
133
  }
134
134
 
135
135
  :host([orientation="horizontal"]) [part="divider"]:after {
@@ -2,12 +2,35 @@ import { IEventEmitter } from '@breadstone/mosaik-elements';
2
2
  import { CustomElement } from '../../Abstracts/CustomElement';
3
3
  import type { IDropZoneDataTransferEventDetail } from './Events/IDropZoneDataEventDetail';
4
4
  import type { IDropZoneElementProps } from './IDropZoneElementProps';
5
+ import { DropZoneState } from '../../../Types/DropZoneState';
5
6
  declare const DropZoneElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
6
7
  /**
7
- * The `{@link DropZoneElement}` element.
8
+ * DropZoneElement - An interactive component that defines a target area for drag-and-drop operations.
9
+ *
10
+ * @description
11
+ * The DropZoneElement provides a designated area within the interface where users can drop draggable items.
12
+ * It is commonly used in applications that require file uploads, reordering of elements, or custom drag-and-drop
13
+ * interactions. By offering a clear and accessible drop target, this component helps improve usability and
14
+ * guides users through intuitive drag-and-drop workflows.
15
+ *
16
+ * DropZoneElement can be styled and configured to visually indicate when a draggable item is hovering over it,
17
+ * and it can emit events to notify the application when an item has been dropped. This makes it a flexible
18
+ * building block for implementing custom drag-and-drop experiences across web and application interfaces.
19
+ *
20
+ * @element mosaik-drop-zone
21
+ * @category Interaction
8
22
  *
9
23
  * @fires dataTransferred - Fired when data is transferred to the drop zone.
10
24
  *
25
+ * @slot - The default slot for content displayed inside the drop zone.
26
+ *
27
+ * @example
28
+ * ```html
29
+ * <mosaik-drop-zone>
30
+ * <p>Drag files here to upload</p>
31
+ * </mosaik-drop-zone>
32
+ * ```
33
+ *
11
34
  * @public
12
35
  */
13
36
  export declare class DropZoneElement extends DropZoneElement_base implements IDropZoneElementProps {
@@ -19,7 +42,7 @@ export declare class DropZoneElement extends DropZoneElement_base implements IDr
19
42
  private _dragEnterSubscription;
20
43
  private _dragLeaveSubscription;
21
44
  private _dropSubscription;
22
- private _isDragging;
45
+ private _state;
23
46
  /**
24
47
  * @public
25
48
  */
@@ -34,14 +57,13 @@ export declare class DropZoneElement extends DropZoneElement_base implements IDr
34
57
  */
35
58
  static get is(): string;
36
59
  /**
37
- * Returns the `{@link isDragging}` property.
60
+ * Gets or sets the `state` property.
38
61
  *
39
- * @public
40
62
  * @readonly
41
63
  * @attr
42
64
  */
43
- get isDragging(): boolean;
44
- private set isDragging(value);
65
+ get state(): DropZoneState;
66
+ private set state(value);
45
67
  /**
46
68
  * Called when the data is transferred to the drop zone.
47
69
  * Provides reference to `{@link IEventDetail}` as event detail.
@@ -66,7 +88,31 @@ export declare class DropZoneElement extends DropZoneElement_base implements IDr
66
88
  /**
67
89
  * @protected
68
90
  */
69
- protected onDragDrop(event: DragEvent): void;
91
+ protected onDrag(event: DragEvent): void;
92
+ /**
93
+ * @protected
94
+ */
95
+ protected onDragOver(event: DragEvent): void;
96
+ /**
97
+ * @protected
98
+ */
99
+ protected onDragStart(event: DragEvent): void;
100
+ /**
101
+ * @protected
102
+ */
103
+ protected onDragEnd(event: DragEvent): void;
104
+ /**
105
+ * @protected
106
+ */
107
+ protected onDragEnter(event: DragEvent): void;
108
+ /**
109
+ * @protected
110
+ */
111
+ protected onDragLeave(event: DragEvent): void;
112
+ /**
113
+ * @protected
114
+ */
115
+ protected onDrop(event: DragEvent): void;
70
116
  }
71
117
  /**
72
118
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"DropZoneElement.d.ts","sourceRoot":"","sources":["../../../../../src/Controls/Components/Primitives/DropZone/DropZoneElement.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4D,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMtH,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;;AAQrE;;;;;;GAMG;AACH,qBAUa,eACT,SAAQ,oBACR,YAAW,qBAAqB;IAIhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkD;IACnF,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,qBAAqB,CAAoC;IACjE,OAAO,CAAC,sBAAsB,CAAoC;IAClE,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,sBAAsB,CAAoC;IAClE,OAAO,CAAC,sBAAsB,CAAoC;IAClE,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,WAAW,CAAU;IAM7B;;OAEG;;IAmBH;;;;;;;OAOG;IACH,WAAkB,EAAE,IAAI,MAAM,CAE7B;IAED;;;;;;OAMG;IACH,IAIW,UAAU,IAAI,OAAO,CAE/B;IAED,OAAO,KAAK,UAAU,QAKrB;IAED;;;;;;;OAOG;IACH,IACW,eAAe,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAE5E;IAMD;;;OAGG;IACa,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAY5C;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,GAAG,IAAI;IAIzE;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAW/C;AAED;;GAEG;AACH,yBAAiB,eAAe,CAAC;IAC7B,KAAY,KAAK,GAAG,qBAAqB,CAAC;CAC7C;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEX,UAAU,qBAAqB;QAE3B,kBAAkB,EAAE,eAAe,CAAC;KACvC;CACJ"}
1
+ {"version":3,"file":"DropZoneElement.d.ts","sourceRoot":"","sources":["../../../../../src/Controls/Components/Primitives/DropZone/DropZoneElement.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4D,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMtH,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKrE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAUa,eACT,SAAQ,oBACR,YAAW,qBAAqB;IAIhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkD;IACnF,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,qBAAqB,CAAoC;IACjE,OAAO,CAAC,sBAAsB,CAAoC;IAClE,OAAO,CAAC,oBAAoB,CAAoC;IAChE,OAAO,CAAC,sBAAsB,CAAoC;IAClE,OAAO,CAAC,sBAAsB,CAAoC;IAClE,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,MAAM,CAAgB;IAM9B;;OAEG;;IAmBH;;;;;;;OAOG;IACH,WAAkB,EAAE,IAAI,MAAM,CAE7B;IAED;;;;;OAKG;IACH,IACW,KAAK,IAAI,aAAa,CAAwB;IACzD,OAAO,KAAK,KAAK,QAKhB;IAED;;;;;;;OAOG;IACH,IACW,eAAe,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAE5E;IAMD;;;OAGG;IACa,iBAAiB,IAAI,IAAI;IAYzB,oBAAoB,IAAI,IAAI;IAY5C;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,GAAG,IAAI;IAIzE;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAWxC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAW7C;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAW3C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAqB7C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAkB7C;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAkB3C;AAED;;GAEG;AACH,yBAAiB,eAAe,CAAC;IAC7B,KAAY,KAAK,GAAG,qBAAqB,CAAC;CAC7C;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,kBAAkB,EAAE,eAAe,CAAC;KACvC;CACJ"}
@@ -21,12 +21,35 @@ import { dropZoneElementJoyStyle } from './Themes/DropZoneElement.Joy';
21
21
  import { dropZoneElementRetroStyle } from './Themes/DropZoneElement.Retro';
22
22
  import { dropZoneElementCosmopolitanStyle } from './Themes/DropZoneElement.Cosmopolitan';
23
23
  import { Themeable } from '../../../Behaviors/Themeable';
24
+ import { DropZoneState } from '../../../Types/DropZoneState';
24
25
  // #endregion
25
26
  /**
26
- * The `{@link DropZoneElement}` element.
27
+ * DropZoneElement - An interactive component that defines a target area for drag-and-drop operations.
28
+ *
29
+ * @description
30
+ * The DropZoneElement provides a designated area within the interface where users can drop draggable items.
31
+ * It is commonly used in applications that require file uploads, reordering of elements, or custom drag-and-drop
32
+ * interactions. By offering a clear and accessible drop target, this component helps improve usability and
33
+ * guides users through intuitive drag-and-drop workflows.
34
+ *
35
+ * DropZoneElement can be styled and configured to visually indicate when a draggable item is hovering over it,
36
+ * and it can emit events to notify the application when an item has been dropped. This makes it a flexible
37
+ * building block for implementing custom drag-and-drop experiences across web and application interfaces.
38
+ *
39
+ * @element mosaik-drop-zone
40
+ * @category Interaction
27
41
  *
28
42
  * @fires dataTransferred - Fired when data is transferred to the drop zone.
29
43
  *
44
+ * @slot - The default slot for content displayed inside the drop zone.
45
+ *
46
+ * @example
47
+ * ```html
48
+ * <mosaik-drop-zone>
49
+ * <p>Drag files here to upload</p>
50
+ * </mosaik-drop-zone>
51
+ * ```
52
+ *
30
53
  * @public
31
54
  */
32
55
  let DropZoneElement = class DropZoneElement extends Themeable(Disableable(Appearanceable(Variantable(CustomElement)))) {
@@ -39,7 +62,7 @@ let DropZoneElement = class DropZoneElement extends Themeable(Disableable(Appear
39
62
  _dragEnterSubscription;
40
63
  _dragLeaveSubscription;
41
64
  _dropSubscription;
42
- _isDragging;
65
+ _state;
43
66
  // #endregion
44
67
  // #region Ctor
45
68
  /**
@@ -54,7 +77,7 @@ let DropZoneElement = class DropZoneElement extends Themeable(Disableable(Appear
54
77
  this._dragEnterSubscription = null;
55
78
  this._dragLeaveSubscription = null;
56
79
  this._dropSubscription = null;
57
- this._isDragging = false;
80
+ this._state = 'none';
58
81
  this._dataTransferred = new HTMLElementEventEmitter(this, 'dataTransferred');
59
82
  }
60
83
  // #endregion
@@ -71,19 +94,16 @@ let DropZoneElement = class DropZoneElement extends Themeable(Disableable(Appear
71
94
  return 'mosaik-drop-zone';
72
95
  }
73
96
  /**
74
- * Returns the `{@link isDragging}` property.
97
+ * Gets or sets the `state` property.
75
98
  *
76
- * @public
77
99
  * @readonly
78
100
  * @attr
79
101
  */
80
- get isDragging() {
81
- return this._isDragging;
82
- }
83
- set isDragging(value) {
84
- if (this._isDragging !== value) {
85
- this._isDragging = value;
86
- this.requestUpdate('isDragging');
102
+ get state() { return this._state; }
103
+ set state(value) {
104
+ if (this._state !== value) {
105
+ this._state = value;
106
+ this.requestUpdate('state');
87
107
  }
88
108
  }
89
109
  /**
@@ -105,13 +125,13 @@ let DropZoneElement = class DropZoneElement extends Themeable(Disableable(Appear
105
125
  */
106
126
  connectedCallback() {
107
127
  super.connectedCallback();
108
- this._dragSubscription = this.on('drag', (e) => this.onDragDrop(e));
109
- this._dragOverSubscription = this.on('dragover', (e) => this.onDragDrop(e));
110
- this._dragStartSubscription = this.on('dragstart', (e) => this.onDragDrop(e));
111
- this._dragEndSubscription = this.on('dragend', (e) => this.onDragDrop(e));
112
- this._dragEnterSubscription = this.on('dragenter', (e) => this.onDragDrop(e));
113
- this._dragLeaveSubscription = this.on('dragleave', (e) => this.onDragDrop(e));
114
- this._dropSubscription = this.on('drop', (e) => this.onDragDrop(e));
128
+ this._dragSubscription = this.on('drag', (e) => this.onDrag(e));
129
+ this._dragOverSubscription = this.on('dragover', (e) => this.onDragOver(e));
130
+ this._dragStartSubscription = this.on('dragstart', (e) => this.onDragStart(e));
131
+ this._dragEndSubscription = this.on('dragend', (e) => this.onDragEnd(e));
132
+ this._dragEnterSubscription = this.on('dragenter', (e) => this.onDragEnter(e));
133
+ this._dragLeaveSubscription = this.on('dragleave', (e) => this.onDragLeave(e));
134
+ this._dropSubscription = this.on('drop', (e) => this.onDrop(e));
115
135
  }
116
136
  disconnectedCallback() {
117
137
  super.disconnectedCallback();
@@ -134,22 +154,109 @@ let DropZoneElement = class DropZoneElement extends Themeable(Disableable(Appear
134
154
  /**
135
155
  * @protected
136
156
  */
137
- onDragDrop(event) {
157
+ onDrag(event) {
158
+ if (this.disabled) {
159
+ return;
160
+ }
161
+ event.preventDefault();
162
+ event.stopPropagation();
163
+ this.state = event.type;
164
+ }
165
+ /**
166
+ * @protected
167
+ */
168
+ onDragOver(event) {
169
+ if (this.disabled) {
170
+ return;
171
+ }
138
172
  event.preventDefault();
139
173
  event.stopPropagation();
174
+ if (event.dataTransfer) {
175
+ event.dataTransfer.dropEffect = event.dataTransfer.effectAllowed === 'move' ? 'move' : 'copy';
176
+ }
177
+ this.state = event.type;
178
+ }
179
+ /**
180
+ * @protected
181
+ */
182
+ onDragStart(event) {
140
183
  if (this.disabled) {
141
- // TODO: handle disabled state
184
+ return;
142
185
  }
186
+ event.preventDefault();
187
+ event.stopPropagation();
188
+ this.state = event.type;
189
+ }
190
+ /**
191
+ * @protected
192
+ */
193
+ onDragEnd(event) {
194
+ if (this.disabled) {
195
+ return;
196
+ }
197
+ event.preventDefault();
198
+ event.stopPropagation();
199
+ this.state = event.type;
200
+ }
201
+ /**
202
+ * @protected
203
+ */
204
+ onDragEnter(event) {
205
+ if (this.disabled) {
206
+ return;
207
+ }
208
+ event.preventDefault();
209
+ event.stopPropagation();
210
+ // IMPORTANT: Drag events fire not only when entering or leaving the host as a whole,
211
+ // but also when moving between child elements inside the same host. Without this guard,
212
+ // every small movement inside the drop zone would incorrectly trigger a "leave"/"enter"
213
+ // state change, causing flickering and broken visual feedback. By explicitly checking
214
+ // whether the event path still includes the host element, we can differentiate between
215
+ // internal transitions (safe to ignore) and real exits/entries from the drop zone.
216
+ if (event.composedPath().includes(this)) {
217
+ this.state = 'dragenter';
218
+ }
219
+ this.state = event.type;
220
+ }
221
+ /**
222
+ * @protected
223
+ */
224
+ onDragLeave(event) {
225
+ if (this.disabled) {
226
+ return;
227
+ }
228
+ event.preventDefault();
229
+ event.stopPropagation();
230
+ // IMPORTANT: Not all browsers provide reliable `relatedTarget` information for drag
231
+ // operations, especially when dragging external data (e.g. files from the OS). Using
232
+ // `composedPath()` ensures that we inspect the actual event propagation path through
233
+ // the DOM and Shadow DOM. This makes the drop zone detection more robust and avoids
234
+ // false positives when the user is still inside the component boundaries.
235
+ if (event.composedPath().includes(this)) {
236
+ this.state = event.type;
237
+ }
238
+ }
239
+ /**
240
+ * @protected
241
+ */
242
+ onDrop(event) {
243
+ if (this.disabled) {
244
+ return;
245
+ }
246
+ event.preventDefault();
247
+ event.stopPropagation();
248
+ this.state = event.type;
249
+ this.onDataTransferred({ data: event.dataTransfer });
250
+ setTimeout(() => {
251
+ this.state = 'none';
252
+ }, 250);
143
253
  }
144
254
  };
145
255
  __decorate([
146
- Attribute({
147
- type: Boolean,
148
- useDefault: true
149
- }),
150
- __metadata("design:type", Boolean),
151
- __metadata("design:paramtypes", [Boolean])
152
- ], DropZoneElement.prototype, "isDragging", null);
256
+ Attribute({ type: DropZoneState }),
257
+ __metadata("design:type", String),
258
+ __metadata("design:paramtypes", [String])
259
+ ], DropZoneElement.prototype, "state", null);
153
260
  __decorate([
154
261
  Emit({ eventName: 'dataTransferred' }),
155
262
  __metadata("design:type", Object),
@@ -1 +1 @@
1
- {"version":3,"file":"DropZoneElement.js","sourceRoot":"","sources":["../../../../../src/Controls/Components/Primitives/DropZone/DropZoneElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropZoneElement.js","sourceRoot":"","sources":["../../../../../src/Controls/Components/Primitives/DropZone/DropZoneElement.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { DropZoneElement } from '../DropZoneElement';
6
6
  * @public
7
7
  */
8
8
  export interface IDropZoneDataTransferEventDetail extends IEventDetail<DropZoneElement> {
9
- readonly data: DataTransfer;
9
+ readonly data: DataTransfer | null;
10
10
  }
11
11
  /**
12
12
  * Represents the `IDropZoneDataTransferEvent` interface.
@@ -1 +1 @@
1
- {"version":3,"file":"IDropZoneDataEventDetail.d.ts","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Events/IDropZoneDataEventDetail.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D;;;;GAIG;AACH,MAAM,WAAW,gCAAiC,SAAQ,YAAY,CAAC,eAAe,CAAC;IAInF,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAI/B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA2B,SAAQ,WAAW,CAAC,gCAAgC,CAAC;IAI7F,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAIpC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,mBAAmB;QACzB,eAAe,EAAE,0BAA0B,CAAC;KAC/C;CACJ"}
1
+ {"version":3,"file":"IDropZoneDataEventDetail.d.ts","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Events/IDropZoneDataEventDetail.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D;;;;GAIG;AACH,MAAM,WAAW,gCAAiC,SAAQ,YAAY,CAAC,eAAe,CAAC;IAInF,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAItC;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA2B,SAAQ,WAAW,CAAC,gCAAgC,CAAC;IAI7F,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAIpC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,mBAAmB;QACzB,eAAe,EAAE,0BAA0B,CAAC;KAC/C;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"IDropZoneElementProps.d.ts","sourceRoot":"","sources":["../../../../../src/Controls/Components/Primitives/DropZone/IDropZoneElementProps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE;;;;GAIG;AAEH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB;CACxG"}
1
+ {"version":3,"file":"IDropZoneElementProps.d.ts","sourceRoot":"","sources":["../../../../../src/Controls/Components/Primitives/DropZone/IDropZoneElementProps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE;;;;GAIG;AAEH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB;CAExG"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropZoneElement.Cosmopolitan.d.ts","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.ts"],"names":[],"mappings":"AASA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,SAAS,CAwD5D"}
1
+ {"version":3,"file":"DropZoneElement.Cosmopolitan.d.ts","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.ts"],"names":[],"mappings":"AASA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,SAAS,CAiL5D"}
@@ -13,6 +13,11 @@ import { css } from '../../../../../Dom/Css';
13
13
  export function dropZoneElementCosmopolitanStyle() {
14
14
  return css `
15
15
  :host {
16
+ --drop-zone-background-color: var(--cosmopolitan-scheme-background);
17
+ --drop-zone-border-color: var(--cosmopolitan-scheme-highlight);
18
+ --drop-zone-border-radius: var(--cosmopolitan-layout-radius);
19
+ --drop-zone-border-style: solid;
20
+ --drop-zone-border-width: var(--cosmopolitan-layout-thickness);
16
21
  --drop-zone-font-family: unset;
17
22
  --drop-zone-font-letter-spacing: unset;
18
23
  --drop-zone-font-line-height: unset;
@@ -58,11 +63,127 @@ export function dropZoneElementCosmopolitanStyle() {
58
63
  }
59
64
 
60
65
  :host {
61
- border-style: dashed;
66
+ border-color: var(--drop-zone-border-color);
67
+ border-radius: var(--drop-zone-border-radius);
68
+ border-style: var(--drop-zone-border-style);
69
+ border-width: var(--drop-zone-border-width);
70
+ --dz-surface: transparent;
71
+ --dz-accent: #5aa6ff;
72
+ --dz-border: var(--dz-accent);
73
+ --dz-radius: 14px;
74
+ --dz-pad: 1.25rem;
75
+ --dz-duration: .22s;
76
+ --dz-shadow: 0 8px 24px #00000047;
77
+ --dz-dash-size: 16px;
78
+ --dz-dash-thickness: 2px;
79
+ --dz-dash-offset: 0px;
62
80
  }
63
81
 
64
- :host:hover:not([disabled]:not([disabled="false"])), :host:active:not([disabled]:not([disabled="false"])), :host:focus:not([disabled]:not([disabled="false"])), :host[is-dragging]:not([disabled]:not([disabled="false"])) {
65
- border-style: solid;
82
+ @keyframes dz-dash-move {
83
+ to {
84
+ --dz-dash-offset: var(--dz-dash-size, 16px);
85
+ }
86
+ }
87
+
88
+ @keyframes dz-glow {
89
+ from {
90
+ box-shadow: 0 0 0 0 color-mix(in oklab, var(--dz-accent, #5aa6ff) 45%, transparent);
91
+ }
92
+
93
+ to {
94
+ box-shadow: 0 0 0 8px color-mix(in oklab, var(--dz-accent, #5aa6ff) 0%, transparent);
95
+ }
96
+ }
97
+
98
+ :host([disabled]:not([disabled="false"])) {
99
+ transition: opacity var(--dz-duration, .22s) ease, filter var(--dz-duration, .22s) ease, transform var(--dz-duration, .22s) ease;
100
+ opacity: .6;
101
+ filter: saturate(.75);
102
+ cursor: not-allowed;
103
+ pointer-events: none;
104
+ transform: scale(.998);
105
+ }
106
+
107
+ :host([state="none"]) {
108
+ padding: var(--dz-pad);
109
+ border: var(--dz-dash-thickness) solid transparent;
110
+ background: linear-gradient(var(--dz-surface), var(--dz-surface)) padding-box, repeating-linear-gradient(90deg, var(--dz-border) 0 calc(var(--dz-dash-size) / 2), transparent calc(var(--dz-dash-size) / 2) var(--dz-dash-size)) border-box;
111
+ background-origin: padding-box, border-box;
112
+ background-clip: padding-box, border-box;
113
+ background-position: 0 0, var(--dz-dash-offset) 0;
114
+ background-size: auto, var(--dz-dash-size) var(--dz-dash-thickness);
115
+ transition: transform var(--dz-duration) ease, box-shadow var(--dz-duration) ease, background-color var(--dz-duration) ease, opacity var(--dz-duration) ease, filter var(--dz-duration) ease;
116
+ display: block;
117
+ position: relative;
118
+ }
119
+
120
+ :host([state="drag"]) {
121
+ box-shadow: var(--dz-shadow);
122
+ transition: transform var(--dz-duration, .22s) ease, box-shadow var(--dz-duration, .22s) ease;
123
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, repeating-linear-gradient(90deg, var(--dz-border) 0 calc(var(--dz-dash-size, 16px) / 2), transparent calc(var(--dz-dash-size, 16px) / 2) var(--dz-dash-size, 16px)) border-box;
124
+ background-origin: padding-box, border-box;
125
+ background-clip: padding-box, border-box;
126
+ background-position: 0 0, var(--dz-dash-offset) 0;
127
+ background-size: auto, var(--dz-dash-size, 16px) var(--dz-dash-thickness, 2px);
128
+ animation: .7s linear infinite dz-dash-move;
129
+ transform: scale(1.01);
130
+ }
131
+
132
+ :host([state="dragover"]) {
133
+ transition: transform var(--dz-duration, .22s) ease;
134
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, linear-gradient(var(--dz-accent, #5aa6ff), var(--dz-accent, #5aa6ff)) border-box;
135
+ background-origin: padding-box, border-box;
136
+ background-clip: padding-box, border-box;
137
+ animation: .5s linear infinite dz-dash-move, .9s ease-in-out infinite alternate dz-glow;
138
+ transform: scale(1.02);
139
+ }
140
+
141
+ :host([state="dragstart"]) {
142
+ transition: transform var(--dz-duration, .22s) ease;
143
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, repeating-linear-gradient(90deg, var(--dz-border) 0 calc(var(--dz-dash-size, 16px) / 2), transparent calc(var(--dz-dash-size, 16px) / 2) var(--dz-dash-size, 16px)) border-box;
144
+ background-origin: padding-box, border-box;
145
+ background-clip: padding-box, border-box;
146
+ background-position: 0 0, var(--dz-dash-offset) 0;
147
+ background-size: auto, var(--dz-dash-size, 16px) var(--dz-dash-thickness, 2px);
148
+ animation: .65s linear infinite dz-dash-move;
149
+ transform: scale(1.012);
150
+ }
151
+
152
+ :host([state="dragend"]) {
153
+ opacity: .92;
154
+ transition: opacity var(--dz-duration, .22s) ease, transform var(--dz-duration, .22s) ease;
155
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, linear-gradient(var(--dz-border), var(--dz-border)) border-box;
156
+ background-origin: padding-box, border-box;
157
+ background-clip: padding-box, border-box;
158
+ transform: scale(1);
159
+ }
160
+
161
+ :host([state="dragenter"]) {
162
+ transition: transform var(--dz-duration, .22s) ease;
163
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, linear-gradient(var(--dz-accent, #5aa6ff), var(--dz-accent, #5aa6ff)) border-box;
164
+ background-origin: padding-box, border-box;
165
+ background-clip: padding-box, border-box;
166
+ animation: .6s linear infinite dz-dash-move;
167
+ transform: scale(1.015);
168
+ }
169
+
170
+ :host([state="dragleave"]) {
171
+ transition: transform var(--dz-duration, .22s) ease;
172
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, repeating-linear-gradient(90deg, var(--dz-border) 0 calc(var(--dz-dash-size, 16px) / 2), transparent calc(var(--dz-dash-size, 16px) / 2) var(--dz-dash-size, 16px)) border-box;
173
+ background-origin: padding-box, border-box;
174
+ background-clip: padding-box, border-box;
175
+ background-position: 0 0, var(--dz-dash-offset) 0;
176
+ background-size: auto, var(--dz-dash-size, 16px) var(--dz-dash-thickness, 2px);
177
+ animation: .6s linear infinite dz-dash-move;
178
+ transform: scale(1.005);
179
+ }
180
+
181
+ :host([state="drop"]) {
182
+ transition: transform var(--dz-duration, .22s) ease;
183
+ background: linear-gradient(var(--dz-surface, transparent), var(--dz-surface, transparent)) padding-box, linear-gradient(var(--dz-accent, #5aa6ff), var(--dz-accent, #5aa6ff)) border-box;
184
+ background-origin: padding-box, border-box;
185
+ background-clip: padding-box, border-box;
186
+ transform: scale(1.005);
66
187
  }
67
188
 
68
189
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"DropZoneElement.Cosmopolitan.js","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mBAAmB;AACnB,yCAAyC;AACzC,qGAAqG;AACrG,oBAAoB;AACpB,iFAAiF;AAEjF,kBAAkB;AAElB,OAAO,EAAE,GAAG,EAAkB,MAAM,wBAAwB,CAAC;AAE7D,aAAa;AAEb;;GAEG;AACH,MAAM,UAAU,gCAAgC;IAC5C,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsDT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"DropZoneElement.Cosmopolitan.js","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Cosmopolitan.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mBAAmB;AACnB,yCAAyC;AACzC,qGAAqG;AACrG,oBAAoB;AACpB,iFAAiF;AAEjF,kBAAkB;AAElB,OAAO,EAAE,GAAG,EAAkB,MAAM,wBAAwB,CAAC;AAE7D,aAAa;AAEb;;GAEG;AACH,MAAM,UAAU,gCAAgC;IAC5C,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+KT,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropZoneElement.Joy.d.ts","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Joy.ts"],"names":[],"mappings":"AASA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,CA8DnD"}
1
+ {"version":3,"file":"DropZoneElement.Joy.d.ts","sourceRoot":"","sources":["../../../../../../src/Controls/Components/Primitives/DropZone/Themes/DropZoneElement.Joy.ts"],"names":[],"mappings":"AASA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,CAqNnD"}