@shwfed/config 2.10.12 → 2.11.1
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/mcp.mjs +88 -54
- package/dist/module.json +1 -1
- package/dist/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-BeqytPDr.js → FieldGroup.vue_vue_type_script_setup_true_lang-CosmpPSu.js} +1 -1
- package/dist/preview/assets/{badge-DkHwLDps.js → badge-BkYCxTFK.js} +1 -1
- package/dist/preview/assets/{config-Dx1SXsSf.js → config-74YmXQsH.js} +1 -1
- package/dist/preview/assets/{config-DbV3RlZz.js → config-B62b9dMF.js} +1 -1
- package/dist/preview/assets/{config-OPQWANCx.js → config-BHYlKhDX.js} +1 -1
- package/dist/preview/assets/{config-Cft-srKd.js → config-Bbbyd5lB.js} +1 -1
- package/dist/preview/assets/{config-Uw4cvZGX.js → config-BcZe-bR9.js} +1 -1
- package/dist/preview/assets/{config-DJQ2LOWo.js → config-Bt6--diX.js} +1 -1
- package/dist/preview/assets/{config-CVPVYMuh.js → config-COr2MFhN.js} +1 -1
- package/dist/preview/assets/{config-7KeAl8UU.js → config-CPsd0ppi.js} +1 -1
- package/dist/preview/assets/{config-DAZ2Uj6B.js → config-CYVafGLc.js} +1 -1
- package/dist/preview/assets/{config-DQVKd54J.js → config-C_Ia1CDq.js} +1 -1
- package/dist/preview/assets/{config-CZ1e9utV.js → config-Cbp7aAAw.js} +1 -1
- package/dist/preview/assets/{config-DCANpbtq.js → config-Dk9OegYx.js} +1 -1
- package/dist/preview/assets/{config-Cedm-E2H.js → config-Dt8k1gnT.js} +1 -1
- package/dist/preview/assets/{config-Cy6Eix27.js → config-sCP15_0f.js} +1 -1
- package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-D4Gh9PzS.js → definition.vue_vue_type_script_setup_true_lang-C3NiB99t.js} +1 -1
- package/dist/preview/assets/{index-Cum0oK9u.js → index-BMOizF8g.js} +1 -1
- package/dist/preview/assets/index-C9G8y6qZ.js +1 -0
- package/dist/preview/assets/index-DjG-VVR4.js +763 -0
- package/dist/preview/assets/index-DqRQ67sX.css +1 -0
- package/dist/preview/assets/{item-H4QeOpnC.js → item-C1efxuFt.js} +1 -1
- package/dist/preview/assets/{runtime-C3532B0Y.js → runtime-7z9N9JGG.js} +1 -1
- package/dist/preview/assets/{runtime-sPGVp7yA.js → runtime-Bpa1zRxG.js} +1 -1
- package/dist/preview/assets/{runtime-DvCHNIPq.js → runtime-Csv04MYG.js} +1 -1
- package/dist/preview/assets/{runtime-CwgX0PuH.js → runtime-D0bjM4NL.js} +1 -1
- package/dist/preview/assets/{runtime-CNMjRr9Y.js → runtime-DoLpKFu-.js} +1 -1
- package/dist/preview/assets/{runtime-BotFX6qJ.js → runtime-Du0ghzR2.js} +1 -1
- package/dist/preview/assets/{runtime-CTnwTJlw.js → runtime-Dz3ZQYdq.js} +1 -1
- package/dist/preview/assets/{runtime-cKOD2A6u.js → runtime-Dz7SCudL.js} +1 -1
- package/dist/preview/assets/{runtime-D5HcLLLR.js → runtime-LgZuN2Tf.js} +1 -1
- package/dist/preview/assets/{runtime-ibuFFD1K.js → runtime-S9eZ2nJS.js} +1 -1
- package/dist/preview/assets/{schema-meta-DtZNwp3h.js → schema-meta-CYKPEnu9.js} +1 -1
- package/dist/preview/index.html +2 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.js +10 -1
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +4 -4
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +4 -4
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.js +10 -1
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +4 -4
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +4 -4
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +23 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/config.vue +30 -0
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/schema.d.ts +2 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/schema.js +1 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/config.vue +30 -0
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/schema.d.ts +2 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/schema.js +7 -4
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/config.vue +30 -0
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/schema.d.ts +2 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/schema.js +1 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/config.vue +30 -0
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/schema.d.ts +2 -1
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/schema.js +1 -1
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/schema.d.ts +2 -1
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/config.vue +30 -0
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/schema.d.ts +2 -1
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/schema.js +1 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/config.vue +60 -32
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/runtime.vue +7 -9
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/schema.js +12 -6
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/config.vue +67 -32
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/runtime.vue +6 -9
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/schema.js +2 -5
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/config.vue +66 -31
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/runtime.vue +7 -9
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/schema.js +12 -6
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/schema.d.ts +1 -1
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/schema.d.ts +1 -1
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/schema.d.ts +1 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/schema.d.ts +1 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/schema.d.ts +1 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/schema.d.ts +1 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/schema.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.d.vue.ts +6 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue +61 -22
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue.d.ts +6 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/runtime.vue +6 -9
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.js +3 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.d.vue.ts +6 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue +61 -22
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue.d.ts +6 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/runtime.vue +6 -9
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.js +3 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +4 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue +67 -23
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +4 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/runtime.vue +6 -9
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.js +2 -4
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +4 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue +67 -23
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +4 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/runtime.vue +6 -9
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.js +2 -4
- package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/config.vue +67 -32
- package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/runtime.vue +7 -9
- package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/schema.js +2 -5
- package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/config.vue +66 -31
- package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/runtime.vue +5 -8
- package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/schema.d.ts +4 -1
- package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/schema.js +4 -6
- package/dist/runtime/components/table/index.vue +46 -7
- package/dist/runtime/components/table/utils/runtime.d.ts +1 -0
- package/dist/runtime/components/table/utils/runtime.js +5 -0
- package/dist/runtime/components/table/utils/shared.d.ts +3 -1
- package/dist/runtime/components/table/utils/shared.js +17 -5
- package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerInput.vue +9 -2
- package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue +13 -4
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
- package/package.json +1 -1
- package/dist/preview/assets/index-B3HnlKis.js +0 -763
- package/dist/preview/assets/index-BAY6NLoo.css +0 -1
- package/dist/preview/assets/index-CxUuhfsO.js +0 -1
|
@@ -9,6 +9,9 @@ export declare const metadata: {
|
|
|
9
9
|
readonly icon: "fluent:number-symbol-20-regular";
|
|
10
10
|
};
|
|
11
11
|
export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
|
|
12
|
+
align: Schema.optionalWith<Schema.Literal<["left", "center", "right"]>, {
|
|
13
|
+
default: () => "right";
|
|
14
|
+
}>;
|
|
12
15
|
placeholder: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
|
|
13
16
|
locale: Schema.Literal<["zh"]>;
|
|
14
17
|
message: Schema.SchemaClass<string, string, never>;
|
|
@@ -16,7 +19,6 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
|
|
|
16
19
|
locale: Schema.Literal<["ja", "en", "ko"]>;
|
|
17
20
|
message: Schema.SchemaClass<string, string, never>;
|
|
18
21
|
}>]>>;
|
|
19
|
-
hidden: Schema.optional<Schema.Schema<string, string, never>>;
|
|
20
22
|
disabled: Schema.optional<Schema.Schema<string, string, never>>;
|
|
21
23
|
readonly: Schema.optional<Schema.Schema<string, string, never>>;
|
|
22
24
|
precision: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
|
|
@@ -180,6 +182,7 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
|
|
|
180
182
|
locale: Schema.Literal<["ja", "en", "ko"]>;
|
|
181
183
|
message: Schema.SchemaClass<string, string, never>;
|
|
182
184
|
}>]>>;
|
|
185
|
+
hidden: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
|
|
183
186
|
id: Schema.refine<string, typeof Schema.String>;
|
|
184
187
|
groupId: Schema.optional<typeof Schema.UUID>;
|
|
185
188
|
type: Schema.Literal<["com.shwfed.table.column.number-input"]>;
|
|
@@ -2,7 +2,7 @@ import { Schema } from "effect";
|
|
|
2
2
|
import { getProperty } from "dot-prop";
|
|
3
3
|
import { Locale } from "../../../../../share/locale.js";
|
|
4
4
|
import { ActionSchemaFields } from "../../../../actions/schema.js";
|
|
5
|
-
import { CelRowAccess, derivedRowField, editableColumnFields, editableHeader, registerRowVariablesIfAbsent } from "../../../utils/shared.js";
|
|
5
|
+
import { Align, CelRowAccess, derivedRowField, editableColumnFields, editableHeader, registerRowVariablesIfAbsent } from "../../../utils/shared.js";
|
|
6
6
|
export const type = "com.shwfed.table.column.number-input";
|
|
7
7
|
export const compatibilityDate = "2026-05-20";
|
|
8
8
|
export const metadata = {
|
|
@@ -31,14 +31,11 @@ export function schema(configure) {
|
|
|
31
31
|
type: Schema.Literal(type),
|
|
32
32
|
compatibilityDate: Schema.Literal(compatibilityDate),
|
|
33
33
|
...editableColumnFields(),
|
|
34
|
+
align: Schema.optionalWith(Align.annotations({ title: "\u5BF9\u9F50" }), { default: () => "right" }),
|
|
34
35
|
placeholder: Schema.optional(Locale.annotations({
|
|
35
36
|
title: "\u5360\u4F4D\u7B26",
|
|
36
37
|
description: "\u5355\u5143\u683C\u4E3A\u7A7A\u65F6\u663E\u793A\u7684\u63D0\u793A\u6587\u672C"
|
|
37
38
|
})),
|
|
38
|
-
hidden: Schema.optional(CelBool.annotations({
|
|
39
|
-
title: "\u9690\u85CF\u6761\u4EF6",
|
|
40
|
-
description: "\u8FD4\u56DE `true` \u65F6\u8BE5\u884C\u7684\u8F93\u5165\u6846\u4E0D\u6E32\u67D3\uFF08\u5176\u4F59\u884C\u4E0D\u53D7\u5F71\u54CD\uFF09"
|
|
41
|
-
})),
|
|
42
39
|
disabled: Schema.optional(CelBool.annotations({
|
|
43
40
|
title: "\u7981\u7528\u6761\u4EF6",
|
|
44
41
|
description: "\u8FD4\u56DE `true` \u65F6\u8F93\u5165\u6846\u4ECD\u7136\u6E32\u67D3\u4F46\u4E0D\u53EF\u7F16\u8F91"
|
|
@@ -72,7 +69,16 @@ export function schema(configure) {
|
|
|
72
69
|
description: "\u5141\u8BB8\u8F93\u5165\u7684\u6700\u5927\u503C\u8868\u8FBE\u5F0F\uFF0C\u53EF\u8BBF\u95EE `row` / `index` \u548C `form`\uFF1B\u7559\u7A7A\u65F6\u4E0D\u9650\u5236\u4E0A\u9650"
|
|
73
70
|
})),
|
|
74
71
|
derived: derivedRowField(configure, "number"),
|
|
75
|
-
|
|
72
|
+
// `Schema.optional` rebuilds the struct's union member, and because the
|
|
73
|
+
// `optionalWith`-default fields make `AddonActions` a `Transformation`, the
|
|
74
|
+
// inner struct's `title`/`description` don't survive onto the rebuilt
|
|
75
|
+
// member. The config editor's `getStructFieldTitle('addon')` would then fall
|
|
76
|
+
// back to the raw key "addon" (the v2.10.12 regression). Re-state them on the
|
|
77
|
+
// property signature, which the meta reader checks before the field type.
|
|
78
|
+
addon: Schema.optional(AddonActions(configure)).annotations({
|
|
79
|
+
title: "\u8F93\u5165\u6846\u5185\u6309\u94AE",
|
|
80
|
+
description: "\u5728\u8F93\u5165\u6846\u53F3\u4FA7\u5185\u5D4C\u4E00\u7EC4\u64CD\u4F5C\u6309\u94AE"
|
|
81
|
+
})
|
|
76
82
|
}).annotations({ title: "NumberInputRenderer", description: "\u6570\u503C\u8F93\u5165\u6E32\u67D3\u5668\uFF08\u53EF\u7F16\u8F91\uFF09" });
|
|
77
83
|
}
|
|
78
84
|
export function defaults() {
|
|
@@ -12,8 +12,15 @@ import {
|
|
|
12
12
|
InputGroupInput,
|
|
13
13
|
InputGroupNumberField
|
|
14
14
|
} from "../../../../ui/input-group";
|
|
15
|
+
import {
|
|
16
|
+
DropdownMenu,
|
|
17
|
+
DropdownMenuContent,
|
|
18
|
+
DropdownMenuItem,
|
|
19
|
+
DropdownMenuTrigger
|
|
20
|
+
} from "../../../../ui/dropdown-menu";
|
|
15
21
|
import { getStructFieldDescription, getStructFieldTitle } from "../../../utils/schema-meta";
|
|
16
22
|
import { Markdown } from "../../../../ui/markdown";
|
|
23
|
+
import { Switch } from "../../../../ui/switch";
|
|
17
24
|
import DerivedValueEditor from "../../../../form/DerivedValueEditor.vue";
|
|
18
25
|
import { schema } from "./schema";
|
|
19
26
|
defineOptions({ name: "ShwfedTableSwitchRendererConfig" });
|
|
@@ -22,6 +29,14 @@ const fieldSchema = schema(() => {
|
|
|
22
29
|
});
|
|
23
30
|
const fieldTitle = (field) => getStructFieldTitle(fieldSchema, field) ?? field;
|
|
24
31
|
const fieldDescription = (field) => getStructFieldDescription(fieldSchema, field);
|
|
32
|
+
const ALIGN_OPTIONS = [
|
|
33
|
+
{ value: "left", label: "\u5DE6\u5BF9\u9F50", icon: "fluent:text-align-left-20-regular" },
|
|
34
|
+
{ value: "center", label: "\u5C45\u4E2D", icon: "fluent:text-align-center-20-regular" },
|
|
35
|
+
{ value: "right", label: "\u53F3\u5BF9\u9F50", icon: "fluent:text-align-right-20-regular" }
|
|
36
|
+
];
|
|
37
|
+
const currentAlignIcon = computed(
|
|
38
|
+
() => (ALIGN_OPTIONS.find((o) => o.value === (value.value.align ?? "center")) ?? ALIGN_OPTIONS[1]).icon
|
|
39
|
+
);
|
|
25
40
|
const ROW_VARS = {
|
|
26
41
|
row: { type: "dyn", label: "\u5F53\u524D\u884C\u6570\u636E" },
|
|
27
42
|
index: { type: "number", label: "\u884C\u7D22\u5F15" }
|
|
@@ -38,17 +53,6 @@ const bindingText = computed({
|
|
|
38
53
|
}
|
|
39
54
|
}
|
|
40
55
|
});
|
|
41
|
-
const hiddenModel = computed({
|
|
42
|
-
get: () => value.value.hidden ?? "",
|
|
43
|
-
set: (v) => {
|
|
44
|
-
if (v === "") {
|
|
45
|
-
const { hidden: _drop, ...rest } = value.value;
|
|
46
|
-
value.value = rest;
|
|
47
|
-
} else {
|
|
48
|
-
value.value = { ...value.value, hidden: v };
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
56
|
const disabledModel = computed({
|
|
53
57
|
get: () => value.value.disabled ?? "",
|
|
54
58
|
set: (v) => {
|
|
@@ -71,6 +75,14 @@ const readonlyModel = computed({
|
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
77
|
});
|
|
78
|
+
function onHiddenChange(v) {
|
|
79
|
+
if (v) {
|
|
80
|
+
value.value = { ...value.value, hidden: true };
|
|
81
|
+
} else {
|
|
82
|
+
const { hidden: _drop, ...rest } = value.value;
|
|
83
|
+
value.value = rest;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
74
86
|
const derivedModel = computed({
|
|
75
87
|
get: () => value.value.derived,
|
|
76
88
|
set: (v) => {
|
|
@@ -165,6 +177,29 @@ const derivedModel = computed({
|
|
|
165
177
|
{{ fieldTitle("size") }}
|
|
166
178
|
</FieldLabel>
|
|
167
179
|
<InputGroup>
|
|
180
|
+
<InputGroupAddon align="inline-start">
|
|
181
|
+
<DropdownMenu>
|
|
182
|
+
<DropdownMenuTrigger as-child>
|
|
183
|
+
<InputGroupButton
|
|
184
|
+
variant="ghost"
|
|
185
|
+
size="xs"
|
|
186
|
+
:title="fieldTitle('align')"
|
|
187
|
+
>
|
|
188
|
+
<Icon :icon="currentAlignIcon" />
|
|
189
|
+
</InputGroupButton>
|
|
190
|
+
</DropdownMenuTrigger>
|
|
191
|
+
<DropdownMenuContent align="start">
|
|
192
|
+
<DropdownMenuItem
|
|
193
|
+
v-for="opt in ALIGN_OPTIONS"
|
|
194
|
+
:key="opt.value"
|
|
195
|
+
@select="value = { ...value, align: opt.value }"
|
|
196
|
+
>
|
|
197
|
+
<Icon :icon="opt.icon" />
|
|
198
|
+
{{ opt.label }}
|
|
199
|
+
</DropdownMenuItem>
|
|
200
|
+
</DropdownMenuContent>
|
|
201
|
+
</DropdownMenu>
|
|
202
|
+
</InputGroupAddon>
|
|
168
203
|
<InputGroupNumberField
|
|
169
204
|
:model-value="value.size"
|
|
170
205
|
:disabled="value.grow"
|
|
@@ -223,27 +258,6 @@ const derivedModel = computed({
|
|
|
223
258
|
</Field>
|
|
224
259
|
</div>
|
|
225
260
|
<div class="grid grid-cols-2 gap-x-6 gap-y-4">
|
|
226
|
-
<Field orientation="vertical">
|
|
227
|
-
<FieldLabel class="text-xs text-zinc-500">
|
|
228
|
-
<template
|
|
229
|
-
v-if="fieldDescription('hidden')"
|
|
230
|
-
#tooltip
|
|
231
|
-
>
|
|
232
|
-
<Markdown
|
|
233
|
-
:source="fieldDescription('hidden')"
|
|
234
|
-
block
|
|
235
|
-
class="prose prose-sm prose-zinc"
|
|
236
|
-
/>
|
|
237
|
-
</template>
|
|
238
|
-
{{ fieldTitle("hidden") }}
|
|
239
|
-
</FieldLabel>
|
|
240
|
-
<ExpressionEditor
|
|
241
|
-
v-model="hiddenModel"
|
|
242
|
-
placeholder="例:row.archived"
|
|
243
|
-
result-type="bool"
|
|
244
|
-
:extra-vars="ROW_VARS"
|
|
245
|
-
/>
|
|
246
|
-
</Field>
|
|
247
261
|
<Field orientation="vertical">
|
|
248
262
|
<FieldLabel class="text-xs text-zinc-500">
|
|
249
263
|
<template
|
|
@@ -347,6 +361,27 @@ const derivedModel = computed({
|
|
|
347
361
|
</InputGroupAddon>
|
|
348
362
|
</InputGroup>
|
|
349
363
|
</Field>
|
|
364
|
+
<Field orientation="vertical">
|
|
365
|
+
<FieldLabel class="text-xs text-zinc-500">
|
|
366
|
+
<template
|
|
367
|
+
v-if="fieldDescription('hidden')"
|
|
368
|
+
#tooltip
|
|
369
|
+
>
|
|
370
|
+
<Markdown
|
|
371
|
+
:source="fieldDescription('hidden')"
|
|
372
|
+
block
|
|
373
|
+
class="prose prose-sm prose-zinc"
|
|
374
|
+
/>
|
|
375
|
+
</template>
|
|
376
|
+
{{ fieldTitle("hidden") }}
|
|
377
|
+
</FieldLabel>
|
|
378
|
+
<div>
|
|
379
|
+
<Switch
|
|
380
|
+
:model-value="value.hidden ?? false"
|
|
381
|
+
@update:model-value="onHiddenChange"
|
|
382
|
+
/>
|
|
383
|
+
</div>
|
|
384
|
+
</Field>
|
|
350
385
|
</div>
|
|
351
386
|
</div>
|
|
352
387
|
</template>
|
|
@@ -8,6 +8,7 @@ import { useFormReadonly } from "../../../../form/utils/readonly";
|
|
|
8
8
|
import { getLocalizedText } from "../../../../../share/locale";
|
|
9
9
|
import { Switch } from "../../../../ui/switch";
|
|
10
10
|
import { useFieldValue } from "../../../../form/utils/field-value";
|
|
11
|
+
import { JUSTIFY_CLASS } from "../../../utils/runtime";
|
|
11
12
|
defineOptions({ name: "ShwfedTableSwitchRendererRuntime" });
|
|
12
13
|
const props = defineProps({
|
|
13
14
|
column: { type: null, required: true },
|
|
@@ -25,7 +26,6 @@ function evalBool(expression, label) {
|
|
|
25
26
|
return false;
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
const isHidden = computed(() => evalBool(props.column.hidden, "hidden"));
|
|
29
29
|
const isDisabled = computed(() => evalBool(props.column.disabled, "disabled"));
|
|
30
30
|
const formReadonly = useFormReadonly();
|
|
31
31
|
const isReadonly = computed(
|
|
@@ -40,6 +40,7 @@ const trueText = computed(
|
|
|
40
40
|
const falseText = computed(
|
|
41
41
|
() => getLocalizedText(props.column.falseLabel, locale.value) || "\u5426"
|
|
42
42
|
);
|
|
43
|
+
const justifyClass = computed(() => JUSTIFY_CLASS[props.column.align ?? "center"] ?? JUSTIFY_CLASS.center);
|
|
43
44
|
const { draft, commit } = useFieldValue({
|
|
44
45
|
binding: () => props.column.binding,
|
|
45
46
|
fromState: (raw) => raw === true,
|
|
@@ -56,23 +57,19 @@ function onUpdate(next) {
|
|
|
56
57
|
Row budget matches the editable text/number cells: 2px outer inset around
|
|
57
58
|
an `h-7` (28px) row — 32px total. The switch is centered inside that row;
|
|
58
59
|
`sm` size (h-3.5) keeps it visually compact against the surrounding cells.
|
|
59
|
-
Every branch (
|
|
60
|
+
Every branch (readonly / editable) is sized identically so rows
|
|
60
61
|
do not jump when a CEL condition flips.
|
|
61
62
|
-->
|
|
62
63
|
<div class="p-[0.125rem] w-full">
|
|
63
64
|
<span
|
|
64
|
-
v-if="
|
|
65
|
-
class="
|
|
66
|
-
/>
|
|
67
|
-
<span
|
|
68
|
-
v-else-if="effectiveReadonly"
|
|
69
|
-
class="flex items-center justify-center h-7 w-full px-2 text-[0.75rem] text-zinc-700 truncate"
|
|
65
|
+
v-if="effectiveReadonly"
|
|
66
|
+
:class="['flex items-center h-7 w-full px-2 text-[0.75rem] text-zinc-700 truncate', justifyClass]"
|
|
70
67
|
>
|
|
71
68
|
{{ draft ? trueText : falseText }}
|
|
72
69
|
</span>
|
|
73
70
|
<span
|
|
74
71
|
v-else
|
|
75
|
-
class="flex items-center
|
|
72
|
+
:class="['flex items-center h-7 w-full', justifyClass]"
|
|
76
73
|
>
|
|
77
74
|
<Switch
|
|
78
75
|
size="sm"
|
|
@@ -9,7 +9,9 @@ export declare const metadata: {
|
|
|
9
9
|
readonly icon: "fluent:toggle-left-20-regular";
|
|
10
10
|
};
|
|
11
11
|
export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
|
|
12
|
-
|
|
12
|
+
align: Schema.optionalWith<Schema.Literal<["left", "center", "right"]>, {
|
|
13
|
+
default: () => "center";
|
|
14
|
+
}>;
|
|
13
15
|
disabled: Schema.optional<Schema.Schema<string, string, never>>;
|
|
14
16
|
readonly: Schema.optional<Schema.Schema<string, string, never>>;
|
|
15
17
|
trueLabel: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
|
|
@@ -49,6 +51,7 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
|
|
|
49
51
|
locale: Schema.Literal<["ja", "en", "ko"]>;
|
|
50
52
|
message: Schema.SchemaClass<string, string, never>;
|
|
51
53
|
}>]>>;
|
|
54
|
+
hidden: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
|
|
52
55
|
id: Schema.refine<string, typeof Schema.String>;
|
|
53
56
|
groupId: Schema.optional<typeof Schema.UUID>;
|
|
54
57
|
type: Schema.Literal<["com.shwfed.table.column.switch.local"]>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
2
|
import { getProperty } from "dot-prop";
|
|
3
3
|
import { Locale } from "../../../../../share/locale.js";
|
|
4
|
-
import { CelRowAccess, derivedRowField, editableColumnFields, editableHeader } from "../../../utils/shared.js";
|
|
4
|
+
import { Align, CelRowAccess, derivedRowField, editableColumnFields, editableHeader } from "../../../utils/shared.js";
|
|
5
5
|
export const type = "com.shwfed.table.column.switch.local";
|
|
6
6
|
export const compatibilityDate = "2026-05-20";
|
|
7
7
|
export const metadata = {
|
|
@@ -14,10 +14,7 @@ export function schema(configure) {
|
|
|
14
14
|
type: Schema.Literal(type),
|
|
15
15
|
compatibilityDate: Schema.Literal(compatibilityDate),
|
|
16
16
|
...editableColumnFields(),
|
|
17
|
-
|
|
18
|
-
title: "\u9690\u85CF\u6761\u4EF6",
|
|
19
|
-
description: "\u8FD4\u56DE `true` \u65F6\u8BE5\u884C\u7684\u5F00\u5173\u4E0D\u6E32\u67D3\uFF08\u5176\u4F59\u884C\u4E0D\u53D7\u5F71\u54CD\uFF09"
|
|
20
|
-
})),
|
|
17
|
+
align: Schema.optionalWith(Align.annotations({ title: "\u5BF9\u9F50" }), { default: () => "center" }),
|
|
21
18
|
disabled: Schema.optional(CelBool.annotations({
|
|
22
19
|
title: "\u7981\u7528\u6761\u4EF6",
|
|
23
20
|
description: "\u8FD4\u56DE `true` \u65F6\u5F00\u5173\u4ECD\u7136\u6E32\u67D3\u4F46\u4E0D\u53EF\u5207\u6362"
|
|
@@ -3,6 +3,7 @@ import { computed, inject, onBeforeUnmount, ref, watch } from "vue";
|
|
|
3
3
|
import { Icon } from "@iconify/vue";
|
|
4
4
|
import { ExpressionEditor } from "../../../../ui/expression-editor";
|
|
5
5
|
import { Separator } from "../../../../ui/separator";
|
|
6
|
+
import { Switch } from "../../../../ui/switch";
|
|
6
7
|
import { Button } from "../../../../ui/button";
|
|
7
8
|
import { Field, FieldLabel } from "../../../../ui/field";
|
|
8
9
|
import { Locale } from "../../../../ui/locale";
|
|
@@ -13,6 +14,12 @@ import {
|
|
|
13
14
|
InputGroupInput,
|
|
14
15
|
InputGroupNumberField
|
|
15
16
|
} from "../../../../ui/input-group";
|
|
17
|
+
import {
|
|
18
|
+
DropdownMenu,
|
|
19
|
+
DropdownMenuContent,
|
|
20
|
+
DropdownMenuItem,
|
|
21
|
+
DropdownMenuTrigger
|
|
22
|
+
} from "../../../../ui/dropdown-menu";
|
|
16
23
|
import ActionsConfigEditor from "../../../../actions/config.vue";
|
|
17
24
|
import { getStructFieldDescription, getStructFieldTitle } from "../../../utils/schema-meta";
|
|
18
25
|
import { Markdown } from "../../../../ui/markdown";
|
|
@@ -27,6 +34,14 @@ const fieldSchema = schema(() => {
|
|
|
27
34
|
});
|
|
28
35
|
const fieldTitle = (field) => getStructFieldTitle(fieldSchema, field) ?? field;
|
|
29
36
|
const fieldDescription = (field) => getStructFieldDescription(fieldSchema, field);
|
|
37
|
+
const ALIGN_OPTIONS = [
|
|
38
|
+
{ value: "left", label: "\u5DE6\u5BF9\u9F50", icon: "fluent:text-align-left-20-regular" },
|
|
39
|
+
{ value: "center", label: "\u5C45\u4E2D", icon: "fluent:text-align-center-20-regular" },
|
|
40
|
+
{ value: "right", label: "\u53F3\u5BF9\u9F50", icon: "fluent:text-align-right-20-regular" }
|
|
41
|
+
];
|
|
42
|
+
const currentAlignIcon = computed(
|
|
43
|
+
() => (ALIGN_OPTIONS.find((o) => o.value === (value.value.align ?? "left")) ?? ALIGN_OPTIONS[0]).icon
|
|
44
|
+
);
|
|
30
45
|
const ROW_VARS = {
|
|
31
46
|
row: { type: "dyn", label: "\u5F53\u524D\u884C\u6570\u636E" },
|
|
32
47
|
index: { type: "number", label: "\u884C\u7D22\u5F15" }
|
|
@@ -84,17 +99,14 @@ const bindingText = computed({
|
|
|
84
99
|
}
|
|
85
100
|
}
|
|
86
101
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
} else {
|
|
94
|
-
value.value = { ...value.value, hidden: v };
|
|
95
|
-
}
|
|
102
|
+
function onHiddenChange(v) {
|
|
103
|
+
if (v) {
|
|
104
|
+
value.value = { ...value.value, hidden: true };
|
|
105
|
+
} else {
|
|
106
|
+
const { hidden: _drop, ...rest } = value.value;
|
|
107
|
+
value.value = rest;
|
|
96
108
|
}
|
|
97
|
-
}
|
|
109
|
+
}
|
|
98
110
|
const disabledModel = computed({
|
|
99
111
|
get: () => value.value.disabled ?? "",
|
|
100
112
|
set: (v) => {
|
|
@@ -240,6 +252,29 @@ const derivedModel = computed({
|
|
|
240
252
|
{{ fieldTitle("size") }}
|
|
241
253
|
</FieldLabel>
|
|
242
254
|
<InputGroup>
|
|
255
|
+
<InputGroupAddon align="inline-start">
|
|
256
|
+
<DropdownMenu>
|
|
257
|
+
<DropdownMenuTrigger as-child>
|
|
258
|
+
<InputGroupButton
|
|
259
|
+
variant="ghost"
|
|
260
|
+
size="xs"
|
|
261
|
+
:title="fieldTitle('align')"
|
|
262
|
+
>
|
|
263
|
+
<Icon :icon="currentAlignIcon" />
|
|
264
|
+
</InputGroupButton>
|
|
265
|
+
</DropdownMenuTrigger>
|
|
266
|
+
<DropdownMenuContent align="start">
|
|
267
|
+
<DropdownMenuItem
|
|
268
|
+
v-for="opt in ALIGN_OPTIONS"
|
|
269
|
+
:key="opt.value"
|
|
270
|
+
@select="value = { ...value, align: opt.value }"
|
|
271
|
+
>
|
|
272
|
+
<Icon :icon="opt.icon" />
|
|
273
|
+
{{ opt.label }}
|
|
274
|
+
</DropdownMenuItem>
|
|
275
|
+
</DropdownMenuContent>
|
|
276
|
+
</DropdownMenu>
|
|
277
|
+
</InputGroupAddon>
|
|
243
278
|
<InputGroupNumberField
|
|
244
279
|
:model-value="value.size"
|
|
245
280
|
:disabled="value.grow"
|
|
@@ -258,27 +293,6 @@ const derivedModel = computed({
|
|
|
258
293
|
</InputGroupAddon>
|
|
259
294
|
</InputGroup>
|
|
260
295
|
</Field>
|
|
261
|
-
<Field orientation="vertical">
|
|
262
|
-
<FieldLabel class="text-xs text-zinc-500">
|
|
263
|
-
<template
|
|
264
|
-
v-if="fieldDescription('hidden')"
|
|
265
|
-
#tooltip
|
|
266
|
-
>
|
|
267
|
-
<Markdown
|
|
268
|
-
:source="fieldDescription('hidden')"
|
|
269
|
-
block
|
|
270
|
-
class="prose prose-sm prose-zinc"
|
|
271
|
-
/>
|
|
272
|
-
</template>
|
|
273
|
-
{{ fieldTitle("hidden") }}
|
|
274
|
-
</FieldLabel>
|
|
275
|
-
<ExpressionEditor
|
|
276
|
-
v-model="hiddenModel"
|
|
277
|
-
placeholder="例:row.archived"
|
|
278
|
-
result-type="bool"
|
|
279
|
-
:extra-vars="ROW_VARS"
|
|
280
|
-
/>
|
|
281
|
-
</Field>
|
|
282
296
|
<Field orientation="vertical">
|
|
283
297
|
<FieldLabel class="text-xs text-zinc-500">
|
|
284
298
|
<template
|
|
@@ -382,6 +396,27 @@ const derivedModel = computed({
|
|
|
382
396
|
</InputGroupAddon>
|
|
383
397
|
</InputGroup>
|
|
384
398
|
</Field>
|
|
399
|
+
<Field orientation="vertical">
|
|
400
|
+
<FieldLabel class="text-xs text-zinc-500">
|
|
401
|
+
<template
|
|
402
|
+
v-if="fieldDescription('hidden')"
|
|
403
|
+
#tooltip
|
|
404
|
+
>
|
|
405
|
+
<Markdown
|
|
406
|
+
:source="fieldDescription('hidden')"
|
|
407
|
+
block
|
|
408
|
+
class="prose prose-sm prose-zinc"
|
|
409
|
+
/>
|
|
410
|
+
</template>
|
|
411
|
+
{{ fieldTitle("hidden") }}
|
|
412
|
+
</FieldLabel>
|
|
413
|
+
<div>
|
|
414
|
+
<Switch
|
|
415
|
+
:model-value="value.hidden ?? false"
|
|
416
|
+
@update:model-value="onHiddenChange"
|
|
417
|
+
/>
|
|
418
|
+
</div>
|
|
419
|
+
</Field>
|
|
385
420
|
</div>
|
|
386
421
|
<Separator />
|
|
387
422
|
<Field orientation="vertical">
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
} from "../../../../ui/input-group";
|
|
16
16
|
import ShwfedActions from "../../../../actions/components/group.vue";
|
|
17
17
|
import { useFormState } from "../../../../form/utils/state";
|
|
18
|
+
import { JUSTIFY_CLASS, TEXT_ALIGN_CLASS } from "../../../utils/runtime";
|
|
18
19
|
defineOptions({ name: "ShwfedTableTextInputRendererRuntime" });
|
|
19
20
|
const props = defineProps({
|
|
20
21
|
column: { type: null, required: true },
|
|
@@ -35,7 +36,6 @@ function evalBool(expression, label) {
|
|
|
35
36
|
return false;
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
const isHidden = computed(() => evalBool(props.column.hidden, "hidden"));
|
|
39
39
|
const isDisabled = computed(() => evalBool(props.column.disabled, "disabled"));
|
|
40
40
|
const formReadonly = useFormReadonly();
|
|
41
41
|
const isReadonly = computed(
|
|
@@ -78,6 +78,8 @@ const addonConfig = computed(() => {
|
|
|
78
78
|
};
|
|
79
79
|
});
|
|
80
80
|
const showClear = computed(() => !isDisabled.value && draft.value.length > 0);
|
|
81
|
+
const justifyClass = computed(() => JUSTIFY_CLASS[props.column.align ?? "left"] ?? JUSTIFY_CLASS.left);
|
|
82
|
+
const textAlignClass = computed(() => TEXT_ALIGN_CLASS[props.column.align ?? "left"] ?? TEXT_ALIGN_CLASS.left);
|
|
81
83
|
function handleClear() {
|
|
82
84
|
draft.value = "";
|
|
83
85
|
commit();
|
|
@@ -89,7 +91,7 @@ function handleClear() {
|
|
|
89
91
|
Row budget: 2px outer inset (`p-[0.125rem]`) on each side around a 28px
|
|
90
92
|
(`h-7`) input — total 32px. The inset is the deliberate gap between the
|
|
91
93
|
input border and the td borders; the 28px input gives the 12px text some
|
|
92
|
-
vertical breathing room. Every branch (
|
|
94
|
+
vertical breathing room. Every branch (readonly / editable) is
|
|
93
95
|
sized identically so rows do not jump when a CEL condition flips. The
|
|
94
96
|
default `Input` ships `h-9` + `text-base` + `md:text-sm` — we override
|
|
95
97
|
each at the same breakpoint or `md:text-sm` would beat our unprefixed
|
|
@@ -102,10 +104,6 @@ function handleClear() {
|
|
|
102
104
|
oversized.
|
|
103
105
|
-->
|
|
104
106
|
<div class="p-[0.125rem] w-full">
|
|
105
|
-
<span
|
|
106
|
-
v-if="isHidden"
|
|
107
|
-
class="block h-7 w-full"
|
|
108
|
-
/>
|
|
109
107
|
<!--
|
|
110
108
|
Readonly empty state mirrors the `text` column exactly: a centered,
|
|
111
109
|
faded, non-selectable `-` rendered in `font-mono`, so a readonly grid
|
|
@@ -114,10 +112,10 @@ function handleClear() {
|
|
|
114
112
|
text.
|
|
115
113
|
-->
|
|
116
114
|
<span
|
|
117
|
-
v-
|
|
115
|
+
v-if="effectiveReadonly"
|
|
118
116
|
:class="[
|
|
119
117
|
'flex items-center h-7 w-full px-2 text-[0.75rem] truncate',
|
|
120
|
-
draft ? 'text-zinc-700' : 'justify-center font-mono text-zinc-300 select-none'
|
|
118
|
+
draft ? ['text-zinc-700', justifyClass] : 'justify-center font-mono text-zinc-300 select-none'
|
|
121
119
|
]"
|
|
122
120
|
>
|
|
123
121
|
{{ draft || "-" }}
|
|
@@ -138,7 +136,7 @@ function handleClear() {
|
|
|
138
136
|
v-model="draft"
|
|
139
137
|
:placeholder="placeholderText"
|
|
140
138
|
:disabled="isDisabled"
|
|
141
|
-
class="h-7 text-[0.75rem] md:text-[0.75rem] px-2"
|
|
139
|
+
:class="['h-7 text-[0.75rem] md:text-[0.75rem] px-2', textAlignClass]"
|
|
142
140
|
@focus="onFocus"
|
|
143
141
|
@blur="onBlur"
|
|
144
142
|
@keydown.enter="commit"
|
|
@@ -9,6 +9,9 @@ export declare const metadata: {
|
|
|
9
9
|
readonly icon: "fluent:text-field-20-regular";
|
|
10
10
|
};
|
|
11
11
|
export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
|
|
12
|
+
align: Schema.optionalWith<Schema.Literal<["left", "center", "right"]>, {
|
|
13
|
+
default: () => "left";
|
|
14
|
+
}>;
|
|
12
15
|
placeholder: Schema.optional<Schema.TupleType<readonly [Schema.Struct<{
|
|
13
16
|
locale: Schema.Literal<["zh"]>;
|
|
14
17
|
message: Schema.SchemaClass<string, string, never>;
|
|
@@ -16,7 +19,6 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
|
|
|
16
19
|
locale: Schema.Literal<["ja", "en", "ko"]>;
|
|
17
20
|
message: Schema.SchemaClass<string, string, never>;
|
|
18
21
|
}>]>>;
|
|
19
|
-
hidden: Schema.optional<Schema.Schema<string, string, never>>;
|
|
20
22
|
disabled: Schema.optional<Schema.Schema<string, string, never>>;
|
|
21
23
|
readonly: Schema.optional<Schema.Schema<string, string, never>>;
|
|
22
24
|
derived: Schema.optional<Schema.Struct<{
|
|
@@ -174,6 +176,7 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
|
|
|
174
176
|
locale: Schema.Literal<["ja", "en", "ko"]>;
|
|
175
177
|
message: Schema.SchemaClass<string, string, never>;
|
|
176
178
|
}>]>>;
|
|
179
|
+
hidden: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
|
|
177
180
|
id: Schema.refine<string, typeof Schema.String>;
|
|
178
181
|
groupId: Schema.optional<typeof Schema.UUID>;
|
|
179
182
|
type: Schema.Literal<["com.shwfed.table.column.text-input"]>;
|
|
@@ -2,7 +2,7 @@ import { Schema } from "effect";
|
|
|
2
2
|
import { getProperty } from "dot-prop";
|
|
3
3
|
import { Locale } from "../../../../../share/locale.js";
|
|
4
4
|
import { ActionSchemaFields } from "../../../../actions/schema.js";
|
|
5
|
-
import { CelRowAccess, derivedRowField, editableColumnFields, editableHeader, registerRowVariablesIfAbsent } from "../../../utils/shared.js";
|
|
5
|
+
import { Align, CelRowAccess, derivedRowField, editableColumnFields, editableHeader, registerRowVariablesIfAbsent } from "../../../utils/shared.js";
|
|
6
6
|
export const type = "com.shwfed.table.column.text-input";
|
|
7
7
|
export const compatibilityDate = "2026-05-20";
|
|
8
8
|
export const metadata = {
|
|
@@ -30,14 +30,11 @@ export function schema(configure) {
|
|
|
30
30
|
type: Schema.Literal(type),
|
|
31
31
|
compatibilityDate: Schema.Literal(compatibilityDate),
|
|
32
32
|
...editableColumnFields(),
|
|
33
|
+
align: Schema.optionalWith(Align.annotations({ title: "\u5BF9\u9F50" }), { default: () => "left" }),
|
|
33
34
|
placeholder: Schema.optional(Locale.annotations({
|
|
34
35
|
title: "\u5360\u4F4D\u7B26",
|
|
35
36
|
description: "\u5355\u5143\u683C\u4E3A\u7A7A\u65F6\u663E\u793A\u7684\u63D0\u793A\u6587\u672C"
|
|
36
37
|
})),
|
|
37
|
-
hidden: Schema.optional(CelBool.annotations({
|
|
38
|
-
title: "\u9690\u85CF\u6761\u4EF6",
|
|
39
|
-
description: "\u8FD4\u56DE `true` \u65F6\u8BE5\u884C\u7684\u8F93\u5165\u6846\u4E0D\u6E32\u67D3\uFF08\u5176\u4F59\u884C\u4E0D\u53D7\u5F71\u54CD\uFF09"
|
|
40
|
-
})),
|
|
41
38
|
disabled: Schema.optional(CelBool.annotations({
|
|
42
39
|
title: "\u7981\u7528\u6761\u4EF6",
|
|
43
40
|
description: "\u8FD4\u56DE `true` \u65F6\u8F93\u5165\u6846\u4ECD\u7136\u6E32\u67D3\u4F46\u4E0D\u53EF\u7F16\u8F91"
|
|
@@ -47,7 +44,16 @@ export function schema(configure) {
|
|
|
47
44
|
description: "\u8FD4\u56DE `true` \u65F6\u4EC5\u4EE5\u7EAF\u6587\u672C\u5C55\u793A\u5F53\u524D\u503C"
|
|
48
45
|
})),
|
|
49
46
|
derived: derivedRowField(configure, "string"),
|
|
50
|
-
|
|
47
|
+
// `Schema.optional` rebuilds the struct's union member, and because the
|
|
48
|
+
// `optionalWith`-default fields make `AddonActions` a `Transformation`, the
|
|
49
|
+
// inner struct's `title`/`description` don't survive onto the rebuilt
|
|
50
|
+
// member. The config editor's `getStructFieldTitle('addon')` would then fall
|
|
51
|
+
// back to the raw key "addon" (the v2.10.12 regression). Re-state them on the
|
|
52
|
+
// property signature, which the meta reader checks before the field type.
|
|
53
|
+
addon: Schema.optional(AddonActions(configure)).annotations({
|
|
54
|
+
title: "\u8F93\u5165\u6846\u5185\u6309\u94AE",
|
|
55
|
+
description: "\u5728\u8F93\u5165\u6846\u53F3\u4FA7\u5185\u5D4C\u4E00\u7EC4\u64CD\u4F5C\u6309\u94AE"
|
|
56
|
+
})
|
|
51
57
|
}).annotations({ title: "TextInputRenderer", description: "\u6587\u672C\u8F93\u5165\u6E32\u67D3\u5668\uFF08\u53EF\u7F16\u8F91\uFF09" });
|
|
52
58
|
}
|
|
53
59
|
export function defaults() {
|
|
@@ -53,9 +53,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
|
|
|
53
53
|
readonly locale: "en" | "ja" | "ko";
|
|
54
54
|
readonly message: string;
|
|
55
55
|
}[]];
|
|
56
|
-
readonly accessor: string;
|
|
57
56
|
readonly sortKey?: string | undefined;
|
|
58
57
|
readonly successMessage?: string | undefined;
|
|
58
|
+
readonly accessor?: string | undefined;
|
|
59
59
|
}) => any;
|
|
60
60
|
}, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
|
|
61
61
|
"onUpdate:modelValue"?: ((value: {
|
|
@@ -108,9 +108,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
|
|
|
108
108
|
readonly locale: "en" | "ja" | "ko";
|
|
109
109
|
readonly message: string;
|
|
110
110
|
}[]];
|
|
111
|
-
readonly accessor: string;
|
|
112
111
|
readonly sortKey?: string | undefined;
|
|
113
112
|
readonly successMessage?: string | undefined;
|
|
113
|
+
readonly accessor?: string | undefined;
|
|
114
114
|
}) => any) | undefined;
|
|
115
115
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
116
116
|
declare const _default: typeof __VLS_export;
|
|
@@ -53,9 +53,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
|
|
|
53
53
|
readonly locale: "en" | "ja" | "ko";
|
|
54
54
|
readonly message: string;
|
|
55
55
|
}[]];
|
|
56
|
-
readonly accessor: string;
|
|
57
56
|
readonly sortKey?: string | undefined;
|
|
58
57
|
readonly successMessage?: string | undefined;
|
|
58
|
+
readonly accessor?: string | undefined;
|
|
59
59
|
}) => any;
|
|
60
60
|
}, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
|
|
61
61
|
"onUpdate:modelValue"?: ((value: {
|
|
@@ -108,9 +108,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
|
|
|
108
108
|
readonly locale: "en" | "ja" | "ko";
|
|
109
109
|
readonly message: string;
|
|
110
110
|
}[]];
|
|
111
|
-
readonly accessor: string;
|
|
112
111
|
readonly sortKey?: string | undefined;
|
|
113
112
|
readonly successMessage?: string | undefined;
|
|
113
|
+
readonly accessor?: string | undefined;
|
|
114
114
|
}) => any) | undefined;
|
|
115
115
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
116
116
|
declare const _default: typeof __VLS_export;
|
|
@@ -68,7 +68,7 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
|
|
|
68
68
|
locale: Schema.Literal<["ja", "en", "ko"]>;
|
|
69
69
|
message: Schema.SchemaClass<string, string, never>;
|
|
70
70
|
}>]>;
|
|
71
|
-
accessor: Schema.Schema<string, string, never
|
|
71
|
+
accessor: Schema.optional<Schema.Schema<string, string, never>>;
|
|
72
72
|
enableSorting: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
|
|
73
73
|
sortKey: Schema.optional<Schema.refine<string, typeof Schema.String>>;
|
|
74
74
|
size: Schema.optional<Schema.refine<number, Schema.filter<typeof Schema.Number>>>;
|
|
@@ -129,6 +129,7 @@ export function toColumnDef(value, { getLocaleText, $cel, inheritedContext }) {
|
|
|
129
129
|
return {
|
|
130
130
|
header: editableHeader(getLocaleText(value.title)),
|
|
131
131
|
accessorFn: (row, index) => {
|
|
132
|
+
if (!value.accessor) return void 0;
|
|
132
133
|
try {
|
|
133
134
|
return Effect.runSync($cel(value.accessor, { ...inheritedContext, row, index }));
|
|
134
135
|
} catch (e) {
|