Bỏ qua, đến nội dung

@digiforce-nc/plugin-field-advanced ​

Plugin mở rộng các field nâng cao cho hệ thống — bổ sung giao diện number với pretty format, percent, hiển thị QR code, cùng nhiều cải tiến cho input/textarea/URL.

Plugin này làm gì? ​

Hãy hình dung: hệ thống đã có các field cơ bản (string, number...), nhưng thiếu những tùy chỉnh nâng cao như hiển thị số theo format đẹp (1,000,000), phần trăm với thanh progress, hay hiển thị giá trị dưới dạng QR code. Plugin này bổ sung tất cả — hoàn toàn ở phía client, không cần server xử lý thêm.

Ba khả năng chính ​

#Khả năngChi tiết
1Number pretty formatHiển thị số có separator (1,000,000), tuỳ locale, precision
2Percent fieldInput phần trăm với thanh progress hoặc badge
3Display as QR codeBiến giá trị field (URL, mã code...) thành hình QR để quét

Kiến trúc ​

Tổng quan ​

Plugin này là client-only — phần server hoàn toàn rỗng (empty plugin class). Toàn bộ logic nằm ở client: đăng ký field interface, component, settings form và hook.

Luồng hiển thị field nâng cao ​

Field Interfaces đăng ký ​

InterfaceMô tảComponent mặc định
input (mở rộng)Input chuỗi với các tuỳ chỉnh nâng caoInput
inputNumber (mở rộng)Số với pretty format, min/max, precisionInputNumber
percentPhần trăm — kế thừa từ inputNumberPercent
displayAsQRHiển thị giá trị dưới dạng QR codeQR Display

Components ​

ComponentChức năng
InputInput chuỗi nâng cao (hỗ trợ prefix, suffix, character count)
InputNumberInput số với format separator, precision, đơn vị
PercentInput phần trăm — tự nhân/chia 100 khi lưu/hiển thị
QR DisplayRender giá trị field thành QR code image

Custom Hooks ​

HookMô tả
useNumberPrettyFormatNhận giá trị số, trả về chuỗi format đẹp theo locale (1,000,000 hoặc 1.000.000)
useDisplayAsQRCodeNhận giá trị chuỗi, trả về QR code data URL để render hình ảnh

Settings forms ​

Plugin đăng ký settings form cho từng loại field, cho phép admin tuỳ chỉnh hành vi:

Settings groupCác tuỳ chọn
inputMax length, placeholder, prefix/suffix
textareaRows, max length, auto resize
urlValidate URL format, open in new tab
numberMin, max, precision, step, separator style
percentTương tự number + hiển thị progress bar
display-as-QRQR size, error correction level, foreground color

Ví dụ sử dụng ​

Cấu hình field number với pretty format ​

typescript
// Trong schema JSON, field price sẽ hiển thị theo format đẹp
const priceField = {
  name: 'price',
  type: 'double',
  interface: 'inputNumber',
  uiSchema: {
    'x-component': 'InputNumber',
    'x-component-props': {
      stringMode: true,
      step: '0.01',
      addonAfter: 'VND',
    },
  },
};

Thành phần client ​

Thành phầnMô tả
InputInput chuỗi nâng cao
InputNumberInput số với separator
PercentInput phần trăm
QR DisplayRender giá trị thành mã QR
useNumberPrettyFormatHook format số theo locale
useDisplayAsQRCodeHook chuyển giá trị thành QR

Dependencies ​

PackageVai trò
@digiforce-nc/clientClient framework — đăng ký component và interface
@digiforce-nc/serverServer framework (peer) — plugin class rỗng

Mục lục chi tiết ​