@politiet/sheriff-web-components 2.13.1 → 2.14.0

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 (123) hide show
  1. package/custom-elements.json +3949 -1463
  2. package/dist/controllers/index.d.ts +3 -0
  3. package/dist/controllers/index.d.ts.map +1 -0
  4. package/dist/controllers/index.js +3 -0
  5. package/dist/controllers/index.js.map +1 -0
  6. package/dist/controllers/sds-drag-drop-controller.d.ts +25 -0
  7. package/dist/controllers/sds-drag-drop-controller.d.ts.map +1 -0
  8. package/dist/controllers/sds-drag-drop-controller.js +52 -0
  9. package/dist/controllers/sds-drag-drop-controller.js.map +1 -0
  10. package/dist/controllers/sds-file-preview-controller.d.ts +38 -0
  11. package/dist/controllers/sds-file-preview-controller.d.ts.map +1 -0
  12. package/dist/controllers/sds-file-preview-controller.js +90 -0
  13. package/dist/controllers/sds-file-preview-controller.js.map +1 -0
  14. package/dist/frameworks/preact.d.ts +14 -1
  15. package/dist/frameworks/preact.d.ts.map +1 -1
  16. package/dist/frameworks/react.d.ts +30 -1
  17. package/dist/frameworks/react.d.ts.map +1 -1
  18. package/dist/frameworks/solidjs.d.ts +4 -0
  19. package/dist/frameworks/solidjs.d.ts.map +1 -1
  20. package/dist/frameworks/svelte.d.ts +4 -0
  21. package/dist/frameworks/svelte.d.ts.map +1 -1
  22. package/dist/frameworks/vue.d.ts +24 -1
  23. package/dist/frameworks/vue.d.ts.map +1 -1
  24. package/dist/index.d.ts +8 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +4 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/react-wrappers/SDSDialogWrapper.d.ts +1 -0
  29. package/dist/react-wrappers/SDSDialogWrapper.d.ts.map +1 -1
  30. package/dist/react-wrappers/SDSDialogWrapper.js +1 -0
  31. package/dist/react-wrappers/SDSDialogWrapper.js.map +1 -1
  32. package/dist/react-wrappers/SDSFileUploadFileListWrapper.d.ts +3 -0
  33. package/dist/react-wrappers/SDSFileUploadFileListWrapper.d.ts.map +1 -0
  34. package/dist/react-wrappers/SDSFileUploadFileListWrapper.js +10 -0
  35. package/dist/react-wrappers/SDSFileUploadFileListWrapper.js.map +1 -0
  36. package/dist/react-wrappers/SDSFileUploadItemWrapper.d.ts +6 -0
  37. package/dist/react-wrappers/SDSFileUploadItemWrapper.d.ts.map +1 -0
  38. package/dist/react-wrappers/SDSFileUploadItemWrapper.js +12 -0
  39. package/dist/react-wrappers/SDSFileUploadItemWrapper.js.map +1 -0
  40. package/dist/react-wrappers/SDSFileUploadWrapper.d.ts +12 -0
  41. package/dist/react-wrappers/SDSFileUploadWrapper.d.ts.map +1 -0
  42. package/dist/react-wrappers/SDSFileUploadWrapper.js +18 -0
  43. package/dist/react-wrappers/SDSFileUploadWrapper.js.map +1 -0
  44. package/dist/react-wrappers/SDSSearchWrapper.d.ts +15 -0
  45. package/dist/react-wrappers/SDSSearchWrapper.d.ts.map +1 -0
  46. package/dist/react-wrappers/SDSSearchWrapper.js +19 -0
  47. package/dist/react-wrappers/SDSSearchWrapper.js.map +1 -0
  48. package/dist/react-wrappers/index.d.ts +4 -0
  49. package/dist/react-wrappers/index.d.ts.map +1 -1
  50. package/dist/react-wrappers/index.js +4 -0
  51. package/dist/react-wrappers/index.js.map +1 -1
  52. package/dist/sds-button/sds-button.component.d.ts +0 -1
  53. package/dist/sds-button/sds-button.component.d.ts.map +1 -1
  54. package/dist/sds-button/sds-button.component.js +10 -16
  55. package/dist/sds-button/sds-button.component.js.map +1 -1
  56. package/dist/sds-dialog/sds-dialog.component.d.ts.map +1 -1
  57. package/dist/sds-dialog/sds-dialog.component.js +11 -1
  58. package/dist/sds-dialog/sds-dialog.component.js.map +1 -1
  59. package/dist/sds-file-upload/sds-file-upload.d.ts +102 -0
  60. package/dist/sds-file-upload/sds-file-upload.d.ts.map +1 -0
  61. package/dist/sds-file-upload/sds-file-upload.js +384 -0
  62. package/dist/sds-file-upload/sds-file-upload.js.map +1 -0
  63. package/dist/sds-file-upload/sds-file-upload.styles.d.ts +2 -0
  64. package/dist/sds-file-upload/sds-file-upload.styles.d.ts.map +1 -0
  65. package/dist/sds-file-upload/sds-file-upload.styles.js +234 -0
  66. package/dist/sds-file-upload/sds-file-upload.styles.js.map +1 -0
  67. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.d.ts +14 -0
  68. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.d.ts.map +1 -0
  69. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.js +26 -0
  70. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.js.map +1 -0
  71. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.styles.d.ts +2 -0
  72. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.styles.d.ts.map +1 -0
  73. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.styles.js +19 -0
  74. package/dist/sds-file-upload-file-list/sds-file-upload-file-list.styles.js.map +1 -0
  75. package/dist/sds-file-upload-item/assets/u-progress.js +2 -0
  76. package/dist/sds-file-upload-item/sds-file-upload-item.d.ts +62 -0
  77. package/dist/sds-file-upload-item/sds-file-upload-item.d.ts.map +1 -0
  78. package/dist/sds-file-upload-item/sds-file-upload-item.js +205 -0
  79. package/dist/sds-file-upload-item/sds-file-upload-item.js.map +1 -0
  80. package/dist/sds-file-upload-item/sds-file-upload-item.styles.d.ts +2 -0
  81. package/dist/sds-file-upload-item/sds-file-upload-item.styles.d.ts.map +1 -0
  82. package/dist/sds-file-upload-item/sds-file-upload-item.styles.js +227 -0
  83. package/dist/sds-file-upload-item/sds-file-upload-item.styles.js.map +1 -0
  84. package/dist/sds-search/sds-search.component.d.ts +128 -0
  85. package/dist/sds-search/sds-search.component.d.ts.map +1 -0
  86. package/dist/sds-search/sds-search.component.js +345 -0
  87. package/dist/sds-search/sds-search.component.js.map +1 -0
  88. package/dist/sds-search/sds-search.d.ts +13 -0
  89. package/dist/sds-search/sds-search.d.ts.map +1 -0
  90. package/dist/sds-search/sds-search.js +18 -0
  91. package/dist/sds-search/sds-search.js.map +1 -0
  92. package/dist/sds-search/sds-search.styles.d.ts +2 -0
  93. package/dist/sds-search/sds-search.styles.d.ts.map +1 -0
  94. package/dist/sds-search/sds-search.styles.js +74 -0
  95. package/dist/sds-search/sds-search.styles.js.map +1 -0
  96. package/dist/sds-textfield/sds-textfield.component.d.ts +4 -1
  97. package/dist/sds-textfield/sds-textfield.component.d.ts.map +1 -1
  98. package/dist/sds-textfield/sds-textfield.component.js +20 -5
  99. package/dist/sds-textfield/sds-textfield.component.js.map +1 -1
  100. package/dist/sds-textfield/sds-textfield.styles.d.ts.map +1 -1
  101. package/dist/sds-textfield/sds-textfield.styles.js +11 -0
  102. package/dist/sds-textfield/sds-textfield.styles.js.map +1 -1
  103. package/dist/sheriff-web-components.js +1015 -294
  104. package/dist/skill/SKILL.md +44 -36
  105. package/dist/skill/references/components.md +88 -3
  106. package/dist/skill/references/react-wrappers.md +25 -18
  107. package/dist/utils/file-validation.d.ts +31 -0
  108. package/dist/utils/file-validation.d.ts.map +1 -0
  109. package/dist/utils/file-validation.js +57 -0
  110. package/dist/utils/file-validation.js.map +1 -0
  111. package/dist/utils/format-bytes.d.ts +6 -0
  112. package/dist/utils/format-bytes.d.ts.map +1 -0
  113. package/dist/utils/format-bytes.js +13 -0
  114. package/dist/utils/format-bytes.js.map +1 -0
  115. package/dist/utils/video-thumbnail.d.ts +8 -0
  116. package/dist/utils/video-thumbnail.d.ts.map +1 -0
  117. package/dist/utils/video-thumbnail.js +77 -0
  118. package/dist/utils/video-thumbnail.js.map +1 -0
  119. package/dist/version.d.ts +1 -1
  120. package/dist/version.js +1 -1
  121. package/dist/version.js.map +1 -1
  122. package/package.json +24 -4
  123. package/web-types.json +3431 -1120
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-file-upload-item.js","sourceRoot":"","sources":["../../src/sds-file-upload-item/sds-file-upload-item.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { SDSElement } from '../utils/sds-element';\nimport { formatBytes } from '../utils/format-bytes';\nimport { SDSEventDispatcherMixin } from '../mixins';\nimport { SheriffEvent } from '../types';\nimport { styles } from './sds-file-upload-item.styles';\nimport '../sds-button/sds-button';\nimport '../sds-icon/sds-icon';\nimport '../sds-alert/sds-alert';\nimport './assets/u-progress.js';\nimport type { SDSFileUpload } from '../sds-file-upload/sds-file-upload';\n\nexport interface SDSFileUploadItemProps {\n\tfile?: string;\n\t'size-in-bytes'?: number;\n\t'error-message'?: string;\n\tpreview?: string;\n\t'uploaded-percent'?: number;\n\t'uploaded-size-in-bytes'?: number;\n\tdisabled?: boolean;\n\tfor?: string;\n}\n\n@guardedCustomElement('sds-file-upload-item')\nexport class SDSFileUploadItem extends SDSEventDispatcherMixin(SDSElement) {\n\t// Styling\n\tstatic override styles = [styles];\n\n\tpublic readonly internals: ElementInternals;\n\n\t// Props\n\t@property({ type: String, reflect: true }) file?: string;\n\t@property({ type: Number, attribute: 'size-in-bytes', reflect: true }) sizeInBytes?: number;\n\t@property({ type: String, attribute: 'error-message', reflect: true }) errorMessage?: string;\n\t@property({ type: String, reflect: true }) preview?: string;\n\t@property({ type: Number, attribute: 'uploaded-percent', reflect: true }) uploadedPercent?: number;\n\t@property({ type: Number, attribute: 'uploaded-size-in-bytes', reflect: true }) uploadedSizeInBytes?: number;\n\t@property({ type: Boolean, reflect: true }) disabled = false;\n\n\t/**\n\t * The `id` of the `sds-file-upload` this item belongs to. When set, pressing the\n\t * remove button removes the matching file from that upload (`removeFile`, or\n\t * `dismissRejected` for an item with an `error-message`) and removes this element from the DOM.\n\t * The `sds-remove` event still fires, and calling `preventDefault()` on it cancels both.\n\t */\n\t@property({ type: String, attribute: 'for', reflect: true }) htmlFor?: string;\n\n\t@query('.sds-file-upload-item__content-preview-image') private _previewImg?: HTMLImageElement;\n\t@query('.sds-file-upload-item__remove') private _removeButton?: HTMLElement;\n\n\t// Internal state\n\t@state() private _previewLoaded = false;\n\n\t// Lifecycle\n\tconstructor() {\n\t\tsuper();\n\t\tthis.internals = this.attachInternals();\n\t\tthis.internals.role = 'listitem';\n\t}\n\n\tprotected override willUpdate(changed: PropertyValues): void {\n\t\tif (changed.has('preview')) this._previewLoaded = false;\n\t}\n\n\tprotected override updated(changed: PropertyValues): void {\n\t\tif (!changed.has('preview')) return;\n\t\tconst img = this._previewImg;\n\t\tif (!this.preview || this.errorMessage || !img) return;\n\n\t\tconst src = img.src;\n\t\tconst markLoaded = () => {\n\t\t\tif (img.src === src) this._previewLoaded = true;\n\t\t};\n\t\tif (img.decode) {\n\t\t\timg.decode().then(markLoaded).catch(() => undefined);\n\t\t} else {\n\t\t\tmarkLoaded();\n\t\t}\n\t}\n\n\t// Public API\n\toverride focus(options?: FocusOptions): void {\n\t\tthis._removeButton?.focus(options);\n\t}\n\n\t// Event handlers\n\tprivate readonly _handleRemove = (event: Event): void => {\n\t\tevent.stopPropagation();\n\t\tif (this.disabled) return;\n\t\tconst notCancelled = this.dispatchSheriffEvent('sds-remove');\n\t\tif (notCancelled) this._removeFromAssociatedUpload();\n\t};\n\n\t// Internal helpers\n\tprivate get _hasError(): boolean {\n\t\treturn Boolean(this.errorMessage);\n\t}\n\n\tprivate _removeFromAssociatedUpload(): void {\n\t\tif (!this.htmlFor) return;\n\n\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\tconst target = root.getElementById?.(this.htmlFor) ?? document.getElementById(this.htmlFor);\n\t\tif (!target || !('removeFile' in target) || !('dismissRejected' in target)) return;\n\n\t\tconst upload = target as SDSFileUpload;\n\t\tconst matches = (name: string, size: number): boolean => name === this.file && (this.sizeInBytes === undefined || size === this.sizeInBytes);\n\n\t\tif (this.errorMessage) {\n\t\t\tconst rejected = upload.rejectedFiles.find(({ file }) => matches(file.name, file.size));\n\t\t\tif (rejected) upload.dismissRejected(rejected.file);\n\t\t} else {\n\t\t\tconst file = upload.files.find((candidate) => matches(candidate.name, candidate.size));\n\t\t\tif (file) upload.removeFile(file);\n\t\t}\n\n\t\tthis.remove();\n\t}\n\n\t// Rendering\n\tprivate readonly _renderThumbnail = () =>\n\t\tthis.preview && !this._hasError\n\t\t\t? html`<span class=\"sds-file-upload-item__content-preview\" ?data-loaded=\"${this._previewLoaded}\">\n\t\t\t\t\t<img class=\"sds-file-upload-item__content-preview-image\" src=\"${this.preview}\" alt=\"\" />\n\t\t\t\t</span>`\n\t\t\t: html`<sds-icon\n\t\t\t\t\tclass=\"sds-file-upload-item__content-icon\"\n\t\t\t\t\tname=\"${this._hasError ? 'scan_delete-material-outlined' : 'draft-material-outlined'}\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t></sds-icon>`;\n\n\tprivate readonly _renderFileData = () => {\n\t\tconst detail = this.sizeInBytes !== undefined ? formatBytes(this.sizeInBytes) : undefined;\n\n\t\treturn html`\n\t\t\t<span class=\"sds-file-upload-item__content-data\">\n\t\t\t\t<span class=\"sds-file-upload-item__content-file-name\">${this.file}</span>\n\t\t\t\t${this._hasError\n\t\t\t\t\t? html`<span class=\"sds-file-upload-item__content-file-error\">Feil ved opplasting</span>`\n\t\t\t\t\t: detail\n\t\t\t\t\t\t? html`<span class=\"sds-file-upload-item__content-file-detail\">${detail}</span>`\n\t\t\t\t\t\t: nothing}\n\t\t\t</span>\n\t\t`;\n\t};\n\n\tprivate readonly _renderRemoveButton = () => html`\n\t\t<sds-button\n\t\t\tclass=\"sds-file-upload-item__remove\"\n\t\t\ticon\n\t\t\tvariant=\"tertiary\"\n\t\t\tsize=\"sm\"\n\t\t\ttype=\"button\"\n\t\t\tlabel=\"${this.file ? `Fjern ${this.file}` : 'Fjern fil'}\"\n\t\t\t?disabled=\"${this.disabled}\"\n\t\t\t@click=\"${this._handleRemove}\"\n\t\t>\n\t\t\t<sds-icon name=\"delete-material-outlined\" size=\"md\"></sds-icon>\n\t\t</sds-button>\n\t`;\n\n\tprivate readonly _renderProgress = () => {\n\t\tconst percent = Math.max(0, Math.min(100, Math.round(this.uploadedPercent ?? 0)));\n\n\t\treturn html`\n\t\t\t<div class=\"sds-file-upload-item__progress\">\n\t\t\t\t<u-progress class=\"sds-file-upload-item__progress-track\" value=\"${percent}\" max=\"100\" aria-label=\"Laster opp ${this.file ?? ''}\"></u-progress>\n\t\t\t\t<div class=\"sds-file-upload-item__progress-meta\">\n\t\t\t\t\t${this.uploadedSizeInBytes !== undefined\n\t\t\t\t\t\t? html`<span class=\"sds-file-upload-item__progress-uploaded\">${formatBytes(this.uploadedSizeInBytes)}</span>`\n\t\t\t\t\t\t: nothing}\n\t\t\t\t\t<span class=\"sds-file-upload-item__progress-percent\">${percent}%</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t};\n\n\tprivate readonly _renderErrorAlert = () => html`\n\t\t<sds-alert class=\"sds-file-upload-item__error-alert\" size=\"sm\" variant=\"secondary\" data-palette=\"danger\">\n\t\t\t<p slot=\"message\">${this.errorMessage}</p>\n\t\t</sds-alert>\n\t`;\n\n\toverride render() {\n\t\tconst itemClasses = { 'sds-file-upload-item': true, 'sds-file-upload-item--error': this._hasError };\n\t\tconst isUploading = this.uploadedPercent !== undefined && !this._hasError;\n\n\t\treturn html`\n\t\t\t<div class=\"${classMap(itemClasses)}\">\n\t\t\t\t<div class=\"sds-file-upload-item__row\">\n\t\t\t\t\t<div class=\"sds-file-upload-item__content\">\n\t\t\t\t\t\t${this._renderThumbnail()}\n\t\t\t\t\t\t${this._renderFileData()}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"sds-file-upload-item__actions\">\n\t\t\t\t\t\t<slot name=\"actions-end\"></slot>\n\t\t\t\t\t\t${this._renderRemoveButton()}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${isUploading ? this._renderProgress() : nothing}\n\t\t\t</div>\n\t\t\t${this._hasError ? this._renderErrorAlert() : nothing}\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-file-upload-item': SDSFileUploadItem;\n\t}\n\tinterface GlobalEventHandlersEventMap {\n\t\t'sds-remove': SheriffEvent;\n\t}\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=sds-file-upload-item.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-file-upload-item.styles.d.ts","sourceRoot":"","sources":["../../src/sds-file-upload-item/sds-file-upload-item.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAgOlB,CAAC"}
@@ -0,0 +1,227 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ --_sds-file-upload-item-background: var(--sds-file-upload-item-background, var(--sds-color-surface-default, var(--sds-color-neutral-surface-default)));
5
+ --_sds-file-upload-item-border-color: var(--sds-file-upload-item-border-color, var(--sds-color-border-default, var(--sds-color-neutral-border-default)));
6
+ --_sds-file-upload-item-border-width: var(--sds-file-upload-item-border-width, var(--sds-border-sm));
7
+ --_sds-file-upload-item-border-radius: var(--sds-file-upload-item-border-radius, var(--sds-radius-md));
8
+ --_sds-file-upload-item-padding: var(--sds-file-upload-item-padding, var(--sds-spacing-3xs) var(--sds-spacing-xs));
9
+ --_sds-file-upload-item-gap: var(--sds-file-upload-item-gap, var(--sds-spacing-2xs));
10
+ --_sds-file-upload-item-actions-gap: var(--sds-file-upload-item-actions-gap, var(--sds-spacing-5xs));
11
+
12
+ --_sds-file-upload-item-content-gap: var(--sds-file-upload-item-content-gap, var(--sds-spacing-3xs));
13
+ --_sds-file-upload-item-content-data-gap: var(--sds-file-upload-item-content-data-gap, var(--sds-spacing-5xs));
14
+ --_sds-file-upload-item-content-icon-color: var(--sds-file-upload-item-content-icon-color, var(--sds-color-text-default, var(--sds-color-neutral-text-default)));
15
+ --_sds-file-upload-item-content-preview-size: var(--sds-file-upload-item-content-preview-size, var(--sds-spacing-lg));
16
+ --_sds-file-upload-item-content-preview-radius: var(--sds-file-upload-item-content-preview-radius, var(--sds-radius-xs));
17
+ --_sds-file-upload-item-content-preview-background: var(--sds-file-upload-item-content-preview-background, var(--sds-color-surface-tinted, var(--sds-color-neutral-surface-tinted)));
18
+ --_sds-file-upload-item-content-preview-highlight: var(--sds-file-upload-item-content-preview-highlight, var(--sds-color-surface-default, var(--sds-color-neutral-surface-default)));
19
+ --_sds-file-upload-item-content-preview-loading-duration: var(--sds-file-upload-item-content-preview-loading-duration, 5500ms);
20
+ --_sds-file-upload-item-content-file-name-font-size: var(--sds-file-upload-item-content-file-name-font-size, var(--sds-typography-body-md-desktop-font-size));
21
+ --_sds-file-upload-item-content-file-name-font-weight: var(--sds-file-upload-item-content-file-name-font-weight, var(--sds-typography-body-md-desktop-font-weight));
22
+ --_sds-file-upload-item-content-file-name-line-height: var(--sds-file-upload-item-content-file-name-line-height, var(--sds-typography-body-md-desktop-line-height));
23
+ --_sds-file-upload-item-content-file-name-text-color: var(--sds-file-upload-item-content-file-name-text-color, var(--sds-color-text-default, var(--sds-color-neutral-text-default)));
24
+ --_sds-file-upload-item-content-file-detail-font-size: var(--sds-file-upload-item-content-file-detail-font-size, var(--sds-typography-detail-xs-desktop-font-size));
25
+ --_sds-file-upload-item-content-file-detail-font-weight: var(--sds-file-upload-item-content-file-detail-font-weight, var(--sds-typography-detail-xs-desktop-font-weight));
26
+ --_sds-file-upload-item-content-file-detail-line-height: var(--sds-file-upload-item-content-file-detail-line-height, var(--sds-typography-detail-xs-desktop-line-height));
27
+ --_sds-file-upload-item-content-file-detail-color: var(--sds-file-upload-item-content-file-detail-color, var(--sds-color-text-subtle, var(--sds-color-neutral-text-subtle)));
28
+
29
+ --_sds-file-upload-item-progress-track-color: var(--sds-file-upload-item-progress-track-color, var(--sds-color-surface-tinted, var(--sds-color-neutral-surface-tinted)));
30
+ --_sds-file-upload-item-progress-value-color: var(--sds-file-upload-item-progress-value-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));
31
+ --_sds-file-upload-item-progress-height: var(--sds-file-upload-item-progress-height, 0.375rem);
32
+ --_sds-file-upload-item-progress-radius: var(--sds-file-upload-item-progress-radius, var(--sds-radius-full));
33
+ --_sds-file-upload-item-progress-gap: var(--sds-file-upload-item-progress-gap, var(--sds-spacing-4xs));
34
+ --_sds-file-upload-item-progress-spacing: var(--sds-file-upload-item-progress-spacing, var(--sds-spacing-2xs));
35
+
36
+ --_sds-file-upload-item-error-alert-spacing: var(--sds-file-upload-item-error-alert-spacing, var(--sds-spacing-3xs));
37
+
38
+ --_sds-file-upload-item-disabled-opacity: var(--sds-file-upload-item-disabled-opacity, var(--sds-color-states-disabled-opacity));
39
+
40
+ display: block;
41
+ }
42
+
43
+ :host([hidden]) {
44
+ display: none;
45
+ }
46
+
47
+ :host([disabled]) {
48
+ opacity: var(--_sds-file-upload-item-disabled-opacity);
49
+ }
50
+
51
+ :host([error-message]) {
52
+ --_sds-file-upload-item-border-color: var(--sds-file-upload-item-border-color, var(--sds-color-alert-danger-border-default));
53
+ --_sds-file-upload-item-content-icon-color: var(--sds-file-upload-item-content-icon-color, var(--sds-color-alert-danger-text-default));
54
+ --_sds-file-upload-item-content-file-detail-color: var(--sds-file-upload-item-content-file-detail-color, var(--sds-color-alert-danger-text-default));
55
+ }
56
+
57
+ .sds-file-upload-item {
58
+ display: flex;
59
+ flex-direction: column;
60
+ gap: var(--_sds-file-upload-item-progress-spacing);
61
+ padding: var(--_sds-file-upload-item-padding);
62
+ border: var(--_sds-file-upload-item-border-width) solid var(--_sds-file-upload-item-border-color);
63
+ border-radius: var(--_sds-file-upload-item-border-radius);
64
+ background: var(--_sds-file-upload-item-background);
65
+ }
66
+
67
+ .sds-file-upload-item__row {
68
+ display: flex;
69
+ align-items: center;
70
+ gap: var(--_sds-file-upload-item-gap);
71
+ }
72
+
73
+ .sds-file-upload-item__content {
74
+ display: flex;
75
+ flex-grow: 1;
76
+ min-width: 0;
77
+ align-items: center;
78
+ gap: var(--_sds-file-upload-item-content-gap);
79
+ }
80
+
81
+ .sds-file-upload-item__actions {
82
+ display: flex;
83
+ flex: 0 0 auto;
84
+ align-items: center;
85
+ gap: var(--_sds-file-upload-item-actions-gap);
86
+ }
87
+
88
+ .sds-file-upload-item__content-icon {
89
+ color: var(--_sds-file-upload-item-content-icon-color);
90
+ }
91
+
92
+ .sds-file-upload-item__content-preview {
93
+ position: relative;
94
+ flex: 0 0 auto;
95
+ width: var(--_sds-file-upload-item-content-preview-size);
96
+ height: var(--_sds-file-upload-item-content-preview-size);
97
+ border-radius: var(--_sds-file-upload-item-content-preview-radius);
98
+ overflow: hidden;
99
+ background-color: var(--_sds-file-upload-item-content-preview-background);
100
+
101
+ &::before {
102
+ content: '';
103
+ position: absolute;
104
+ inset: 0;
105
+ background-color: var(--_sds-file-upload-item-content-preview-highlight);
106
+ opacity: 0;
107
+ will-change: opacity;
108
+ animation: sds-file-upload-item-preview-breathe var(--_sds-file-upload-item-content-preview-loading-duration) ease-in-out infinite;
109
+ }
110
+ }
111
+
112
+ .sds-file-upload-item__content-preview-image {
113
+ position: relative;
114
+ display: block;
115
+ width: 100%;
116
+ height: 100%;
117
+ object-fit: cover;
118
+ }
119
+
120
+ .sds-file-upload-item__content-preview[data-loaded] {
121
+ background-color: transparent;
122
+
123
+ &::before {
124
+ content: none;
125
+ }
126
+ }
127
+
128
+ @keyframes sds-file-upload-item-preview-breathe {
129
+ 0% { opacity: 0.15; }
130
+ 40% { opacity: 1; }
131
+ 55% { opacity: 1; }
132
+ 100%{ opacity: 0.15; }
133
+ }
134
+
135
+ @media (prefers-reduced-motion: reduce) {
136
+ .sds-file-upload-item__content-preview::before {
137
+ animation: none;
138
+ opacity: 0;
139
+ }
140
+ }
141
+
142
+ .sds-file-upload-item__content-data {
143
+ display: flex;
144
+ flex-direction: column;
145
+ min-width: 0;
146
+ gap: var(--_sds-file-upload-item-content-data-gap);
147
+ }
148
+
149
+ .sds-file-upload-item__content-file-name {
150
+ overflow: hidden;
151
+ text-overflow: ellipsis;
152
+ white-space: nowrap;
153
+ font-size: var(--_sds-file-upload-item-content-file-name-font-size);
154
+ font-weight: var(--_sds-file-upload-item-content-file-name-font-weight);
155
+ line-height: var(--_sds-file-upload-item-content-file-name-line-height);
156
+ color: var(--_sds-file-upload-item-content-file-name-text-color);
157
+ }
158
+
159
+ .sds-file-upload-item__content-file-detail {
160
+ font-size: var(--_sds-file-upload-item-content-file-detail-font-size);
161
+ font-weight: var(--_sds-file-upload-item-content-file-detail-font-weight);
162
+ line-height: var(--_sds-file-upload-item-content-file-detail-line-height);
163
+ color: var(--_sds-file-upload-item-content-file-detail-color);
164
+ }
165
+
166
+ .sds-file-upload-item__content-file-error {
167
+ font-size: var(--_sds-file-upload-item-content-file-detail-font-size);
168
+ font-weight: var(--_sds-file-upload-item-content-file-detail-font-weight);
169
+ line-height: var(--_sds-file-upload-item-content-file-detail-line-height);
170
+ color: var(--_sds-file-upload-item-content-file-detail-color);
171
+ }
172
+
173
+ .sds-file-upload-item__error-alert {
174
+ display: block;
175
+ margin-block-start: var(--_sds-file-upload-item-error-alert-spacing);
176
+ }
177
+
178
+ .sds-file-upload-item__progress {
179
+ display: flex;
180
+ flex-direction: column;
181
+ gap: var(--_sds-file-upload-item-progress-gap);
182
+ }
183
+
184
+ /* The track is the <u-progress> host; the fill is its ::before (width + 0.2s transition come from u-progress). */
185
+ .sds-file-upload-item__progress-track {
186
+ display: block;
187
+ inline-size: 100%;
188
+ block-size: var(--_sds-file-upload-item-progress-height);
189
+ border: none;
190
+ border-radius: var(--_sds-file-upload-item-progress-radius);
191
+ background-color: var(--_sds-file-upload-item-progress-track-color);
192
+ overflow: hidden;
193
+ }
194
+
195
+ .sds-file-upload-item__progress-track::before {
196
+ border-radius: inherit;
197
+ background-color: var(--_sds-file-upload-item-progress-value-color);
198
+ }
199
+
200
+ .sds-file-upload-item__progress-meta {
201
+ display: flex;
202
+ gap: var(--_sds-file-upload-item-content-data-gap);
203
+ font-size: var(--_sds-file-upload-item-content-file-detail-font-size);
204
+ font-weight: var(--_sds-file-upload-item-content-file-detail-font-weight);
205
+ line-height: var(--_sds-file-upload-item-content-file-detail-line-height);
206
+ color: var(--_sds-file-upload-item-content-file-detail-color);
207
+ }
208
+
209
+ .sds-file-upload-item__progress-percent {
210
+ margin-inline-start: auto;
211
+ }
212
+
213
+ sds-button {
214
+ --sds-button-text-color: var(--sds-color-action-default, var(--sds-color-neutral-action-default));
215
+
216
+ &:hover {
217
+ --sds-button-text-color: var(--sds-color-action-hover, var(--sds-color-neutral-action-hover));
218
+ --sds-button-background-color: var(--sds-color-surface-hover, var(--sds-color-neutral-surface-hover));
219
+ }
220
+
221
+ &:active {
222
+ --sds-button-text-color: var(--sds-color-action-active, var(--sds-color-neutral-action-active));
223
+ --sds-button-background-color: var(--sds-color-surface-active, var(--sds-color-neutral-surface-active));
224
+ }
225
+ }
226
+ `;
227
+ //# sourceMappingURL=sds-file-upload-item.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-file-upload-item.styles.js","sourceRoot":"","sources":["../../src/sds-file-upload-item/sds-file-upload-item.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n\t:host {\n\t\t--_sds-file-upload-item-background: var(--sds-file-upload-item-background, var(--sds-color-surface-default, var(--sds-color-neutral-surface-default)));\n\t\t--_sds-file-upload-item-border-color: var(--sds-file-upload-item-border-color, var(--sds-color-border-default, var(--sds-color-neutral-border-default)));\n\t\t--_sds-file-upload-item-border-width: var(--sds-file-upload-item-border-width, var(--sds-border-sm));\n\t\t--_sds-file-upload-item-border-radius: var(--sds-file-upload-item-border-radius, var(--sds-radius-md));\n\t\t--_sds-file-upload-item-padding: var(--sds-file-upload-item-padding, var(--sds-spacing-3xs) var(--sds-spacing-xs));\n\t\t--_sds-file-upload-item-gap: var(--sds-file-upload-item-gap, var(--sds-spacing-2xs));\n\t\t--_sds-file-upload-item-actions-gap: var(--sds-file-upload-item-actions-gap, var(--sds-spacing-5xs));\n\n\t\t--_sds-file-upload-item-content-gap: var(--sds-file-upload-item-content-gap, var(--sds-spacing-3xs));\n\t\t--_sds-file-upload-item-content-data-gap: var(--sds-file-upload-item-content-data-gap, var(--sds-spacing-5xs));\n\t\t--_sds-file-upload-item-content-icon-color: var(--sds-file-upload-item-content-icon-color, var(--sds-color-text-default, var(--sds-color-neutral-text-default)));\n\t\t--_sds-file-upload-item-content-preview-size: var(--sds-file-upload-item-content-preview-size, var(--sds-spacing-lg));\n\t\t--_sds-file-upload-item-content-preview-radius: var(--sds-file-upload-item-content-preview-radius, var(--sds-radius-xs));\n\t\t--_sds-file-upload-item-content-preview-background: var(--sds-file-upload-item-content-preview-background, var(--sds-color-surface-tinted, var(--sds-color-neutral-surface-tinted)));\n\t\t--_sds-file-upload-item-content-preview-highlight: var(--sds-file-upload-item-content-preview-highlight, var(--sds-color-surface-default, var(--sds-color-neutral-surface-default)));\n\t\t--_sds-file-upload-item-content-preview-loading-duration: var(--sds-file-upload-item-content-preview-loading-duration, 5500ms);\n\t\t--_sds-file-upload-item-content-file-name-font-size: var(--sds-file-upload-item-content-file-name-font-size, var(--sds-typography-body-md-desktop-font-size));\n\t\t--_sds-file-upload-item-content-file-name-font-weight: var(--sds-file-upload-item-content-file-name-font-weight, var(--sds-typography-body-md-desktop-font-weight));\n\t\t--_sds-file-upload-item-content-file-name-line-height: var(--sds-file-upload-item-content-file-name-line-height, var(--sds-typography-body-md-desktop-line-height));\n\t\t--_sds-file-upload-item-content-file-name-text-color: var(--sds-file-upload-item-content-file-name-text-color, var(--sds-color-text-default, var(--sds-color-neutral-text-default)));\n\t\t--_sds-file-upload-item-content-file-detail-font-size: var(--sds-file-upload-item-content-file-detail-font-size, var(--sds-typography-detail-xs-desktop-font-size));\n\t\t--_sds-file-upload-item-content-file-detail-font-weight: var(--sds-file-upload-item-content-file-detail-font-weight, var(--sds-typography-detail-xs-desktop-font-weight));\n\t\t--_sds-file-upload-item-content-file-detail-line-height: var(--sds-file-upload-item-content-file-detail-line-height, var(--sds-typography-detail-xs-desktop-line-height));\n\t\t--_sds-file-upload-item-content-file-detail-color: var(--sds-file-upload-item-content-file-detail-color, var(--sds-color-text-subtle, var(--sds-color-neutral-text-subtle)));\n\n\t\t--_sds-file-upload-item-progress-track-color: var(--sds-file-upload-item-progress-track-color, var(--sds-color-surface-tinted, var(--sds-color-neutral-surface-tinted)));\n\t\t--_sds-file-upload-item-progress-value-color: var(--sds-file-upload-item-progress-value-color, var(--sds-color-action-default, var(--sds-color-main-action-default)));\n\t\t--_sds-file-upload-item-progress-height: var(--sds-file-upload-item-progress-height, 0.375rem);\n\t\t--_sds-file-upload-item-progress-radius: var(--sds-file-upload-item-progress-radius, var(--sds-radius-full));\n\t\t--_sds-file-upload-item-progress-gap: var(--sds-file-upload-item-progress-gap, var(--sds-spacing-4xs));\n\t\t--_sds-file-upload-item-progress-spacing: var(--sds-file-upload-item-progress-spacing, var(--sds-spacing-2xs));\n\n\t\t--_sds-file-upload-item-error-alert-spacing: var(--sds-file-upload-item-error-alert-spacing, var(--sds-spacing-3xs));\n\n\t\t--_sds-file-upload-item-disabled-opacity: var(--sds-file-upload-item-disabled-opacity, var(--sds-color-states-disabled-opacity));\n\n\t\tdisplay: block;\n\t}\n\n\t:host([hidden]) {\n\t\tdisplay: none;\n\t}\n\n\t:host([disabled]) {\n\t\topacity: var(--_sds-file-upload-item-disabled-opacity);\n\t}\n\n\t:host([error-message]) {\n\t\t--_sds-file-upload-item-border-color: var(--sds-file-upload-item-border-color, var(--sds-color-alert-danger-border-default));\n\t\t--_sds-file-upload-item-content-icon-color: var(--sds-file-upload-item-content-icon-color, var(--sds-color-alert-danger-text-default));\n\t\t--_sds-file-upload-item-content-file-detail-color: var(--sds-file-upload-item-content-file-detail-color, var(--sds-color-alert-danger-text-default));\n\t}\n\n\t.sds-file-upload-item {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: var(--_sds-file-upload-item-progress-spacing);\n\t\tpadding: var(--_sds-file-upload-item-padding);\n\t\tborder: var(--_sds-file-upload-item-border-width) solid var(--_sds-file-upload-item-border-color);\n\t\tborder-radius: var(--_sds-file-upload-item-border-radius);\n\t\tbackground: var(--_sds-file-upload-item-background);\n\t}\n\n\t.sds-file-upload-item__row {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: var(--_sds-file-upload-item-gap);\n\t}\n\n\t.sds-file-upload-item__content {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tmin-width: 0;\n\t\talign-items: center;\n\t\tgap: var(--_sds-file-upload-item-content-gap);\n\t}\n\n\t.sds-file-upload-item__actions {\n\t\tdisplay: flex;\n\t\tflex: 0 0 auto;\n\t\talign-items: center;\n\t\tgap: var(--_sds-file-upload-item-actions-gap);\n\t}\n\n\t.sds-file-upload-item__content-icon {\n\t\tcolor: var(--_sds-file-upload-item-content-icon-color);\n\t}\n\n\t.sds-file-upload-item__content-preview {\n\t\tposition: relative;\n\t\tflex: 0 0 auto;\n\t\twidth: var(--_sds-file-upload-item-content-preview-size);\n\t\theight: var(--_sds-file-upload-item-content-preview-size);\n\t\tborder-radius: var(--_sds-file-upload-item-content-preview-radius);\n\t\toverflow: hidden;\n\t\tbackground-color: var(--_sds-file-upload-item-content-preview-background);\n\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tposition: absolute;\n\t\t\tinset: 0;\n\t\t\tbackground-color: var(--_sds-file-upload-item-content-preview-highlight);\n\t\t\topacity: 0;\n\t\t\twill-change: opacity;\n\t\t\tanimation: sds-file-upload-item-preview-breathe var(--_sds-file-upload-item-content-preview-loading-duration) ease-in-out infinite;\n\t\t}\n\t}\n\n\t.sds-file-upload-item__content-preview-image {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t}\n\n\t.sds-file-upload-item__content-preview[data-loaded] {\n\t\tbackground-color: transparent;\n\n\t\t&::before {\n\t\t\tcontent: none;\n\t\t}\n\t}\n\n\t@keyframes sds-file-upload-item-preview-breathe {\n\t\t0% \t{ opacity: 0.15; }\n\t\t40% { opacity: 1; }\n\t\t55% { opacity: 1; }\n\t\t100%{ opacity: 0.15; }\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.sds-file-upload-item__content-preview::before {\n\t\t\tanimation: none;\n\t\t\topacity: 0;\n\t\t}\n\t}\n\n\t.sds-file-upload-item__content-data {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmin-width: 0;\n\t\tgap: var(--_sds-file-upload-item-content-data-gap);\n\t}\n\n\t.sds-file-upload-item__content-file-name {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-size: var(--_sds-file-upload-item-content-file-name-font-size);\n\t\tfont-weight: var(--_sds-file-upload-item-content-file-name-font-weight);\n\t\tline-height: var(--_sds-file-upload-item-content-file-name-line-height);\n\t\tcolor: var(--_sds-file-upload-item-content-file-name-text-color);\n\t}\n\n\t.sds-file-upload-item__content-file-detail {\n\t\tfont-size: var(--_sds-file-upload-item-content-file-detail-font-size);\n\t\tfont-weight: var(--_sds-file-upload-item-content-file-detail-font-weight);\n\t\tline-height: var(--_sds-file-upload-item-content-file-detail-line-height);\n\t\tcolor: var(--_sds-file-upload-item-content-file-detail-color);\n\t}\n\n\t.sds-file-upload-item__content-file-error {\n\t\tfont-size: var(--_sds-file-upload-item-content-file-detail-font-size);\n\t\tfont-weight: var(--_sds-file-upload-item-content-file-detail-font-weight);\n\t\tline-height: var(--_sds-file-upload-item-content-file-detail-line-height);\n\t\tcolor: var(--_sds-file-upload-item-content-file-detail-color);\n\t}\n\n\t.sds-file-upload-item__error-alert {\n\t\tdisplay: block;\n\t\tmargin-block-start: var(--_sds-file-upload-item-error-alert-spacing);\n\t}\n\n\t.sds-file-upload-item__progress {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: var(--_sds-file-upload-item-progress-gap);\n\t}\n\n\t/* The track is the <u-progress> host; the fill is its ::before (width + 0.2s transition come from u-progress). */\n\t.sds-file-upload-item__progress-track {\n\t\tdisplay: block;\n\t\tinline-size: 100%;\n\t\tblock-size: var(--_sds-file-upload-item-progress-height);\n\t\tborder: none;\n\t\tborder-radius: var(--_sds-file-upload-item-progress-radius);\n\t\tbackground-color: var(--_sds-file-upload-item-progress-track-color);\n\t\toverflow: hidden;\n\t}\n\n\t.sds-file-upload-item__progress-track::before {\n\t\tborder-radius: inherit;\n\t\tbackground-color: var(--_sds-file-upload-item-progress-value-color);\n\t}\n\n\t.sds-file-upload-item__progress-meta {\n\t\tdisplay: flex;\n\t\tgap: var(--_sds-file-upload-item-content-data-gap);\n\t\tfont-size: var(--_sds-file-upload-item-content-file-detail-font-size);\n\t\tfont-weight: var(--_sds-file-upload-item-content-file-detail-font-weight);\n\t\tline-height: var(--_sds-file-upload-item-content-file-detail-line-height);\n\t\tcolor: var(--_sds-file-upload-item-content-file-detail-color);\n\t}\n\n\t.sds-file-upload-item__progress-percent {\n\t\tmargin-inline-start: auto;\n\t}\n\n\tsds-button {\n\t\t--sds-button-text-color: var(--sds-color-action-default, var(--sds-color-neutral-action-default));\n\n\t\t&:hover {\n\t\t\t--sds-button-text-color: var(--sds-color-action-hover, var(--sds-color-neutral-action-hover));\n\t\t\t--sds-button-background-color: var(--sds-color-surface-hover, var(--sds-color-neutral-surface-hover));\n\t\t}\n\n\t\t&:active {\n\t\t\t--sds-button-text-color: var(--sds-color-action-active, var(--sds-color-neutral-action-active));\n\t\t\t--sds-button-background-color: var(--sds-color-surface-active, var(--sds-color-neutral-surface-active));\n\t\t}\n\t}\n`;\n"]}
@@ -0,0 +1,128 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { SDSElement } from '../utils/sds-element';
3
+ import type { SDSFormControlAttributes } from '../mixins/sds-form-control-mixin';
4
+ import { SDS_SIZES, SDS_VARIANTS } from '../types';
5
+ import '../sds-textfield/sds-textfield';
6
+ import type { SDSTextFieldProps } from '../sds-textfield/sds-textfield';
7
+ import '../sds-button/sds-button';
8
+ import '../sds-icon/sds-icon';
9
+ type SearchSize = Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;
10
+ type ButtonVariant = SDS_VARIANTS;
11
+ /** Detail payload dispatched with the `search` event. */
12
+ export interface SDSSearchDetail {
13
+ value: string;
14
+ }
15
+ export interface SDSSearchProps extends SDSFormControlAttributes {
16
+ value?: string;
17
+ label?: string;
18
+ 'hide-label'?: boolean;
19
+ placeholder?: string;
20
+ 'help-text'?: string;
21
+ 'error-message'?: string;
22
+ size?: SearchSize;
23
+ 'button-label'?: string;
24
+ 'button-variant'?: ButtonVariant;
25
+ autocomplete?: SDSTextFieldProps['autocomplete'];
26
+ required?: boolean;
27
+ minlength?: number;
28
+ maxlength?: number;
29
+ pattern?: string;
30
+ }
31
+ declare const SDSSearchComponent_base: import("../mixins/types").Constructable<import("../mixins/sds-event-dispatcher-mixin").SDSEventDispatcherMixinInterface> & import("../mixins/types").Constructable<import("../mixins/sds-form-control-mixin").SDSFormControlMixinInterface> & typeof SDSElement;
32
+ /**
33
+ * A search field composed of an `sds-textfield` and `sds-button`.
34
+ *
35
+ * The field uses `type="search"`, so its input exposes the `searchbox` role and
36
+ * assistive technology announces it as a search field.
37
+ *
38
+ * The element is form-associated. Its `name` and value are submitted with the
39
+ * surrounding `<form>`, and the form's reset restores the initial value.
40
+ * `required`, `minlength`, `maxlength` and `pattern` are forwarded to the inner input, and its
41
+ * validity is mirrored on the host, so the field takes part in form validation like a native input.
42
+ *
43
+ * Emits a cancelable `search` event (detail: `{ value }`) when the button is
44
+ * pressed or the user presses Enter while the field is focused. Like a form's `submit`
45
+ * event, it is only emitted once the field passes validation (unless the form has
46
+ * `novalidate`). Unless the event is cancelled, the surrounding form (if any) is then submitted.
47
+ *
48
+ * A custom action control can be supplied through the `button` slot.
49
+ * A slotted control owns its own behaviour (click, `disabled`, form submission);
50
+ * Enter in the field still emits `search` and submits the form.
51
+ *
52
+ * @fires search - `CustomEvent<SDSSearchDetail>` on submit. Cancel it to prevent form submission.
53
+ * @fires input - When the value of the field changes.
54
+ * @fires change - When the value of the field has changed and the field loses focus.
55
+ * @fires select - When text in the field is selected.
56
+ * @fires keydown - `KeyboardEvent` on key presses in the field. Cancelling Enter prevents `search`.
57
+ * @fires focus - `FocusEvent` when focus moves into the component. Moving between the field and the button does not fire.
58
+ * @fires blur - `FocusEvent` when focus leaves the component. Moving between the field and the button does not fire.
59
+ * @fires invalid - When `checkValidity()`, `reportValidity()` or form submission finds the field invalid.
60
+ * @slot label - Rich content for the field's label. Takes precedence over the `label` property.
61
+ * @slot button - Optional replacement for the default icon button.
62
+ */
63
+ export declare class SDSSearchComponent extends SDSSearchComponent_base {
64
+ static styles: import("lit").CSSResult[];
65
+ value: string;
66
+ label?: string;
67
+ /** Hides the label visually while keeping it as the field's accessible name. */
68
+ hideLabel: boolean;
69
+ placeholder?: string;
70
+ helpText?: string;
71
+ errorMessage?: string;
72
+ size: SearchSize;
73
+ buttonLabel: string;
74
+ buttonVariant: ButtonVariant;
75
+ autocomplete?: SDSSearchProps['autocomplete'];
76
+ required: boolean;
77
+ minlength?: number;
78
+ maxlength?: number;
79
+ pattern?: string;
80
+ private _field?;
81
+ private _buttonCol?;
82
+ private _resizeObserver?;
83
+ private _defaultValue;
84
+ private _customValidityMessage;
85
+ constructor();
86
+ connectedCallback(): void;
87
+ disconnectedCallback(): void;
88
+ updated(changedProperties: PropertyValues): void;
89
+ /** Mirrors the inner input's validity on the host, which is the element the form validates. */
90
+ updateValidity(): void;
91
+ get validity(): ValidityState;
92
+ get validationMessage(): string;
93
+ get willValidate(): boolean;
94
+ checkValidity(): boolean;
95
+ reportValidity(): boolean;
96
+ setCustomValidity(message: string): void;
97
+ select(): void;
98
+ get selectionStart(): number | null;
99
+ set selectionStart(value: number | null);
100
+ get selectionEnd(): number | null;
101
+ set selectionEnd(value: number | null);
102
+ setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none'): void;
103
+ formResetCallback(): void;
104
+ formStateRestoreCallback(state: string | File | FormData | null): void;
105
+ /**
106
+ * Keeps the button aligned with the input row regardless of a stacked label,
107
+ * help text (including when it wraps) or an error message below the input, by
108
+ * shifting the button down by the input's offset within the field.
109
+ */
110
+ private _alignButtonToInput;
111
+ /** Emits `search` and, unless it is cancelled, submits the surrounding form. */
112
+ private _submit;
113
+ /** Whether `node` is the host, its light DOM content or part of its shadow tree. */
114
+ private _isOwnNode;
115
+ private readonly _handleFocusIn;
116
+ private readonly _handleFocusOut;
117
+ /** Stops `focus`/`blur` from the inner controls, both synthetic and native. The host emits its own. */
118
+ private readonly _stopChildEvent;
119
+ private readonly _reemitChildEvent;
120
+ private readonly _handleInput;
121
+ private readonly _handleButtonClick;
122
+ private readonly _handleKeydown;
123
+ private _renderField;
124
+ private _renderButtonColumn;
125
+ render(): import("lit-html").TemplateResult<1>;
126
+ }
127
+ export {};
128
+ //# sourceMappingURL=sds-search.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-search.component.d.ts","sourceRoot":"","sources":["../../src/sds-search/sds-search.component.ts"],"names":[],"mappings":"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"}