fluent-svelte-extra 1.8.0 → 1.8.2

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.
@@ -21,26 +21,35 @@
21
21
  inline-size: 540px;
22
22
  }
23
23
  }
24
-
24
+
25
25
  &-container {
26
26
  @include flex($direction: row, $align: start);
27
27
  #close-button {
28
28
  @include flex($direction: column, $align: center, $justify: center);
29
+ color: var(--text-primary);
29
30
  top: 0;
30
31
  margin-inline-start: 8px;
31
- block-size: 4.5rem;
32
- inline-size: 4.5rem;
32
+ block-size: 48px;
33
+ inline-size: 48px;
34
+ padding: 0;
33
35
  border-radius: var(--overlay-corner-radius);
34
- outline: none;
35
36
  border: 1px solid var(--surface-stroke-default);
36
37
  background-clip: padding-box;
37
38
  background-color: var(--control-on-image-fill-default);
38
- transition: background-color var(--control-fast-duration) var(--control-fast-out-slow-in-easing);
39
+ transition: background-color var(--control-fast-duration)
40
+ var(--control-fast-out-slow-in-easing),
41
+ color var(--control-fast-duration) var(--control-fast-out-slow-in-easing);
39
42
  &:hover {
40
43
  background-color: var(--control-on-image-fill-secondary);
41
- }&:active {
44
+ }
45
+ &:active {
42
46
  background-color: var(--control-on-image-fill-tertiary);
43
47
  }
48
+ &.disabled {
49
+ pointer-events: none;
50
+ color: var(--text-disabled);
51
+ background-color: var(--control-on-image-fill-default) !important;
52
+ }
44
53
  }
45
54
  }
46
55
 
@@ -34,6 +34,7 @@ export let footerElement = null;
34
34
  const forwardEvents = createEventForwarder(get_current_component(), [
35
35
  "open",
36
36
  "close",
37
+ "closeByButton",
37
38
  "backdropclick",
38
39
  "backdropmousedown"
39
40
  ]);
@@ -52,6 +53,12 @@ function mountDialog(node) {
52
53
  function close() {
53
54
  open = false;
54
55
  }
56
+ function closeByButton() {
57
+ if (closable) {
58
+ close();
59
+ dispatch("closeByButton");
60
+ }
61
+ }
55
62
  function handleEscapeKey({ key }) {
56
63
  if (key === "Escape" && open && closable)
57
64
  close();
@@ -104,7 +111,13 @@ function handleEscapeKey({ key }) {
104
111
  {/if}
105
112
  </div>
106
113
  {#if closeButton}
107
- <button id="close-button" on:click={close} aria-label="Close dialog">
114
+ <button
115
+ id="close-button"
116
+ aria-label="Close dialog"
117
+ tabindex="0"
118
+ class:disabled={!closable}
119
+ on:click={closeByButton}
120
+ >
108
121
  <svg
109
122
  aria-hidden="true"
110
123
  xmlns="http://www.w3.org/2000/svg"
@@ -124,4 +137,4 @@ function handleEscapeKey({ key }) {
124
137
  </div>
125
138
  {/if}
126
139
 
127
- <style >.content-dialog{-webkit-animation:dialog-inner var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing);animation:dialog-inner var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing);background-clip:padding-box;background-color:var(--fds-solid-background-base);border:1px solid var(--fds-surface-stroke-default);border-radius:var(--fds-overlay-corner-radius);box-shadow:var(--fds-dialog-shadow);box-sizing:border-box;max-inline-size:calc(100% - 24px);overflow:hidden}.content-dialog.size-min{inline-size:320px}.content-dialog.size-standard{inline-size:448px}.content-dialog.size-max{inline-size:540px}.content-dialog-container{align-items:flex-start;display:flex;flex-direction:row}.content-dialog-container #close-button{-webkit-margin-start:8px;align-items:center;background-clip:padding-box;background-color:var(--fds-control-on-image-fill-default);block-size:4.5rem;border:1px solid var(--fds-surface-stroke-default);border-radius:var(--fds-overlay-corner-radius);display:flex;flex-direction:column;inline-size:4.5rem;justify-content:center;margin-inline-start:8px;outline:none;top:0;transition:background-color var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing)}.content-dialog-container #close-button:hover{background-color:var(--fds-control-on-image-fill-secondary)}.content-dialog-container #close-button:active{background-color:var(--fds-control-on-image-fill-tertiary)}.content-dialog-smoke{align-items:center;block-size:100%;display:flex;flex-direction:column;inline-size:100%;inset-block-start:0;inset-inline-start:0;justify-content:center;position:fixed;z-index:101}.content-dialog-smoke.darken{background-color:var(--fds-smoke-background-default)}.content-dialog :global(.content-dialog-title){color:var(--fds-text-primary);display:block;margin-bottom:12px}.content-dialog-body,.content-dialog-footer{padding:24px}.content-dialog-body{background-color:var(--fds-layer-background-default);color:var(--fds-text-primary);font-family:var(--fds-font-family-text);font-size:var(--fds-body-font-size);font-weight:400;line-height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.content-dialog-footer{grid-gap:8px;-webkit-border-before:1px solid var(--fds-card-stroke-default);border-block-start:1px solid var(--fds-card-stroke-default);display:grid;grid-auto-flow:column;grid-auto-rows:1fr;white-space:nowrap}.content-dialog-footer>:global(.button:only-child){inline-size:50%;justify-self:end}</style>
140
+ <style >.content-dialog{-webkit-animation:dialog-inner var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing);animation:dialog-inner var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing);background-clip:padding-box;background-color:var(--fds-solid-background-base);border:1px solid var(--fds-surface-stroke-default);border-radius:var(--fds-overlay-corner-radius);box-shadow:var(--fds-dialog-shadow);box-sizing:border-box;max-inline-size:calc(100% - 24px);overflow:hidden}.content-dialog.size-min{inline-size:320px}.content-dialog.size-standard{inline-size:448px}.content-dialog.size-max{inline-size:540px}.content-dialog-container{align-items:flex-start;display:flex;flex-direction:row}.content-dialog-container #close-button{-webkit-margin-start:8px;align-items:center;background-clip:padding-box;background-color:var(--fds-control-on-image-fill-default);block-size:48px;border:1px solid var(--fds-surface-stroke-default);border-radius:var(--fds-overlay-corner-radius);color:var(--fds-text-primary);display:flex;flex-direction:column;inline-size:48px;justify-content:center;margin-inline-start:8px;padding:0;top:0;transition:background-color var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing),color var(--fds-control-fast-duration) var(--fds-control-fast-out-slow-in-easing)}.content-dialog-container #close-button:hover{background-color:var(--fds-control-on-image-fill-secondary)}.content-dialog-container #close-button:active{background-color:var(--fds-control-on-image-fill-tertiary)}.content-dialog-container #close-button.disabled{background-color:var(--fds-control-on-image-fill-default)!important;color:var(--fds-text-disabled);pointer-events:none}.content-dialog-smoke{align-items:center;block-size:100%;display:flex;flex-direction:column;inline-size:100%;inset-block-start:0;inset-inline-start:0;justify-content:center;position:fixed;z-index:101}.content-dialog-smoke.darken{background-color:var(--fds-smoke-background-default)}.content-dialog :global(.content-dialog-title){color:var(--fds-text-primary);display:block;margin-bottom:12px}.content-dialog-body,.content-dialog-footer{padding:24px}.content-dialog-body{background-color:var(--fds-layer-background-default);color:var(--fds-text-primary);font-family:var(--fds-font-family-text);font-size:var(--fds-body-font-size);font-weight:400;line-height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.content-dialog-footer{grid-gap:8px;-webkit-border-before:1px solid var(--fds-card-stroke-default);border-block-start:1px solid var(--fds-card-stroke-default);display:grid;grid-auto-flow:column;grid-auto-rows:1fr;white-space:nowrap}.content-dialog-footer>:global(.button:only-child){inline-size:50%;justify-self:end}</style>
@@ -21,6 +21,7 @@ declare const __propDef: {
21
21
  backdropmousedown: CustomEvent<any>;
22
22
  close: CustomEvent<any>;
23
23
  open: CustomEvent<any>;
24
+ closeByButton: CustomEvent<any>;
24
25
  } & {
25
26
  [evt: string]: CustomEvent<any>;
26
27
  };
@@ -16,7 +16,6 @@
16
16
  min-block-size: 30px;
17
17
  padding: 6px 12px;
18
18
  border-radius: var(--control-corner-radius);
19
- color: var(--text-primary);
20
19
  background-color: transparent;
21
20
  &:empty:before {
22
21
  content: attr(placeholder);
@@ -53,7 +52,9 @@
53
52
  background-color: var(--control-fill-secondary);
54
53
  }
55
54
  &.disabled {
56
- cursor: default;
55
+ cursor: default !important;
56
+
57
+ color: var(--text-disabled) !important;
57
58
  background-color: var(--control-fill-disabled);
58
59
  .text-area-underline {
59
60
  display: none;
@@ -22,13 +22,12 @@ export let textAreaElement = null;
22
22
  /** Obtains a bound DOM reference to the TextArea's container element. */
23
23
  export let containerElement = null;
24
24
  const forwardEvents = createEventForwarder(get_current_component());
25
- const inputProps = {
26
- class: "text-area",
27
- disabled: disabled || undefined,
28
- readonly: readonly || undefined,
29
- placeholder: placeholder || undefined,
30
- ...$$restProps
31
- };
25
+ $: {
26
+ if (disabled && containerElement && textAreaElement) {
27
+ containerElement.blur();
28
+ textAreaElement.blur();
29
+ }
30
+ }
32
31
  </script>
33
32
 
34
33
  <!--
@@ -49,39 +48,33 @@ textarea.
49
48
  <div
50
49
  role="textbox"
51
50
  {spellcheck}
52
- contenteditable="true"
51
+ contenteditable
53
52
  tabindex={disabled ? -1 : 1}
54
53
  bind:this={textAreaElement}
55
54
  use:forwardEvents
56
- use:conditionalEvent={{
57
- condition: maxLength != undefined,
58
- event: "keypress",
59
- callback: function (e) {
60
- if (this.innerText.length + 1 > maxLength) e.preventDefault();
61
- }
55
+ on:keypress={e => {
56
+ if (maxLength != undefined && this.innerText.length + 1 > maxLength) e.preventDefault();
62
57
  }}
63
- use:conditionalEvent={{
64
- condition: includeImages == false,
65
- event: "paste",
66
- callback: function (e) {
67
- const pastedData = e.clipboardData.getData("text");
68
- const regex = /^[a-zA-Z0-9@ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]+$/;
58
+ on:paste={e => {
59
+ if (includeImages) return;
69
60
 
70
- if (regex.test(pastedData) !== true) {
71
- e.preventDefault();
72
- }
61
+ const pastedData = e.clipboardData.getData("text");
62
+ const regex = /^[a-zA-Z0-9@ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]+$/;
73
63
 
74
- if (this.innerText.length + pastedData.length > maxLength) e.preventDefault();
64
+ if (regex.test(pastedData) !== true) {
65
+ e.preventDefault();
75
66
  }
67
+
68
+ if (this.innerText.length + pastedData.length > maxLength) e.preventDefault();
76
69
  }}
77
- use:conditionalEvent={{
78
- condition: disabled,
79
- event: "focus",
80
- callback: function (e) {
81
- e.target.blur();
82
- }
70
+ on:focus={e => {
71
+ if (disabled) e.target.blur();
83
72
  }}
84
- {...inputProps}
73
+ class="text-area"
74
+ {disabled}
75
+ {readonly}
76
+ {placeholder}
77
+ {...$$restProps}
85
78
  bind:innerText={value}
86
79
  />
87
80
  <slot />
@@ -93,4 +86,4 @@ textarea.
93
86
  />
94
87
  </div>
95
88
 
96
- <style >.text-area{background-color:transparent;border:none;border-radius:var(--fds-control-corner-radius);box-sizing:border-box;color:var(--fds-text-primary);cursor:unset;flex-grow:1;flex:1 1 auto;font-family:var(--fds-font-family-text);font-size:var(--fds-body-font-size);font-weight:400;inline-size:100%;line-height:20px;margin:0;min-block-size:30px;outline:none;overflow-x:hidden;overflow-y:auto;padding:6px 12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;word-break:break-all}.text-area:empty:before{color:var(--fds-text-secondary);content:attr(placeholder);display:block;pointer-events:none}.text-area::-webkit-search-cancel-button,.text-area::-webkit-search-decoration,.text-area::-webkit-search-results-button,.text-area::-webkit-search-results-decoration{-webkit-appearance:none}.text-area::-ms-reveal{display:none}.text-area:disabled{color:var(--fds-text-disabled)}.text-area:disabled::-moz-placeholder{color:var(--fds-text-disabled)}.text-area:disabled:-ms-input-placeholder{color:var(--fds-text-disabled)}.text-area:disabled::placeholder{color:var(--fds-text-disabled)}.text-area-container{align-items:center;background-clip:padding-box;background-color:var(--fds-control-fill-default);border:1px solid var(--fds-control-stroke-default);border-radius:var(--fds-control-corner-radius);cursor:text;display:flex;inline-size:100%;position:relative}.text-area-container:hover{background-color:var(--fds-control-fill-secondary)}.text-area-container.disabled{background-color:var(--fds-control-fill-disabled);cursor:default}.text-area-container.disabled .text-area-underline{display:none}.text-area-container:focus-within{background-color:var(--fds-control-fill-input-active)}.text-area-container:focus-within .text-area::-moz-placeholder{color:var(--fds-text-tertiary)}.text-area-container:focus-within .text-area:-ms-input-placeholder{color:var(--fds-text-tertiary)}.text-area-container:focus-within .text-area::placeholder{color:var(--fds-text-tertiary)}.text-area-container:focus-within .text-area-underline:after{border-bottom:2px solid var(--fds-accent-default)}.text-area-container:focus-within :global(.text-area-clear-button){display:flex}.text-area-underline{block-size:calc(100% + 2px);border-radius:var(--fds-control-corner-radius);inline-size:calc(100% + 2px);inset-block-start:-1px;inset-inline-start:-1px;overflow:hidden;pointer-events:none;position:absolute}.text-area-underline:after{block-size:100%;border-bottom:var(--fds-bottom-border);box-sizing:border-box;content:"";inline-size:100%;inset-block-end:0;inset-inline-start:0;position:absolute}.text-area-buttons{align-items:center;cursor:default;display:flex;flex:0 0 auto}.text-area-buttons >:global(.text-area-button){-webkit-margin-start:6px;margin-inline-start:6px}.text-area-buttons >:global(.text-area-button:first-of-type){-webkit-margin-start:0;margin-inline-start:0}.text-area-buttons >:global(.text-area-button:last-of-type){-webkit-margin-end:4px;margin-inline-end:4px}.text-area-buttons :global(.text-area-clear-button){display:none}</style>
89
+ <style >.text-area{background-color:transparent;border:none;border-radius:var(--fds-control-corner-radius);box-sizing:border-box;cursor:unset;flex-grow:1;flex:1 1 auto;font-family:var(--fds-font-family-text);font-size:var(--fds-body-font-size);font-weight:400;inline-size:100%;line-height:20px;margin:0;min-block-size:30px;outline:none;overflow-x:hidden;overflow-y:auto;padding:6px 12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;word-break:break-all}.text-area:empty:before{color:var(--fds-text-secondary);content:attr(placeholder);display:block;pointer-events:none}.text-area::-webkit-search-cancel-button,.text-area::-webkit-search-decoration,.text-area::-webkit-search-results-button,.text-area::-webkit-search-results-decoration{-webkit-appearance:none}.text-area::-ms-reveal{display:none}.text-area:disabled{color:var(--fds-text-disabled)}.text-area:disabled::-moz-placeholder{color:var(--fds-text-disabled)}.text-area:disabled:-ms-input-placeholder{color:var(--fds-text-disabled)}.text-area:disabled::placeholder{color:var(--fds-text-disabled)}.text-area-container{align-items:center;background-clip:padding-box;background-color:var(--fds-control-fill-default);border:1px solid var(--fds-control-stroke-default);border-radius:var(--fds-control-corner-radius);cursor:text;display:flex;inline-size:100%;position:relative}.text-area-container:hover{background-color:var(--fds-control-fill-secondary)}.text-area-container.disabled{background-color:var(--fds-control-fill-disabled);color:var(--fds-text-disabled)!important;cursor:default!important}.text-area-container.disabled .text-area-underline{display:none}.text-area-container:focus-within{background-color:var(--fds-control-fill-input-active)}.text-area-container:focus-within .text-area::-moz-placeholder{color:var(--fds-text-tertiary)}.text-area-container:focus-within .text-area:-ms-input-placeholder{color:var(--fds-text-tertiary)}.text-area-container:focus-within .text-area::placeholder{color:var(--fds-text-tertiary)}.text-area-container:focus-within .text-area-underline:after{border-bottom:2px solid var(--fds-accent-default)}.text-area-container:focus-within :global(.text-area-clear-button){display:flex}.text-area-underline{block-size:calc(100% + 2px);border-radius:var(--fds-control-corner-radius);inline-size:calc(100% + 2px);inset-block-start:-1px;inset-inline-start:-1px;overflow:hidden;pointer-events:none;position:absolute}.text-area-underline:after{block-size:100%;border-bottom:var(--fds-bottom-border);box-sizing:border-box;content:"";inline-size:100%;inset-block-end:0;inset-inline-start:0;position:absolute}.text-area-buttons{align-items:center;cursor:default;display:flex;flex:0 0 auto}.text-area-buttons >:global(.text-area-button){-webkit-margin-start:6px;margin-inline-start:6px}.text-area-buttons >:global(.text-area-button:first-of-type){-webkit-margin-start:0;margin-inline-start:0}.text-area-buttons >:global(.text-area-button:last-of-type){-webkit-margin-end:4px;margin-inline-end:4px}.text-area-buttons :global(.text-area-clear-button){display:none}</style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluent-svelte-extra",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "A faithful implementation of Microsoft's Fluent Design System in Svelte.",
5
5
  "homepage": "https://github.com/OpenAnime/fluent-svelte-extra",
6
6
  "license": "MIT",