@shineuix/angular 1.1.0 → 1.2.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/index.d.ts CHANGED
@@ -208,8 +208,8 @@ declare class SuiAutoComplete {
208
208
  invalid: Components.SuiAutoComplete['invalid'];
209
209
  static ngAcceptInputType_invalid: boolean | '';
210
210
  /**
211
- * Label above the field. Without one the field takes the host's `aria-label` or `aria-labelledby`
212
- * as its name; a visible label wins over both.
211
+ * Label above the field, and the field's name: a host `aria-labelledby` or `aria-label` wins over it, as on a native field, and should contain it. Without one the host's attribute names
212
+ * the field.
213
213
  */
214
214
  label?: Exclude<Components.SuiAutoComplete['label'], undefined>;
215
215
  /**
@@ -2728,7 +2728,9 @@ declare class SuiCheckbox {
2728
2728
  invalid: Components.SuiCheckbox['invalid'];
2729
2729
  static ngAcceptInputType_invalid: boolean | '';
2730
2730
  /**
2731
- * Visible label.
2731
+ * Visible label, and the box's name unless the element carries an `aria-label` or an
2732
+ * `aria-labelledby`, which win as they do on a native checkbox. A name that differs, as
2733
+ * "Mark INV-1042 paid" for a box labeled "Paid" in each row, should contain the visible label.
2732
2734
  */
2733
2735
  label?: Exclude<Components.SuiCheckbox['label'], undefined>;
2734
2736
  /**
@@ -3711,9 +3713,10 @@ declare class SuiCopyButton {
3711
3713
  errorLabel?: Exclude<Components.SuiCopyButton['errorLabel'], undefined>;
3712
3714
  /**
3713
3715
  * Success face: `icon` (default) shows the check glyph on its tint, so the button is the size of
3714
- * what it draws; `text` adds `copiedLabel` beside the check, for a toolbar with room, and holds
3715
- * that room at rest, so what sits beside the button does not move. The polite live region announces
3716
- * `copiedLabel` in both modes.
3716
+ * what it draws; `text` writes a word beside the glyph, for a toolbar with room: "Copy" at rest and
3717
+ * `copiedLabel` once copied. The word swaps in place and the button keeps the width of the longer
3718
+ * of the two, so what sits beside it does not move. The polite live region announces `copiedLabel`
3719
+ * in both modes.
3717
3720
  * @default 'icon'
3718
3721
  */
3719
3722
  feedback: Components.SuiCopyButton['feedback'];
@@ -5675,8 +5678,8 @@ declare class SuiFloatLabel {
5675
5678
  static ngAcceptInputType_invalid: boolean | '';
5676
5679
  /**
5677
5680
  * The floating label. It takes the placeholder's position, so there is no placeholder prop, and
5678
- * it names the field; only without one does the host's `aria-label` or `aria-labelledby`, the
5679
- * rule every text field shares.
5681
+ * it names the field unless the host carries an `aria-labelledby` or an `aria-label`, which win as
5682
+ * on a native field and should contain the label: the rule every text field shares.
5680
5683
  */
5681
5684
  label: Components.SuiFloatLabel['label'];
5682
5685
  /**
@@ -6184,7 +6187,7 @@ declare class SuiIconField {
6184
6187
  * `aria-labelledby` names the input then, or the placeholder. Set one of the three and it
6185
6188
  * draws the shell the other five elements in the InputText family draw, which is what this
6186
6189
  * element was missing: it carried `required` and `invalid` with nowhere to say why. A visible
6187
- * label wins over both host attributes.
6190
+ * label is the name unless the host carries one of those attributes, which win as on a native field.
6188
6191
  */
6189
6192
  label?: Exclude<Components.SuiIconField['label'], undefined>;
6190
6193
  /**
@@ -6295,8 +6298,9 @@ declare class SuiIftaLabel {
6295
6298
  invalid: Components.SuiIftaLabel['invalid'];
6296
6299
  static ngAcceptInputType_invalid: boolean | '';
6297
6300
  /**
6298
- * The in-field label. It names the field; only without one does the host's `aria-label` or
6299
- * `aria-labelledby`, the rule every text field shares.
6301
+ * The in-field label. It names the field unless the host carries an `aria-labelledby` or an
6302
+ * `aria-label`, which win as on a native field and should contain the label: the rule every text
6303
+ * field shares.
6300
6304
  */
6301
6305
  label: Components.SuiIftaLabel['label'];
6302
6306
  /**
@@ -6651,8 +6655,8 @@ declare class SuiInputGroup {
6651
6655
  invalid: Components.SuiInputGroup['invalid'];
6652
6656
  static ngAcceptInputType_invalid: boolean | '';
6653
6657
  /**
6654
- * Field label above the group. Without one the slotted control takes the host's `aria-label`
6655
- * or `aria-labelledby` as its name, unless it carries its own; a visible label wins over both.
6658
+ * Field label above the group, and the slotted control's name unless it carries its own: a host
6659
+ * `aria-labelledby` or `aria-label` wins over it, as on a native field, and should contain it.
6656
6660
  */
6657
6661
  label?: Exclude<Components.SuiInputGroup['label'], undefined>;
6658
6662
  /**
@@ -6755,8 +6759,7 @@ declare class SuiInputMask {
6755
6759
  invalid: Components.SuiInputMask['invalid'];
6756
6760
  static ngAcceptInputType_invalid: boolean | '';
6757
6761
  /**
6758
- * Field label. Without one the field takes the host's `aria-label` or `aria-labelledby` as its
6759
- * name; a visible label wins over both.
6762
+ * Field label, and the field's name: a host `aria-labelledby` or `aria-label` wins over it, as on a native field, and should contain it.
6760
6763
  */
6761
6764
  label?: Exclude<Components.SuiInputMask['label'], undefined>;
6762
6765
  /**
@@ -6867,7 +6870,9 @@ declare class SuiInputNumber {
6867
6870
  */
6868
6871
  currency: Components.SuiInputNumber['currency'];
6869
6872
  /**
6870
- * Fraction digits. Defaults to the currency's own count in money mode (2 for dollars, 0 for yen), otherwise 0.
6873
+ * Fraction digits, shown and taken. Defaults to the currency's own count in money mode (2 for
6874
+ * dollars, 0 for yen), otherwise 0, so a plain field takes whole numbers. With `maxDecimals` it is
6875
+ * the fewest the number shows.
6871
6876
  */
6872
6877
  decimals?: Exclude<Components.SuiInputNumber['decimals'], undefined>;
6873
6878
  /**
@@ -6899,7 +6904,8 @@ declare class SuiInputNumber {
6899
6904
  static ngAcceptInputType_invalid: boolean | '';
6900
6905
  /**
6901
6906
  * Field label. Set one, or give the host an `aria-label` or `aria-labelledby`: without any the
6902
- * spinbutton has no name. A visible label wins over both host attributes.
6907
+ * spinbutton has no name. With both, the host attribute wins, as on a native field, and should
6908
+ * contain the label.
6903
6909
  */
6904
6910
  label?: Exclude<Components.SuiInputNumber['label'], undefined>;
6905
6911
  /**
@@ -6910,11 +6916,18 @@ declare class SuiInputNumber {
6910
6916
  */
6911
6917
  locale?: Exclude<Components.SuiInputNumber['locale'], undefined>;
6912
6918
  /**
6913
- * Upper bound applied on commit.
6919
+ * Highest number the field takes, on the same terms.
6914
6920
  */
6915
6921
  max?: Exclude<Components.SuiInputNumber['max'], undefined>;
6916
6922
  /**
6917
- * Lower bound applied on commit.
6923
+ * Up to this many fraction digits, for a figure whose precision varies: hours (`1.5`), a rate
6924
+ * (`0.075`), a unit price with four decimals. The field shows as many as the number has, at least
6925
+ * `decimals`, so 2 reads "2" and 1.5 reads "1.5". Phones then show a keypad with a decimal point.
6926
+ */
6927
+ maxDecimals?: Exclude<Components.SuiInputNumber['maxDecimals'], undefined>;
6928
+ /**
6929
+ * Lowest number the field takes. A lower one is refused with "Enter 0 or more.", and the
6930
+ * steppers stop here.
6918
6931
  */
6919
6932
  min?: Exclude<Components.SuiInputNumber['min'], undefined>;
6920
6933
  /**
@@ -6961,7 +6974,8 @@ declare class SuiInputNumber {
6961
6974
  */
6962
6975
  size: Components.SuiInputNumber['size'];
6963
6976
  /**
6964
- * Stepper and arrow-key increment.
6977
+ * Stepper and arrow-key increment. A step lands on the field's decimals and stops at `min` and
6978
+ * `max`, since a step is the field's own move rather than a number someone typed.
6965
6979
  * @default 1
6966
6980
  */
6967
6981
  step: Components.SuiInputNumber['step'];
@@ -6978,9 +6992,12 @@ declare class SuiInputNumber {
6978
6992
  */
6979
6993
  tone?: Exclude<Components.SuiInputNumber['tone'], undefined>;
6980
6994
  /**
6981
- * Committed number. Mutable; `null` while the field is empty, which is how it starts, so a new
6982
- * record shows the placeholder and posts nothing it was not given. A commit happens on blur,
6983
- * Enter, an arrow key or a stepper, rounded to `decimals` and clamped to `min` and `max`.
6995
+ * The number in the field. Mutable, and it follows the typing: each keystroke that leaves a number
6996
+ * the field takes sets it before `suiInput` fires, so a save that runs while the field still has
6997
+ * focus reads what is on screen. `null` while the field is empty, which is how it starts, and while
6998
+ * the text is one the field refuses. The field never rewrites a number: not one typed, not one set
6999
+ * here. A number outside `min` and `max`, or with more decimals than the field takes, is refused
7000
+ * with a message when the field is left, and holds the form until it is fixed.
6984
7001
  * @default null
6985
7002
  */
6986
7003
  value: Components.SuiInputNumber['value'];
@@ -7002,16 +7019,19 @@ declare class SuiInputNumber {
7002
7019
  suiBlur: EventEmitter<SuiInputNumberCustomEvent<void>>;
7003
7020
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
7004
7021
  static ɵfac: i0.ɵɵFactoryDeclaration<SuiInputNumber, never>;
7005
- static ɵcmp: i0.ɵɵComponentDeclaration<SuiInputNumber, "sui-input-number", never, { "align": { "alias": "align"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; "decimals": { "alias": "decimals"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "help": { "alias": "help"; "required": false; }; "hideButtons": { "alias": "hideButtons"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "label": { "alias": "label"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "max": { "alias": "max"; "required": false; }; "min": { "alias": "min"; "required": false; }; "money": { "alias": "money"; "required": false; }; "name": { "alias": "name"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "prefixText": { "alias": "prefixText"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "size": { "alias": "size"; "required": false; }; "step": { "alias": "step"; "required": false; }; "suffixText": { "alias": "suffixText"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "value": { "alias": "value"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "suiChange": "suiChange"; "suiInput": "suiInput"; "suiFocus": "suiFocus"; "suiBlur": "suiBlur"; }, never, ["*"], true, never>;
7022
+ static ɵcmp: i0.ɵɵComponentDeclaration<SuiInputNumber, "sui-input-number", never, { "align": { "alias": "align"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "currency": { "alias": "currency"; "required": false; }; "decimals": { "alias": "decimals"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "help": { "alias": "help"; "required": false; }; "hideButtons": { "alias": "hideButtons"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "label": { "alias": "label"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "max": { "alias": "max"; "required": false; }; "maxDecimals": { "alias": "maxDecimals"; "required": false; }; "min": { "alias": "min"; "required": false; }; "money": { "alias": "money"; "required": false; }; "name": { "alias": "name"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "prefixText": { "alias": "prefixText"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "size": { "alias": "size"; "required": false; }; "step": { "alias": "step"; "required": false; }; "suffixText": { "alias": "suffixText"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "value": { "alias": "value"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "suiChange": "suiChange"; "suiInput": "suiInput"; "suiFocus": "suiFocus"; "suiBlur": "suiBlur"; }, never, ["*"], true, never>;
7006
7023
  }
7007
7024
  declare interface SuiInputNumber extends Components.SuiInputNumber {
7008
7025
  /**
7009
- * Fires on commit (blur, Enter, arrows, stepper); detail is the committed number or `null`.
7026
+ * Fires when the field is left or Enter is pressed, and on an arrow key or a stepper, when the
7027
+ number differs from the last one it reported; detail is the number, or `null` for an empty or
7028
+ refused entry.
7010
7029
  */
7011
7030
  suiChange: EventEmitter<SuiInputNumberCustomEvent<number | null>>;
7012
7031
  /**
7013
- * Fires on every keystroke; detail is the parsed, unclamped number, or `null` while the text
7014
- does not parse: an empty field, or a lone `-` or `.`.
7032
+ * Fires on every keystroke, after `value` follows it; detail is the number the text reads as,
7033
+ even one the field will refuse, or `null` while the text holds no number: an empty field, or
7034
+ a lone `-` or `.`.
7015
7035
  */
7016
7036
  suiInput: EventEmitter<SuiInputNumberCustomEvent<number | null>>;
7017
7037
  /**
@@ -7055,7 +7075,7 @@ declare class SuiInputOtp {
7055
7075
  static ngAcceptInputType_invalid: boolean | '';
7056
7076
  /**
7057
7077
  * Group label. Without one the group takes the host's `aria-label` or `aria-labelledby` as its
7058
- * name, and "One-time code" without either; a visible label wins over both. Each box stays
7078
+ * name, and "One-time code" without either; a host attribute wins over a label. Each box stays
7059
7079
  * "Digit n".
7060
7080
  */
7061
7081
  label?: Exclude<Components.SuiInputOtp['label'], undefined>;
@@ -7156,8 +7176,8 @@ declare class SuiInputTags {
7156
7176
  invalid: Components.SuiInputTags['invalid'];
7157
7177
  static ngAcceptInputType_invalid: boolean | '';
7158
7178
  /**
7159
- * Label above the field. Without one the box and its entry field take the host's `aria-label`
7160
- * or `aria-labelledby` as their name; a visible label wins over both.
7179
+ * Label above the field, and the name of the box and its entry field: a host `aria-labelledby` or
7180
+ * `aria-label` wins over it, as on a native field, and should contain it.
7161
7181
  */
7162
7182
  label?: Exclude<Components.SuiInputTags['label'], undefined>;
7163
7183
  /**
@@ -7268,7 +7288,8 @@ declare class SuiInputText {
7268
7288
  static ngAcceptInputType_invalid: boolean | '';
7269
7289
  /**
7270
7290
  * Field label. Without one the field takes the host's `aria-label` or `aria-labelledby` as its
7271
- * name, for a settings row that already prints the term; a visible label wins over both.
7291
+ * name, for a settings row that already prints the term. With both, the host attribute wins, as on
7292
+ * a native field, and should contain the label.
7272
7293
  */
7273
7294
  label?: Exclude<Components.SuiInputText['label'], undefined>;
7274
7295
  /**
@@ -8638,8 +8659,7 @@ declare class SuiPassword {
8638
8659
  invalid: Components.SuiPassword['invalid'];
8639
8660
  static ngAcceptInputType_invalid: boolean | '';
8640
8661
  /**
8641
- * Field label. Without one the field takes the host's `aria-label` or `aria-labelledby` as its
8642
- * name; a visible label wins over both.
8662
+ * Field label, and the field's name: a host `aria-labelledby` or `aria-label` wins over it, as on a native field, and should contain it.
8643
8663
  */
8644
8664
  label?: Exclude<Components.SuiPassword['label'], undefined>;
8645
8665
  /**
@@ -10855,8 +10875,7 @@ declare class SuiTextarea {
10855
10875
  invalid: Components.SuiTextarea['invalid'];
10856
10876
  static ngAcceptInputType_invalid: boolean | '';
10857
10877
  /**
10858
- * Field label above the box. Without one the box takes the host's `aria-label` or
10859
- * `aria-labelledby` as its name; a visible label wins over both.
10878
+ * Field label above the box, and the box's name: a host `aria-labelledby` or `aria-label` wins over it, as on a native field, and should contain it.
10860
10879
  */
10861
10880
  label?: Exclude<Components.SuiTextarea['label'], undefined>;
10862
10881
  /**
@@ -11457,7 +11476,8 @@ declare class SuiToggleSwitch {
11457
11476
  invalid: Components.SuiToggleSwitch['invalid'];
11458
11477
  static ngAcceptInputType_invalid: boolean | '';
11459
11478
  /**
11460
- * Visible label.
11479
+ * Visible label, and the switch's name unless the element carries an `aria-label` or an
11480
+ * `aria-labelledby`, which win as they do on a native control.
11461
11481
  */
11462
11482
  label?: Exclude<Components.SuiToggleSwitch['label'], undefined>;
11463
11483
  /**
@@ -12311,6 +12331,10 @@ declare class SuiHtmlValueAccessor extends ValueAccessor {
12311
12331
  * parseFloat. The model is a number, a range slider's `[low, high]` pair, or null: null, an empty
12312
12332
  * string and NaN all report null, so a cleared required field is invalid. Keep the selector equal
12313
12333
  * to `NUMBER_ELEMENTS` there; `scripts/check-value-accessors.mjs` fails when they differ.
12334
+ *
12335
+ * The model follows suiInput as well as suiChange, as `NUMBER_ELEMENTS` says: a number field's model
12336
+ * that waited for the commit sent the old amount from a save that ran before the field lost focus.
12337
+ * The rating fires no suiInput; `handleChangeEvent` skips a value it already has.
12314
12338
  */
12315
12339
  declare class NumericValueAccessor extends ValueAccessor {
12316
12340
  constructor(el: ElementRef);
@@ -12348,6 +12372,6 @@ declare class SelectValueAccessor extends ValueAccessor {
12348
12372
  static ɵdir: i0.ɵɵDirectiveDeclaration<SelectValueAccessor, "sui-select, sui-multi-select, sui-cascade-select, sui-tree-select, sui-listbox, sui-select-button, sui-radio-group, sui-checkbox-group, sui-choice-cards, sui-date-picker, sui-time-picker, sui-color-picker, sui-color-editor, sui-input-otp, sui-input-tags, sui-filter-builder", never, {}, {}, never, never, true, never>;
12349
12373
  }
12350
12374
 
12351
- declare const VALUE_ACCESSORS: (typeof BooleanValueAccessor)[];
12375
+ declare const VALUE_ACCESSORS: (typeof TextValueAccessor)[];
12352
12376
 
12353
12377
  export { BooleanValueAccessor, DIRECTIVES, NumericValueAccessor, SelectValueAccessor, SuiAccordion, SuiAccordionItem, SuiAnchor, SuiAutoComplete, SuiAvatar, SuiAvatarGroup, SuiBadge, SuiBlockUi, SuiBoard, SuiBottomNav, SuiBreadcrumb, SuiButton, SuiButtonGroup, SuiCalendar, SuiCard, SuiCarousel, SuiCascadeSelect, SuiChartBar, SuiChartCandlestick, SuiChartCombo, SuiChartGauge, SuiChartHeatmap, SuiChartLine, SuiChartNavigator, SuiChartPie, SuiChartRadar, SuiChartScatter, SuiChartSynced, SuiChartTreemap, SuiChartWaterfall, SuiCheckbox, SuiCheckboxGroup, SuiChip, SuiChoiceCards, SuiCodeBlock, SuiColorEditor, SuiColorPicker, SuiCommandPalette, SuiConfigList, SuiConfigRow, SuiConfirmDialog, SuiConfirmPopup, SuiContextMenu, SuiCopyButton, SuiDataGrid, SuiDataTable, SuiDataView, SuiDatePicker, SuiDescriptionList, SuiDialog, SuiDivider, SuiDock, SuiDrawer, SuiEditBox, SuiEmptyState, SuiFieldset, SuiFileUpload, SuiFilterBuilder, SuiFilterPanel, SuiFilterPanelValueAccessor, SuiFloatLabel, SuiFluid, SuiForm, SuiFormActions, SuiFormLayout, SuiGalleria, SuiHtmlValueAccessor, SuiIconButton, SuiIconField, SuiIftaLabel, SuiImage, SuiImageCompare, SuiInplace, SuiInputGroup, SuiInputGroupAddon, SuiInputMask, SuiInputNumber, SuiInputOtp, SuiInputTags, SuiInputText, SuiKbd, SuiKnob, SuiList, SuiListbox, SuiMegaMenu, SuiMenu, SuiMenubar, SuiMessage, SuiMeterGroup, SuiMiniToolbar, SuiMultiSelect, SuiNotificationCenter, SuiOrderList, SuiOrgChart, SuiOverlayBadge, SuiPageHeader, SuiPaginator, SuiPanel, SuiPanelMenu, SuiPassword, SuiPersona, SuiPickList, SuiPopover, SuiProgressBar, SuiProgressRing, SuiProgressSpinner, SuiQrCode, SuiRadioButton, SuiRadioGroup, SuiRating, SuiRichTextEditor, SuiSaveStatus, SuiSchedulerBuilder, SuiSchedulerBuilderValueAccessor, SuiScrollPanel, SuiScrollTop, SuiSelect, SuiSelectButton, SuiSideNav, SuiSkeleton, SuiSkeletonCard, SuiSlider, SuiSparkline, SuiSpeedDial, SuiSplitButton, SuiSplitter, SuiSpoiler, SuiStatCard, SuiStepper, SuiTab, SuiTabs, SuiTag, SuiTerminal, SuiTextarea, SuiThemePicker, SuiTieredMenu, SuiTimePicker, SuiTimeline, SuiToastHost, SuiToggleButton, SuiToggleSwitch, SuiToolbar, SuiTooltip, SuiTour, SuiTree, SuiTreeSelect, SuiTreeTable, SuiTrend, SuiVirtualScroller, TextValueAccessor, VALUE_ACCESSORS, ValueAccessor };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shineuix/angular",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Angular standalone directives for ShineUI web components.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "tslib": "^2.8.0",
24
- "@shineuix/core": "1.1.0"
24
+ "@shineuix/core": "1.2.0"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "@angular/core": "^20.0.0 || ^21.0.0 || ^22.0.0",