@umbraco-cms/backoffice 14.0.0--preview005-c4fa2a31 → 14.0.0--preview005-0faefb02

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 (23) hide show
  1. package/dist-cms/packages/core/components/input-image-cropper/image-cropper-focus-setter.element.js +1 -1
  2. package/dist-cms/packages/core/components/input-image-cropper/image-cropper-preview.element.js +1 -1
  3. package/dist-cms/packages/core/components/input-image-cropper/image-cropper.element.js +1 -1
  4. package/dist-cms/packages/core/repository/repository-items.manager.js +27 -9
  5. package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.d.ts +0 -1
  6. package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.js +0 -3
  7. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.d.ts +1 -2
  8. package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +32 -8
  9. package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +0 -1
  10. package/dist-cms/packages/media/media/components/input-media/input-media.element.js +28 -12
  11. package/dist-cms/packages/media/media-types/components/input-media-type/input-media-type.element.d.ts +0 -1
  12. package/dist-cms/packages/media/media-types/components/input-media-type/input-media-type.element.js +0 -3
  13. package/dist-cms/packages/members/member-types/components/input-member-type/input-member-type.element.d.ts +0 -1
  14. package/dist-cms/packages/members/member-types/components/input-member-type/input-member-type.element.js +1 -4
  15. package/dist-cms/packages/members/members/components/input-member/input-member.element.d.ts +4 -1
  16. package/dist-cms/packages/members/members/components/input-member/input-member.element.js +36 -4
  17. package/dist-cms/shared/utils/index.d.ts +1 -0
  18. package/dist-cms/shared/utils/index.js +1 -0
  19. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  20. package/dist-cms/vscode-html-custom-data.json +4 -4
  21. package/package.json +1 -1
  22. /package/dist-cms/{packages/core/components/input-image-cropper/mathUtils.d.ts → shared/utils/math.d.ts} +0 -0
  23. /package/dist-cms/{packages/core/components/input-image-cropper/mathUtils.js → shared/utils/math.js} +0 -0
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _UmbImageCropperFocusSetterElement_instances, _UmbImageCropperFocusSetterElement_DOT_RADIUS, _UmbImageCropperFocusSetterElement_addEventListeners, _UmbImageCropperFocusSetterElement_removeEventListeners, _UmbImageCropperFocusSetterElement_onStartDrag, _UmbImageCropperFocusSetterElement_onEndDrag, _UmbImageCropperFocusSetterElement_onDrag, _UmbImageCropperFocusSetterElement_onSetFocalPoint;
13
- import { clamp } from './mathUtils.js';
13
+ import { clamp } from '../../../../shared/utils/index.js';
14
14
  import { LitElement, css, html, nothing, customElement, property, query, } from '../../../../external/lit/index.js';
15
15
  let UmbImageCropperFocusSetterElement = class UmbImageCropperFocusSetterElement extends LitElement {
16
16
  constructor() {
@@ -16,7 +16,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
16
16
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
17
  };
18
18
  var _UmbImageCropperPreviewElement_instances, _UmbImageCropperPreviewElement_focalPoint, _UmbImageCropperPreviewElement_initializeCrop, _UmbImageCropperPreviewElement_onFocalPointUpdated;
19
- import { clamp, calculateExtrapolatedValue } from './mathUtils.js';
19
+ import { calculateExtrapolatedValue, clamp } from '../../../../shared/utils/index.js';
20
20
  import { LitElement, css, html, nothing, customElement, property, query } from '../../../../external/lit/index.js';
21
21
  let UmbImageCropperPreviewElement = class UmbImageCropperPreviewElement extends LitElement {
22
22
  constructor() {
@@ -16,7 +16,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
16
16
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
17
  };
18
18
  var _UmbImageCropperElement_instances, _UmbImageCropperElement_VIEWPORT_PADDING, _UmbImageCropperElement_MAX_SCALE_FACTOR, _UmbImageCropperElement_SCROLL_ZOOM_SPEED, _UmbImageCropperElement_minImageScale, _UmbImageCropperElement_maxImageScale, _UmbImageCropperElement_oldImageScale, _UmbImageCropperElement_isDragging, _UmbImageCropperElement_mouseOffsetX, _UmbImageCropperElement_mouseOffsetY, _UmbImageCropperElement_getImageScale_get, _UmbImageCropperElement_addEventListeners, _UmbImageCropperElement_removeEventListeners, _UmbImageCropperElement_initializeCrop, _UmbImageCropperElement_updateImageScale, _UmbImageCropperElement_updateImagePosition, _UmbImageCropperElement_calculateCropCoordinates, _UmbImageCropperElement_toLocalPosition, _UmbImageCropperElement_onSave, _UmbImageCropperElement_onCancel, _UmbImageCropperElement_onReset, _UmbImageCropperElement_onSliderUpdate, _UmbImageCropperElement_onStartDrag, _UmbImageCropperElement_onDrag, _UmbImageCropperElement_onEndDrag, _UmbImageCropperElement_onWheel;
19
- import { clamp, calculateExtrapolatedValue, inverseLerp, lerp } from './mathUtils.js';
19
+ import { calculateExtrapolatedValue, clamp, inverseLerp, lerp } from '../../../../shared/utils/index.js';
20
20
  import { customElement, property, query, state, LitElement, css, html, } from '../../../../external/lit/index.js';
21
21
  let UmbImageCropperElement = class UmbImageCropperElement extends LitElement {
22
22
  constructor() {
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
- var _UmbRepositoryItemsManager_instances, _UmbRepositoryItemsManager_getUnique, _UmbRepositoryItemsManager_init, _UmbRepositoryItemsManager_uniques, _UmbRepositoryItemsManager_items, _UmbRepositoryItemsManager_requestItems;
12
+ var _UmbRepositoryItemsManager_instances, _UmbRepositoryItemsManager_getUnique, _UmbRepositoryItemsManager_init, _UmbRepositoryItemsManager_uniques, _UmbRepositoryItemsManager_items, _UmbRepositoryItemsManager_requestItems, _UmbRepositoryItemsManager_sortByUniques;
13
13
  import { UmbArrayState } from '../../../libs/observable-api/index.js';
14
14
  import { umbExtensionsRegistry } from '../extension-registry/index.js';
15
15
  import { UmbExtensionApiInitializer } from '../../../libs/extension-api/index.js';
@@ -36,19 +36,28 @@ export class UmbRepositoryItemsManager extends UmbBaseController {
36
36
  __classPrivateFieldSet(this, _UmbRepositoryItemsManager_init, new UmbExtensionApiInitializer(this, umbExtensionsRegistry, repositoryAlias, [this], (permitted, repository) => {
37
37
  this.repository = permitted ? repository.api : undefined;
38
38
  }).asPromise(), "f");
39
+ this.observe(this.uniques, (uniques) => {
40
+ if (uniques.length === 0) {
41
+ __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").setValue([]);
42
+ return;
43
+ }
44
+ // Check if we already have the items, and then just sort them:
45
+ const items = __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").getValue();
46
+ if (uniques.length === items.length &&
47
+ uniques.every((unique) => items.find((item) => __classPrivateFieldGet(this, _UmbRepositoryItemsManager_getUnique, "f").call(this, item) === unique))) {
48
+ __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").setValue(__classPrivateFieldGet(this, _UmbRepositoryItemsManager_instances, "m", _UmbRepositoryItemsManager_sortByUniques).call(this, items));
49
+ }
50
+ else {
51
+ // We need to load new items, so ...
52
+ __classPrivateFieldGet(this, _UmbRepositoryItemsManager_instances, "m", _UmbRepositoryItemsManager_requestItems).call(this);
53
+ }
54
+ });
39
55
  }
40
56
  getUniques() {
41
57
  return __classPrivateFieldGet(this, _UmbRepositoryItemsManager_uniques, "f").value;
42
58
  }
43
59
  setUniques(uniques) {
44
60
  __classPrivateFieldGet(this, _UmbRepositoryItemsManager_uniques, "f").setValue(uniques);
45
- //TODO: Check if it's safe to call requestItems here.
46
- // We don't have to request items if there is no uniques.
47
- if (uniques.length === 0) {
48
- __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").setValue([]);
49
- return;
50
- }
51
- __classPrivateFieldGet(this, _UmbRepositoryItemsManager_instances, "m", _UmbRepositoryItemsManager_requestItems).call(this);
52
61
  }
53
62
  getItems() {
54
63
  return __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").value;
@@ -62,6 +71,15 @@ _UmbRepositoryItemsManager_getUnique = new WeakMap(), _UmbRepositoryItemsManager
62
71
  // This is where this.#getUnique comes in play. Unless that can come from the repository, but that collides with the idea of having a multi-type repository. If that happens.
63
72
  const { data, asObservable } = await this.repository.requestItems(this.getUniques());
64
73
  if (asObservable) {
65
- this.observe(asObservable(), (data) => __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").setValue(data), '_observeRequestedItems');
74
+ this.observe(asObservable(), (data) => {
75
+ __classPrivateFieldGet(this, _UmbRepositoryItemsManager_items, "f").setValue(__classPrivateFieldGet(this, _UmbRepositoryItemsManager_instances, "m", _UmbRepositoryItemsManager_sortByUniques).call(this, data));
76
+ }, '_observeRequestedItems');
66
77
  }
78
+ }, _UmbRepositoryItemsManager_sortByUniques = function _UmbRepositoryItemsManager_sortByUniques(data) {
79
+ const uniques = this.getUniques();
80
+ return [...data].sort((a, b) => {
81
+ const aIndex = uniques.indexOf(__classPrivateFieldGet(this, _UmbRepositoryItemsManager_getUnique, "f").call(this, a) ?? '');
82
+ const bIndex = uniques.indexOf(__classPrivateFieldGet(this, _UmbRepositoryItemsManager_getUnique, "f").call(this, b) ?? '');
83
+ return aIndex - bIndex;
84
+ });
67
85
  };
@@ -45,7 +45,6 @@ export declare class UmbInputDocumentTypeElement extends UmbInputDocumentTypeEle
45
45
  private _items?;
46
46
  private _editDocumentTypePath;
47
47
  constructor();
48
- connectedCallback(): void;
49
48
  protected getFormElement(): undefined;
50
49
  render(): import("lit-html").TemplateResult<1>;
51
50
  static styles: import("../../../../../external/lit/index.js").CSSResult[];
@@ -85,9 +85,6 @@ let UmbInputDocumentTypeElement = class UmbInputDocumentTypeElement extends Form
85
85
  .observeRouteBuilder((routeBuilder) => {
86
86
  this._editDocumentTypePath = routeBuilder({});
87
87
  });
88
- }
89
- connectedCallback() {
90
- super.connectedCallback();
91
88
  this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && __classPrivateFieldGet(this, _UmbInputDocumentTypeElement_pickerContext, "f").getSelection().length < this.min);
92
89
  this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && __classPrivateFieldGet(this, _UmbInputDocumentTypeElement_pickerContext, "f").getSelection().length > this.max);
93
90
  this.observe(__classPrivateFieldGet(this, _UmbInputDocumentTypeElement_pickerContext, "f").selection, (selection) => (super.value = selection.join(',')));
@@ -39,9 +39,8 @@ export declare class UmbInputDocumentElement extends UmbInputDocumentElement_bas
39
39
  showOpenButton?: boolean;
40
40
  ignoreUserStartNodes?: boolean;
41
41
  set value(idsString: string);
42
- private _items?;
42
+ private _items;
43
43
  constructor();
44
- connectedCallback(): void;
45
44
  protected getFormElement(): undefined;
46
45
  render(): import("lit-html").TemplateResult<1>;
47
46
  static styles: import("../../../../../external/lit/index.js").CSSResult[];
@@ -9,12 +9,22 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _UmbInputDocumentElement_instances, _UmbInputDocumentElement_pickerContext, _UmbInputDocumentElement_pickableFilter, _UmbInputDocumentElement_openPicker, _UmbInputDocumentElement_openItem, _UmbInputDocumentElement_renderItems, _UmbInputDocumentElement_renderAddButton, _UmbInputDocumentElement_renderItem, _UmbInputDocumentElement_renderIsTrashed, _UmbInputDocumentElement_renderOpenButton;
12
+ var _UmbInputDocumentElement_instances, _UmbInputDocumentElement_sorter, _UmbInputDocumentElement_pickerContext, _UmbInputDocumentElement_pickableFilter, _UmbInputDocumentElement_openPicker, _UmbInputDocumentElement_openItem, _UmbInputDocumentElement_renderItems, _UmbInputDocumentElement_renderAddButton, _UmbInputDocumentElement_renderItem, _UmbInputDocumentElement_renderIcon, _UmbInputDocumentElement_renderIsTrashed, _UmbInputDocumentElement_renderOpenButton;
13
13
  import { UmbDocumentPickerContext } from './input-document.context.js';
14
14
  import { css, html, customElement, property, state, ifDefined, repeat } from '../../../../../external/lit/index.js';
15
15
  import { FormControlMixin } from '../../../../../external/uui/index.js';
16
16
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
17
17
  import { splitStringToArray } from '../../../../../shared/utils/index.js';
18
+ import { UmbSorterController } from '../../../../core/sorter/index.js';
19
+ const SORTER_CONFIG = {
20
+ compareElementToModel: (element, model) => {
21
+ return element.getAttribute('detail') === model;
22
+ },
23
+ querySelectModelToElement: () => null,
24
+ identifier: 'Umb.SorterIdentifier.InputDocument',
25
+ itemSelector: 'uui-ref-node',
26
+ containerSelector: 'uui-ref-list',
27
+ };
18
28
  let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlMixin(UmbLitElement) {
19
29
  /**
20
30
  * This is a minimum amount of selected items in this input.
@@ -45,6 +55,7 @@ let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlM
45
55
  }
46
56
  set selectedIds(ids) {
47
57
  __classPrivateFieldGet(this, _UmbInputDocumentElement_pickerContext, "f").setSelection(ids);
58
+ __classPrivateFieldGet(this, _UmbInputDocumentElement_sorter, "f").setModel(ids);
48
59
  }
49
60
  set value(idsString) {
50
61
  // Its with full purpose we don't call super.value, as thats being handled by the observation of the context selection.
@@ -53,6 +64,12 @@ let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlM
53
64
  constructor() {
54
65
  super();
55
66
  _UmbInputDocumentElement_instances.add(this);
67
+ _UmbInputDocumentElement_sorter.set(this, new UmbSorterController(this, {
68
+ ...SORTER_CONFIG,
69
+ onChange: ({ model }) => {
70
+ this.selectedIds = model;
71
+ },
72
+ }));
56
73
  /**
57
74
  * Min validation message.
58
75
  * @type {boolean}
@@ -67,6 +84,7 @@ let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlM
67
84
  * @default
68
85
  */
69
86
  this.maxMessage = 'This field exceeds the allowed amount of items';
87
+ this._items = [];
70
88
  _UmbInputDocumentElement_pickerContext.set(this, new UmbDocumentPickerContext(this));
71
89
  _UmbInputDocumentElement_pickableFilter.set(this, (item) => {
72
90
  if (this.allowedContentTypeIds && this.allowedContentTypeIds.length > 0) {
@@ -74,9 +92,6 @@ let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlM
74
92
  }
75
93
  return true;
76
94
  });
77
- }
78
- connectedCallback() {
79
- super.connectedCallback();
80
95
  this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && __classPrivateFieldGet(this, _UmbInputDocumentElement_pickerContext, "f").getSelection().length < this.min);
81
96
  this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && __classPrivateFieldGet(this, _UmbInputDocumentElement_pickerContext, "f").getSelection().length > this.max);
82
97
  this.observe(__classPrivateFieldGet(this, _UmbInputDocumentElement_pickerContext, "f").selection, (selection) => (super.value = selection.join(',')));
@@ -89,6 +104,7 @@ let UmbInputDocumentElement = class UmbInputDocumentElement extends FormControlM
89
104
  return html ` ${__classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderItems).call(this)} ${__classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderAddButton).call(this)} `;
90
105
  }
91
106
  };
107
+ _UmbInputDocumentElement_sorter = new WeakMap();
92
108
  _UmbInputDocumentElement_pickerContext = new WeakMap();
93
109
  _UmbInputDocumentElement_pickableFilter = new WeakMap();
94
110
  _UmbInputDocumentElement_instances = new WeakSet();
@@ -107,9 +123,8 @@ _UmbInputDocumentElement_openItem = function _UmbInputDocumentElement_openItem(i
107
123
  _UmbInputDocumentElement_renderItems = function _UmbInputDocumentElement_renderItems() {
108
124
  if (!this._items)
109
125
  return;
110
- // TODO: Add sorting. [LK]
111
- return html `<uui-ref-list
112
- >${repeat(this._items, (item) => item.id, (item) => __classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderItem).call(this, item))}
126
+ return html `<uui-ref-list>
127
+ ${repeat(this._items, (item) => item.id, (item) => __classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderItem).call(this, item))}
113
128
  </uui-ref-list>`;
114
129
  };
115
130
  _UmbInputDocumentElement_renderAddButton = function _UmbInputDocumentElement_renderAddButton() {
@@ -126,7 +141,7 @@ _UmbInputDocumentElement_renderItem = function _UmbInputDocumentElement_renderIt
126
141
  return;
127
142
  return html `
128
143
  <uui-ref-node name=${ifDefined(item.name)} detail=${ifDefined(item.id)}>
129
- ${__classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderIsTrashed).call(this, item)}
144
+ ${__classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderIcon).call(this, item)} ${__classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderIsTrashed).call(this, item)}
130
145
  <uui-action-bar slot="actions">
131
146
  ${__classPrivateFieldGet(this, _UmbInputDocumentElement_instances, "m", _UmbInputDocumentElement_renderOpenButton).call(this, item)}
132
147
  <uui-button
@@ -138,6 +153,11 @@ _UmbInputDocumentElement_renderItem = function _UmbInputDocumentElement_renderIt
138
153
  </uui-ref-node>
139
154
  `;
140
155
  };
156
+ _UmbInputDocumentElement_renderIcon = function _UmbInputDocumentElement_renderIcon(item) {
157
+ if (!item.icon)
158
+ return;
159
+ return html `<uui-icon slot="icon" name=${item.icon}></uui-icon>`;
160
+ };
141
161
  _UmbInputDocumentElement_renderIsTrashed = function _UmbInputDocumentElement_renderIsTrashed(item) {
142
162
  if (!item.isTrashed)
143
163
  return;
@@ -155,6 +175,10 @@ UmbInputDocumentElement.styles = [
155
175
  #add-button {
156
176
  width: 100%;
157
177
  }
178
+
179
+ uui-ref-node[drag-placeholder] {
180
+ opacity: 0.2;
181
+ }
158
182
  `,
159
183
  ];
160
184
  __decorate([
@@ -40,7 +40,6 @@ export declare class UmbInputMediaElement extends UmbInputMediaElement_base {
40
40
  set value(idsString: string);
41
41
  private _items?;
42
42
  constructor();
43
- connectedCallback(): void;
44
43
  protected getFormElement(): undefined;
45
44
  render(): import("lit-html").TemplateResult<1>;
46
45
  static styles: import("../../../../../external/lit/index.js").CSSResult[];
@@ -9,12 +9,22 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _UmbInputMediaElement_instances, _UmbInputMediaElement_pickerContext, _UmbInputMediaElement_pickableFilter, _UmbInputMediaElement_openPicker, _UmbInputMediaElement_openItem, _UmbInputMediaElement_renderItems, _UmbInputMediaElement_renderAddButton, _UmbInputMediaElement_renderItem, _UmbInputMediaElement_renderIsTrashed;
12
+ var _UmbInputMediaElement_instances, _UmbInputMediaElement_sorter, _UmbInputMediaElement_pickerContext, _UmbInputMediaElement_pickableFilter, _UmbInputMediaElement_openPicker, _UmbInputMediaElement_openItem, _UmbInputMediaElement_renderItems, _UmbInputMediaElement_renderAddButton, _UmbInputMediaElement_renderItem, _UmbInputMediaElement_renderIsTrashed;
13
13
  import { UmbMediaPickerContext } from './input-media.context.js';
14
14
  import { css, html, customElement, property, state, ifDefined, repeat } from '../../../../../external/lit/index.js';
15
15
  import { FormControlMixin } from '../../../../../external/uui/index.js';
16
16
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
17
17
  import { splitStringToArray } from '../../../../../shared/utils/index.js';
18
+ import { UmbSorterController } from '../../../../core/sorter/index.js';
19
+ const SORTER_CONFIG = {
20
+ compareElementToModel: (element, model) => {
21
+ return element.getAttribute('detail') === model;
22
+ },
23
+ querySelectModelToElement: () => null,
24
+ identifier: 'Umb.SorterIdentifier.InputMedia',
25
+ itemSelector: 'uui-card-media',
26
+ containerSelector: '.container',
27
+ };
18
28
  let UmbInputMediaElement = class UmbInputMediaElement extends FormControlMixin(UmbLitElement) {
19
29
  /**
20
30
  * This is a minimum amount of selected items in this input.
@@ -45,6 +55,7 @@ let UmbInputMediaElement = class UmbInputMediaElement extends FormControlMixin(U
45
55
  }
46
56
  set selectedIds(ids) {
47
57
  __classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").setSelection(ids);
58
+ __classPrivateFieldGet(this, _UmbInputMediaElement_sorter, "f").setModel(ids);
48
59
  }
49
60
  set value(idsString) {
50
61
  // Its with full purpose we don't call super.value, as thats being handled by the observation of the context selection.
@@ -53,6 +64,12 @@ let UmbInputMediaElement = class UmbInputMediaElement extends FormControlMixin(U
53
64
  constructor() {
54
65
  super();
55
66
  _UmbInputMediaElement_instances.add(this);
67
+ _UmbInputMediaElement_sorter.set(this, new UmbSorterController(this, {
68
+ ...SORTER_CONFIG,
69
+ onChange: ({ model }) => {
70
+ this.selectedIds = model;
71
+ },
72
+ }));
56
73
  /**
57
74
  * Min validation message.
58
75
  * @type {boolean}
@@ -77,21 +94,19 @@ let UmbInputMediaElement = class UmbInputMediaElement extends FormControlMixin(U
77
94
  // }
78
95
  return true;
79
96
  });
80
- }
81
- connectedCallback() {
82
- super.connectedCallback();
83
- this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && __classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").getSelection().length < this.min);
84
- this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && __classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").getSelection().length > this.max);
85
97
  this.observe(__classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").selection, (selection) => (super.value = selection.join(',')));
86
98
  this.observe(__classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").selectedItems, (selectedItems) => (this._items = selectedItems));
99
+ this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && __classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").getSelection().length < this.min);
100
+ this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && __classPrivateFieldGet(this, _UmbInputMediaElement_pickerContext, "f").getSelection().length > this.max);
87
101
  }
88
102
  getFormElement() {
89
103
  return undefined;
90
104
  }
91
105
  render() {
92
- return html ` ${__classPrivateFieldGet(this, _UmbInputMediaElement_instances, "m", _UmbInputMediaElement_renderItems).call(this)} ${__classPrivateFieldGet(this, _UmbInputMediaElement_instances, "m", _UmbInputMediaElement_renderAddButton).call(this)} `;
106
+ return html `<div class="container">${__classPrivateFieldGet(this, _UmbInputMediaElement_instances, "m", _UmbInputMediaElement_renderItems).call(this)} ${__classPrivateFieldGet(this, _UmbInputMediaElement_instances, "m", _UmbInputMediaElement_renderAddButton).call(this)}</div>`;
93
107
  }
94
108
  };
109
+ _UmbInputMediaElement_sorter = new WeakMap();
95
110
  _UmbInputMediaElement_pickerContext = new WeakMap();
96
111
  _UmbInputMediaElement_pickableFilter = new WeakMap();
97
112
  _UmbInputMediaElement_instances = new WeakSet();
@@ -110,10 +125,7 @@ _UmbInputMediaElement_openItem = function _UmbInputMediaElement_openItem(item) {
110
125
  _UmbInputMediaElement_renderItems = function _UmbInputMediaElement_renderItems() {
111
126
  if (!this._items)
112
127
  return;
113
- // TODO: Add sorting. [LK]
114
- return html `
115
- ${repeat(this._items, (item) => item.id, (item) => __classPrivateFieldGet(this, _UmbInputMediaElement_instances, "m", _UmbInputMediaElement_renderItem).call(this, item))}
116
- `;
128
+ return html `${repeat(this._items, (item) => item.id, (item) => __classPrivateFieldGet(this, _UmbInputMediaElement_instances, "m", _UmbInputMediaElement_renderItem).call(this, item))}`;
117
129
  };
118
130
  _UmbInputMediaElement_renderAddButton = function _UmbInputMediaElement_renderAddButton() {
119
131
  if (this._items && this.max && this._items.length >= this.max)
@@ -156,7 +168,7 @@ _UmbInputMediaElement_renderIsTrashed = function _UmbInputMediaElement_renderIsT
156
168
  };
157
169
  UmbInputMediaElement.styles = [
158
170
  css `
159
- :host {
171
+ .container {
160
172
  display: grid;
161
173
  gap: var(--uui-size-space-3);
162
174
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
@@ -172,6 +184,10 @@ UmbInputMediaElement.styles = [
172
184
  display: block;
173
185
  margin: 0 auto;
174
186
  }
187
+
188
+ uui-card-media[drag-placeholder] {
189
+ opacity: 0.2;
190
+ }
175
191
  `,
176
192
  ];
177
193
  __decorate([
@@ -37,7 +37,6 @@ export declare class UmbInputMediaTypeElement extends UmbInputMediaTypeElement_b
37
37
  set value(idsString: string);
38
38
  private _items?;
39
39
  constructor();
40
- connectedCallback(): void;
41
40
  protected getFormElement(): undefined;
42
41
  render(): import("lit-html").TemplateResult<1>;
43
42
  static styles: import("../../../../../external/lit/index.js").CSSResult[];
@@ -68,9 +68,6 @@ let UmbInputMediaTypeElement = class UmbInputMediaTypeElement extends FormContro
68
68
  */
69
69
  this.maxMessage = 'This field exceeds the allowed amount of items';
70
70
  _UmbInputMediaTypeElement_pickerContext.set(this, new UmbMediaTypePickerContext(this));
71
- }
72
- connectedCallback() {
73
- super.connectedCallback();
74
71
  this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && __classPrivateFieldGet(this, _UmbInputMediaTypeElement_pickerContext, "f").getSelection().length < this.min);
75
72
  this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && __classPrivateFieldGet(this, _UmbInputMediaTypeElement_pickerContext, "f").getSelection().length > this.max);
76
73
  this.observe(__classPrivateFieldGet(this, _UmbInputMediaTypeElement_pickerContext, "f").selection, (selection) => (super.value = selection.join(',')));
@@ -37,7 +37,6 @@ export declare class UmbInputMemberTypeElement extends UmbInputMemberTypeElement
37
37
  set value(idsString: string);
38
38
  private _items?;
39
39
  constructor();
40
- connectedCallback(): void;
41
40
  protected getFormElement(): undefined;
42
41
  render(): import("lit-html").TemplateResult<1>;
43
42
  static styles: import("../../../../../external/lit/index.js").CSSResult[];
@@ -68,9 +68,6 @@ let UmbInputMemberTypeElement = class UmbInputMemberTypeElement extends FormCont
68
68
  */
69
69
  this.maxMessage = 'This field exceeds the allowed amount of items';
70
70
  _UmbInputMemberTypeElement_pickerContext.set(this, new UmbMemberTypePickerContext(this));
71
- }
72
- connectedCallback() {
73
- super.connectedCallback();
74
71
  this.addValidator('rangeUnderflow', () => this.minMessage, () => !!this.min && __classPrivateFieldGet(this, _UmbInputMemberTypeElement_pickerContext, "f").getSelection().length < this.min);
75
72
  this.addValidator('rangeOverflow', () => this.maxMessage, () => !!this.max && __classPrivateFieldGet(this, _UmbInputMemberTypeElement_pickerContext, "f").getSelection().length > this.max);
76
73
  this.observe(__classPrivateFieldGet(this, _UmbInputMemberTypeElement_pickerContext, "f").selection, (selection) => (super.value = selection.join(',')));
@@ -117,7 +114,7 @@ _UmbInputMemberTypeElement_renderItem = function _UmbInputMemberTypeElement_rend
117
114
  return;
118
115
  return html `
119
116
  <uui-ref-node-document-type name=${ifDefined(item.name)}>
120
- ${__classPrivateFieldGet(this, _UmbInputMemberTypeElement_instances, "m", _UmbInputMemberTypeElement_renderIcon).call(this, item)}
117
+ ${__classPrivateFieldGet(this, _UmbInputMemberTypeElement_instances, "m", _UmbInputMemberTypeElement_renderIcon).call(this, item)}
121
118
  <uui-action-bar slot="actions">
122
119
  <uui-button
123
120
  @click=${() => __classPrivateFieldGet(this, _UmbInputMemberTypeElement_pickerContext, "f").requestRemoveItem(item.id)}
@@ -1,4 +1,5 @@
1
1
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
2
+ import type { MemberItemResponseModel } from '../../../../../external/backend-api/index.js';
2
3
  declare const UmbInputMemberElement_base: (new (...args: any[]) => import("../../../../../external/uui/index.js").FormControlMixinInterface) & typeof UmbLitElement;
3
4
  export declare class UmbInputMemberElement extends UmbInputMemberElement_base {
4
5
  #private;
@@ -36,8 +37,10 @@ export declare class UmbInputMemberElement extends UmbInputMemberElement_base {
36
37
  set selectedIds(ids: Array<string>);
37
38
  allowedContentTypeIds?: string[] | undefined;
38
39
  set value(idsString: string);
39
- private _items?;
40
+ private _items;
40
41
  constructor();
42
+ protected _openPicker(): void;
43
+ protected _requestRemoveItem(item: MemberItemResponseModel): void;
41
44
  protected getFormElement(): undefined;
42
45
  render(): import("lit-html").TemplateResult<1>;
43
46
  static styles: import("../../../../../external/lit/index.js").CSSResult[];
@@ -9,11 +9,21 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _UmbInputMemberElement_instances, _UmbInputMemberElement_pickableFilter, _UmbInputMemberElement_openPicker, _UmbInputMemberElement_requestRemoveItem, _UmbInputMemberElement_renderItems, _UmbInputMemberElement_renderAddButton, _UmbInputMemberElement_renderItem, _UmbInputMemberElement_renderIsTrashed;
12
+ var _UmbInputMemberElement_instances, _UmbInputMemberElement_sorter, _UmbInputMemberElement_pickableFilter, _UmbInputMemberElement_openPicker, _UmbInputMemberElement_requestRemoveItem, _UmbInputMemberElement_renderItems, _UmbInputMemberElement_renderAddButton, _UmbInputMemberElement_renderItem, _UmbInputMemberElement_renderIsTrashed;
13
13
  import { css, html, customElement, property, state, ifDefined, repeat } from '../../../../../external/lit/index.js';
14
14
  import { FormControlMixin } from '../../../../../external/uui/index.js';
15
15
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
16
16
  import { splitStringToArray } from '../../../../../shared/utils/index.js';
17
+ import { UmbSorterController } from '../../../../core/sorter/index.js';
18
+ const SORTER_CONFIG = {
19
+ compareElementToModel: (element, model) => {
20
+ return element.getAttribute('detail') === model;
21
+ },
22
+ querySelectModelToElement: () => null,
23
+ identifier: 'Umb.SorterIdentifier.InputMember',
24
+ itemSelector: 'uui-ref-node',
25
+ containerSelector: 'uui-ref-list',
26
+ };
17
27
  let UmbInputMemberElement = class UmbInputMemberElement extends FormControlMixin(UmbLitElement) {
18
28
  /**
19
29
  * This is a minimum amount of selected items in this input.
@@ -53,6 +63,7 @@ let UmbInputMemberElement = class UmbInputMemberElement extends FormControlMixin
53
63
  set selectedIds(ids) {
54
64
  // TODO: Uncomment, once `UmbMemberPickerContext` has been implemented. [LK]
55
65
  //this.#pickerContext.setSelection(ids);
66
+ __classPrivateFieldGet(this, _UmbInputMemberElement_sorter, "f").setModel(ids);
56
67
  }
57
68
  set value(idsString) {
58
69
  // Its with full purpose we don't call super.value, as thats being handled by the observation of the context selection.
@@ -63,6 +74,12 @@ let UmbInputMemberElement = class UmbInputMemberElement extends FormControlMixin
63
74
  constructor() {
64
75
  super();
65
76
  _UmbInputMemberElement_instances.add(this);
77
+ _UmbInputMemberElement_sorter.set(this, new UmbSorterController(this, {
78
+ ...SORTER_CONFIG,
79
+ onChange: ({ model }) => {
80
+ this.selectedIds = model;
81
+ },
82
+ }));
66
83
  /**
67
84
  * Min validation message.
68
85
  * @type {boolean}
@@ -77,6 +94,7 @@ let UmbInputMemberElement = class UmbInputMemberElement extends FormControlMixin
77
94
  * @default
78
95
  */
79
96
  this.maxMessage = 'This field exceeds the allowed amount of items';
97
+ this._items = [];
80
98
  _UmbInputMemberElement_pickableFilter.set(this, (item) => {
81
99
  // TODO: Uncomment, once `UmbMemberPickerContext` has been implemented. [LK]
82
100
  console.log('member.pickableFilter', item);
@@ -99,6 +117,16 @@ let UmbInputMemberElement = class UmbInputMemberElement extends FormControlMixin
99
117
  // this.observe(this.#pickerContext.selection, (selection) => (super.value = selection.join(',')));
100
118
  // this.observe(this.#pickerContext.selectedItems, (selectedItems) => (this._items = selectedItems));
101
119
  }
120
+ _openPicker() {
121
+ console.log('member.openPicker');
122
+ // this.#pickerContext.openPicker({
123
+ // hideTreeRoot: true,
124
+ // });
125
+ }
126
+ _requestRemoveItem(item) {
127
+ console.log('member.requestRemoveItem', item);
128
+ //this.#pickerContext.requestRemoveItem(item.id!);
129
+ }
102
130
  getFormElement() {
103
131
  return undefined;
104
132
  }
@@ -106,6 +134,7 @@ let UmbInputMemberElement = class UmbInputMemberElement extends FormControlMixin
106
134
  return html ` ${__classPrivateFieldGet(this, _UmbInputMemberElement_instances, "m", _UmbInputMemberElement_renderItems).call(this)} ${__classPrivateFieldGet(this, _UmbInputMemberElement_instances, "m", _UmbInputMemberElement_renderAddButton).call(this)} `;
107
135
  }
108
136
  };
137
+ _UmbInputMemberElement_sorter = new WeakMap();
109
138
  _UmbInputMemberElement_pickableFilter = new WeakMap();
110
139
  _UmbInputMemberElement_instances = new WeakSet();
111
140
  _UmbInputMemberElement_openPicker = function _UmbInputMemberElement_openPicker() {
@@ -124,9 +153,8 @@ _UmbInputMemberElement_requestRemoveItem = function _UmbInputMemberElement_reque
124
153
  _UmbInputMemberElement_renderItems = function _UmbInputMemberElement_renderItems() {
125
154
  if (!this._items)
126
155
  return;
127
- // TODO: Add sorting. [LK]
128
- return html `<uui-ref-list
129
- >${repeat(this._items, (item) => item.id, (item) => __classPrivateFieldGet(this, _UmbInputMemberElement_instances, "m", _UmbInputMemberElement_renderItem).call(this, item))}
156
+ return html `<uui-ref-list>
157
+ ${repeat(this._items, (item) => item.id, (item) => __classPrivateFieldGet(this, _UmbInputMemberElement_instances, "m", _UmbInputMemberElement_renderItem).call(this, item))}
130
158
  </uui-ref-list>`;
131
159
  };
132
160
  _UmbInputMemberElement_renderAddButton = function _UmbInputMemberElement_renderAddButton() {
@@ -162,6 +190,10 @@ UmbInputMemberElement.styles = [
162
190
  #add-button {
163
191
  width: 100%;
164
192
  }
193
+
194
+ uui-ref-node[drag-placeholder] {
195
+ opacity: 0.2;
196
+ }
165
197
  `,
166
198
  ];
167
199
  __decorate([
@@ -11,6 +11,7 @@ export * from './path-folder-name.function.js';
11
11
  export * from './selection-manager/selection.manager.js';
12
12
  export * from './udi.js';
13
13
  export * from './umbraco-path.function.js';
14
+ export * from './math.js';
14
15
  export * from './split-string-to-array.js';
15
16
  declare global {
16
17
  interface Window {
@@ -11,4 +11,5 @@ export * from './path-folder-name.function.js';
11
11
  export * from './selection-manager/selection.manager.js';
12
12
  export * from './udi.js';
13
13
  export * from './umbraco-path.function.js';
14
+ export * from './math.js';
14
15
  export * from './split-string-to-array.js';