@stonecrop/aform 0.26.0 → 0.28.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.
- package/dist/aform.d.ts +6 -0
- package/dist/aform.js +1149 -1000
- package/dist/aform.js.map +1 -1
- package/dist/assets/index.css +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -1
- package/package.json +5 -5
- package/src/components/AForm.vue +13 -4
- package/src/components/base/ExpandButton.vue +34 -0
- package/src/components/form/ASegmentedControl.vue +342 -0
- package/src/index.ts +6 -0
package/dist/assets/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.aform_checkbox[data-v-ca06741d]{cursor:pointer;width:auto;margin-top:0;display:block}.aform_checkbox[data-v-ca06741d]:checked{accent-color:var(--sc-primary-color);border:1px solid black}.aform_checkbox-container[data-v-ca06741d]{width:100%;display:inline-block;text-align:left}.aform_checkbox-container input[data-v-ca06741d]{width:auto}.aform_checkbox-container:hover+.aform_field-label[data-v-ca06741d]{color:var(--sc-input-active-label-color)}.aform_form-link-wrapper[data-v-154d79c9]{position:relative}.input-group[data-v-154d79c9]{display:flex;align-items:stretch}.aform_input-field[data-v-154d79c9]{flex:1;min-width:0}.aform_form-element--embedded[data-v-154d79c9]{min-width:0;flex-grow:0}.aform_input-field--embedded[data-v-154d79c9]{outline:none;background:transparent;padding:.5ch 1ch}.aform_form-element--embedded .autocomplete-results[data-v-154d79c9]{min-width:100%;width:max-content}.aform_form-btn[data-v-154d79c9]{appearance:none;border:none;outline:1px solid var(--sc-input-border-color);outline-offset:-1px;margin-left:-2px;background:var(--sc-input-field-background, white);padding:0 .75rem;cursor:pointer}.aform_form-btn[data-v-154d79c9]:focus,.input-group:focus-within .aform_form-btn[data-v-154d79c9]{outline-color:var(--sc-input-active-border-color)}.autocomplete-results[data-v-154d79c9]{position:absolute;width:100%;z-index:100;padding:0;margin:0;list-style:none;border:1px solid var(--sc-input-active-border-color);border-top:none;border-radius:0 0 .25rem .25rem;background:#fff}.autocomplete-result[data-v-154d79c9]{padding:4px 6px;cursor:pointer;border-bottom:.5px solid lightgray}.autocomplete-result.is-active[data-v-154d79c9],.autocomplete-result[data-v-154d79c9]:hover{background-color:var(--sc-row-color-zebra-light);color:var(--sc-input-active-border-color)}.acurrency__row[data-v-15bec6ef]{display:flex;gap:1ch}.acurrency__row--base[data-v-15bec6ef]{margin-top:1.5rem}.acurrency__field[data-v-15bec6ef]{position:relative;flex:1;min-width:0}.acurrency__group[data-v-15bec6ef]{display:flex;align-items:stretch;width:100%;border:1px solid var(--sc-input-border-color);border-radius:.25rem}.acurrency__group[data-v-15bec6ef]:focus-within{border-color:var(--sc-input-active-border-color)}.acurrency__amount-wrap[data-v-15bec6ef]{position:relative;flex:1;min-width:0}.acurrency__amount-wrap .aform_field-label[data-v-15bec6ef]{font-size:.85rem}.acurrency__amount[data-v-15bec6ef]{width:100%;box-sizing:border-box;border:none;outline:none;padding:.5ch 1ch;background:transparent;border-radius:0 .25rem .25rem 0;text-align:right;appearance:textfield;-moz-appearance:textfield}.acurrency__amount[data-v-15bec6ef]::-webkit-outer-spin-button,.acurrency__amount[data-v-15bec6ef]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.acurrency__currency[data-v-15bec6ef]{position:relative;flex:0 0 auto;min-width:4.5rem;background:var(--sc-gray-5);border-right:1px solid var(--sc-input-border-color);border-radius:.25rem 0 0 .25rem}.acurrency__base-field[data-v-15bec6ef]{width:100%;box-sizing:border-box;font-size:1rem;padding:.5ch 1ch;border:1px solid var(--sc-input-border-color);border-radius:.25rem;outline:none;appearance:textfield;-moz-appearance:textfield}.acurrency__base-field[data-v-15bec6ef]:disabled{color:var(--sc-gray-50, #888)}.acurrency__base-field[data-v-15bec6ef]::-webkit-outer-spin-button,.acurrency__base-field[data-v-15bec6ef]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.adatepicker[data-v-322c2ceb],.adatepicker table[data-v-322c2ceb],.adatepicker tr[data-v-322c2ceb],.adatepicker td[data-v-322c2ceb],.adatepicker th[data-v-322c2ceb]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.adatepicker[data-v-322c2ceb]{font-size:var(--sc-table-font-size);display:inline-table;color:var(--sc-cell-text-color);outline:none;border-collapse:collapse;margin-bottom:10px}.adatepicker tr[data-v-322c2ceb]{height:1.15rem;text-align:center;vertical-align:middle}.adatepicker td[data-v-322c2ceb]{border:2px solid transparent;outline:2px solid transparent;min-width:3ch;max-width:3ch;cursor:pointer}.adatepicker td.date-cell[data-v-322c2ceb]:hover{background:var(--sc-gray-10)}.adatepicker td[data-v-322c2ceb]:focus,.adatepicker td[data-v-322c2ceb]:focus-within{box-shadow:none;min-height:1.15em;max-height:1.15em;overflow:hidden}.adatepicker .selectedDate[data-v-322c2ceb],.adatepicker .startDate[data-v-322c2ceb],.adatepicker .endDate[data-v-322c2ceb]{background:var(--sc-gray-20);font-weight:bolder}.adatepicker .startDate[data-v-322c2ceb]{border-left:1px solid var(--sc-gray-50);background:var(--sc-gray-20)!important}.adatepicker .endDate[data-v-322c2ceb]{border-right:1px solid var(--sc-gray-50);background:var(--sc-gray-20)!important}.adatepicker .withinRange[data-v-322c2ceb]{background:var(--sc-gray-5)}.adatepicker .todaysDate[data-v-322c2ceb]{font-weight:bolder;color:#000}.days-header>td[data-v-322c2ceb]{font-weight:700}.prev-date[data-v-322c2ceb]{color:var(--sc-gray-20)}.adatepicker .date-input[data-v-322c2ceb]{display:flex;width:100%;gap:5px;align-items:center}.adatepicker .date-input>input[data-v-322c2ceb]{width:50%;padding:2px}p.aform_error[data-v-322c2ceb]{position:static;display:block;color:var(--sc-brand-danger, red);font-size:.7rem;margin:.25rem 0 0}.adate_time[data-v-95ad0aa4]{width:auto;padding:10px;box-sizing:border-box;font-size:1rem;background:var(--sc-gray-10)}.adate_time_fields[data-v-95ad0aa4]{display:flex;align-items:stretch;gap:5px;justify-content:flex-start}.adate_time_fields>input[data-v-95ad0aa4]{min-width:30px;padding:2px;text-align:center;display:inline-block;flex-basis:0}.meridiem-selector[data-v-95ad0aa4]{cursor:pointer;display:inline-block;flex-basis:0;padding:5px;-webkit-user-select:none;user-select:none}.meridiem-selector[data-v-95ad0aa4]:focus{outline:2px solid black;outline-offset:-2px}.adate_time_segment[data-v-95ad0aa4]{display:flex;flex-direction:column;width:40px}.colon[data-v-95ad0aa4]{display:flex;align-items:normal}.aform_form-btn[data-v-95ad0aa4]{cursor:pointer}.aform-select[data-v-95ad0aa4]{border:1px solid rgb(118,118,118);font-size:1rem;padding:0rem;margin:0;border-radius:0;box-sizing:border-box;min-height:auto;position:relative;color:var(--sc-cell-text-color)}.meridiem-selector[data-v-95ad0aa4]{margin-left:6px}.adate-selection[data-v-602dfd69]{display:inline-block;border:1px solid var(--sc-gray-80);padding:10px;background:var(--sc-form-background)}.adate-selection__end-label[data-v-602dfd69]{font-size:.8em;font-weight:700;color:var(--sc-input-active-label-color, #555);margin-top:8px;margin-bottom:2px;padding-left:2px}.empty[data-v-602dfd69]{color:#ccc;padding:10px;text-align:center;border:1px solid #ccc}.adate-picker[data-v-5de3fe7a]{position:absolute;top:100%;left:0;z-index:1000;margin-top:.25rem}.autocomplete[data-v-11fc3569]{position:relative}.autocomplete-results[data-v-11fc3569]{position:absolute;left:0;right:0;z-index:100;padding:0;margin:0;color:var(--sc-input-active-border-color);border:1px solid var(--sc-input-active-border-color);border-radius:0;border-top:none;background-color:var(--sc-input-field-background, #fff);list-style:none}.autocomplete-result[data-v-11fc3569]{text-align:left;padding:4px 6px;cursor:pointer;border-bottom:.5px solid lightgray}.autocomplete-result.is-active[data-v-11fc3569],.autocomplete-result[data-v-11fc3569]:hover{background-color:var(--sc-row-color-zebra-light);color:var(--sc-input-active-border-color)}.abadge[data-v-4f364f5f]{display:block;box-sizing:border-box;font:inherit;line-height:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.abadge--cell-fill[data-v-4f364f5f]{display:block;box-sizing:border-box;width:100%;min-height:calc(var(--sc-atable-row-height, 1.5em) + 2 * var(--sc-atable-row-padding, .125rem));line-height:calc(var(--sc-atable-row-height, 1.5em) + 2 * var(--sc-atable-row-padding, .125rem));margin:0;padding:0 .5ch;border-radius:0;text-align:inherit;background:var(--sc-badge-bg);color:var(--sc-badge-text)}.abadge--cell-fill.abadge--neutral[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-neutral-bg);--sc-badge-text: var(--sc-badge-neutral-text)}.abadge--cell-fill.abadge--success[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-success-bg);--sc-badge-text: var(--sc-badge-success-text)}.abadge--cell-fill.abadge--warning[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-warning-bg);--sc-badge-text: var(--sc-badge-warning-text)}.abadge--cell-fill.abadge--danger[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-danger-bg);--sc-badge-text: var(--sc-badge-danger-text)}.abadge--cell-fill.abadge--brand[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-brand-bg);--sc-badge-text: var(--sc-badge-brand-text)}.abadge--input-accent[data-v-4f364f5f]{background:var(--sc-input-field-background, #ffffff);color:inherit;border-left:4px solid var(--sc-badge-accent);padding-left:calc(1ch - 4px)}.abadge--input-accent.abadge--neutral[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-neutral-accent)}.abadge--input-accent.abadge--success[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-success-accent)}.abadge--input-accent.abadge--warning[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-warning-accent)}.abadge--input-accent.abadge--danger[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-danger-accent)}.abadge--input-accent.abadge--brand[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-brand-accent)}.adatetime-picker[data-v-b0fa488b]{position:absolute;top:100%;left:0;z-index:1000;margin-top:.25rem}.aduration[data-v-2e4dd7dd]{position:relative;min-width:40ch;width:100%}.aduration__summary[data-v-2e4dd7dd]{display:flex;gap:6px;align-items:baseline;margin-top:6px;font-size:.9em}.aduration__label[data-v-2e4dd7dd]{font-weight:700;color:var(--sc-input-active-label-color, #555)}.aduration__value[data-v-2e4dd7dd]{color:var(--sc-cell-text-color, #000)}.aduration__ms[data-v-2e4dd7dd]{color:var(--sc-gray-50, #888);font-size:.85em}.aduration__footer[data-v-2e4dd7dd]{margin-top:8px}.adaterange-picker[data-v-f8dad4d3]{position:absolute;top:100%;left:0;z-index:1000;margin-top:.25rem}.aform input{font-family:var(--sc-font-family);border:none}.aform_form-element{padding:0;margin:0;position:relative;box-sizing:border-box;flex-grow:1;min-width:20ch}.aform__grid--full{flex-basis:100%;width:100%}.aform_input-field{outline:1px solid var(--sc-input-border-color);outline-offset:-1px;font-size:1rem;padding:.5rem;margin:0;border-radius:0;box-sizing:border-box;width:100%;min-height:auto;position:relative;color:var(--sc-cell-text-color);background:var(--sc-input-field-background);font-family:var(--sc-font-family)}.aform_input-field:focus{outline:1px solid var(--sc-input-active-border-color)}.aform_display-value{display:block;padding:.5rem;min-height:2rem;color:var(--sc-cell-text-color);word-break:break-word}.aform_input-field:focus+.aform_field-label{color:var(--sc-input-active-label-color)}.aform_field-label{color:var(--sc-input-label-color);display:inline-block;position:absolute;padding:0 .25rem;margin:0rem;z-index:1;font-size:.7rem;font-weight:300;letter-spacing:.05rem;background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-background) 50%);width:auto;box-sizing:border-box;background:#fff;margin:0;grid-row:1;top:0;left:10px;border:none;line-height:0;transform:translateY(-50%)}.aform_input-field:disabled,.aform_checkbox-container:has(.aform_checkbox:disabled){background:var(--sc-input-field-disabled-background)}.aform_input-field:disabled+.aform_field-label,.aform_checkbox-container:has(.aform_checkbox:disabled)+.aform_field-label{background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-disabled-background) 50%)}.aform_input-field:disabled~p.aform_error,.aform_checkbox-container:has(.aform_checkbox:disabled)~p.aform_error{background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-disabled-background) 50%)}.aform_field-label:after{margin:0;padding:0;box-sizing:border-box;content:"";line-height:normal}p.aform_error{display:inline-block;background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-background) 50%);padding:0 .25rem;margin:0rem;width:auto;color:var(--sc-brand-danger);font-size:.7rem;position:absolute;right:0;top:0;line-height:0;background:#fff;padding:.25rem;transform:translate(-1rem,-50%);margin:0}.aform[data-v-bb17171c]{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;border:1px solid var(--sc-form-border);border-left:4px solid var(--sc-form-border);margin-bottom:1rem;max-width:100%}@media screen and (max-width:400px){.aform[data-v-bb17171c]{flex-direction:column}}.aform-nested-section[data-v-bb17171c]{width:100%;padding:.5rem 0}.aform-nested-label[data-v-bb17171c]{font-size:.9rem;font-weight:600;margin:0 0 .5rem;color:var(--sc-input-label-color, #666)}.aform-nested-section .aform[data-v-bb17171c]{border-left-width:2px;margin-left:.5rem}.collapse-button[data-v-6f1c1b45]{width:2ch;min-width:calc(66px - 4ch);background-color:transparent;font-size:150%;text-align:center;border:none;margin-top:-.5rem}.rotated[data-v-6f1c1b45]{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transition:transform .25s;transform-origin:center center}.unrotated[data-v-6f1c1b45]{transform:rotate(0);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transition:transform .25s}fieldset[data-v-162e7317]{max-width:100%;width:100%;margin-right:2ch;border:1px solid transparent;border-bottom:1px solid var(--sc-gray-50)}legend[data-v-162e7317]{width:100%;height:1.15rem;border:1px solid transparent;padding-bottom:.5rem;font-size:110%;font-weight:600;-webkit-user-select:none;user-select:none}.collapse-button[data-v-162e7317]{float:right}.aform_file-attach[data-v-8eefd179]{padding:1rem;display:flex;flex-wrap:wrap;gap:1rem;flex-direction:row;justify-content:center;align-items:center;border:1px dashed var(--sc-input-border-color);width:100%}@media screen and (max-width:400px){.aform_file-attach>.aform_form-btn[data-v-8eefd179]{width:100%}}.aform_file-attach-feedback[data-v-8eefd179]{color:var(--sc-input-label-color);width:100%;padding:.5rem;text-align:center;align-self:center}.aform_file-attach-feedback>li[data-v-8eefd179]{list-style:none;font-style:italic}.aform_file-attach-feedback>p[data-v-8eefd179]{margin-top:0}.aform_form-btn[data-v-8eefd179]{padding:.5rem 2rem;width:auto;border:1px solid var(--sc-input-border-color);color:var(--sc-input-label-color);cursor:pointer;background-color:#fff}.aform_form-btn[data-v-8eefd179]:disabled{background-color:var(--sc-gray-5)}.aquantity__row[data-v-0b714861]{display:flex;gap:1ch}.aquantity__row--stock[data-v-0b714861]{margin-top:1.5rem}.aquantity__field[data-v-0b714861]{position:relative;flex:1;min-width:0}.aquantity__group[data-v-0b714861]{display:flex;align-items:stretch;width:100%;border:1px solid var(--sc-input-border-color);border-radius:.25rem}.aquantity__group[data-v-0b714861]:focus-within{border-color:var(--sc-input-active-border-color)}.aquantity__qty[data-v-0b714861]{flex:1;min-width:0;border:none;outline:none;padding:.5ch 1ch;background:transparent;border-radius:.25rem 0 0 .25rem;appearance:textfield;-moz-appearance:textfield}.aquantity__qty[data-v-0b714861]::-webkit-outer-spin-button,.aquantity__qty[data-v-0b714861]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.aquantity__uom[data-v-0b714861]{position:relative;flex:0 0 auto;border-left:1px solid var(--sc-input-border-color)}.aquantity__uom-toggle[data-v-0b714861]{display:flex;align-items:center;gap:.75ch;height:100%;padding:.5ch 1ch;background:var(--sc-gray-5);border:none;border-radius:0 .25rem .25rem 0;white-space:nowrap;cursor:pointer}.aquantity__uom-toggle[data-v-0b714861]:disabled{cursor:not-allowed;color:var(--sc-gray-50, #888)}.aquantity__caret[data-v-0b714861]{display:inline-block;width:0;height:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid currentColor}.aquantity__uom-menu[data-v-0b714861]{position:absolute;top:100%;right:0;z-index:100;min-width:100%;margin:.15rem 0 0;padding:.25rem 0;list-style:none;background:var(--sc-input-field-background, #fff);border:1px solid var(--sc-input-active-border-color);border-radius:.25rem}.aquantity__uom-option[data-v-0b714861]{padding:.4ch 1ch;white-space:nowrap;cursor:pointer}.aquantity__uom-option.is-active[data-v-0b714861],.aquantity__uom-option[data-v-0b714861]:hover{background-color:var(--sc-row-color-zebra-light)}.aquantity__stock-field[data-v-0b714861]{width:100%;font-size:1rem;padding:.5ch 1ch;border:1px solid var(--sc-input-border-color);border-radius:.25rem;outline:none}.aquantity__stock-field[data-v-0b714861]:disabled{color:var(--sc-gray-50, #888)}.aform_textbox[data-v-2a9c793b]{resize:vertical;line-height:1.5;min-height:4rem;font-family:inherit}.aform_textbox-display[data-v-2a9c793b]{white-space:pre-wrap}.login-container[data-v-2c0f0634]{width:100%;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--sc-font-family)}.account-container[data-v-2c0f0634]{width:100%;margin-left:auto;margin-top:.5rem;margin-right:auto;display:flex;flex-direction:column;justify-content:center}.account-header[data-v-2c0f0634]{display:flex;flex-direction:column;text-align:center;margin-top:.5rem}#account-title[data-v-2c0f0634]{font-size:1.5rem;line-height:2rem;font-weight:600;letter-spacing:-.025em;margin:0}#account-subtitle[data-v-2c0f0634]{font-size:.875rem;line-height:1.25rem;margin:1rem}.login-form-container[data-v-2c0f0634]{display:grid;gap:.5rem}.login-form-element[data-v-2c0f0634]{display:grid;margin:.5rem 0;position:relative}.login-field[data-v-2c0f0634]{padding:.5rem .25rem .25rem .5rem;outline:1px solid transparent;border:1px solid var(--sc-input-border-color);border-radius:.25rem}.login-field[data-v-2c0f0634]:focus{border:1px solid black}.btn[data-v-2c0f0634]{background-color:var(--sc-btn-color);color:var(--sc-btn-label-color);border:1px solid var(--sc-btn-border);margin:.5rem 0;padding:.25rem;position:relative;cursor:pointer}.btn[data-v-2c0f0634]:hover{background-color:var(--sc-btn-hover)}.btn[data-v-2c0f0634]:disabled{background-color:var(--sc-input-field-disabled-background)}.disabled[data-v-2c0f0634]{opacity:.5}.loading-icon[data-v-2c0f0634]{animation:spin-2c0f0634 1s linear infinite forwards;display:inline-block;margin-right:.2rem;line-height:0;font-size:1rem;position:relative;top:.2rem}@keyframes spin-2c0f0634{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.aform-loading[data-v-274f5ba3]{width:100%;border:1px solid var(--sc-form-border);border-left:4px solid var(--sc-form-border);padding:1rem;margin-bottom:1rem;box-sizing:border-box;position:relative;overflow:hidden;background:var(--sc-input-field-background, #fff)}.aform-loading__label[data-v-274f5ba3]{font-size:.9rem;color:var(--sc-cell-text-color);z-index:1;position:relative}.aform-loading__label[data-v-274f5ba3]:not(:empty):after{content:"...";animation:ellipsis-274f5ba3 2s infinite}.aform-loading__bar[data-v-274f5ba3]{width:100%;height:100%;position:absolute;left:-100%;top:0;background:linear-gradient(90deg,rgba(var(--sc-table-loading-color),0),rgba(var(--sc-table-loading-color),1),rgba(var(--sc-table-loading-color),0));animation:bar-sweep-274f5ba3 2s infinite;z-index:0}@keyframes bar-sweep-274f5ba3{0%{left:-100%}to{left:100%}}@keyframes ellipsis-274f5ba3{0%,20%{content:""}40%{content:"."}60%{content:".."}80%,to{content:"..."}}
|
|
1
|
+
.aform_checkbox[data-v-ca06741d]{cursor:pointer;width:auto;margin-top:0;display:block}.aform_checkbox[data-v-ca06741d]:checked{accent-color:var(--sc-primary-color);border:1px solid black}.aform_checkbox-container[data-v-ca06741d]{width:100%;display:inline-block;text-align:left}.aform_checkbox-container input[data-v-ca06741d]{width:auto}.aform_checkbox-container:hover+.aform_field-label[data-v-ca06741d]{color:var(--sc-input-active-label-color)}.aform_form-link-wrapper[data-v-154d79c9]{position:relative}.input-group[data-v-154d79c9]{display:flex;align-items:stretch}.aform_input-field[data-v-154d79c9]{flex:1;min-width:0}.aform_form-element--embedded[data-v-154d79c9]{min-width:0;flex-grow:0}.aform_input-field--embedded[data-v-154d79c9]{outline:none;background:transparent;padding:.5ch 1ch}.aform_form-element--embedded .autocomplete-results[data-v-154d79c9]{min-width:100%;width:max-content}.aform_form-btn[data-v-154d79c9]{appearance:none;border:none;outline:1px solid var(--sc-input-border-color);outline-offset:-1px;margin-left:-2px;background:var(--sc-input-field-background, white);padding:0 .75rem;cursor:pointer}.aform_form-btn[data-v-154d79c9]:focus,.input-group:focus-within .aform_form-btn[data-v-154d79c9]{outline-color:var(--sc-input-active-border-color)}.autocomplete-results[data-v-154d79c9]{position:absolute;width:100%;z-index:100;padding:0;margin:0;list-style:none;border:1px solid var(--sc-input-active-border-color);border-top:none;border-radius:0 0 .25rem .25rem;background:#fff}.autocomplete-result[data-v-154d79c9]{padding:4px 6px;cursor:pointer;border-bottom:.5px solid lightgray}.autocomplete-result.is-active[data-v-154d79c9],.autocomplete-result[data-v-154d79c9]:hover{background-color:var(--sc-row-color-zebra-light);color:var(--sc-input-active-border-color)}.acurrency__row[data-v-15bec6ef]{display:flex;gap:1ch}.acurrency__row--base[data-v-15bec6ef]{margin-top:1.5rem}.acurrency__field[data-v-15bec6ef]{position:relative;flex:1;min-width:0}.acurrency__group[data-v-15bec6ef]{display:flex;align-items:stretch;width:100%;border:1px solid var(--sc-input-border-color);border-radius:.25rem}.acurrency__group[data-v-15bec6ef]:focus-within{border-color:var(--sc-input-active-border-color)}.acurrency__amount-wrap[data-v-15bec6ef]{position:relative;flex:1;min-width:0}.acurrency__amount-wrap .aform_field-label[data-v-15bec6ef]{font-size:.85rem}.acurrency__amount[data-v-15bec6ef]{width:100%;box-sizing:border-box;border:none;outline:none;padding:.5ch 1ch;background:transparent;border-radius:0 .25rem .25rem 0;text-align:right;appearance:textfield;-moz-appearance:textfield}.acurrency__amount[data-v-15bec6ef]::-webkit-outer-spin-button,.acurrency__amount[data-v-15bec6ef]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.acurrency__currency[data-v-15bec6ef]{position:relative;flex:0 0 auto;min-width:4.5rem;background:var(--sc-gray-5);border-right:1px solid var(--sc-input-border-color);border-radius:.25rem 0 0 .25rem}.acurrency__base-field[data-v-15bec6ef]{width:100%;box-sizing:border-box;font-size:1rem;padding:.5ch 1ch;border:1px solid var(--sc-input-border-color);border-radius:.25rem;outline:none;appearance:textfield;-moz-appearance:textfield}.acurrency__base-field[data-v-15bec6ef]:disabled{color:var(--sc-gray-50, #888)}.acurrency__base-field[data-v-15bec6ef]::-webkit-outer-spin-button,.acurrency__base-field[data-v-15bec6ef]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.adatepicker[data-v-322c2ceb],.adatepicker table[data-v-322c2ceb],.adatepicker tr[data-v-322c2ceb],.adatepicker td[data-v-322c2ceb],.adatepicker th[data-v-322c2ceb]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.adatepicker[data-v-322c2ceb]{font-size:var(--sc-table-font-size);display:inline-table;color:var(--sc-cell-text-color);outline:none;border-collapse:collapse;margin-bottom:10px}.adatepicker tr[data-v-322c2ceb]{height:1.15rem;text-align:center;vertical-align:middle}.adatepicker td[data-v-322c2ceb]{border:2px solid transparent;outline:2px solid transparent;min-width:3ch;max-width:3ch;cursor:pointer}.adatepicker td.date-cell[data-v-322c2ceb]:hover{background:var(--sc-gray-10)}.adatepicker td[data-v-322c2ceb]:focus,.adatepicker td[data-v-322c2ceb]:focus-within{box-shadow:none;min-height:1.15em;max-height:1.15em;overflow:hidden}.adatepicker .selectedDate[data-v-322c2ceb],.adatepicker .startDate[data-v-322c2ceb],.adatepicker .endDate[data-v-322c2ceb]{background:var(--sc-gray-20);font-weight:bolder}.adatepicker .startDate[data-v-322c2ceb]{border-left:1px solid var(--sc-gray-50);background:var(--sc-gray-20)!important}.adatepicker .endDate[data-v-322c2ceb]{border-right:1px solid var(--sc-gray-50);background:var(--sc-gray-20)!important}.adatepicker .withinRange[data-v-322c2ceb]{background:var(--sc-gray-5)}.adatepicker .todaysDate[data-v-322c2ceb]{font-weight:bolder;color:#000}.days-header>td[data-v-322c2ceb]{font-weight:700}.prev-date[data-v-322c2ceb]{color:var(--sc-gray-20)}.adatepicker .date-input[data-v-322c2ceb]{display:flex;width:100%;gap:5px;align-items:center}.adatepicker .date-input>input[data-v-322c2ceb]{width:50%;padding:2px}p.aform_error[data-v-322c2ceb]{position:static;display:block;color:var(--sc-brand-danger, red);font-size:.7rem;margin:.25rem 0 0}.adate_time[data-v-95ad0aa4]{width:auto;padding:10px;box-sizing:border-box;font-size:1rem;background:var(--sc-gray-10)}.adate_time_fields[data-v-95ad0aa4]{display:flex;align-items:stretch;gap:5px;justify-content:flex-start}.adate_time_fields>input[data-v-95ad0aa4]{min-width:30px;padding:2px;text-align:center;display:inline-block;flex-basis:0}.meridiem-selector[data-v-95ad0aa4]{cursor:pointer;display:inline-block;flex-basis:0;padding:5px;-webkit-user-select:none;user-select:none}.meridiem-selector[data-v-95ad0aa4]:focus{outline:2px solid black;outline-offset:-2px}.adate_time_segment[data-v-95ad0aa4]{display:flex;flex-direction:column;width:40px}.colon[data-v-95ad0aa4]{display:flex;align-items:normal}.aform_form-btn[data-v-95ad0aa4]{cursor:pointer}.aform-select[data-v-95ad0aa4]{border:1px solid rgb(118,118,118);font-size:1rem;padding:0rem;margin:0;border-radius:0;box-sizing:border-box;min-height:auto;position:relative;color:var(--sc-cell-text-color)}.meridiem-selector[data-v-95ad0aa4]{margin-left:6px}.adate-selection[data-v-602dfd69]{display:inline-block;border:1px solid var(--sc-gray-80);padding:10px;background:var(--sc-form-background)}.adate-selection__end-label[data-v-602dfd69]{font-size:.8em;font-weight:700;color:var(--sc-input-active-label-color, #555);margin-top:8px;margin-bottom:2px;padding-left:2px}.empty[data-v-602dfd69]{color:#ccc;padding:10px;text-align:center;border:1px solid #ccc}.adate-picker[data-v-5de3fe7a]{position:absolute;top:100%;left:0;z-index:1000;margin-top:.25rem}.autocomplete[data-v-11fc3569]{position:relative}.autocomplete-results[data-v-11fc3569]{position:absolute;left:0;right:0;z-index:100;padding:0;margin:0;color:var(--sc-input-active-border-color);border:1px solid var(--sc-input-active-border-color);border-radius:0;border-top:none;background-color:var(--sc-input-field-background, #fff);list-style:none}.autocomplete-result[data-v-11fc3569]{text-align:left;padding:4px 6px;cursor:pointer;border-bottom:.5px solid lightgray}.autocomplete-result.is-active[data-v-11fc3569],.autocomplete-result[data-v-11fc3569]:hover{background-color:var(--sc-row-color-zebra-light);color:var(--sc-input-active-border-color)}.abadge[data-v-4f364f5f]{display:block;box-sizing:border-box;font:inherit;line-height:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.abadge--cell-fill[data-v-4f364f5f]{display:block;box-sizing:border-box;width:100%;min-height:calc(var(--sc-atable-row-height, 1.5em) + 2 * var(--sc-atable-row-padding, .125rem));line-height:calc(var(--sc-atable-row-height, 1.5em) + 2 * var(--sc-atable-row-padding, .125rem));margin:0;padding:0 .5ch;border-radius:0;text-align:inherit;background:var(--sc-badge-bg);color:var(--sc-badge-text)}.abadge--cell-fill.abadge--neutral[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-neutral-bg);--sc-badge-text: var(--sc-badge-neutral-text)}.abadge--cell-fill.abadge--success[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-success-bg);--sc-badge-text: var(--sc-badge-success-text)}.abadge--cell-fill.abadge--warning[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-warning-bg);--sc-badge-text: var(--sc-badge-warning-text)}.abadge--cell-fill.abadge--danger[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-danger-bg);--sc-badge-text: var(--sc-badge-danger-text)}.abadge--cell-fill.abadge--brand[data-v-4f364f5f]{--sc-badge-bg: var(--sc-badge-brand-bg);--sc-badge-text: var(--sc-badge-brand-text)}.abadge--input-accent[data-v-4f364f5f]{background:var(--sc-input-field-background, #ffffff);color:inherit;border-left:4px solid var(--sc-badge-accent);padding-left:calc(1ch - 4px)}.abadge--input-accent.abadge--neutral[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-neutral-accent)}.abadge--input-accent.abadge--success[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-success-accent)}.abadge--input-accent.abadge--warning[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-warning-accent)}.abadge--input-accent.abadge--danger[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-danger-accent)}.abadge--input-accent.abadge--brand[data-v-4f364f5f]{--sc-badge-accent: var(--sc-badge-brand-accent)}.aform_segmented-control--xs.aform_form-element[data-v-23f09651]{min-width:0;padding-top:0;max-width:none}.aform_segmented-control--xs[data-v-23f09651]:not(:has(.aform_segmented-sr-label)){padding-top:.5rem}.aform_segmented-sr-label[data-v-23f09651]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.aform_segmented-track[data-v-23f09651]{display:inline-flex;flex-wrap:wrap;align-items:stretch;gap:.125rem;padding:.125rem;width:auto;min-width:0;min-height:2rem;outline:1px solid var(--sc-input-border-color);outline-offset:-1px;border-radius:0;box-sizing:border-box;background:var(--sc-input-field-disabled-background);font-family:var(--sc-font-family)}.aform_segmented-control--xs .aform_segmented-track[data-v-23f09651]{min-height:1.5rem;font-size:.875rem}.aform_segmented-control--equal .aform_segmented-track[data-v-23f09651]{display:flex;width:100%}.aform_segmented-segment[data-v-23f09651]{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;margin:0;padding:.125rem .5rem;min-height:1.5rem;border-radius:0;color:var(--sc-input-label-color);font-family:inherit;font-size:inherit;font-weight:400;line-height:1.25;cursor:pointer;-webkit-user-select:none;user-select:none;box-sizing:border-box}.aform_segmented-control--sm .aform_segmented-segment[data-v-23f09651]{min-height:1.75rem;padding:.125rem .75rem;font-size:var(--sc-font-size)}.aform_segmented-control--equal .aform_segmented-segment[data-v-23f09651]{flex:1 1 0}.aform_segmented-input[data-v-23f09651]{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.aform_segmented-label[data-v-23f09651]{pointer-events:none}.aform_segmented-segment[data-v-23f09651]:not(.aform_segmented-segment--badge):has(.aform_segmented-input:checked){background:var(--sc-input-field-background);color:var(--sc-cell-text-color);font-weight:500}.aform_segmented-segment--badge[data-v-23f09651]:has(.aform_segmented-input:checked){font-weight:500}.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--neutral[data-v-23f09651]{background:var(--sc-badge-neutral-bg);color:var(--sc-badge-neutral-text)}.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--success[data-v-23f09651]{background:var(--sc-badge-success-bg);color:var(--sc-badge-success-text)}.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--warning[data-v-23f09651]{background:var(--sc-badge-warning-bg);color:var(--sc-badge-warning-text)}.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--danger[data-v-23f09651]{background:var(--sc-badge-danger-bg);color:var(--sc-badge-danger-text)}.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--brand[data-v-23f09651]{background:var(--sc-badge-brand-bg);color:var(--sc-badge-brand-text)}.aform_segmented-segment--badge:has(.aform_segmented-input:checked)[style*=--sc-badge-bg][data-v-23f09651]{background:var(--sc-badge-bg);color:var(--sc-badge-text)}.aform_segmented-segment[data-v-23f09651]:has(.aform_segmented-input:focus-visible){outline:1px solid var(--sc-input-active-border-color);outline-offset:-1px}.aform_segmented-segment[data-v-23f09651]:hover:has(.aform_segmented-input:not(:disabled):not(:checked)){background:color-mix(in srgb,var(--sc-input-field-background) 50%,transparent)}.aform_segmented-segment[data-v-23f09651]:has(.aform_segmented-input:disabled){cursor:not-allowed;opacity:.5}.aform_segmented-track[data-v-23f09651]:has(.aform_segmented-input:focus-visible){outline-color:var(--sc-input-active-border-color)}.aform_segmented-display-badge[data-v-23f09651]{display:block;padding:.5rem;min-height:2rem;box-sizing:border-box}@media(prefers-reduced-motion:no-preference){.aform_segmented-segment[data-v-23f09651]{transition:background-color .1s ease-out,color .1s ease-out}}@media(prefers-reduced-motion:reduce){.aform_segmented-segment[data-v-23f09651]{transition:none}}.adatetime-picker[data-v-b0fa488b]{position:absolute;top:100%;left:0;z-index:1000;margin-top:.25rem}.aduration[data-v-2e4dd7dd]{position:relative;min-width:40ch;width:100%}.aduration__summary[data-v-2e4dd7dd]{display:flex;gap:6px;align-items:baseline;margin-top:6px;font-size:.9em}.aduration__label[data-v-2e4dd7dd]{font-weight:700;color:var(--sc-input-active-label-color, #555)}.aduration__value[data-v-2e4dd7dd]{color:var(--sc-cell-text-color, #000)}.aduration__ms[data-v-2e4dd7dd]{color:var(--sc-gray-50, #888);font-size:.85em}.aduration__footer[data-v-2e4dd7dd]{margin-top:8px}.adaterange-picker[data-v-f8dad4d3]{position:absolute;top:100%;left:0;z-index:1000;margin-top:.25rem}.aform input{font-family:var(--sc-font-family);border:none}.aform_form-element{padding:0;margin:0;position:relative;box-sizing:border-box;flex-grow:1;min-width:20ch}.aform__grid--full{flex-basis:100%;width:100%}.aform_input-field{outline:1px solid var(--sc-input-border-color);outline-offset:-1px;font-size:1rem;padding:.5rem;margin:0;border-radius:0;box-sizing:border-box;width:100%;min-height:auto;position:relative;color:var(--sc-cell-text-color);background:var(--sc-input-field-background);font-family:var(--sc-font-family)}.aform_input-field:focus{outline:1px solid var(--sc-input-active-border-color)}.aform_display-value{display:block;padding:.5rem;min-height:2rem;color:var(--sc-cell-text-color);word-break:break-word}.aform_input-field:focus+.aform_field-label{color:var(--sc-input-active-label-color)}.aform_field-label{color:var(--sc-input-label-color);display:inline-block;position:absolute;padding:0 .25rem;margin:0rem;z-index:1;font-size:.7rem;font-weight:300;letter-spacing:.05rem;background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-background) 50%);width:auto;box-sizing:border-box;background:#fff;margin:0;grid-row:1;top:0;left:10px;border:none;line-height:0;transform:translateY(-50%)}.aform_input-field:disabled,.aform_checkbox-container:has(.aform_checkbox:disabled){background:var(--sc-input-field-disabled-background)}.aform_input-field:disabled+.aform_field-label,.aform_checkbox-container:has(.aform_checkbox:disabled)+.aform_field-label{background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-disabled-background) 50%)}.aform_input-field:disabled~p.aform_error,.aform_checkbox-container:has(.aform_checkbox:disabled)~p.aform_error{background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-disabled-background) 50%)}.aform_field-label:after{margin:0;padding:0;box-sizing:border-box;content:"";line-height:normal}p.aform_error{display:inline-block;background:linear-gradient(var(--sc-form-background) 50%,var(--sc-input-field-background) 50%);padding:0 .25rem;margin:0rem;width:auto;color:var(--sc-brand-danger);font-size:.7rem;position:absolute;right:0;top:0;line-height:0;background:#fff;padding:.25rem;transform:translate(-1rem,-50%);margin:0}.aform[data-v-16a61857]{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;border:1px solid var(--sc-form-border);border-left:4px solid var(--sc-form-border);margin-bottom:1rem;max-width:100%}@media screen and (max-width:400px){.aform[data-v-16a61857]{flex-direction:column}}.aform-nested-section[data-v-16a61857]{width:100%;padding:.5rem 0}.aform-nested-label[data-v-16a61857]{font-size:.9rem;font-weight:600;margin:0 0 .5rem;color:var(--sc-input-label-color, #666)}.aform-nested-section .aform[data-v-16a61857]{border-left-width:2px;margin-left:.5rem}.collapse-button[data-v-6f1c1b45]{width:2ch;min-width:calc(66px - 4ch);background-color:transparent;font-size:150%;text-align:center;border:none;margin-top:-.5rem}.rotated[data-v-6f1c1b45]{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transition:transform .25s;transform-origin:center center}.unrotated[data-v-6f1c1b45]{transform:rotate(0);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transition:transform .25s}fieldset[data-v-162e7317]{max-width:100%;width:100%;margin-right:2ch;border:1px solid transparent;border-bottom:1px solid var(--sc-gray-50)}legend[data-v-162e7317]{width:100%;height:1.15rem;border:1px solid transparent;padding-bottom:.5rem;font-size:110%;font-weight:600;-webkit-user-select:none;user-select:none}.collapse-button[data-v-162e7317]{float:right}.aform_file-attach[data-v-8eefd179]{padding:1rem;display:flex;flex-wrap:wrap;gap:1rem;flex-direction:row;justify-content:center;align-items:center;border:1px dashed var(--sc-input-border-color);width:100%}@media screen and (max-width:400px){.aform_file-attach>.aform_form-btn[data-v-8eefd179]{width:100%}}.aform_file-attach-feedback[data-v-8eefd179]{color:var(--sc-input-label-color);width:100%;padding:.5rem;text-align:center;align-self:center}.aform_file-attach-feedback>li[data-v-8eefd179]{list-style:none;font-style:italic}.aform_file-attach-feedback>p[data-v-8eefd179]{margin-top:0}.aform_form-btn[data-v-8eefd179]{padding:.5rem 2rem;width:auto;border:1px solid var(--sc-input-border-color);color:var(--sc-input-label-color);cursor:pointer;background-color:#fff}.aform_form-btn[data-v-8eefd179]:disabled{background-color:var(--sc-gray-5)}.aquantity__row[data-v-0b714861]{display:flex;gap:1ch}.aquantity__row--stock[data-v-0b714861]{margin-top:1.5rem}.aquantity__field[data-v-0b714861]{position:relative;flex:1;min-width:0}.aquantity__group[data-v-0b714861]{display:flex;align-items:stretch;width:100%;border:1px solid var(--sc-input-border-color);border-radius:.25rem}.aquantity__group[data-v-0b714861]:focus-within{border-color:var(--sc-input-active-border-color)}.aquantity__qty[data-v-0b714861]{flex:1;min-width:0;border:none;outline:none;padding:.5ch 1ch;background:transparent;border-radius:.25rem 0 0 .25rem;appearance:textfield;-moz-appearance:textfield}.aquantity__qty[data-v-0b714861]::-webkit-outer-spin-button,.aquantity__qty[data-v-0b714861]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.aquantity__uom[data-v-0b714861]{position:relative;flex:0 0 auto;border-left:1px solid var(--sc-input-border-color)}.aquantity__uom-toggle[data-v-0b714861]{display:flex;align-items:center;gap:.75ch;height:100%;padding:.5ch 1ch;background:var(--sc-gray-5);border:none;border-radius:0 .25rem .25rem 0;white-space:nowrap;cursor:pointer}.aquantity__uom-toggle[data-v-0b714861]:disabled{cursor:not-allowed;color:var(--sc-gray-50, #888)}.aquantity__caret[data-v-0b714861]{display:inline-block;width:0;height:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid currentColor}.aquantity__uom-menu[data-v-0b714861]{position:absolute;top:100%;right:0;z-index:100;min-width:100%;margin:.15rem 0 0;padding:.25rem 0;list-style:none;background:var(--sc-input-field-background, #fff);border:1px solid var(--sc-input-active-border-color);border-radius:.25rem}.aquantity__uom-option[data-v-0b714861]{padding:.4ch 1ch;white-space:nowrap;cursor:pointer}.aquantity__uom-option.is-active[data-v-0b714861],.aquantity__uom-option[data-v-0b714861]:hover{background-color:var(--sc-row-color-zebra-light)}.aquantity__stock-field[data-v-0b714861]{width:100%;font-size:1rem;padding:.5ch 1ch;border:1px solid var(--sc-input-border-color);border-radius:.25rem;outline:none}.aquantity__stock-field[data-v-0b714861]:disabled{color:var(--sc-gray-50, #888)}.aform_textbox[data-v-2a9c793b]{resize:vertical;line-height:1.5;min-height:4rem;font-family:inherit}.aform_textbox-display[data-v-2a9c793b]{white-space:pre-wrap}.login-container[data-v-2c0f0634]{width:100%;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--sc-font-family)}.account-container[data-v-2c0f0634]{width:100%;margin-left:auto;margin-top:.5rem;margin-right:auto;display:flex;flex-direction:column;justify-content:center}.account-header[data-v-2c0f0634]{display:flex;flex-direction:column;text-align:center;margin-top:.5rem}#account-title[data-v-2c0f0634]{font-size:1.5rem;line-height:2rem;font-weight:600;letter-spacing:-.025em;margin:0}#account-subtitle[data-v-2c0f0634]{font-size:.875rem;line-height:1.25rem;margin:1rem}.login-form-container[data-v-2c0f0634]{display:grid;gap:.5rem}.login-form-element[data-v-2c0f0634]{display:grid;margin:.5rem 0;position:relative}.login-field[data-v-2c0f0634]{padding:.5rem .25rem .25rem .5rem;outline:1px solid transparent;border:1px solid var(--sc-input-border-color);border-radius:.25rem}.login-field[data-v-2c0f0634]:focus{border:1px solid black}.btn[data-v-2c0f0634]{background-color:var(--sc-btn-color);color:var(--sc-btn-label-color);border:1px solid var(--sc-btn-border);margin:.5rem 0;padding:.25rem;position:relative;cursor:pointer}.btn[data-v-2c0f0634]:hover{background-color:var(--sc-btn-hover)}.btn[data-v-2c0f0634]:disabled{background-color:var(--sc-input-field-disabled-background)}.disabled[data-v-2c0f0634]{opacity:.5}.loading-icon[data-v-2c0f0634]{animation:spin-2c0f0634 1s linear infinite forwards;display:inline-block;margin-right:.2rem;line-height:0;font-size:1rem;position:relative;top:.2rem}@keyframes spin-2c0f0634{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.aform-loading[data-v-274f5ba3]{width:100%;border:1px solid var(--sc-form-border);border-left:4px solid var(--sc-form-border);padding:1rem;margin-bottom:1rem;box-sizing:border-box;position:relative;overflow:hidden;background:var(--sc-input-field-background, #fff)}.aform-loading__label[data-v-274f5ba3]{font-size:.9rem;color:var(--sc-cell-text-color);z-index:1;position:relative}.aform-loading__label[data-v-274f5ba3]:not(:empty):after{content:"...";animation:ellipsis-274f5ba3 2s infinite}.aform-loading__bar[data-v-274f5ba3]{width:100%;height:100%;position:absolute;left:-100%;top:0;background:linear-gradient(90deg,rgba(var(--sc-table-loading-color),0),rgba(var(--sc-table-loading-color),1),rgba(var(--sc-table-loading-color),0));animation:bar-sweep-274f5ba3 2s infinite;z-index:0}@keyframes bar-sweep-274f5ba3{0%{left:-100%}to{left:100%}}@keyframes ellipsis-274f5ba3{0%,20%{content:""}40%{content:"."}60%{content:".."}80%,to{content:"..."}}.expansion-index[data-v-df191efe]{color:var(--sc-header-text-color, #333);font-weight:700;font-size:11px;line-height:1;text-align:center;-webkit-user-select:none;user-select:none;width:2ch;min-width:1.25rem;height:1.25rem;padding:0;border:none;background:transparent;cursor:pointer;box-sizing:border-box}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import ACheckbox from './components/form/ACheckbox.vue';
|
|
|
8
8
|
import ACurrencyInput from './components/form/ACurrencyInput.vue';
|
|
9
9
|
import ADate from './components/form/ADate.vue';
|
|
10
10
|
import ADropdown from './components/form/ADropdown.vue';
|
|
11
|
+
import ASegmentedControl from './components/form/ASegmentedControl.vue';
|
|
11
12
|
import ABadge from './components/form/ABadge.vue';
|
|
12
13
|
import ADatePicker from './components/form/ADatePicker.vue';
|
|
13
14
|
import ADateTime from './components/form/ADateTime.vue';
|
|
@@ -25,6 +26,7 @@ import ATextInput from './components/form/ATextInput.vue';
|
|
|
25
26
|
import ATextboxInput from './components/form/ATextboxInput.vue';
|
|
26
27
|
import Login from './components/utilities/Login.vue';
|
|
27
28
|
import AFormLoading from './components/AFormLoading.vue';
|
|
29
|
+
import ExpandButton from './components/base/ExpandButton.vue';
|
|
28
30
|
export type * from './types';
|
|
29
31
|
/**
|
|
30
32
|
* Install all AForm components
|
|
@@ -32,5 +34,5 @@ export type * from './types';
|
|
|
32
34
|
* @public
|
|
33
35
|
*/
|
|
34
36
|
declare function install(app: App): void;
|
|
35
|
-
export { ACheckbox, ACurrencyInput, ADate, ADropdown, ABadge, ADatePicker, ADateRange, ADateSelection, ADuration, ADateTime, ADateTimeInput, AFieldset, AFileAttach, AForm, AFormLink, ANumericInput, AQuantityInput, ATextInput, ATextboxInput, Login, AFormLoading, install, };
|
|
37
|
+
export { ACheckbox, ACurrencyInput, ADate, ADropdown, ASegmentedControl, ABadge, ADatePicker, ADateRange, ADateSelection, ADuration, ADateTime, ADateTimeInput, AFieldset, AFileAttach, AForm, AFormLink, ANumericInput, AQuantityInput, ATextInput, ATextboxInput, Login, AFormLoading, ExpandButton, install, };
|
|
36
38
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,yBAAyB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,MAAM,6BAA6B,CAAA;AAC/C,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,MAAM,MAAM,8BAA8B,CAAA;AACjD,OAAO,WAAW,MAAM,mCAAmC,CAAA;AAC3D,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,UAAU,MAAM,kCAAkC,CAAA;AACzD,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,WAAW,MAAM,mCAAmC,CAAA;AAC3D,OAAO,KAAK,MAAM,wBAAwB,CAAA;AAC1C,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,aAAa,MAAM,qCAAqC,CAAA;AAC/D,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,UAAU,MAAM,kCAAkC,CAAA;AACzD,OAAO,aAAa,MAAM,qCAAqC,CAAA;AAC/D,OAAO,KAAK,MAAM,kCAAkC,CAAA;AACpD,OAAO,YAAY,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,yBAAyB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,MAAM,6BAA6B,CAAA;AAC/C,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,iBAAiB,MAAM,yCAAyC,CAAA;AACvE,OAAO,MAAM,MAAM,8BAA8B,CAAA;AACjD,OAAO,WAAW,MAAM,mCAAmC,CAAA;AAC3D,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,UAAU,MAAM,kCAAkC,CAAA;AACzD,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,WAAW,MAAM,mCAAmC,CAAA;AAC3D,OAAO,KAAK,MAAM,wBAAwB,CAAA;AAC1C,OAAO,SAAS,MAAM,iCAAiC,CAAA;AACvD,OAAO,aAAa,MAAM,qCAAqC,CAAA;AAC/D,OAAO,cAAc,MAAM,sCAAsC,CAAA;AACjE,OAAO,UAAU,MAAM,kCAAkC,CAAA;AACzD,OAAO,aAAa,MAAM,qCAAqC,CAAA;AAC/D,OAAO,KAAK,MAAM,kCAAkC,CAAA;AACpD,OAAO,YAAY,MAAM,+BAA+B,CAAA;AACxD,OAAO,YAAY,MAAM,oCAAoC,CAAA;AAE7D,mBAAmB,SAAS,CAAA;AAE5B;;;;GAIG;AACH,iBAAS,OAAO,CAAC,GAAG,EAAE,GAAG,QAyBxB;AAED,OAAO,EACN,SAAS,EACT,cAAc,EACd,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACX,KAAK,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,OAAO,GACP,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import ACheckbox from './components/form/ACheckbox.vue';
|
|
|
6
6
|
import ACurrencyInput from './components/form/ACurrencyInput.vue';
|
|
7
7
|
import ADate from './components/form/ADate.vue';
|
|
8
8
|
import ADropdown from './components/form/ADropdown.vue';
|
|
9
|
+
import ASegmentedControl from './components/form/ASegmentedControl.vue';
|
|
9
10
|
import ABadge from './components/form/ABadge.vue';
|
|
10
11
|
import ADatePicker from './components/form/ADatePicker.vue';
|
|
11
12
|
import ADateTime from './components/form/ADateTime.vue';
|
|
@@ -23,6 +24,7 @@ import ATextInput from './components/form/ATextInput.vue';
|
|
|
23
24
|
import ATextboxInput from './components/form/ATextboxInput.vue';
|
|
24
25
|
import Login from './components/utilities/Login.vue';
|
|
25
26
|
import AFormLoading from './components/AFormLoading.vue';
|
|
27
|
+
import ExpandButton from './components/base/ExpandButton.vue';
|
|
26
28
|
/**
|
|
27
29
|
* Install all AForm components
|
|
28
30
|
* @param app - Vue app instance
|
|
@@ -34,6 +36,7 @@ function install(app /* options */) {
|
|
|
34
36
|
app.component('ACurrencyInput', ACurrencyInput);
|
|
35
37
|
app.component('ADate', ADate);
|
|
36
38
|
app.component('ADropdown', ADropdown);
|
|
39
|
+
app.component('ASegmentedControl', ASegmentedControl);
|
|
37
40
|
app.component('ABadge', ABadge);
|
|
38
41
|
app.component('ADatePicker', ADatePicker);
|
|
39
42
|
app.component('ADateTime', ADateTime);
|
|
@@ -50,5 +53,6 @@ function install(app /* options */) {
|
|
|
50
53
|
app.component('ATextboxInput', ATextboxInput);
|
|
51
54
|
app.component('ADuration', ADuration);
|
|
52
55
|
app.component('AFormLoading', AFormLoading);
|
|
56
|
+
app.component('ExpandButton', ExpandButton);
|
|
53
57
|
}
|
|
54
|
-
export { ACheckbox, ACurrencyInput, ADate, ADropdown, ABadge, ADatePicker, ADateRange, ADateSelection, ADuration, ADateTime, ADateTimeInput, AFieldset, AFileAttach, AForm, AFormLink, ANumericInput, AQuantityInput, ATextInput, ATextboxInput, Login, AFormLoading, install, };
|
|
58
|
+
export { ACheckbox, ACurrencyInput, ADate, ADropdown, ASegmentedControl, ABadge, ADatePicker, ADateRange, ADateSelection, ADuration, ADateTime, ADateTimeInput, AFieldset, AFileAttach, AForm, AFormLink, ANumericInput, AQuantityInput, ATextInput, ATextboxInput, Login, AFormLoading, ExpandButton, install, };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stonecrop/aform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Schema-driven form components for Stonecrop",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"url": "https://github.com/agritheory/stonecrop/issues"
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@vueuse/components": "^14.2.1",
|
|
37
37
|
"@vueuse/core": "^14.2.1",
|
|
38
|
-
"@stonecrop/atable": "0.
|
|
39
|
-
"@stonecrop/schema": "0.
|
|
40
|
-
"@stonecrop/themes": "0.
|
|
41
|
-
"@stonecrop/utilities": "0.
|
|
38
|
+
"@stonecrop/atable": "0.28.0",
|
|
39
|
+
"@stonecrop/schema": "0.28.0",
|
|
40
|
+
"@stonecrop/themes": "0.28.0",
|
|
41
|
+
"@stonecrop/utilities": "0.28.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@microsoft/api-documenter": "^7.30.5",
|
package/src/components/AForm.vue
CHANGED
|
@@ -94,7 +94,7 @@ const componentProps = (componentObj: ResolvedField) => {
|
|
|
94
94
|
for (const [key, value] of Object.entries(componentObj)) {
|
|
95
95
|
// 'mode' is excluded here because it is handled by resolvedMode()
|
|
96
96
|
// and passed explicitly via :mode to avoid conflicting with the form-level defaults.
|
|
97
|
-
if (!['component', 'primaryKey', 'computed', 'language', 'hidden', 'mode', 'width'].includes(key)) {
|
|
97
|
+
if (!['component', 'primaryKey', 'computed', 'language', 'hidden', 'mode', 'width', 'height'].includes(key)) {
|
|
98
98
|
propsToPass[key] = value
|
|
99
99
|
}
|
|
100
100
|
}
|
|
@@ -111,9 +111,18 @@ const componentProps = (componentObj: ResolvedField) => {
|
|
|
111
111
|
|
|
112
112
|
const fieldStyle = (componentObj: ResolvedField): Record<string, string> => {
|
|
113
113
|
if (componentObj.kind !== 'field') return {}
|
|
114
|
-
const
|
|
115
|
-
if (
|
|
116
|
-
|
|
114
|
+
const style: Record<string, string> = {}
|
|
115
|
+
if (componentObj.width) {
|
|
116
|
+
style.flexBasis = componentObj.width
|
|
117
|
+
style.width = componentObj.width
|
|
118
|
+
}
|
|
119
|
+
if (componentObj.height) {
|
|
120
|
+
style.height = componentObj.height
|
|
121
|
+
style.minHeight = '0'
|
|
122
|
+
style.flexGrow = '1'
|
|
123
|
+
style.alignSelf = 'stretch'
|
|
124
|
+
}
|
|
125
|
+
return style
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
const effectiveFormMode = computed(() => mode ?? 'edit')
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
class="expansion-index"
|
|
5
|
+
:aria-expanded="expanded"
|
|
6
|
+
:aria-label="expanded ? 'Collapse' : 'Expand'">
|
|
7
|
+
{{ expanded ? '▼' : '►' }}
|
|
8
|
+
</button>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script setup lang="ts">
|
|
12
|
+
defineProps<{
|
|
13
|
+
expanded: boolean
|
|
14
|
+
}>()
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<style scoped>
|
|
18
|
+
.expansion-index {
|
|
19
|
+
color: var(--sc-header-text-color, #333);
|
|
20
|
+
font-weight: bold;
|
|
21
|
+
font-size: 11px;
|
|
22
|
+
line-height: 1;
|
|
23
|
+
text-align: center;
|
|
24
|
+
user-select: none;
|
|
25
|
+
width: 2ch;
|
|
26
|
+
min-width: 1.25rem;
|
|
27
|
+
height: 1.25rem;
|
|
28
|
+
padding: 0;
|
|
29
|
+
border: none;
|
|
30
|
+
background: transparent;
|
|
31
|
+
cursor: pointer;
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
}
|
|
34
|
+
</style>
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
class="aform_form-element aform_segmented-control"
|
|
4
|
+
:class="{
|
|
5
|
+
'aform_segmented-control--xs': size === 'xs',
|
|
6
|
+
'aform_segmented-control--sm': size === 'sm',
|
|
7
|
+
'aform_segmented-control--equal': equal,
|
|
8
|
+
}">
|
|
9
|
+
<template v-if="mode === 'display'">
|
|
10
|
+
<label class="aform_field-label" :class="{ 'aform_segmented-sr-label': hideLabel }">{{ label }}</label>
|
|
11
|
+
<ABadge
|
|
12
|
+
v-if="displayBadge"
|
|
13
|
+
class="aform_display-value aform_segmented-display-badge"
|
|
14
|
+
:value="displayBadgeValue"
|
|
15
|
+
:options="options"
|
|
16
|
+
presentation="input-accent" />
|
|
17
|
+
<span v-else class="aform_display-value">{{ displayText }}</span>
|
|
18
|
+
</template>
|
|
19
|
+
<template v-else>
|
|
20
|
+
<label :id="labelId" class="aform_field-label" :class="{ 'aform_segmented-sr-label': hideLabel }">
|
|
21
|
+
{{ label }}
|
|
22
|
+
</label>
|
|
23
|
+
<div
|
|
24
|
+
:role="multiple ? 'group' : 'radiogroup'"
|
|
25
|
+
class="aform_segmented-track"
|
|
26
|
+
:aria-labelledby="groupAriaLabel ? undefined : labelId"
|
|
27
|
+
:aria-label="groupAriaLabel"
|
|
28
|
+
:aria-busy="busy || undefined">
|
|
29
|
+
<label
|
|
30
|
+
v-for="choice in choices"
|
|
31
|
+
:key="choice"
|
|
32
|
+
class="aform_segmented-segment"
|
|
33
|
+
:class="segmentClasses(choice)"
|
|
34
|
+
:style="segmentStyle(choice)"
|
|
35
|
+
:data-segment-value="choice">
|
|
36
|
+
<input
|
|
37
|
+
v-if="multiple"
|
|
38
|
+
v-model="selectedMany"
|
|
39
|
+
type="checkbox"
|
|
40
|
+
class="aform_segmented-input"
|
|
41
|
+
:name="groupName"
|
|
42
|
+
:value="choice"
|
|
43
|
+
:disabled="mode === 'read'" />
|
|
44
|
+
<input
|
|
45
|
+
v-else
|
|
46
|
+
v-model="selected"
|
|
47
|
+
type="radio"
|
|
48
|
+
class="aform_segmented-input"
|
|
49
|
+
:name="groupName"
|
|
50
|
+
:value="choice"
|
|
51
|
+
:disabled="mode === 'read'" />
|
|
52
|
+
<span class="aform_segmented-label">{{ segmentLabel(choice) }}</span>
|
|
53
|
+
</label>
|
|
54
|
+
</div>
|
|
55
|
+
<p v-show="errorText" class="aform_error" v-html="errorText"></p>
|
|
56
|
+
</template>
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<script setup lang="ts">
|
|
61
|
+
import type { BadgeVariant, FieldOptions } from '@stonecrop/schema'
|
|
62
|
+
import { hasBadgeOptions, lookupBadge, selectChoices } from '@stonecrop/schema'
|
|
63
|
+
import { computed, useId, type CSSProperties } from 'vue'
|
|
64
|
+
|
|
65
|
+
import type { ComponentProps } from '../../types'
|
|
66
|
+
import ABadge from './ABadge.vue'
|
|
67
|
+
|
|
68
|
+
const {
|
|
69
|
+
label,
|
|
70
|
+
options = undefined,
|
|
71
|
+
mode,
|
|
72
|
+
uuid,
|
|
73
|
+
errors,
|
|
74
|
+
validation = { errorMessage: '' },
|
|
75
|
+
size = 'sm',
|
|
76
|
+
equal = false,
|
|
77
|
+
hideLabel = false,
|
|
78
|
+
ariaLabel = undefined,
|
|
79
|
+
busy = false,
|
|
80
|
+
multiple = false,
|
|
81
|
+
} = defineProps<
|
|
82
|
+
ComponentProps & {
|
|
83
|
+
options?: FieldOptions
|
|
84
|
+
size?: 'xs' | 'sm'
|
|
85
|
+
equal?: boolean
|
|
86
|
+
hideLabel?: boolean
|
|
87
|
+
ariaLabel?: string
|
|
88
|
+
busy?: boolean
|
|
89
|
+
multiple?: boolean
|
|
90
|
+
}
|
|
91
|
+
>()
|
|
92
|
+
|
|
93
|
+
const selected = defineModel<string | string[]>({ default: '' })
|
|
94
|
+
|
|
95
|
+
const selectedMany = computed({
|
|
96
|
+
get: () => (Array.isArray(selected.value) ? selected.value : []),
|
|
97
|
+
set: (value: string[]) => {
|
|
98
|
+
selected.value = value
|
|
99
|
+
},
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
const errorText = computed(() => (errors?.length ? errors.join('; ') : (validation.errorMessage ?? '')))
|
|
103
|
+
|
|
104
|
+
const fallbackId = useId()
|
|
105
|
+
const groupName = computed(() => uuid ?? `aform-segmented-${fallbackId}`)
|
|
106
|
+
const labelId = computed(() => `${groupName.value}-label`)
|
|
107
|
+
|
|
108
|
+
// aria-labelledby outranks aria-label in the accessible-name algorithm, so the two are mutually
|
|
109
|
+
// exclusive here: emitting both would silently leave `ariaLabel` inert. It only applies while the
|
|
110
|
+
// label element is visually hidden — overriding a *visible* label would break WCAG 2.5.3.
|
|
111
|
+
const groupAriaLabel = computed(() => (hideLabel ? ariaLabel : undefined))
|
|
112
|
+
|
|
113
|
+
const choices = computed(() => selectChoices(options))
|
|
114
|
+
const badgeOptions = computed(() => hasBadgeOptions(options))
|
|
115
|
+
|
|
116
|
+
function segmentLabel(choice: string): string {
|
|
117
|
+
return lookupBadge(options, choice)?.label ?? choice
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function segmentVariant(choice: string): BadgeVariant {
|
|
121
|
+
return lookupBadge(options, choice)?.variant ?? 'neutral'
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function isChoiceSelected(choice: string): boolean {
|
|
125
|
+
if (multiple) return selectedMany.value.includes(choice)
|
|
126
|
+
return selected.value === choice
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function segmentClasses(choice: string): Record<string, boolean> {
|
|
130
|
+
if (!badgeOptions.value) return {}
|
|
131
|
+
return {
|
|
132
|
+
'aform_segmented-segment--badge': true,
|
|
133
|
+
[`aform_segmented-segment--${segmentVariant(choice)}`]: isChoiceSelected(choice),
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function segmentStyle(choice: string): CSSProperties {
|
|
138
|
+
if (!badgeOptions.value || !isChoiceSelected(choice)) return {}
|
|
139
|
+
const color = lookupBadge(options, choice)?.color
|
|
140
|
+
if (!color) return {}
|
|
141
|
+
return {
|
|
142
|
+
'--sc-badge-bg': color,
|
|
143
|
+
'--sc-badge-text': color,
|
|
144
|
+
} as CSSProperties
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const displayText = computed(() => {
|
|
148
|
+
if (multiple) {
|
|
149
|
+
return selectedMany.value.map(segmentLabel).filter(Boolean).join(', ')
|
|
150
|
+
}
|
|
151
|
+
const value = selected.value
|
|
152
|
+
if (typeof value !== 'string' || value === '') return ''
|
|
153
|
+
return segmentLabel(value)
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
const displayBadge = computed(() => {
|
|
157
|
+
if (!badgeOptions.value) return false
|
|
158
|
+
if (multiple) return selectedMany.value.length === 1
|
|
159
|
+
return typeof selected.value === 'string' && selected.value !== ''
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
const displayBadgeValue = computed(() => {
|
|
163
|
+
if (multiple) return selectedMany.value[0] ?? ''
|
|
164
|
+
return typeof selected.value === 'string' ? selected.value : ''
|
|
165
|
+
})
|
|
166
|
+
</script>
|
|
167
|
+
|
|
168
|
+
<style scoped>
|
|
169
|
+
.aform_segmented-control--xs.aform_form-element {
|
|
170
|
+
min-width: 0;
|
|
171
|
+
padding-top: 0;
|
|
172
|
+
max-width: none;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.aform_segmented-control--xs:not(:has(.aform_segmented-sr-label)) {
|
|
176
|
+
padding-top: 0.5rem;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.aform_segmented-sr-label {
|
|
180
|
+
position: absolute;
|
|
181
|
+
width: 1px;
|
|
182
|
+
height: 1px;
|
|
183
|
+
padding: 0;
|
|
184
|
+
margin: -1px;
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
clip: rect(0, 0, 0, 0);
|
|
187
|
+
white-space: nowrap;
|
|
188
|
+
border: 0;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.aform_segmented-track {
|
|
192
|
+
display: inline-flex;
|
|
193
|
+
flex-wrap: wrap;
|
|
194
|
+
align-items: stretch;
|
|
195
|
+
gap: 0.125rem;
|
|
196
|
+
padding: 0.125rem;
|
|
197
|
+
width: auto;
|
|
198
|
+
min-width: 0;
|
|
199
|
+
min-height: 2rem;
|
|
200
|
+
outline: 1px solid var(--sc-input-border-color);
|
|
201
|
+
outline-offset: -1px;
|
|
202
|
+
border-radius: 0;
|
|
203
|
+
box-sizing: border-box;
|
|
204
|
+
background: var(--sc-input-field-disabled-background);
|
|
205
|
+
font-family: var(--sc-font-family);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.aform_segmented-control--xs .aform_segmented-track {
|
|
209
|
+
min-height: 1.5rem;
|
|
210
|
+
font-size: 0.875rem;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.aform_segmented-control--equal .aform_segmented-track {
|
|
214
|
+
display: flex;
|
|
215
|
+
width: 100%;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.aform_segmented-segment {
|
|
219
|
+
position: relative;
|
|
220
|
+
display: inline-flex;
|
|
221
|
+
align-items: center;
|
|
222
|
+
justify-content: center;
|
|
223
|
+
flex: none;
|
|
224
|
+
margin: 0;
|
|
225
|
+
padding: 0.125rem 0.5rem;
|
|
226
|
+
min-height: 1.5rem;
|
|
227
|
+
border-radius: 0;
|
|
228
|
+
color: var(--sc-input-label-color);
|
|
229
|
+
font-family: inherit;
|
|
230
|
+
font-size: inherit;
|
|
231
|
+
font-weight: 400;
|
|
232
|
+
line-height: 1.25;
|
|
233
|
+
cursor: pointer;
|
|
234
|
+
user-select: none;
|
|
235
|
+
box-sizing: border-box;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.aform_segmented-control--sm .aform_segmented-segment {
|
|
239
|
+
min-height: 1.75rem;
|
|
240
|
+
padding: 0.125rem 0.75rem;
|
|
241
|
+
font-size: var(--sc-font-size);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.aform_segmented-control--equal .aform_segmented-segment {
|
|
245
|
+
flex: 1 1 0;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.aform_segmented-input {
|
|
249
|
+
position: absolute;
|
|
250
|
+
inline-size: 1px;
|
|
251
|
+
block-size: 1px;
|
|
252
|
+
padding: 0;
|
|
253
|
+
margin: -1px;
|
|
254
|
+
overflow: hidden;
|
|
255
|
+
clip: rect(0, 0, 0, 0);
|
|
256
|
+
white-space: nowrap;
|
|
257
|
+
border: 0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.aform_segmented-label {
|
|
261
|
+
pointer-events: none;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.aform_segmented-segment:not(.aform_segmented-segment--badge):has(.aform_segmented-input:checked) {
|
|
265
|
+
background: var(--sc-input-field-background);
|
|
266
|
+
color: var(--sc-cell-text-color);
|
|
267
|
+
font-weight: 500;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked) {
|
|
271
|
+
font-weight: 500;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--neutral {
|
|
275
|
+
background: var(--sc-badge-neutral-bg);
|
|
276
|
+
color: var(--sc-badge-neutral-text);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--success {
|
|
280
|
+
background: var(--sc-badge-success-bg);
|
|
281
|
+
color: var(--sc-badge-success-text);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--warning {
|
|
285
|
+
background: var(--sc-badge-warning-bg);
|
|
286
|
+
color: var(--sc-badge-warning-text);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--danger {
|
|
290
|
+
background: var(--sc-badge-danger-bg);
|
|
291
|
+
color: var(--sc-badge-danger-text);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked).aform_segmented-segment--brand {
|
|
295
|
+
background: var(--sc-badge-brand-bg);
|
|
296
|
+
color: var(--sc-badge-brand-text);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.aform_segmented-segment--badge:has(.aform_segmented-input:checked)[style*='--sc-badge-bg'] {
|
|
300
|
+
background: var(--sc-badge-bg);
|
|
301
|
+
color: var(--sc-badge-text);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.aform_segmented-segment:has(.aform_segmented-input:focus-visible) {
|
|
305
|
+
outline: 1px solid var(--sc-input-active-border-color);
|
|
306
|
+
outline-offset: -1px;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.aform_segmented-segment:hover:has(.aform_segmented-input:not(:disabled):not(:checked)) {
|
|
310
|
+
background: color-mix(in srgb, var(--sc-input-field-background) 50%, transparent);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.aform_segmented-segment:has(.aform_segmented-input:disabled) {
|
|
314
|
+
cursor: not-allowed;
|
|
315
|
+
opacity: 0.5;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.aform_segmented-track:has(.aform_segmented-input:focus-visible) {
|
|
319
|
+
outline-color: var(--sc-input-active-border-color);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.aform_segmented-display-badge {
|
|
323
|
+
display: block;
|
|
324
|
+
padding: 0.5rem;
|
|
325
|
+
min-height: 2rem;
|
|
326
|
+
box-sizing: border-box;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
330
|
+
.aform_segmented-segment {
|
|
331
|
+
transition:
|
|
332
|
+
background-color 0.1s ease-out,
|
|
333
|
+
color 0.1s ease-out;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
@media (prefers-reduced-motion: reduce) {
|
|
338
|
+
.aform_segmented-segment {
|
|
339
|
+
transition: none;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
</style>
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ import ACheckbox from './components/form/ACheckbox.vue'
|
|
|
10
10
|
import ACurrencyInput from './components/form/ACurrencyInput.vue'
|
|
11
11
|
import ADate from './components/form/ADate.vue'
|
|
12
12
|
import ADropdown from './components/form/ADropdown.vue'
|
|
13
|
+
import ASegmentedControl from './components/form/ASegmentedControl.vue'
|
|
13
14
|
import ABadge from './components/form/ABadge.vue'
|
|
14
15
|
import ADatePicker from './components/form/ADatePicker.vue'
|
|
15
16
|
import ADateTime from './components/form/ADateTime.vue'
|
|
@@ -27,6 +28,7 @@ import ATextInput from './components/form/ATextInput.vue'
|
|
|
27
28
|
import ATextboxInput from './components/form/ATextboxInput.vue'
|
|
28
29
|
import Login from './components/utilities/Login.vue'
|
|
29
30
|
import AFormLoading from './components/AFormLoading.vue'
|
|
31
|
+
import ExpandButton from './components/base/ExpandButton.vue'
|
|
30
32
|
|
|
31
33
|
export type * from './types'
|
|
32
34
|
|
|
@@ -42,6 +44,7 @@ function install(app: App /* options */) {
|
|
|
42
44
|
app.component('ACurrencyInput', ACurrencyInput)
|
|
43
45
|
app.component('ADate', ADate)
|
|
44
46
|
app.component('ADropdown', ADropdown)
|
|
47
|
+
app.component('ASegmentedControl', ASegmentedControl)
|
|
45
48
|
app.component('ABadge', ABadge)
|
|
46
49
|
app.component('ADatePicker', ADatePicker)
|
|
47
50
|
app.component('ADateTime', ADateTime)
|
|
@@ -58,6 +61,7 @@ function install(app: App /* options */) {
|
|
|
58
61
|
app.component('ATextboxInput', ATextboxInput)
|
|
59
62
|
app.component('ADuration', ADuration)
|
|
60
63
|
app.component('AFormLoading', AFormLoading)
|
|
64
|
+
app.component('ExpandButton', ExpandButton)
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
export {
|
|
@@ -65,6 +69,7 @@ export {
|
|
|
65
69
|
ACurrencyInput,
|
|
66
70
|
ADate,
|
|
67
71
|
ADropdown,
|
|
72
|
+
ASegmentedControl,
|
|
68
73
|
ABadge,
|
|
69
74
|
ADatePicker,
|
|
70
75
|
ADateRange,
|
|
@@ -82,5 +87,6 @@ export {
|
|
|
82
87
|
ATextboxInput,
|
|
83
88
|
Login,
|
|
84
89
|
AFormLoading,
|
|
90
|
+
ExpandButton,
|
|
85
91
|
install,
|
|
86
92
|
}
|